CPS-475 - fix sonar smells
[cps.git] / cps-ncmp-service / src / main / java / org / onap / cps / ncmp / api / impl / NetworkCmProxyDataServiceImpl.java
index 291b0bf..11d1a89 100755 (executable)
@@ -59,7 +59,6 @@ import org.onap.cps.spi.exceptions.DataValidationException;
 import org.onap.cps.spi.model.DataNode;
 import org.onap.cps.spi.model.ModuleReference;
 import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
@@ -169,9 +168,8 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService
     @Override
     public Object getResourceDataOperationalForCmHandle(final @NotNull String cmHandle,
                                                         final @NotNull String resourceIdentifier,
-                                                        final String acceptParam,
-                                                        final String fieldsQueryParam,
-                                                        final Integer depthQueryParam) {
+                                                        final String acceptParamInHeader,
+                                                        final String optionsParamInQuery) {
 
         final DataNode cmHandleDataNode = fetchDataNodeFromDmiRegistryForCmHandle(cmHandle);
         final String dmiServiceName = String.valueOf(cmHandleDataNode.getLeaves().get(NCMP_DMI_SERVICE_NAME));
@@ -179,9 +177,8 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService
         final ResponseEntity<Object> response = dmiOperations.getResourceDataOperationalFromDmi(dmiServiceName,
                 cmHandle,
                 resourceIdentifier,
-                fieldsQueryParam,
-                depthQueryParam,
-                acceptParam,
+                optionsParamInQuery,
+                acceptParamInHeader,
                 dmiRequestBody);
         return handleResponse(response);
     }
@@ -189,18 +186,16 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService
     @Override
     public Object getResourceDataPassThroughRunningForCmHandle(final @NotNull String cmHandle,
                                                                final @NotNull String resourceIdentifier,
-                                                               final String acceptParam,
-                                                               final String fields,
-                                                               final Integer depth) {
+                                                               final String acceptParamInHeader,
+                                                               final String optionsParamInQuery) {
         final DataNode cmHandleDataNode = fetchDataNodeFromDmiRegistryForCmHandle(cmHandle);
         final String dmiServiceName = String.valueOf(cmHandleDataNode.getLeaves().get(NCMP_DMI_SERVICE_NAME));
         final String dmiRequestBody = getGenericRequestBody(cmHandleDataNode);
         final ResponseEntity<Object> response = dmiOperations.getResourceDataPassThroughRunningFromDmi(dmiServiceName,
                 cmHandle,
                 resourceIdentifier,
-                fields,
-                depth,
-                acceptParam,
+                optionsParamInQuery,
+                acceptParamInHeader,
                 dmiRequestBody);
         return handleResponse(response);
     }
@@ -289,7 +284,7 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService
     }
 
     private static void handleResponseForPost(final @NotNull ResponseEntity<String> responseEntity) {
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
+        if (!HttpStatus.valueOf(responseEntity.getStatusCodeValue()).is2xxSuccessful()) {
             throw new NcmpException("Not able to create resource data.",
                     "DMI status code: " + responseEntity.getStatusCodeValue()
                             + ", DMI response body: " + responseEntity.getBody());
@@ -349,13 +344,13 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService
             cmHandleJsonData, NO_TIMESTAMP);
 
         for (final PersistenceCmHandle persistenceCmHandle : persistenceCmHandlesList.getPersistenceCmHandles()) {
-            createAnchorAndSyncModel(persistenceCmHandle);
+            syncModulesAndCreateAnchor(persistenceCmHandle);
         }
     }
 
