public static SwaggerModelInfo parse(final String specification, final APIValidationContext validationContext) { final SwaggerModelInfo.Builder resultBuilder = new SwaggerModelInfo.Builder(); final String resolvedSpecification; try { resolvedSpecification = resolve(specification); resultBuilder.resolvedSpecification(resolvedSpecification); } catch (@SuppressWarnings("PMD.AvoidCatchingGenericException") final Exception e) { LOG.debug("Unable to resolve OpenAPI specification\n{}\n", specification, e); return resultBuilder .addError(new Violation.Builder().error("error").property("").message("Unable to resolve OpenAPI specification from: " + ofNullable(specification).map(s -> StringUtils.abbreviate(s, 100)).orElse("")).build()) .build(); } final SwaggerParser parser = new SwaggerParser(); final Swagger swagger = parser.parse(resolvedSpecification); if (swagger == null) { LOG.debug("Unable to read OpenAPI specification\n{}\n", specification); return resultBuilder .addError(new Violation.Builder().error("error").property("").message("Unable to read OpenAPI specification from: " + ofNullable(specification).map(s -> StringUtils.abbreviate(s, 100)).orElse("")).build()) .build(); } if (validationContext != APIValidationContext.NONE) { final SwaggerModelInfo swaggerModelInfo = validateJSonSchema(resolvedSpecification, swagger); return SyndesisSwaggerValidationRules.get(validationContext).apply(swaggerModelInfo); } return resultBuilder.model(swagger).build(); }