public static Options options(Integer modelVersion, Option... options) { return new Options(modelVersion, options); }
private String fixFile(String url) { if (!looksLikeFilePath(url)) { return url; } String[] segments = url.split("[/\\\\]"); String fixed = Stream.of(segments).map(s -> encodeSegment(s)).collect(Collectors.joining("/")); return fixed; }
public List<URL> getAdditionalFileUrls() { List<URL> results = Lists.newArrayList(); for (String urlString : getAdditionalFileStrings()) { results.add(new Reference(fixFile(urlString), topRef, modelVersion).getUrl()); } return results; }
private void sortTree(ObjectNode tree) { if (options.isAsDeclaredOrdering()) { // nothing to do } else if (options.isSortedOrdering()) { sort(tree); } }
public Swagger normalizeToSwagger(URL resolutionBase) throws IOException, GenerationException { String baseUrlString = new Reference(resolutionBase, SWAGGER_MODEL_VERSION).getCanonicalFileRefString(); options.resolveScope(baseUrlString); debug("Normalizer Start", resolutionBase, Thread.currentThread().getStackTrace(), spec != null ? spec : tree); long start = System.nanoTime(); tree = normalizeToJsonInternal(resolutionBase); try { if (options.isFixXExamples()) { new SwaggerXExamplesFixer(tree).fixXExamples(); if (options.isInstantiateNullTypes()) { SwaggerFiller.fill(model); if (options.isFixMissingTypes()) { SwaggerTypeFixer.fixTypes(model); if (options.isHoistParameters()) { SwaggerParameterHoister.hoist(model); if (options.isHoistMediaTypes()) { SwaggerMediaTypesHoister.hoist(model); if (options.isHoistSecurityRequirements()) { SwaggerSecurityRequirementHoister.hoist(model); if (!options.isDeferExtensionDataRemoval()) { OpenApiMarkers.removeMarkers(model, options);
public JsonNode inline(URL base) throws GenerationException { List<Content> badRoots = Lists.newArrayList(); if (options.isDoNotNormalize()) { return spec; Content topLevel = contentManager.load(base, spec, options.isRewriteSimpleRefs()); if (topLevel.isValid()) { for (URL url : options.getAdditionalFileUrls()) { Content content = contentManager.load(url, null, options.isRewriteSimpleRefs()); if (content.isValid()) { contentManager.localizeObjects(content); new DefinitionProcessor(contentManager).setTypeNames(options.isCreateDefTitles());
public OpenAPI normalizeToOpenAPI(URL resolutionBase) throws IOException, GenerationException { String baseUrlString = new Reference(resolutionBase, options.getModelVersion()).getCanonicalFileRefString(); options.resolveScope(baseUrlString); debug("Normalizer Start", resolutionBase, Thread.currentThread().getStackTrace(), spec != null ? spec : tree); long start = System.nanoTime(); if (options.isFixXExamples()) { new SwaggerXExamplesFixer(tree).fixXExamples();
public OpenApi<?> normalizeToKaizen(URL resolutionBase) throws IOException, GenerationException { String baseUrlString = new Reference(resolutionBase, options.getModelVersion()).getCanonicalFileRefString(); options.resolveScope(baseUrlString); debug("Normalizer Start", resolutionBase, Thread.currentThread().getStackTrace(), spec != null ? spec : tree); long start = System.nanoTime(); tree = normalizeToJsonInternal(resolutionBase); try { debug(NormalizerDebug.Option.PRE_PARSE_SPEC, tree); String spec = mapper.writeValueAsString(tree); return new OpenApiParser().parse(spec, resolutionBase, true); } catch (Exception e) { debug(e); throw e; } finally { long elapsed = (System.nanoTime() - start) / (1000 * 1000); // milliseconds debug(String.format("Normalizer End [%d.%03dsec]", elapsed / 1000, (elapsed % 1000))); } }
public OpenApiReferenceProcessor(Options options) { this.options = options; this.modelVersion = options.getModelVersion(); this.contentManager = new ContentManager(modelVersion); }
private void addJsonPointers(JsonNode object, Reference ref) { if (options.isAddJsonPointers()) { OpenApiMarkers.markJsonPointer(object, ref.getFragment()); if (ObjectType.PATH == ref.getSection()) { Iterator<String> fields = object.fieldNames(); while (fields.hasNext()) { String fieldName = fields.next(); if (Util.swaggerMethodOrder.contains(fieldName)) { // was not set by external reference processor if (RepreZenVendorExtension.get(object.get(fieldName)).getPointer() == null) { OpenApiMarkers.markJsonPointer(object.get(fieldName), ref.getFragment() + "/" + fieldName); } } } } } }
public void resolveScope(String topUrlString) throws MalformedURLException { inScopeUrlStrings.clear(); inScopeUrlStrings.add(topUrlString); topRef = new Reference(topUrlString, modelVersion); URL topUrl = topRef.getUrl(); for (URL additionalUrl : getAdditionalFileUrls()) { URL resolved = new URL(topUrl, additionalUrl.toString()); inScopeUrlStrings.add(resolved.toString()); } }
public JsonNode normalizeToJson(URL resolutionBase) throws IOException, GenerationException { long start = System.nanoTime(); try { resolutionBase = checkArgs(resolutionBase); debug("Normalizer Start", resolutionBase, Thread.currentThread().getStackTrace(), spec != null ? spec : tree); JsonNode normalized = normalizeToJsonInternal(resolutionBase); if (!options.isDeferExtensionDataRemoval()) { OpenApiMarkers.removeMarkers(normalized, options); } debug(FINAL_SPEC, "Normalized model spec", normalized); return normalized; } catch (IOException | GenerationException e) { debug(e); throw e; } finally { long elapsed = (System.nanoTime() - start) / (1000 * 1000); // milliseconds debug(String.format("Normalizer End [%d.%03dsec]", elapsed / 1000, (elapsed % 1000))); } }
public OpenApiReferenceProcessor of(String spec) { return of(DocLoader.toJson(spec, options.getModelVersion())); }
private void addRefFileUrls(JsonNode object, Reference ref) { if (options.isAddJsonPointers()) { OpenApiMarkers.markFile(object, ref.getCanonicalFileRefString()); if (ObjectType.PATH == ref.getSection()) { Iterator<String> fields = object.fieldNames(); String pathFileRef = ref.getCanonicalFileRefString(); while (fields.hasNext()) { String fieldName = fields.next(); if (Util.swaggerMethodOrder.contains(fieldName)) { if (pathFileRef != null) { OpenApiMarkers.markFile(object.get(fieldName), pathFileRef); OpenApiMarkers.markJsonPointer(object.get(fieldName), ref.getFragment() + "/" + fieldName); } } } } } }
public OpenApiNormalizer(Integer modelVersion, Option... options) { this(new Options(modelVersion, options)); }
public OpenApi3Document(String modelSpec, File inFile, Option[] normalizerOptions) throws GenerationException { this.json = OpenApiIO.loadOpenApi3Tree(modelSpec); this.inFile = inFile; this.normalizerOptions = new Options(OPENAPI3_MODEL_VERSION, normalizerOptions); }
public SwaggerDocument(String modelSpec, File inFile, Option[] normalizerOptions) throws GenerationException { this.json = OpenApiIO.loadSwaggerTree(modelSpec); this.inFile = inFile; this.normalizerOptions = new Options(SWAGGER_MODEL_VERSION, normalizerOptions); }
private Options getNormalizerOptions() throws GenerationException { return new Options(SWAGGER_MODEL_VERSION, getNormalizerOptionArray()); }
public JsonNode reorder(JsonNode tree) throws GenerationException { reorderTree(tree); addPathsIfNeeded(tree); OpenApiMarkers.removeMarkers(tree, new Options(modelVersion, Option.ORDERING_AS_DECLARED)); return tree; }