in src/main/java/com/amazonaws/schemamanager/SchemaManagerPrValidator.java [21:71]
public void run() throws Exception{
// AppConfig config =
AppConfigHelper.getConfig();
IRepoClient prRepoClient = RepoClientFactory.createClient(RepoClientFactory.LOCAL_REPO);
//prRepoClient.init(config.getLocalRepoClientConfig());
IRepoClient baselineRepoClient = RepoClientFactory.createClient();
// baselineRepoClient.init(config.getRepoClientProperties());
List<RepoSchema> prSchemas = prRepoClient.getSchemaList();
log.info("Conncted to PR repository. Schemas found: " + prSchemas.size());
List<RepoSchema> repoSchemas = baselineRepoClient.getSchemaList();
log.info("Conncted to baseline repository. Schemas found: " + repoSchemas.size());
ISchemaAnalyzer analyzer = SchemaAnalyzerFactory.createAnalyzer();
List<ValidationError> errors = analyzer.validateSchemas(prSchemas);
if (errors != null) {
errors.forEach(e -> e.setErrorMsg("Validation Error. " + e.getErrorMsg()));
}
log.info("Validated schemas in PR. Errors found: " + (errors == null? 0 : errors.size()));
prSchemas = prSchemas.stream().filter(s -> s.getSchema() != null).collect(Collectors.toList());
List<ValidationError> compErrors = analyzer.testCompatibility(prSchemas, repoSchemas, AppConfigHelper.getDefaultCompatibility());
log.info("Tested compatibility against baseline. Compatibility errors found: " + (compErrors == null? 0 : compErrors.size()));
if (compErrors != null) {
compErrors.forEach(e -> {
e.setErrorMsg("Stage: PR -> Base Repo Branch. " + e.getErrorMsg());
});
errors.addAll(compErrors);
}
IRegistryClient registryClient = RegistryClientFactory.createClient(null);
List<Subject> registrySubjects = registryClient.getSubjects();
compErrors = analyzer.testCompatibility(prSchemas, registrySubjects);
if (compErrors != null) {
compErrors.forEach(e -> {
e.setErrorMsg("Stage: PR -> Registry. " + e.getErrorMsg());
});
errors.addAll(compErrors);
}
if (!errors.isEmpty()) {
errors.forEach(e -> {
log.error(e.getErrorMsg());
});
throw new Exception("PR Validation Failed");
}
}