1. Pom.xml updated to generate API code using Swagger codegen.
2. Moved the createModule code to the method implemented by Swagger.
JIRA: https://jira.onap.org/browse/CCSDK-2897
Issue-ID: CCSDK-2897
Signed-off-by: puthuparambil.aditya <aditya.puthuparambil@bell.ca>
Change-Id: Iadd3dc0402f06a597a179148fd5f43e0fe7c48f6
Signed-off-by: puthuparambil.aditya <aditya.puthuparambil@bell.ca>
<hibernate-types.version>2.10.0</hibernate-types.version>
<spock-core.version>2.0-M2-groovy-3.0</spock-core.version>
<springboot.version>2.3.3.RELEASE</springboot.version>
+ <springfox-swagger2.version>2.6.1</springfox-swagger2.version>
<swagger.version>2.1.4</swagger.version>
<yangtools.version>5.0.6</yangtools.version>
</properties>
<artifactId>swagger-jaxrs2</artifactId>
<version>${swagger.version}</version>
</dependency>
+ <dependency>
+ <groupId>io.springfox</groupId>
+ <artifactId>springfox-swagger2</artifactId>
+ <version>${springfox-swagger2.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>io.springfox</groupId>
+ <artifactId>springfox-swagger-ui</artifactId>
+ <version>${springfox-swagger2.version}</version>
+ </dependency>
<dependency>
<groupId>com.vladmihalcea</groupId>
<artifactId>hibernate-types-52</artifactId>
<maven-replacer-plugin.version>1.5.3</maven-replacer-plugin.version>
<oparent.version>3.1.0</oparent.version>
<spring-boot-maven-plugin.version>2.3.3.RELEASE</spring-boot-maven-plugin.version>
+ <swagger-codegen-maven-plugin.version>3.0.18</swagger-codegen-maven-plugin.version>
<swagger-ui.version>3.35.0</swagger-ui.version>
</properties>
</execution>
</executions>
</plugin>
+ <!-- Swagger code generation. -->
+ <plugin>
+ <groupId>io.swagger.codegen.v3</groupId>
+ <artifactId>swagger-codegen-maven-plugin</artifactId>
+ <version>${swagger-codegen-maven-plugin.version}</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ <configuration>
+ <inputSpec>${project.basedir}/docs/api/swagger/openapi.yml</inputSpec>
+ <invokerPackage>org.onap.cps.rest.controller</invokerPackage>
+ <modelPackage>org.onap.cps.rest.model</modelPackage>
+ <apiPackage>org.onap.cps.rest.api</apiPackage>
+ <language>spring</language>
+ <generateSupportingFiles>false</generateSupportingFiles>
+ <configOptions>
+ <sourceFolder>src/gen/java</sourceFolder>
+ <dateLibrary>java11</dateLibrary>
+ <interfaceOnly>true</interfaceOnly>
+ <useTags>true</useTags>
+ </configOptions>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
<plugin>
<!-- Download Swagger UI webjar. -->
<groupId>org.apache.maven.plugins</groupId>
servers:
- url: //localhost:8088/
tags:
- - name: cps-resource
+ - name: cps-rest
description: cps Resource
paths:
/v1/dataspaces/{dataspace-name}/:
delete:
tags:
- - cps-resource
+ - cps-rest
summary: Delete the given dataspace
operationId: deleteDataspace
parameters:
/v1/dataspaces/{dataspace-name}/anchors:
get:
tags:
- - cps-resource
+ - cps-rest
summary: Read all anchors, given a dataspace
operationId: getAnchors
parameters:
content: {}
post:
tags:
- - cps-resource
+ - cps-rest
summary: Create a new anchor in the given dataspace
operationId: createAnchor
parameters:
required:
- file
properties:
- file:
+ multipartFile:
type: string
- description: file
+ description: multipartFile
format: binary
required: true
responses:
/v1/dataspaces/{dataspace-name}/anchors/{anchor-name}:
get:
tags:
- - cps-resource
+ - cps-rest
summary: Read an anchor given a anchor and a dataspace
operationId: getAnchor
parameters:
content: {}
delete:
tags:
- - cps-resource
+ - cps-rest
summary: Delete an anchor given a anchor and a dataspace
operationId: deleteAnchor
parameters:
/v1/dataspaces/{dataspace-name}/anchors/{anchor-name}/nodes:
get:
tags:
- - cps-resource
+ - cps-rest
summary: Get a node given an anchor for the given dataspace
operationId: getNodeByDataspaceAndAnchor
parameters:
/v1/dataspaces/{dataspace-name}/modules:
get:
tags:
- - cps-resource
+ - cps-rest
summary: Read all yang modules in the store
operationId: getModule
parameters:
content: {}
post:
tags:
- - cps-resource
+ - cps-rest
summary: Create modules for the given dataspace
operationId: createModules
parameters:
required:
- file
properties:
- file:
+ multipartFile:
type: string
- description: file
+ description: multipartFile
format: binary
required: true
responses:
/v1/dataspaces/{dataspace-name}/nodes:
get:
tags:
- - cps-resource
+ - cps-rest
summary: Get all nodes for a given dataspace using an xpath or schema node identifier
operationId: getNode
parameters:
x-codegen-request-body-name: requestBody
post:
tags:
- - cps-resource
+ - cps-rest
summary: Create a node for a given anchor for the given dataspace
operationId: createNode
parameters:
required:
- file
properties:
- file:
+ multipartFile:
type: string
- description: file
+ description: multipartFile
format: binary
required: true
responses:
<groupId>io.swagger.core.v3</groupId>\r
<artifactId>swagger-jaxrs2</artifactId>\r
</dependency>\r
+ <dependency>\r
+ <groupId>io.springfox</groupId>\r
+ <artifactId>springfox-swagger2</artifactId>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>io.springfox</groupId>\r
+ <artifactId>springfox-swagger-ui</artifactId>\r
+ </dependency>\r
<dependency>\r
<groupId>org.springframework.boot</groupId>\r
<artifactId>spring-boot-starter-test</artifactId>\r
<groupId>org.springframework.boot</groupId>\r
<artifactId>spring-boot-maven-plugin</artifactId>\r
</plugin>\r
+ <!-- Swagger code generation. -->\r
+ <plugin>\r
+ <groupId>io.swagger.codegen.v3</groupId>\r
+ <artifactId>swagger-codegen-maven-plugin</artifactId>\r
+ </plugin>\r
<plugin>\r
<!-- Download Swagger UI webjar. -->\r
<groupId>org.apache.maven.plugins</groupId>\r
import java.io.IOException;
import java.io.OutputStream;
import javax.persistence.PersistenceException;
+import javax.validation.Valid;
import org.hibernate.exception.ConstraintViolationException;
import org.onap.cps.api.CpService;
+import org.onap.cps.rest.api.CpsRestApi;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.model.parser.api.YangParserException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.multipart.MultipartFile;
@RestController
-public class CpsRestController {
+public class CpsRestController implements CpsRestApi {
@Autowired
private CpService cpService;
- /*
- Old rest endpoints before contract first approach (Need to be removed).
- */
+ @Override
+ public ResponseEntity<Object> createAnchor(@Valid MultipartFile multipartFile, String dataspaceName) {
+ return null;
+ }
- /**
- * Upload a yang model file.
- *
- * @param uploadedFile the yang model Multipart File.
- * @param dataspaceName the dataspace name linked to the model.
- * @return a ResponseEntity.
- */
- @PostMapping("/dataspaces/{dataspace_name}/modules")
- public final ResponseEntity<String> uploadYangModelFile(
- @RequestParam("file") MultipartFile uploadedFile,
- @PathVariable("dataspace_name") String dataspaceName) {
+ @Override
+ public ResponseEntity<Object> createModules(@Valid MultipartFile multipartFile, String dataspaceName) {
try {
- final File fileToParse = saveToFile(uploadedFile);
+ final File fileToParse = saveToFile(multipartFile);
final SchemaContext schemaContext = cpService.parseAndValidateModel(fileToParse);
cpService.storeSchemaContext(schemaContext, dataspaceName);
- return new ResponseEntity<String>("Resource successfully created", HttpStatus.CREATED);
+ return new ResponseEntity<>("Resource successfully created", HttpStatus.CREATED);
} catch (final YangParserException | ConstraintViolationException e) {
- return new ResponseEntity<String>(e.getMessage(), HttpStatus.BAD_REQUEST);
+ return new ResponseEntity<>(e.getMessage(), HttpStatus.BAD_REQUEST);
} catch (final Exception e) {
- return new ResponseEntity<String>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
+ return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
+ @Override
+ public ResponseEntity<Object> createNode(@Valid MultipartFile multipartFile, String dataspaceName) {
+ return null;
+ }
+
+ @Override
+ public ResponseEntity<Object> deleteAnchor(String dataspaceName, String anchorName) {
+ return null;
+ }
+
+ @Override
+ public ResponseEntity<Object> deleteDataspace(String dataspaceName) {
+ return null;
+ }
+
+ @Override
+ public ResponseEntity<Object> getAnchor(String dataspaceName, String anchorName) {
+ return null;
+ }
+
+ @Override
+ public ResponseEntity<Object> getAnchors(String dataspaceName) {
+ return null;
+ }
+
+ @Override
+ public ResponseEntity<Object> getModule(String dataspaceName, @Valid String namespaceName, @Valid String revision) {
+ return null;
+ }
+
+ @Override
+ public ResponseEntity<Object> getNode(@Valid String body, String dataspaceName) {
+ return null;
+ }
+
+ @Override
+ public ResponseEntity<Object> getNodeByDataspaceAndAnchor(@Valid String body, String dataspaceName,
+ String anchorName) {
+ return null;
+ }
+
+ /*
+ Old rest endpoints before contract first approach (Need to be removed).
+ */
+
/**
* Upload a JSON file.
*