-    protected void createAnchorAndSyncModel(final PersistenceCmHandle persistenceCmHandle) {
-        createAnchor(persistenceCmHandle);
+    protected void syncModulesAndCreateAnchor(final PersistenceCmHandle persistenceCmHandle) {
         fetchAndSyncModules(persistenceCmHandle);
+        createAnchor(persistenceCmHandle);
     }
 
     private static PersistenceCmHandle toPersistenceCmHandle(final String dmiPluginService,
@@ -392,9 +387,13 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService
         final List<ModuleReference> unknownModuleReferences = new ArrayList<>();
         prepareModuleSubsets(moduleReferencesFromCmHandle, existingModuleReferences, unknownModuleReferences);
 
-        final Map<String, String> newYangResourcesModuleNameToContentMap =
-            getNewYangResourcesFromDmi(persistenceCmHandle, unknownModuleReferences, cmHandlePropertiesAsMap);
-
+        final Map<String, String> newYangResourcesModuleNameToContentMap;
+        if (unknownModuleReferences.isEmpty()) {
+            newYangResourcesModuleNameToContentMap = new HashMap<>();
+        } else {
+            newYangResourcesModuleNameToContentMap = getNewYangResourcesFromDmi(persistenceCmHandle,
+                unknownModuleReferences, cmHandlePropertiesAsMap);
+        }
         cpsModuleService.createSchemaSetFromModules(NF_PROXY_DATASPACE_NAME, persistenceCmHandle.getId(),
             newYangResourcesModuleNameToContentMap, existingModuleReferences);
     }
@@ -417,14 +416,13 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService
 
     private List<ModuleReference> fetchModuleReferencesFromDmi(final PersistenceCmHandle persistenceCmHandle,
                                                                final Map<String, String> cmHandlePropertiesAsMap) {
-        final GenericRequestBody requestBodyObject = GenericRequestBody.builder()
-                .operation(GenericRequestBody.OperationEnum.READ)
+        final GenericRequestBody genericRequestBody = GenericRequestBody.builder()
                 .cmHandleProperties(cmHandlePropertiesAsMap)
                 .build();
-        final String jsonBody = prepareOperationBody(requestBodyObject);
+        final String jsonBodyWithOnlyCmHandleProperties = prepareOperationBody(genericRequestBody);
         final ResponseEntity<String> dmiFetchModulesResponseEntity =
             dmiOperations.getResourceFromDmiWithJsonData(persistenceCmHandle.getDmiServiceName(),
-                    jsonBody, persistenceCmHandle.getId(), "modules");
+                    jsonBodyWithOnlyCmHandleProperties, persistenceCmHandle.getId(), "modules");
         return toModuleReferences(dmiFetchModulesResponseEntity);
     }
 
@@ -437,13 +435,11 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService
         final JsonArray moduleReferencesAsJson = getModuleReferencesAsJson(unknownModuleReferences);
         final JsonObject data = new JsonObject();
         data.add("modules", moduleReferencesAsJson);
-        final GenericRequestBody dmiRequestBodyObject = GenericRequestBody.builder()
-                .operation(GenericRequestBody.OperationEnum.READ)
-                .dataType(MediaType.APPLICATION_JSON_VALUE)
-                .data(data.toString())
-                .cmHandleProperties(cmHandlePropertiesAsMap)
-                .build();
-        return prepareOperationBody(dmiRequestBodyObject);
+        final JsonObject jsonRequestObject = new JsonObject();
+        jsonRequestObject.add("data", data);
+        final Gson gson = new Gson();
+        jsonRequestObject.add("cmHandleProperties", gson.toJsonTree(cmHandlePropertiesAsMap));
+        return jsonRequestObject.toString();
     }
 
     private static JsonArray getModuleReferencesAsJson(final List<ModuleReference> unknownModuleReferences) {
@@ -461,12 +457,12 @@ public class NetworkCmProxyDataServiceImpl implements NetworkCmProxyDataService
     private Map<String, String> getNewYangResourcesFromDmi(final PersistenceCmHandle persistenceCmHandle,
                                                            final List<ModuleReference> unknownModuleReferences,
                                                            final Map<String, String> cmHandlePropertiesAsMap) {
-        final String jsonData = getRequestBodyToFetchYangResourceFromDmi(
+        final String jsonDataWithDataAndCmHandleProperties = getRequestBodyToFetchYangResourceFromDmi(
                 unknownModuleReferences, cmHandlePropertiesAsMap);
 
         final ResponseEntity<String> moduleResourcesAsJsonString =  dmiOperations.getResourceFromDmiWithJsonData(
                 persistenceCmHandle.getDmiServiceName(),
-                jsonData,
+                jsonDataWithDataAndCmHandleProperties,
                 persistenceCmHandle.getId(),
                 "moduleResources");