import java.io.IOException;
import java.io.OutputStream;
import javax.validation.Valid;
+import org.modelmapper.ModelMapper;
import org.onap.cps.api.CpService;
+import org.onap.cps.api.CpsAdminService;
+import org.onap.cps.api.CpsModuleService;
import org.onap.cps.exceptions.CpsException;
import org.onap.cps.exceptions.CpsValidationException;
import org.onap.cps.rest.api.CpsRestApi;
+import org.onap.cps.spi.model.Anchor;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
@Autowired
private CpService cpService;
+ @Autowired
+ private CpsModuleService cpsModuleService;
+
+ @Autowired
+ private CpsAdminService cpsAdminService;
+
+ @Autowired
+ private ModelMapper modelMapper;
+
+ /**
+ * Create a new anchor.
+ *
+ * @param anchor the anchor details object.
+ * @param dataspaceName the dataspace name.
+ * @return a ResponseEntity with the anchor name.
+ */
@Override
- public ResponseEntity<Object> createAnchor(@Valid MultipartFile multipartFile, String dataspaceName) {
- return null;
+ public ResponseEntity<String> createAnchor(final org.onap.cps.rest.model.@Valid Anchor anchor,
+ final String dataspaceName) {
+ final Anchor anchorDetails = modelMapper.map(anchor, Anchor.class);
+ anchorDetails.setDataspaceName(dataspaceName);
+ final String anchorName = cpsAdminService.createAnchor(anchorDetails);
+ return new ResponseEntity<String>(anchorName, HttpStatus.CREATED);
}
@Override
- public ResponseEntity<Object> createModules(@Valid MultipartFile multipartFile, String dataspaceName) {
+ public ResponseEntity<Object> createModules(@Valid final MultipartFile multipartFile, final String dataspaceName) {
final File fileToParse = saveToFile(multipartFile);
- final SchemaContext schemaContext = cpService.parseAndValidateModel(fileToParse);
- cpService.storeSchemaContext(schemaContext, dataspaceName);
+ final SchemaContext schemaContext = cpsModuleService.parseAndValidateModel(fileToParse);
+ cpsModuleService.storeSchemaContext(schemaContext, dataspaceName);
return new ResponseEntity<>("Resource successfully created", HttpStatus.CREATED);
}
@Override
- public ResponseEntity<Object> createNode(@Valid MultipartFile multipartFile, String dataspaceName) {
+ public ResponseEntity<Object> createNode(@Valid final MultipartFile multipartFile, final String dataspaceName) {
return null;
}
@Override
- public ResponseEntity<Object> deleteAnchor(String dataspaceName, String anchorName) {
+ public ResponseEntity<Object> deleteAnchor(final String dataspaceName, final String anchorName) {
return null;
}
@Override
- public ResponseEntity<Object> deleteDataspace(String dataspaceName) {
+ public ResponseEntity<Object> deleteDataspace(final String dataspaceName) {
return null;
}
@Override
- public ResponseEntity<Object> getAnchor(String dataspaceName, String anchorName) {
+ public ResponseEntity<Object> getAnchor(final String dataspaceName, final String anchorName) {
return null;
}
@Override
- public ResponseEntity<Object> getAnchors(String dataspaceName) {
+ public ResponseEntity<Object> getAnchors(final String dataspaceName) {
return null;
}
@Override
- public ResponseEntity<Object> getModule(String dataspaceName, @Valid String namespaceName, @Valid String revision) {
+ public ResponseEntity<Object> getModule(final String dataspaceName, @Valid final String namespaceName,
+ @Valid final String revision) {
return null;
}
@Override
- public ResponseEntity<Object> getNode(@Valid String body, String dataspaceName) {
+ public ResponseEntity<Object> getNode(final String dataspaceName) {
return null;
}
@Override
- public ResponseEntity<Object> getNodeByDataspaceAndAnchor(@Valid String body, String dataspaceName,
- String anchorName) {
+ public ResponseEntity<Object> getNodeByDataspaceAndAnchor(final String dataspaceName, final String anchorName) {
return null;
}
* @return a ResponseEntity.
*/
@PostMapping("/upload-yang-json-data-file")
- public final ResponseEntity<String> uploadYangJsonDataFile(
- @RequestParam("file") MultipartFile uploadedFile) {
+ public final ResponseEntity<String> uploadYangJsonDataFile(@RequestParam("file") final MultipartFile uploadedFile) {
validateJsonStructure(uploadedFile);
final int persistenceObjectId = cpService.storeJsonStructure(getJsonString(uploadedFile));
- return new ResponseEntity<String>(
+ return new ResponseEntity<>(
"Object stored in CPS with identity: " + persistenceObjectId, HttpStatus.OK);
-
}
/**
try {
final Gson gson = new Gson();
gson.fromJson(getJsonString(multipartFile), Object.class);
- } catch (JsonSyntaxException e) {
+ } catch (final JsonSyntaxException e) {
throw new CpsValidationException("Not a valid JSON file.", e);
}
}
try {
final File file = File.createTempFile("tempFile", ".yang");
file.deleteOnExit();
-
try (OutputStream outputStream = new FileOutputStream(file)) {
outputStream.write(multipartFile.getBytes());
}
return file;
- } catch (IOException e) {
+ } catch (final IOException e) {
throw new CpsException(e);
}
}
private static String getJsonString(final MultipartFile multipartFile) {
try {
return new String(multipartFile.getBytes());
- } catch (IOException e) {
+ } catch (final IOException e) {
throw new CpsException(e);
}
}