in java/com/googlesource/gerrit/plugins/supermanifest/SuperManifestRefUpdatedListener.java [333:372]
public Response<?> apply(BranchResource resource, BranchInput input)
throws AuthException, PermissionBackendException, PreconditionFailedException {
permissionBackend.currentUser().check(GlobalPermission.ADMINISTRATE_SERVER);
String manifestProject = resource.getBranchKey().project().get();
String manifestBranch = resource.getBranchKey().branch();
info(
"manual trigger for %s:%s by %d. Config: %s",
manifestProject,
manifestBranch,
identifiedUser.get().getAccountId().get(),
configurationToString());
if (config.get() == null) {
error(
"Plugin could not read conf from All-Projects (processing %s:%s)",
manifestProject, manifestBranch);
throw new PreconditionFailedException("Plugin could not read conf from All-Projects");
}
List<ConfigEntry> relevantConfigs =
findRelevantConfigs(resource.getProjectState().getProject().getName(), resource.getRef());
if (relevantConfigs.isEmpty()) {
info(
"manual trigger for %s:%s: no configs found, nothing to do.",
manifestProject, manifestBranch);
return Response.none();
}
for (ConfigEntry config : relevantConfigs) {
try {
updateForConfig(config, resource.getRef());
} catch (ConfigInvalidException e) {
errorWithCause(e, "Invalid conf processing %s:%s", manifestProject, manifestBranch);
throw new PreconditionFailedException(e.getMessage());
} catch (GitAPIException | IOException e) {
errorWithCause(e, "Internal error processing %s:%s", manifestProject, manifestBranch);
return Response.withStatusCode(500, "Internal error: " + e.getMessage());
}
}
return Response.ok();
}