< prev index next >

bots/mlbridge/src/main/java/org/openjdk/skara/bots/mlbridge/MailingListBridgeBotFactory.java

Print this page

 46         var ret = new ArrayList<Bot>();
 47         var specific = configuration.specific();
 48 
 49         var from = EmailAddress.from(specific.get("name").asString(), specific.get("mail").asString());
 50         var ignoredUsers = specific.get("ignored").get("users").stream()
 51                                    .map(JSONValue::asString)
 52                                    .collect(Collectors.toSet());
 53         var ignoredComments = specific.get("ignored").get("comments").stream()
 54                                       .map(JSONValue::asString)
 55                                       .map(pattern -> Pattern.compile(pattern, Pattern.MULTILINE | Pattern.DOTALL))
 56                                       .collect(Collectors.toSet());
 57         var listArchive = URIBuilder.base(specific.get("server").get("archive").asString()).build();
 58         var listSmtp = specific.get("server").get("smtp").asString();
 59         var interval = specific.get("server").contains("interval") ? Duration.parse(specific.get("server").get("interval").asString()) : Duration.ofSeconds(1);
 60 
 61         var webrevRepo = configuration.repository(specific.get("webrevs").get("repository").asString());
 62         var webrevRef = configuration.repositoryRef(specific.get("webrevs").get("repository").asString());
 63         var webrevWeb = specific.get("webrevs").get("web").asString();
 64 
 65         var archiveRepo = configuration.repository(specific.get("archive").asString());

 66         var issueTracker = URIBuilder.base(specific.get("issues").asString()).build();
 67 
 68         var allListNames = new HashSet<EmailAddress>();
 69         var allRepositories = new HashSet<HostedRepository>();
 70 
 71         var readyLabels = specific.get("ready").get("labels").stream()
 72                 .map(JSONValue::asString)
 73                 .collect(Collectors.toSet());
 74         var readyComments = specific.get("ready").get("comments").stream()
 75                 .map(JSONValue::asObject)
 76                 .collect(Collectors.toMap(obj -> obj.get("user").asString(),
 77                                           obj -> Pattern.compile(obj.get("pattern").asString())));
 78 
 79         for (var repoConfig : specific.get("repositories").asArray()) {
 80             var repo = repoConfig.get("repository").asString();
 81             var censusRepo = configuration.repository(repoConfig.get("census").asString());
 82             var censusRef = configuration.repositoryRef(repoConfig.get("census").asString());
 83 
 84             Map<String, String> headers = repoConfig.contains("headers") ?
 85                     repoConfig.get("headers").fields().stream()
 86                               .collect(Collectors.toMap(JSONObject.Field::name, field -> field.value().asString())) :
 87                     Map.of();
 88 
 89             var list = EmailAddress.parse(repoConfig.get("list").asString());
 90             var folder = repoConfig.contains("folder") ? repoConfig.get("folder").asString() : configuration.repositoryName(repo);
 91             var bot = new MailingListBridgeBot(from, configuration.repository(repo), archiveRepo,
 92                                                censusRepo, censusRef,
 93                                                list, ignoredUsers, ignoredComments, listArchive, listSmtp,
 94                                                webrevRepo, webrevRef, Path.of(folder),
 95                                                URIBuilder.base(webrevWeb).build(), readyLabels, readyComments,
 96                                                issueTracker, headers, interval);
 97             ret.add(bot);
 98 
 99             allListNames.add(list);
100             allRepositories.add(configuration.repository(repo));
101         }
102 
103         var mailmanServer = MailingListServerFactory.createMailmanServer(listArchive, listSmtp, Duration.ZERO);
104         var allLists = allListNames.stream()
105                                    .map(name -> mailmanServer.getList(name.toString()))
106                                    .collect(Collectors.toSet());
107 
108         var bot = new MailingListArchiveReaderBot(from, allLists, allRepositories);
109         ret.add(bot);
110 
111         return ret;

 46         var ret = new ArrayList<Bot>();
 47         var specific = configuration.specific();
 48 
 49         var from = EmailAddress.from(specific.get("name").asString(), specific.get("mail").asString());
 50         var ignoredUsers = specific.get("ignored").get("users").stream()
 51                                    .map(JSONValue::asString)
 52                                    .collect(Collectors.toSet());
 53         var ignoredComments = specific.get("ignored").get("comments").stream()
 54                                       .map(JSONValue::asString)
 55                                       .map(pattern -> Pattern.compile(pattern, Pattern.MULTILINE | Pattern.DOTALL))
 56                                       .collect(Collectors.toSet());
 57         var listArchive = URIBuilder.base(specific.get("server").get("archive").asString()).build();
 58         var listSmtp = specific.get("server").get("smtp").asString();
 59         var interval = specific.get("server").contains("interval") ? Duration.parse(specific.get("server").get("interval").asString()) : Duration.ofSeconds(1);
 60 
 61         var webrevRepo = configuration.repository(specific.get("webrevs").get("repository").asString());
 62         var webrevRef = configuration.repositoryRef(specific.get("webrevs").get("repository").asString());
 63         var webrevWeb = specific.get("webrevs").get("web").asString();
 64 
 65         var archiveRepo = configuration.repository(specific.get("archive").asString());
 66         var archiveRef = configuration.repositoryRef(specific.get("archive").asString());
 67         var issueTracker = URIBuilder.base(specific.get("issues").asString()).build();
 68 
 69         var allListNames = new HashSet<EmailAddress>();
 70         var allRepositories = new HashSet<HostedRepository>();
 71 
 72         var readyLabels = specific.get("ready").get("labels").stream()
 73                 .map(JSONValue::asString)
 74                 .collect(Collectors.toSet());
 75         var readyComments = specific.get("ready").get("comments").stream()
 76                 .map(JSONValue::asObject)
 77                 .collect(Collectors.toMap(obj -> obj.get("user").asString(),
 78                                           obj -> Pattern.compile(obj.get("pattern").asString())));
 79 
 80         for (var repoConfig : specific.get("repositories").asArray()) {
 81             var repo = repoConfig.get("repository").asString();
 82             var censusRepo = configuration.repository(repoConfig.get("census").asString());
 83             var censusRef = configuration.repositoryRef(repoConfig.get("census").asString());
 84 
 85             Map<String, String> headers = repoConfig.contains("headers") ?
 86                     repoConfig.get("headers").fields().stream()
 87                               .collect(Collectors.toMap(JSONObject.Field::name, field -> field.value().asString())) :
 88                     Map.of();
 89 
 90             var list = EmailAddress.parse(repoConfig.get("list").asString());
 91             var folder = repoConfig.contains("folder") ? repoConfig.get("folder").asString() : configuration.repositoryName(repo);
 92             var bot = new MailingListBridgeBot(from, configuration.repository(repo), archiveRepo, archiveRef,
 93                                                censusRepo, censusRef,
 94                                                list, ignoredUsers, ignoredComments, listArchive, listSmtp,
 95                                                webrevRepo, webrevRef, Path.of(folder),
 96                                                URIBuilder.base(webrevWeb).build(), readyLabels, readyComments,
 97                                                issueTracker, headers, interval);
 98             ret.add(bot);
 99 
100             allListNames.add(list);
101             allRepositories.add(configuration.repository(repo));
102         }
103 
104         var mailmanServer = MailingListServerFactory.createMailmanServer(listArchive, listSmtp, Duration.ZERO);
105         var allLists = allListNames.stream()
106                                    .map(name -> mailmanServer.getList(name.toString()))
107                                    .collect(Collectors.toSet());
108 
109         var bot = new MailingListArchiveReaderBot(from, allLists, allRepositories);
110         ret.add(bot);
111 
112         return ret;
< prev index next >