in src/main/java/org/apache/jenkins/gitpubsub/ASFGitSCMNavigator.java [168:214]
public void visitSources(@NonNull final SCMSourceObserver observer) throws IOException, InterruptedException {
ASFGitSCMFileSystem.preRequestSleep();
try (ASFGitSCMNavigatorRequest request = new ASFGitSCMNavigatorContext()
.withTraits(traits)
.newRequest(this, observer)) {
JsonNode repositories = MAPPER.readTree(new URL(server.replaceAll("repos/[^/]+$", "repositories.json")));
int count = 0;
String line;
observer.getListener().getLogger().format("%n Checking repositories...%n");
for (JsonNode project : repositories.path("projects")) {
for (Iterator<String> i = project.path("repositories").fieldNames(); i.hasNext(); ) {
final String repo = i.next();
count++;
observer.getListener().getLogger().format("%n Checking repository %s%n",
HyperlinkNote
.encodeTo(server + "?p=" + URLEncoder.encode(repo, "UTF-8") + ".git;a=summary",
repo));
if (request.process(repo, new SCMNavigatorRequest.SourceLambda() {
@NonNull
@Override
public SCMSource create(@NonNull String projectName) throws IOException, InterruptedException {
return new ASFGitSCMSourceBuilder(getId() + "::" + projectName,
server, projectName
)
.withTraits(traits)
.build();
}
}, null, new SCMNavigatorRequest.Witness() {
@Override
public void record(@NonNull String projectName, boolean isMatch) {
if (isMatch) {
observer.getListener().getLogger().format(" Proposing %s%n", projectName);
} else {
observer.getListener().getLogger().format(" Ignoring %s%n", projectName);
}
}
})) {
observer.getListener().getLogger()
.format("%n %d repositories were processed (query complete)%n",
count);
return;
}
}
}
observer.getListener().getLogger().format("%n %d repositories were processed%n", count);
}
}