/** Creates a map between http verb and operation. */ private Map<String, Operation> getOperationsForPath(Path pathObj) { Map<String, Operation> hmap = Maps.newLinkedHashMap(); hmap.put("get", pathObj.getGet()); hmap.put("head", pathObj.getHead()); hmap.put("delete", pathObj.getDelete()); hmap.put("patch", pathObj.getPatch()); hmap.put("post", pathObj.getPost()); hmap.put("put", pathObj.getPut()); hmap.put("options", pathObj.getOptions()); return hmap; } /** Adds a {@link Method} from {@link Operation}. */
/** Creates a map between http verb and operation. */ private Map<String, Operation> getOperationsForPath(Path pathObj) { Map<String, Operation> hmap = Maps.newLinkedHashMap(); hmap.put("get", pathObj.getGet()); hmap.put("head", pathObj.getHead()); hmap.put("delete", pathObj.getDelete()); hmap.put("patch", pathObj.getPatch()); hmap.put("post", pathObj.getPost()); hmap.put("put", pathObj.getPut()); hmap.put("options", pathObj.getOptions()); return hmap; } /** Adds a {@link Method} from {@link Operation}. */
private Stream<OpenApiOperation> createMethodAndPath(String url, Path path) { List<OpenApiOperation> result = new ArrayList<>(); String fullUrl = combineWithBasePath(url); if (path.getGet() != null) { result.add(new OpenApiOperation("GET", fullUrl)); } if (path.getPut() != null) { result.add(new OpenApiOperation("PUT", fullUrl)); } if (path.getPost() != null) { result.add(new OpenApiOperation("POST", fullUrl)); } if (path.getDelete() != null) { result.add(new OpenApiOperation("DELETE", fullUrl)); } return result.stream(); }
private Operation getGetOperation() { return swaggerRouter.getSwagger().getPath(routeConfiguration.getSwaggerPath()).getGet(); }
public void addListModels(Swagger swagger) { Map<String, Model> listModels = new LinkedHashMap<>(); // lists in paths for (Path path : swagger.getPaths().values()) { List<Property> properties = new ArrayList<>(); properties.add(getArrayPropertyFromOperation(path.getGet())); properties.add(getArrayPropertyFromOperation(path.getPost())); properties.add(getArrayPropertyFromOperation(path.getPatch())); properties.add(getArrayPropertyFromOperation(path.getPut())); listModels.putAll(processListsFromProperties(properties, null, swagger)); } swagger.getDefinitions() .entrySet().stream() .filter(entry -> topLevelResources.contains(entry.getKey())) .forEach(entry -> { Model model = entry.getValue(); if (model != null && model.getProperties() != null) { listModels.putAll(processListsFromProperties(model.getProperties().values(), model, swagger)); } }); listModels.forEach(swagger::addDefinition); }
/** * Decorates with responses that apply to all operations for all paths. * @param path the path to decorate * @return the decorated path */ private Path decorateGlobalResponses(Path path) { globalResponses.forEach( (code, response) -> { if (path.getGet() != null) { path.getGet().response(code, response); } if (path.getDelete() != null) { path.getDelete().response(code, response); } if (path.getPost() != null) { path.getPost().response(code, response); } if (path.getPatch() != null) { path.getPatch().response(code, response); } } ); return path; }
@Override public Iterable<Endpoint> listEndpoints() { List<Endpoint> endpoints = new ArrayList<>(); String basePath = findBasePath(); Map<String, Path> paths = SwaggerHelper.swagger.getPaths(); if(log.isInfoEnabled()) log.info("Generating paths from Swagger spec"); for (Map.Entry<String, Path> pathPair : paths.entrySet()) { String path = basePath + pathPair.getKey(); Path pathImpl = pathPair.getValue(); if(pathImpl.getGet() != null) addEndpoint(endpoints, path, "get"); if(pathImpl.getPut() != null) addEndpoint(endpoints, path, "put"); if(pathImpl.getHead() != null) addEndpoint(endpoints, path, "head"); if(pathImpl.getPost() != null) addEndpoint(endpoints, path, "post"); if(pathImpl.getDelete() != null) addEndpoint(endpoints, path, "delete"); if(pathImpl.getPatch() != null) addEndpoint(endpoints, path, "patch"); if(pathImpl.getOptions() != null) addEndpoint(endpoints, path, "options"); } return endpoints; }
/** * * @param basePath * @param path * @param pathObject */ private void processSwaggerPath(String basePath, String path, io.swagger.models.Path pathObject) { String URI = new StringBuilder().append(StringUtils.isNotEmpty(basePath) ? basePath : "").append(path) .toString(); populateSwaggerMap(URI, "GET", pathObject.getGet()); populateSwaggerMap(URI, "POST", pathObject.getPost()); populateSwaggerMap(URI, "DELETE", pathObject.getDelete()); populateSwaggerMap(URI, "PATCH", pathObject.getPatch()); populateSwaggerMap(URI, "PUT", pathObject.getPut()); populateSwaggerMap(URI, "HEAD", pathObject.getHead()); populateSwaggerMap(URI, "OPTIONS", pathObject.getOptions()); }
@Test public void checkRepresentationParamExists() { SwaggerSpecificationCreator ssc = new SwaggerSpecificationCreator(); ssc.getJSON(); Swagger spec = ssc.getSwagger(); for (Path p : spec.getPaths().values()) { if (p.getGet() != null) { Assert.assertTrue("Ensure each GET operation has the 'v' query parameter", operationHasRepresentationParam(p.getGet())); } } }
private void validatePath(String pathName, Path actualPath, Path expectedPath) { if (expectedPath != null) { softAssertions.assertThat(actualPath.getOperations().size()).as("Checking number of operations of path '%s'", pathName).isGreaterThanOrEqualTo(expectedPath.getOperations().size()); validateOperation(actualPath.getGet(), expectedPath.getGet(), pathName, "GET"); validateOperation(actualPath.getDelete(), expectedPath.getDelete(), pathName, "DELETE"); validateOperation(actualPath.getPost(), expectedPath.getPost(), pathName, "POST"); validateOperation(actualPath.getPut(), expectedPath.getPut(), pathName, "PUT"); validateOperation(actualPath.getPatch(), expectedPath.getPatch(), pathName, "PATCH"); validateOperation(actualPath.getOptions(), expectedPath.getOptions(), pathName, "OPTIONS"); } }
@Override public void afterScan(final io.swagger.jaxrs.Reader reader, final Swagger swagger) { for (final String pathName : swagger.getPaths().keySet()) { final Path path = swagger.getPaths().get(pathName); decorateOperation(path.getGet(), pathName, "GET"); decorateOperation(path.getPost(), pathName, "POST"); decorateOperation(path.getPut(), pathName, "PUT"); decorateOperation(path.getDelete(), pathName, "DELETE"); decorateOperation(path.getOptions(), pathName, "OPTIONS"); } for (final Model m : swagger.getDefinitions().values()) { if (m.getProperties() != null) { for (final Property p : m.getProperties().values()) { p.setReadOnly(false); } } } }
private Map<String, Operation> getOperations(Path path) { final Map<String, Operation> ops = new HashMap<>(); addOp(ops, "get", path.getGet()); addOp(ops, "post", path.getPost()); addOp(ops, "put", path.getPut()); addOp(ops, "delete", path.getDelete()); addOp(ops, "options", path.getOptions()); addOp(ops, "patch", path.getPatch()); return ops; }
private List<Operation> getAllOperationsInAPath(Path pathObj) { List<Operation> operations = new ArrayList<>(); addToOperationsList(operations, pathObj.getGet()); addToOperationsList(operations, pathObj.getPut()); addToOperationsList(operations, pathObj.getPost()); addToOperationsList(operations, pathObj.getPatch()); addToOperationsList(operations, pathObj.getDelete()); addToOperationsList(operations, pathObj.getOptions()); addToOperationsList(operations, pathObj.getHead()); return operations; }
private void validatePath(String pathName, Path actualPath, Path expectedPath) { if (expectedPath != null) { softAssertions.assertThat(actualPath.getOperations()).as("Checking number of operations of path '%s'", pathName).hasSameSizeAs(actualPath.getOperations()); validateOperation(actualPath.getGet(), expectedPath.getGet(), pathName, "GET"); validateOperation(actualPath.getDelete(), expectedPath.getDelete(), pathName, "DELETE"); validateOperation(actualPath.getPost(), expectedPath.getPost(), pathName, "POST"); validateOperation(actualPath.getPut(), expectedPath.getPut(), pathName, "PUT"); validateOperation(actualPath.getPatch(), expectedPath.getPatch(), pathName, "PATCH"); validateOperation(actualPath.getOptions(), expectedPath.getOptions(), pathName, "OPTIONS"); } }
private Path getNewWildCardPathObject(Path userDefinedWildCardPathObject) { Preconditions.checkNotNull( userDefinedWildCardPathObject, "userDefinedWildCardPathObject cannot be null"); Path path = new Path(); if (userDefinedWildCardPathObject.getGet() == null) { path.set("get", constructReservedOperation("Get")); } if (userDefinedWildCardPathObject.getDelete() == null) { path.set("delete", constructReservedOperation("Delete")); } if (userDefinedWildCardPathObject.getPatch() == null) { path.set("patch", constructReservedOperation("Patch")); } if (userDefinedWildCardPathObject.getPost() == null) { path.set("post", constructReservedOperation("Post")); } if (userDefinedWildCardPathObject.getPut() == null) { path.set("put", constructReservedOperation("Put")); } return path; }
private Path getNewWildCardPathObject(Path userDefinedWildCardPathObject) { Preconditions.checkNotNull( userDefinedWildCardPathObject, "userDefinedWildCardPathObject cannot be null"); Path path = new Path(); if (userDefinedWildCardPathObject.getGet() == null) { path.set("get", constructReservedOperation("Get")); } if (userDefinedWildCardPathObject.getDelete() == null) { path.set("delete", constructReservedOperation("Delete")); } if (userDefinedWildCardPathObject.getPatch() == null) { path.set("patch", constructReservedOperation("Patch")); } if (userDefinedWildCardPathObject.getPost() == null) { path.set("post", constructReservedOperation("Post")); } if (userDefinedWildCardPathObject.getPut() == null) { path.set("put", constructReservedOperation("Put")); } return path; }
@Test public void shouldCreatePropertyParametersFromPetstoreSwagger() throws IOException { final String specification = resource("/swagger/petstore.swagger.json"); final Swagger swagger = new SwaggerParser().parse(specification); final Parameter petIdPathParameter = swagger.getPath("/pet/{petId}").getGet().getParameters().get(0); final Optional<ConfigurationProperty> maybeConfigurationProperty = BaseSwaggerConnectorGenerator .createPropertyFromParameter(petIdPathParameter); final ConfigurationProperty expected = new ConfigurationProperty.Builder()// .componentProperty(false)// .deprecated(false)// .description("ID of pet to return")// .displayName("petId")// .group("producer")// .javaType(Long.class.getName())// .kind("property")// .required(true)// .secret(false)// .type("integer")// .build(); assertThat(maybeConfigurationProperty).hasValue(expected); }
@Test public void shouldCreatePropertyParametersFromPetstoreSwagger() throws IOException { final String specification = resource("/swagger/petstore.swagger.json"); final Swagger swagger = new SwaggerParser().parse(specification); final Parameter petIdPathParameter = swagger.getPath("/pet/{petId}").getGet().getParameters().get(0); final Optional<ConfigurationProperty> maybeConfigurationProperty = BaseSwaggerConnectorGenerator .createPropertyFromParameter(petIdPathParameter); final ConfigurationProperty expected = new ConfigurationProperty.Builder()// .componentProperty(false)// .deprecated(false)// .description("ID of pet to return")// .displayName("petId")// .group("producer")// .javaType(Long.class.getName())// .kind("property")// .required(true)// .secret(false)// .type("integer")// .build(); assertThat(maybeConfigurationProperty).hasValue(expected); }
@Test public void shouldCreatePropertyParametersFromPetstoreSwagger() throws IOException { final String specification = resource("/swagger/petstore.swagger.json"); final Swagger swagger = new SwaggerParser().parse(specification); final Parameter petIdPathParameter = swagger.getPath("/pet/{petId}").getGet().getParameters().get(0); final Optional<ConfigurationProperty> maybeConfigurationProperty = BaseSwaggerConnectorGenerator .createPropertyFromParameter(petIdPathParameter); final ConfigurationProperty expected = new ConfigurationProperty.Builder()// .componentProperty(false)// .deprecated(false)// .description("ID of pet to return")// .displayName("petId")// .group("producer")// .javaType(Long.class.getName())// .kind("property")// .required(true)// .secret(false)// .type("integer")// .build(); assertThat(maybeConfigurationProperty).hasValue(expected); }