aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/org/onap/crud
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/onap/crud')
-rw-r--r--src/main/java/org/onap/crud/CrudApplication.java23
-rw-r--r--src/main/java/org/onap/crud/config/JerseyConfig.java30
-rw-r--r--src/main/java/org/onap/crud/entity/Vertex.java5
-rw-r--r--src/main/java/org/onap/crud/service/CrudRestService.java292
-rw-r--r--src/main/java/org/onap/crud/util/CombinedResourceProvider.java50
5 files changed, 365 insertions, 35 deletions
diff --git a/src/main/java/org/onap/crud/CrudApplication.java b/src/main/java/org/onap/crud/CrudApplication.java
index 008ff3f..a1531f1 100644
--- a/src/main/java/org/onap/crud/CrudApplication.java
+++ b/src/main/java/org/onap/crud/CrudApplication.java
@@ -22,7 +22,10 @@ package org.onap.crud;
import java.util.HashMap;
import java.util.Map;
+import java.util.Collections;
+
import javax.annotation.PostConstruct;
+
import org.eclipse.jetty.util.security.Password;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -31,10 +34,19 @@ import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.context.annotation.ImportResource;
import org.springframework.core.env.Environment;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.service.Contact;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
/**
* Crud application class - SpringApplication.run
*/
@SpringBootApplication
+@EnableSwagger2
@ImportResource({"file:${SERVICE_BEANS}/*.xml"})
public class CrudApplication extends SpringBootServletInitializer{// NOSONAR
@Autowired
@@ -67,4 +79,15 @@ public class CrudApplication extends SpringBootServletInitializer{// NOSONAR
}
}
}
+ public static final Contact DEFAULT_CONTACT = new Contact("Amdocs", "http://www.amdocs.com", "noreply@amdocs.com");
+
+ public static final ApiInfo DEFAULT_API_INFO = new ApiInfo("AAI NCSO Adapter Service", "AAI NCSO Adapter Service.",
+ "1.0", "urn:tos", DEFAULT_CONTACT, "Apache 2.0", "API license URL", Collections.emptyList());
+
+
+
+ public Docket api() {
+ return new Docket(DocumentationType.SWAGGER_2).apiInfo(DEFAULT_API_INFO).select().paths(PathSelectors.any())
+ .apis(RequestHandlerSelectors.basePackage("org.onap.crud")).build();
+ }
}
diff --git a/src/main/java/org/onap/crud/config/JerseyConfig.java b/src/main/java/org/onap/crud/config/JerseyConfig.java
index 654ff81..60167d5 100644
--- a/src/main/java/org/onap/crud/config/JerseyConfig.java
+++ b/src/main/java/org/onap/crud/config/JerseyConfig.java
@@ -20,14 +20,23 @@
*/
package org.onap.crud.config;
+import javax.annotation.PostConstruct;
+import javax.ws.rs.ApplicationPath;
+
import org.glassfish.jersey.server.ResourceConfig;
import org.onap.crud.service.CrudRestService;
import org.onap.crud.service.JaxrsEchoService;
import org.springframework.stereotype.Component;
+import io.swagger.jaxrs.config.BeanConfig;
+import io.swagger.jaxrs.listing.ApiListingResource;
+import io.swagger.jaxrs.listing.SwaggerSerializers;
+
/**
* Registers Crud Rest interface as JAX-RS endpoints.
*/
+
+@ApplicationPath("/services")
@Component
public class JerseyConfig extends ResourceConfig {
@@ -35,5 +44,26 @@ public class JerseyConfig extends ResourceConfig {
register(crudRestService);
register(jaxrsEchoService);
}
+
+ @PostConstruct
+ public void init() {
+ // Register components where DI is needed
+ this.SwaggerConfig();
+ }
+ private void SwaggerConfig() {
+ this.register(ApiListingResource.class);
+ this.register(SwaggerSerializers.class);
+
+ BeanConfig swaggerConfigBean = new BeanConfig();
+ swaggerConfigBean.setConfigId("Gizmo");
+ swaggerConfigBean.setTitle("Gizmo Rest API ");
+ swaggerConfigBean.setVersion("v1");
+ swaggerConfigBean.setContact("Amdocs Inc.");
+ swaggerConfigBean.setSchemes(new String[] { "https" });
+ swaggerConfigBean.setBasePath("/services");
+ swaggerConfigBean.setResourcePackage("org.onap.crud");
+ swaggerConfigBean.setPrettyPrint(true);
+ swaggerConfigBean.setScan(true);
+ }
}
diff --git a/src/main/java/org/onap/crud/entity/Vertex.java b/src/main/java/org/onap/crud/entity/Vertex.java
index fd03827..a70253e 100644
--- a/src/main/java/org/onap/crud/entity/Vertex.java
+++ b/src/main/java/org/onap/crud/entity/Vertex.java
@@ -113,9 +113,8 @@ public class Vertex {
type = OxmModelValidator.resolveCollectionType(version, type);
DynamicJAXBContext jaxbContext = OxmModelLoader.getContextForVersion(version);
- String modelObjectClass = CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_CAMEL, CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_CAMEL, type));
-
- final DynamicType modelObjectType = jaxbContext.getDynamicType(modelObjectClass);
+
+ final DynamicType modelObjectType = OxmModelLoader.getDynamicTypeForVersion(version, type);
final DynamicType reservedType = jaxbContext.getDynamicType("ReservedPropNames");
diff --git a/src/main/java/org/onap/crud/service/CrudRestService.java b/src/main/java/org/onap/crud/service/CrudRestService.java
index 7bf4ca4..f975347 100644
--- a/src/main/java/org/onap/crud/service/CrudRestService.java
+++ b/src/main/java/org/onap/crud/service/CrudRestService.java
@@ -20,7 +20,6 @@
*/
package org.onap.crud.service;
-import com.google.gson.JsonElement;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.Arrays;
@@ -28,6 +27,7 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
+
import javax.security.auth.x500.X500Principal;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Consumes;
@@ -47,6 +47,7 @@ import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.core.UriInfo;
+
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.cxf.jaxrs.ext.PATCH;
import org.onap.aai.cl.api.Logger;
@@ -63,7 +64,16 @@ import org.onap.crud.util.CrudServiceConstants;
import org.onap.crud.util.CrudServiceUtil;
import org.slf4j.MDC;
-@Path("/services/inventory")
+import com.google.gson.JsonElement;
+
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+
+@Path("/inventory")
public class CrudRestService {
private AbstractGraphDataService graphDataService;
@@ -93,13 +103,23 @@ public class CrudRestService {
public void startup() {
}
-
+
+ @ApiOperation(value = "Get Vertex" , notes="For example : https://<host>:9520/services/inventory/v11/pserver/<id>")
+ @ApiResponses({
+ @ApiResponse(code = 200, message = "Success"),
+ @ApiResponse(code = 403, message = "Forbidden"),
+ @ApiResponse(code = 404, message = "Not Found"),
+ @ApiResponse(code = 500, message = "Internal Server Error") })
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "X-FromAppId", required = true, dataType = "string", paramType = "header"),
+ @ApiImplicitParam(name = "X-TransactionId", required = true, dataType = "string", paramType = "header"),
+ })
@GET
@Path("/{version}/{type}/{id}")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
- public Response getVertex(String content, @PathParam("version") String version, @PathParam("type") String type,
- @PathParam("id") String id, @PathParam("uri") @Encoded String uri, @Context HttpHeaders headers,
+ public Response getVertex(@ApiParam(hidden=true) String content, @PathParam("version") @ApiParam(value="oxm model version",defaultValue="v13") String version, @PathParam("type") String type,
+ @PathParam("id") String id, @PathParam("uri") @Encoded @ApiParam(hidden=true) String uri, @Context HttpHeaders headers,
@Context UriInfo uriInfo, @Context HttpServletRequest req) {
LoggingUtil.initMdcContext(req, headers);
@@ -130,12 +150,22 @@ public class CrudRestService {
return response;
}
+ @ApiOperation(value = "Get Vertices" , notes="For example : https://<host>:9520/services/inventory/v11/pserver/")
+ @ApiResponses({
+ @ApiResponse(code = 200, message = "Success"),
+ @ApiResponse(code = 403, message = "Forbidden"),
+ @ApiResponse(code = 404, message = "Not Found"),
+ @ApiResponse(code = 500, message = "Internal Server Error") })
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "X-FromAppId", required = true, dataType = "string", paramType = "header"),
+ @ApiImplicitParam(name = "X-TransactionId", required = true, dataType = "string", paramType = "header"),
+ })
@GET
@Path("/{version}/{type}/")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
- public Response getVertices(String content, @PathParam("version") String version, @PathParam("type") String type,
- @PathParam("uri") @Encoded String uri, @Context HttpHeaders headers, @Context UriInfo uriInfo,
+ public Response getVertices(@ApiParam(hidden=true) String content, @PathParam("version") @ApiParam(value="oxm model version",defaultValue="v13") String version, @PathParam("type") String type,
+ @PathParam("uri") @Encoded @ApiParam(hidden=true) String uri, @Context HttpHeaders headers, @Context UriInfo uriInfo,
@Context HttpServletRequest req) {
LoggingUtil.initMdcContext(req, headers);
@@ -175,12 +205,22 @@ public class CrudRestService {
return response;
}
+ @ApiOperation(value = "Get Edge" , notes="For example : https://<host>:9520/services/inventory/relationships/v11/tosca.relationships.HostedOn/<id>")
+ @ApiResponses({
+ @ApiResponse(code = 200, message = "Success"),
+ @ApiResponse(code = 403, message = "Forbidden"),
+ @ApiResponse(code = 404, message = "Not Found"),
+ @ApiResponse(code = 500, message = "Internal Server Error") })
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "X-FromAppId", required = true, dataType = "string", paramType = "header"),
+ @ApiImplicitParam(name = "X-TransactionId", required = true, dataType = "string", paramType = "header"),
+ })
@GET
@Path("/relationships/{version}/{type}/{id}")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
- public Response getEdge(String content, @PathParam("version") String version, @PathParam("type") String type,
- @PathParam("id") String id, @PathParam("uri") @Encoded String uri, @Context HttpHeaders headers,
+ public Response getEdge(@ApiParam(hidden=true) String content, @PathParam("version") @ApiParam(value="oxm model version",defaultValue="v13") String version, @PathParam("type") String type,
+ @PathParam("id") String id, @PathParam("uri") @Encoded @ApiParam(hidden=true) String uri, @Context HttpHeaders headers,
@Context UriInfo uriInfo, @Context HttpServletRequest req) {
LoggingUtil.initMdcContext(req, headers);
@@ -211,12 +251,22 @@ public class CrudRestService {
return response;
}
+ @ApiOperation(value = "Get Edges" , notes="For example : https://<host>:9520/services/inventory/relationships/v11/tosca.relationships.HostedOn/")
+ @ApiResponses({
+ @ApiResponse(code = 200, message = "Success"),
+ @ApiResponse(code = 403, message = "Forbidden"),
+ @ApiResponse(code = 404, message = "Not Found"),
+ @ApiResponse(code = 500, message = "Internal Server Error") })
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "X-FromAppId", required = true, dataType = "string", paramType = "header"),
+ @ApiImplicitParam(name = "X-TransactionId", required = true, dataType = "string", paramType = "header"),
+ })
@GET
@Path("/relationships/{version}/{type}/")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
- public Response getEdges(String content, @PathParam("version") String version, @PathParam("type") String type,
- @PathParam("uri") @Encoded String uri, @Context HttpHeaders headers, @Context UriInfo uriInfo,
+ public Response getEdges(@ApiParam(hidden=true) String content, @PathParam("version") @ApiParam(value="oxm model version",defaultValue="v13") String version, @PathParam("type") String type,
+ @PathParam("uri") @Encoded @ApiParam(hidden=true) String uri, @Context HttpHeaders headers, @Context UriInfo uriInfo,
@Context HttpServletRequest req) {
LoggingUtil.initMdcContext(req, headers);
@@ -246,12 +296,29 @@ public class CrudRestService {
return response;
}
+ @ApiOperation(value = "Update Edge" , notes = "# Payload \n"
+ + "{ \r\n" +
+ " \"properties\":{ \r\n" +
+ " \"prop1\" : \"value\",\r\n" +
+ " \"prop2\" :\"value\",\r\n" +
+ " ..}\r\n" +
+ " }")
+ @ApiResponses({
+ @ApiResponse(code = 200, message = "Success"),
+ @ApiResponse(code = 403, message = "Forbidden"),
+ @ApiResponse(code = 404, message = "Not Found"),
+ @ApiResponse(code = 400, message = "Bad Request"),
+ @ApiResponse(code = 500, message = "Internal Server Error") })
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "X-FromAppId", required = true, dataType = "string", paramType = "header"),
+ @ApiImplicitParam(name = "X-TransactionId", required = true, dataType = "string", paramType = "header"),
+ })
@PUT
@Path("/relationships/{version}/{type}/{id}")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
- public Response updateEdge(String content, @PathParam("version") String version, @PathParam("type") String type,
- @PathParam("id") String id, @PathParam("uri") @Encoded String uri, @Context HttpHeaders headers,
+ public Response updateEdge(String content, @PathParam("version") @ApiParam(value="oxm model version",defaultValue="v13") String version, @PathParam("type") String type,
+ @PathParam("id") String id, @PathParam("uri") @Encoded @ApiParam(hidden=true) String uri, @Context HttpHeaders headers,
@Context UriInfo uriInfo, @Context HttpServletRequest req) {
LoggingUtil.initMdcContext(req, headers);
@@ -296,12 +363,29 @@ public class CrudRestService {
return response;
}
+ @ApiOperation(value = "Patch Edge" , notes = "# Payload \n"
+ + "{ \r\n" +
+ " \"properties\":{ \r\n" +
+ " \"prop1\" : \"value\",\r\n" +
+ " \"prop2\" :\"value\",\r\n" +
+ " ..}\r\n" +
+ " }")
+ @ApiResponses({
+ @ApiResponse(code = 200, message = "Success"),
+ @ApiResponse(code = 403, message = "Forbidden"),
+ @ApiResponse(code = 400, message = "Bad Request"),
+ @ApiResponse(code = 404, message = "Not Found"),
+ @ApiResponse(code = 500, message = "Internal Server Error") })
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "X-FromAppId", required = true, dataType = "string", paramType = "header"),
+ @ApiImplicitParam(name = "X-TransactionId", required = true, dataType = "string", paramType = "header"),
+ })
@PATCH
@Path("/relationships/{version}/{type}/{id}")
@Consumes({"application/merge-patch+json"})
@Produces({MediaType.APPLICATION_JSON})
- public Response patchEdge(String content, @PathParam("version") String version, @PathParam("type") String type,
- @PathParam("id") String id, @PathParam("uri") @Encoded String uri, @Context HttpHeaders headers,
+ public Response patchEdge(String content, @PathParam("version") @ApiParam(value="oxm model version",defaultValue="v13") String version, @PathParam("type") String type,
+ @PathParam("id") String id, @PathParam("uri") @Encoded @ApiParam(hidden=true) String uri, @Context HttpHeaders headers,
@Context UriInfo uriInfo, @Context HttpServletRequest req) {
LoggingUtil.initMdcContext(req, headers);
@@ -338,12 +422,30 @@ public class CrudRestService {
return response;
}
+ @ApiOperation(value = "Update Vertex" , notes = "# Payload \n"
+ + "{\r\n" +
+ " \"type\" :\"vertex type from oxm like comcast.nodes.sdwan.vpn\",\r\n" +
+ " \"properties\": {\r\n" +
+ " \"prop1\" : \"value\",\r\n" +
+ " \"prop2\" :\"value\",\r\n" +
+ " ..}\r\n" +
+ " }")
+ @ApiResponses({
+ @ApiResponse(code = 200, message = "Success"),
+ @ApiResponse(code = 403, message = "Forbidden"),
+ @ApiResponse(code = 400, message = "Bad Request"),
+ @ApiResponse(code = 404, message = "Not Found"),
+ @ApiResponse(code = 500, message = "Internal Server Error") })
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "X-FromAppId", required = true, dataType = "string", paramType = "header"),
+ @ApiImplicitParam(name = "X-TransactionId", required = true, dataType = "string", paramType = "header"),
+ })
@PUT
@Path("/{version}/{type}/{id}")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
- public Response updateVertex(String content, @PathParam("version") String version, @PathParam("type") String type,
- @PathParam("id") String id, @PathParam("uri") @Encoded String uri, @Context HttpHeaders headers,
+ public Response updateVertex(String content, @PathParam("version") @ApiParam(value="oxm model version",defaultValue="v13") String version, @PathParam("type") String type,
+ @PathParam("id") String id, @PathParam("uri") @Encoded @ApiParam(hidden=true) String uri, @Context HttpHeaders headers,
@Context UriInfo uriInfo, @Context HttpServletRequest req) {
LoggingUtil.initMdcContext(req, headers);
@@ -392,12 +494,30 @@ public class CrudRestService {
return response;
}
+ @ApiOperation(value = "Patch Vertex" , notes = "# Payload \n"
+ + "{\r\n" +
+ " \"type\" :\"vertex type from oxm like comcast.nodes.sdwan.vpn\",\r\n" +
+ " \"properties\": {\r\n" +
+ " \"prop1\" : \"true\",\r\n" +
+ " \"prop2\" :\"name1\",\r\n" +
+ " ..}\r\n" +
+ " }")
+ @ApiResponses({
+ @ApiResponse(code = 200, message = "Success"),
+ @ApiResponse(code = 403, message = "Forbidden"),
+ @ApiResponse(code = 400, message = "Bad Request"),
+ @ApiResponse(code = 404, message = "Not Found"),
+ @ApiResponse(code = 500, message = "Internal Server Error") })
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "X-FromAppId", required = true, dataType = "string", paramType = "header"),
+ @ApiImplicitParam(name = "X-TransactionId", required = true, dataType = "string", paramType = "header"),
+ })
@PATCH
@Path("/{version}/{type}/{id}")
@Consumes({"application/merge-patch+json"})
@Produces({MediaType.APPLICATION_JSON})
- public Response patchVertex(String content, @PathParam("version") String version, @PathParam("type") String type,
- @PathParam("id") String id, @PathParam("uri") @Encoded String uri, @Context HttpHeaders headers,
+ public Response patchVertex(String content, @PathParam("version") @ApiParam(value="oxm model version",defaultValue="v13") String version, @PathParam("type") String type,
+ @PathParam("id") String id, @PathParam("uri") @Encoded @ApiParam(hidden=true) String uri, @Context HttpHeaders headers,
@Context UriInfo uriInfo, @Context HttpServletRequest req) {
LoggingUtil.initMdcContext(req, headers);
@@ -437,12 +557,29 @@ public class CrudRestService {
return response;
}
+ @ApiOperation(value = "Create Vertex" , notes = "# Payload \n"
+ + "{\r\n" +
+ " \"properties\": {\r\n" +
+ " \"prop1\" : \"value\",\r\n" +
+ " \"prop2\" :\"value\",\r\n" +
+ " ..}\r\n" +
+ " }")
+ @ApiResponses({
+ @ApiResponse(code = 201, message = "Created"),
+ @ApiResponse(code = 403, message = "Forbidden"),
+ @ApiResponse(code = 400, message = "Bad Request"),
+ @ApiResponse(code = 404, message = "Not Found"),
+ @ApiResponse(code = 500, message = "Internal Server Error") })
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "X-FromAppId", required = true, dataType = "string", paramType = "header"),
+ @ApiImplicitParam(name = "X-TransactionId", required = true, dataType = "string", paramType = "header"),
+ })
@POST
@Path("/{version}/{type}/")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
- public Response addVertex(String content, @PathParam("version") String version, @PathParam("type") String type,
- @PathParam("uri") @Encoded String uri, @Context HttpHeaders headers, @Context UriInfo uriInfo,
+ public Response addVertex(String content, @PathParam("version") @ApiParam(value="oxm model version",defaultValue="v13") String version, @PathParam("type") String type,
+ @PathParam("uri") @Encoded @ApiParam(hidden=true) String uri, @Context HttpHeaders headers, @Context UriInfo uriInfo,
@Context HttpServletRequest req) {
LoggingUtil.initMdcContext(req, headers);
@@ -586,12 +723,23 @@ public class CrudRestService {
}
+ @ApiOperation(value = "Bulk API" , notes="For example : https://<host>:9520/services/inventory/v11/bulk")
+ @ApiResponses({
+ @ApiResponse(code = 200, message = "Success"),
+ @ApiResponse(code = 403, message = "Forbidden"),
+ @ApiResponse(code = 400, message = "Bad Request"),
+ @ApiResponse(code = 404, message = "Not Found"),
+ @ApiResponse(code = 500, message = "Internal Server Error") })
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "X-FromAppId", required = true, dataType = "string", paramType = "header"),
+ @ApiImplicitParam(name = "X-TransactionId", required = true, dataType = "string", paramType = "header"),
+ })
@POST
@Path("/{version}/bulk/")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
- public Response addBulk(String content, @PathParam("version") String version, @PathParam("type") String type,
- @PathParam("uri") @Encoded String uri, @Context HttpHeaders headers, @Context UriInfo uriInfo,
+ public Response addBulk(String content, @PathParam("version") @ApiParam(value="oxm model version",defaultValue="v13") String version,
+ @PathParam("uri") @Encoded @ApiParam(hidden=true) String uri, @Context HttpHeaders headers, @Context UriInfo uriInfo,
@Context HttpServletRequest req) {
LoggingUtil.initMdcContext(req, headers);
@@ -627,12 +775,30 @@ public class CrudRestService {
return response;
}
+ @ApiOperation(value = "Create Vertex (typeless endpoint)" , nickname="addVertex-typeless",notes = "# Payload \n"
+ + "{\r\n" +
+ " \"type\" :\"vertex type from oxm like comcast.nodes.sdwan.vpn\",\r\n" +
+ " \"properties\": {\r\n" +
+ " \"prop1\" : \"value\",\r\n" +
+ " \"prop2\" :\"value\",\r\n" +
+ " ..}\r\n" +
+ " }")
+ @ApiResponses({
+ @ApiResponse(code = 201, message = "Created"),
+ @ApiResponse(code = 403, message = "Forbidden"),
+ @ApiResponse(code = 400, message = "Bad Request"),
+ @ApiResponse(code = 404, message = "Not Found"),
+ @ApiResponse(code = 500, message = "Internal Server Error") })
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "X-FromAppId", required = true, dataType = "string", paramType = "header"),
+ @ApiImplicitParam(name = "X-TransactionId", required = true, dataType = "string", paramType = "header"),
+ })
@POST
@Path("/{version}/")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
- public Response addVertex(String content, @PathParam("version") String version,
- @PathParam("uri") @Encoded String uri, @Context HttpHeaders headers, @Context UriInfo uriInfo,
+ public Response addVertex(String content, @PathParam("version") @ApiParam(value="oxm model version",defaultValue="v13") String version,
+ @PathParam("uri") @Encoded @ApiParam(hidden=true) String uri, @Context HttpHeaders headers, @Context UriInfo uriInfo,
@Context HttpServletRequest req) {
LoggingUtil.initMdcContext(req, headers);
@@ -677,12 +843,32 @@ public class CrudRestService {
return response;
}
+ @ApiOperation(value = "Create Edge" , notes = "# Payload \n"
+ + "{ \r\n" +
+ " \"source\":\"source vertex like : services/inventory/v11/vserver/0\",\r\n" +
+ " \"target\":\"target vertex like : services/inventory/v11/pserver/7\",\r\n" +
+ " \"properties\":{ \r\n" +
+ " \"prop1\" : \"value\",\r\n" +
+ " \"prop2\" :\"value\",\r\n" +
+ " ..}\r\n" +
+ " }")
+ @ApiResponses({
+ @ApiResponse(code = 201, message = "Created"),
+ @ApiResponse(code = 403, message = "Forbidden"),
+ @ApiResponse(code = 400, message = "Bad Request"),
+ @ApiResponse(code = 404, message = "Not Found"),
+ @ApiResponse(code = 500, message = "Internal Server Error") })
+
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "X-FromAppId", required = true, dataType = "string", paramType = "header"),
+ @ApiImplicitParam(name = "X-TransactionId", required = true, dataType = "string", paramType = "header"),
+ })
@POST
@Path("/relationships/{version}/{type}/")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
- public Response addEdge(String content, @PathParam("version") String version, @PathParam("type") String type,
- @PathParam("uri") @Encoded String uri, @Context HttpHeaders headers, @Context UriInfo uriInfo,
+ public Response addEdge(String content, @PathParam("version") @ApiParam(value="oxm model version",defaultValue="v13") String version, @PathParam("type") String type,
+ @PathParam("uri") @Encoded @ApiParam(hidden=true) String uri, @Context HttpHeaders headers, @Context UriInfo uriInfo,
@Context HttpServletRequest req) {
LoggingUtil.initMdcContext(req, headers);
@@ -722,11 +908,31 @@ public class CrudRestService {
return response;
}
+ @ApiOperation(value = "Create Edge (typeless endpoint)" , nickname="addEdge-typeless",notes = "# Payload \n"
+ + "{ \r\n" +
+ " \"type\":\"edge type like : tosca.relationships.HostedOn\",\r\n" +
+ " \"source\":\"source vertex like : services/inventory/v11/vserver/0\",\r\n" +
+ " \"target\":\"target vertex like : services/inventory/v11/pserver/7\",\r\n" +
+ " \"properties\":{ \r\n" +
+ " \"prop1\" : \"value\",\r\n" +
+ " \"prop2\" :\"value\",\r\n" +
+ " ..}\r\n" +
+ " }")
+ @ApiResponses({
+ @ApiResponse(code = 201, message = "Created"),
+ @ApiResponse(code = 403, message = "Forbidden"),
+ @ApiResponse(code = 400, message = "Bad Request"),
+ @ApiResponse(code = 404, message = "Not Found"),
+ @ApiResponse(code = 500, message = "Internal Server Error") })
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "X-FromAppId", required = true, dataType = "string", paramType = "header"),
+ @ApiImplicitParam(name = "X-TransactionId", required = true, dataType = "string", paramType = "header"),
+ })
@POST
@Path("/relationships/{version}/")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
- public Response addEdge(String content, @PathParam("version") String version, @PathParam("uri") @Encoded String uri,
+ public Response addEdge(String content, @PathParam("version") @ApiParam(value="oxm model version",defaultValue="v13") String version, @PathParam("uri") @Encoded @ApiParam(hidden=true) String uri,
@Context HttpHeaders headers, @Context UriInfo uriInfo, @Context HttpServletRequest req) {
LoggingUtil.initMdcContext(req, headers);
@@ -767,12 +973,23 @@ public class CrudRestService {
return response;
}
+ @ApiOperation(value = "Delete Vertex" , notes="For example : https://<host>:9520/services/inventory/v11/pserver/<id>")
+ @ApiResponses({
+ @ApiResponse(code = 200, message = "Success"),
+ @ApiResponse(code = 403, message = "Forbidden"),
+ @ApiResponse(code = 400, message = "Bad Request"),
+ @ApiResponse(code = 404, message = "Not Found"),
+ @ApiResponse(code = 500, message = "Internal Server Error") })
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "X-FromAppId", required = true, dataType = "string", paramType = "header"),
+ @ApiImplicitParam(name = "X-TransactionId", required = true, dataType = "string", paramType = "header"),
+ })
@DELETE
@Path("/{version}/{type}/{id}")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
- public Response deleteVertex(String content, @PathParam("version") String version, @PathParam("type") String type,
- @PathParam("id") String id, @PathParam("uri") @Encoded String uri, @Context HttpHeaders headers,
+ public Response deleteVertex(@ApiParam(hidden=true) String content, @PathParam("version") @ApiParam(value="oxm model version",defaultValue="v13") String version, @PathParam("type") String type,
+ @PathParam("id") String id, @PathParam("uri") @Encoded @ApiParam(hidden=true) String uri, @Context HttpHeaders headers,
@Context UriInfo uriInfo, @Context HttpServletRequest req) {
LoggingUtil.initMdcContext(req, headers);
@@ -800,12 +1017,23 @@ public class CrudRestService {
return response;
}
+ @ApiOperation(value = "Delete Edge" , notes="For example : https://<host>:9520/services/inventory/v11/pserver/<id>")
+ @ApiResponses({
+ @ApiResponse(code = 200, message = "Success"),
+ @ApiResponse(code = 403, message = "Forbidden"),
+ @ApiResponse(code = 400, message = "Bad Request"),
+ @ApiResponse(code = 404, message = "Not Found"),
+ @ApiResponse(code = 500, message = "Internal Server Error") })
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "X-FromAppId", required = true, dataType = "string", paramType = "header"),
+ @ApiImplicitParam(name = "X-TransactionId", required = true, dataType = "string", paramType = "header"),
+ })
@DELETE
@Path("/relationships/{version}/{type}/{id}")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
- public Response deleteEdge(String content, @PathParam("version") String version, @PathParam("type") String type,
- @PathParam("id") String id, @PathParam("uri") @Encoded String uri, @Context HttpHeaders headers,
+ public Response deleteEdge(@ApiParam(hidden=true) String content, @PathParam("version") @ApiParam(value="oxm model version",defaultValue="v13") String version, @PathParam("type") String type,
+ @PathParam("id") String id, @PathParam("uri") @Encoded @ApiParam(hidden=true) String uri, @Context HttpHeaders headers,
@Context UriInfo uriInfo, @Context HttpServletRequest req) {
LoggingUtil.initMdcContext(req, headers);
diff --git a/src/main/java/org/onap/crud/util/CombinedResourceProvider.java b/src/main/java/org/onap/crud/util/CombinedResourceProvider.java
new file mode 100644
index 0000000..483ac5e
--- /dev/null
+++ b/src/main/java/org/onap/crud/util/CombinedResourceProvider.java
@@ -0,0 +1,50 @@
+/**
+ * ============LICENSE_START=======================================================
+ * org.onap.aai
+ * ================================================================================
+ * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright © 2017-2018 Amdocs
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.crud.util;
+
+import org.springframework.context.annotation.Primary;
+import org.springframework.stereotype.Component;
+import springfox.documentation.swagger.web.InMemorySwaggerResourcesProvider;
+import springfox.documentation.swagger.web.SwaggerResource;
+import springfox.documentation.swagger.web.SwaggerResourcesProvider;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+
+@Component
+@Primary
+public class CombinedResourceProvider implements SwaggerResourcesProvider {
+
+
+ public List<SwaggerResource> get() {
+
+ SwaggerResource jerseySwaggerResource = new SwaggerResource();
+ jerseySwaggerResource.setLocation("/services/swagger.json");
+ jerseySwaggerResource.setSwaggerVersion("2.0");
+ jerseySwaggerResource.setName("Jersey");
+
+ return Stream.of(jerseySwaggerResource).collect(Collectors.toList());
+ }
+
+} \ No newline at end of file