< prev index next >

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

Print this page

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

 64 
 65         var allListNames = new HashSet<EmailAddress>();
 66         var allRepositories = new HashSet<HostedRepository>();
 67 
 68         var readyLabels = specific.get("ready").get("labels").stream()
 69                 .map(JSONValue::asString)
 70                 .collect(Collectors.toSet());
 71         var readyComments = specific.get("ready").get("comments").stream()
 72                 .map(JSONValue::asObject)
 73                 .collect(Collectors.toMap(obj -> obj.get("user").asString(),
 74                                           obj -> Pattern.compile(obj.get("pattern").asString())));
 75 
 76         for (var repoConfig : specific.get("repositories").asArray()) {
 77             var repo = repoConfig.get("repository").asString();
 78             var censusRepo = configuration.repository(repoConfig.get("census").asString());
 79             var censusRef = configuration.repositoryRef(repoConfig.get("census").asString());
 80 
 81             var list = EmailAddress.parse(repoConfig.get("list").asString());
 82             var folder = repoConfig.contains("folder") ? repoConfig.get("folder").asString() : configuration.repositoryName(repo);
 83             var bot = new MailingListBridgeBot(from, configuration.repository(repo), archiveRepo,
 84                                                censusRepo, censusRef,
 85                                                list, ignoredUsers, ignoredComments, listArchive, listSmtp,
 86                                                webrevRepo, webrevRef, Path.of(folder),
 87                                                URIBuilder.base(webrevWeb).build(), readyLabels, readyComments);

 88             ret.add(bot);
 89 
 90             allListNames.add(list);
 91             allRepositories.add(configuration.repository(repo));
 92         }
 93 
 94         var mailmanServer = MailingListServerFactory.createMailmanServer(listArchive, listSmtp);
 95         var allLists = allListNames.stream()
 96                                    .map(name -> mailmanServer.getList(name.toString()))
 97                                    .collect(Collectors.toSet());
 98 
 99         var bot = new MailingListArchiveReaderBot(from, allLists, allRepositories);
100         ret.add(bot);
101 
102         return ret;
103     }
104 }

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