diff options
Diffstat (limited to 'src/main/java/org/onap/cps/ncmp/dmi/service/DmiServiceImpl.java')
-rw-r--r-- | src/main/java/org/onap/cps/ncmp/dmi/service/DmiServiceImpl.java | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/src/main/java/org/onap/cps/ncmp/dmi/service/DmiServiceImpl.java b/src/main/java/org/onap/cps/ncmp/dmi/service/DmiServiceImpl.java index 32c8526c..94bd97d7 100644 --- a/src/main/java/org/onap/cps/ncmp/dmi/service/DmiServiceImpl.java +++ b/src/main/java/org/onap/cps/ncmp/dmi/service/DmiServiceImpl.java @@ -39,6 +39,10 @@ import org.onap.cps.ncmp.dmi.exception.ResourceDataNotFound; import org.onap.cps.ncmp.dmi.model.CmHandleOperation; import org.onap.cps.ncmp.dmi.model.CreatedCmHandle; import org.onap.cps.ncmp.dmi.model.ModuleReference; +import org.onap.cps.ncmp.dmi.model.ModuleSchemaProperties; +import org.onap.cps.ncmp.dmi.model.ModuleSchemas; +import org.onap.cps.ncmp.dmi.model.ModuleSet; +import org.onap.cps.ncmp.dmi.model.ModuleSetSchemas; import org.onap.cps.ncmp.dmi.service.client.NcmpRestClient; import org.onap.cps.ncmp.dmi.service.operation.SdncOperations; import org.springframework.http.HttpStatus; @@ -73,14 +77,15 @@ public class DmiServiceImpl implements DmiService { } @Override - public String getModulesForCmHandle(final String cmHandle) throws DmiException { + public ModuleSet getModulesForCmHandle(final String cmHandle) throws DmiException { final ResponseEntity<String> responseEntity = sdncOperations.getModulesFromNode(cmHandle); if (responseEntity.getStatusCode() == HttpStatus.OK) { final String responseBody = responseEntity.getBody(); if (StringUtils.isEmpty(responseBody)) { throw new ModulesNotFoundException(cmHandle, "SDNC returned no modules for given cm-handle."); } - return responseBody; + final ModuleSet moduleSet = createModuleSchema(responseBody); + return moduleSet; } else { throw new DmiException("SDNC is not able to process request.", "response code : " + responseEntity.getStatusCode() + " message : " + responseEntity.getBody()); @@ -129,6 +134,36 @@ public class DmiServiceImpl implements DmiService { } } + private ModuleSet createModuleSchema(final String responseBody) { + final var moduleSchemas = convertModulesToNodeSchema(responseBody); + final List<ModuleSetSchemas> moduleSetSchemas = new ArrayList<>(); + for (final ModuleSchemaProperties schemaProperties : moduleSchemas.getSchemas().getSchema()) { + moduleSetSchemas.add(convertModulesToModuleSchemas(schemaProperties)); + } + final var moduleSet = new ModuleSet(); + moduleSet.setSchemas(moduleSetSchemas); + return moduleSet; + } + + private ModuleSetSchemas convertModulesToModuleSchemas(final ModuleSchemaProperties moduleSchemaProperties) { + final var moduleSetSchemas = new ModuleSetSchemas(); + moduleSetSchemas.setModuleName(moduleSchemaProperties.getIdentifier()); + moduleSetSchemas.setNamespace(moduleSchemaProperties.getNamespace()); + moduleSetSchemas.setRevision(moduleSchemaProperties.getVersion()); + return moduleSetSchemas; + } + + private ModuleSchemas convertModulesToNodeSchema(final String modulesListAsJson) { + try { + return objectMapper.readValue(modulesListAsJson, ModuleSchemas.class); + } catch (final JsonProcessingException e) { + log.error("JSON exception occurred when converting the following modules to node schema " + + "{}", modulesListAsJson); + throw new DmiException("Unable to process JSON.", + "JSON exception occurred when mapping modules.", e); + } + } + @Override public Object getResourceDataOperationalForCmHandle(final @NotNull String cmHandle, final @NotNull String resourceIdentifier, |