private Object loadInternalRef(String ref) { Object result = null; if(ref.startsWith("#/definitions")) { result = getFromMap(ref, swagger.getParameters(), PARAMETER_PATTERN); } else if(ref.startsWith("#/responses")) { result = getFromMap(ref, swagger.getResponses(), RESPONSE_PATTERN); } else if(ref.startsWith("#/parameters")) { result = getFromMap(ref, swagger.getParameters(), PARAMETER_PATTERN); } else if(ref.startsWith("#/paths")) { result = getFromMap(ref, swagger.getPaths(), PATHS_PATTERN); } if (result == null) { result = getFromMap(ref, swagger.getDefinitions(), DEFINITION_PATTERN); } return result; }
final String renamedRef = cache.getRenamedRef(originalRef); if(!cache.hasReferencedKey(renamedRef)) { definitions.remove(renamedRef);
protected <T> void updateLocalRefs(String file, Model schema) { if(schema instanceof RefModel) { RefModel ref = (RefModel) schema; String updatedLocation = merge(file, ref.get$ref()); ref.set$ref(updatedLocation); } else if(schema instanceof ModelImpl) { ModelImpl impl = (ModelImpl) schema; if(impl.getProperties() != null) { for(Property property : schema.getProperties().values()) { updateLocalRefs(file, property); } } } }
public String processRefToExternalDefinition(String $ref, RefFormat refFormat) { String renamedRef = cache.getRenamedRef($ref); final Model model = cache.loadRef($ref, refFormat, Model.class); newRef = possiblyConflictingDefinitionName; cache.putRenamedRef($ref, newRef); if(existingModel == null) { cache.addReferencedKey(newRef);
public <T> T loadRef(String ref, RefFormat refFormat, Class<T> expectedType) { if (refFormat == RefFormat.INTERNAL) { Object loadedRef = loadInternalRef(ref); tree = tree.get(unescapePointer(jsonPathElement)); updateLocalRefs(file, result);
public String processRefToExternalResponse(String $ref, RefFormat refFormat) { String renamedRef = cache.getRenamedRef($ref); if(renamedRef != null) { return renamedRef; final Response response = cache.loadRef($ref, refFormat, Response.class); cache.putRenamedRef($ref, newRef);
public void processOperation(Operation operation) { final List<Parameter> processedOperationParameters = parameterProcessor.processParameters(operation.getParameters()); operation.setParameters(processedOperationParameters); final Map<String, Response> responses = operation.getResponses(); if (responses != null) { for (String responseCode : responses.keySet()) { Response response = responses.get(responseCode); if(response != null) { if (response instanceof RefResponse) { RefResponse refResponse = (RefResponse) response; responseProcessor.processResponse(response); Response resolvedResponse = cache.loadRef(refResponse.get$ref(), refResponse.getRefFormat(), Response.class); if (resolvedResponse != null) { response = resolvedResponse; responses.put(responseCode, resolvedResponse); } } responseProcessor.processResponse(response); } } } } }
private Object getFromMap(String ref, Map map, Pattern pattern) { final Matcher parameterMatcher = pattern.matcher(ref); if (parameterMatcher.matches()) { final String paramName = unescapePointer(parameterMatcher.group("name")); if (map != null) { return map.get(paramName); } } return null; }
protected <T> void updateLocalRefs(String file, Property schema) { if(schema instanceof RefProperty) { RefProperty ref = (RefProperty) schema; String updatedLocation = merge(file, ref.get$ref()); ref.set$ref(updatedLocation); } }
public SwaggerResolver(Swagger swagger, List<AuthorizationValue> auths, String parentFileLocation, Settings settings) { this.swagger = swagger; this.settings = settings != null ? settings : new Settings(); this.cache = new ResolverCache(swagger, auths, parentFileLocation); definitionsProcessor = new DefinitionsProcessor(cache, swagger); pathProcessor = new PathsProcessor(cache, swagger, this.settings); operationsProcessor = new OperationProcessor(cache, swagger); }
if (parameter instanceof RefParameter) { RefParameter refParameter = (RefParameter) parameter; Parameter resolvedParameter = cache.loadRef(refParameter.get$ref(), refParameter.getRefFormat(), Parameter.class);
Path resolvedPath = cache.loadRef(refPath.get$ref(), refPath.getRefFormat(), Path.class);