28
29 import java.net.URI;
30 import java.nio.file.Path;
31 import java.util.*;
32 import java.util.regex.Pattern;
33
34 public class MailingListBridgeBot implements Bot {
35 private final EmailAddress emailAddress;
36 private final HostedRepository codeRepo;
37 private final HostedRepository archiveRepo;
38 private final HostedRepository censusRepo;
39 private final String censusRef;
40 private final EmailAddress listAddress;
41 private final Set<String> ignoredUsers;
42 private final Set<Pattern> ignoredComments;
43 private final URI listArchive;
44 private final String smtpServer;
45 private final WebrevStorage webrevStorage;
46 private final Set<String> readyLabels;
47 private final Map<String, Pattern> readyComments;
48 private final PullRequestUpdateCache updateCache;
49
50 MailingListBridgeBot(EmailAddress from, HostedRepository repo, HostedRepository archive,
51 HostedRepository censusRepo, String censusRef, EmailAddress list,
52 Set<String> ignoredUsers, Set<Pattern> ignoredComments, URI listArchive, String smtpServer,
53 HostedRepository webrevStorageRepository, String webrevStorageRef,
54 Path webrevStorageBase, URI webrevStorageBaseUri, Set<String> readyLabels,
55 Map<String, Pattern> readyComments) {
56 emailAddress = from;
57 codeRepo = repo;
58 archiveRepo = archive;
59 this.censusRepo = censusRepo;
60 this.censusRef = censusRef;
61 listAddress = list;
62 this.ignoredUsers = ignoredUsers;
63 this.ignoredComments = ignoredComments;
64 this.listArchive = listArchive;
65 this.smtpServer = smtpServer;
66 this.readyLabels = readyLabels;
67 this.readyComments = readyComments;
68
69 this.webrevStorage = new WebrevStorage(webrevStorageRepository, webrevStorageRef, webrevStorageBase,
70 webrevStorageBaseUri, from);
71 this.updateCache = new PullRequestUpdateCache();
72 }
73
74 HostedRepository codeRepo() {
75 return codeRepo;
76 }
77
78 HostedRepository archiveRepo() {
79 return archiveRepo;
80 }
81
82 HostedRepository censusRepo() {
83 return censusRepo;
84 }
85
86 String censusRef() {
87 return censusRef;
106 URI listArchive() {
107 return listArchive;
108 }
109
110 String smtpServer() {
111 return smtpServer;
112 }
113
114 WebrevStorage webrevStorage() {
115 return webrevStorage;
116 }
117
118 Set<String> readyLabels() {
119 return readyLabels;
120 }
121
122 Map<String, Pattern> readyComments() {
123 return readyComments;
124 }
125
126 @Override
127 public List<WorkItem> getPeriodicItems() {
128 List<WorkItem> ret = new LinkedList<>();
129
130 for (var pr : codeRepo.getPullRequests()) {
131 if (updateCache.needsUpdate(pr)) {
132 ret.add(new ArchiveWorkItem(pr, this, e -> updateCache.invalidate(pr)));
133 }
134 }
135
136 return ret;
137 }
138 }
|
28
29 import java.net.URI;
30 import java.nio.file.Path;
31 import java.util.*;
32 import java.util.regex.Pattern;
33
34 public class MailingListBridgeBot implements Bot {
35 private final EmailAddress emailAddress;
36 private final HostedRepository codeRepo;
37 private final HostedRepository archiveRepo;
38 private final HostedRepository censusRepo;
39 private final String censusRef;
40 private final EmailAddress listAddress;
41 private final Set<String> ignoredUsers;
42 private final Set<Pattern> ignoredComments;
43 private final URI listArchive;
44 private final String smtpServer;
45 private final WebrevStorage webrevStorage;
46 private final Set<String> readyLabels;
47 private final Map<String, Pattern> readyComments;
48 private final URI issueTracker;
49 private final PullRequestUpdateCache updateCache;
50
51 MailingListBridgeBot(EmailAddress from, HostedRepository repo, HostedRepository archive,
52 HostedRepository censusRepo, String censusRef, EmailAddress list,
53 Set<String> ignoredUsers, Set<Pattern> ignoredComments, URI listArchive, String smtpServer,
54 HostedRepository webrevStorageRepository, String webrevStorageRef,
55 Path webrevStorageBase, URI webrevStorageBaseUri, Set<String> readyLabels,
56 Map<String, Pattern> readyComments, URI issueTracker) {
57 emailAddress = from;
58 codeRepo = repo;
59 archiveRepo = archive;
60 this.censusRepo = censusRepo;
61 this.censusRef = censusRef;
62 listAddress = list;
63 this.ignoredUsers = ignoredUsers;
64 this.ignoredComments = ignoredComments;
65 this.listArchive = listArchive;
66 this.smtpServer = smtpServer;
67 this.readyLabels = readyLabels;
68 this.readyComments = readyComments;
69 this.issueTracker = issueTracker;
70
71 this.webrevStorage = new WebrevStorage(webrevStorageRepository, webrevStorageRef, webrevStorageBase,
72 webrevStorageBaseUri, from);
73 this.updateCache = new PullRequestUpdateCache();
74 }
75
76 HostedRepository codeRepo() {
77 return codeRepo;
78 }
79
80 HostedRepository archiveRepo() {
81 return archiveRepo;
82 }
83
84 HostedRepository censusRepo() {
85 return censusRepo;
86 }
87
88 String censusRef() {
89 return censusRef;
108 URI listArchive() {
109 return listArchive;
110 }
111
112 String smtpServer() {
113 return smtpServer;
114 }
115
116 WebrevStorage webrevStorage() {
117 return webrevStorage;
118 }
119
120 Set<String> readyLabels() {
121 return readyLabels;
122 }
123
124 Map<String, Pattern> readyComments() {
125 return readyComments;
126 }
127
128 URI issueTracker() {
129 return issueTracker;
130 }
131
132 @Override
133 public List<WorkItem> getPeriodicItems() {
134 List<WorkItem> ret = new LinkedList<>();
135
136 for (var pr : codeRepo.getPullRequests()) {
137 if (updateCache.needsUpdate(pr)) {
138 ret.add(new ArchiveWorkItem(pr, this, e -> updateCache.invalidate(pr)));
139 }
140 }
141
142 return ret;
143 }
144 }
|