NPE when setting instanceName 27/90127/1
authorPlummer, Brittany <brittany.plummer@att.com>
Tue, 18 Jun 2019 21:43:21 +0000 (17:43 -0400)
committerBenjamin, Max (mb388a) <mb388a@us.att.com>
Tue, 18 Jun 2019 21:43:27 +0000 (17:43 -0400)
Added null check to fix NPE when setting instanceName
Added check for null instanceName for vfModule

Change-Id: Ie70651770466790fd1f9d666eeabdce26510b01b
Issue-ID: SO-2034
Signed-off-by: Benjamin, Max (mb388a) <mb388a@us.att.com>
mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/RequestHandlerUtils.java
mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/RequestHandlerUtilsUnitTest.java

index f88d244..24034e9 100644 (file)
@@ -626,7 +626,7 @@ public class RequestHandlerUtils {
 
     protected InfraActiveRequests createNewRecordCopyFromInfraActiveRequest(InfraActiveRequests infraActiveRequest,
             String requestId, Timestamp startTimeStamp, String source, String requestUri, String requestorId,
-            String originalRequestId) {
+            String originalRequestId) throws ApiException {
         InfraActiveRequests request = new InfraActiveRequests();
         request.setRequestId(requestId);
         request.setStartTime(startTimeStamp);
@@ -649,11 +649,24 @@ public class RequestHandlerUtils {
     }
 
     protected void setInstanceIdAndName(InfraActiveRequests infraActiveRequest,
-            InfraActiveRequests currentActiveRequest) {
+            InfraActiveRequests currentActiveRequest) throws ApiException {
         String requestScope = infraActiveRequest.getRequestScope();
         try {
             ModelType type = ModelType.valueOf(requestScope);
-            type.setName(currentActiveRequest, type.getName(infraActiveRequest));
+            String instanceName = type.getName(infraActiveRequest);
+            if (instanceName == null && type.equals(ModelType.vfModule)) {
+                logger.error("vfModule for requestId: {} being resumed does not have an instanceName.",
+                        infraActiveRequest.getRequestId());
+                ValidateException validateException = new ValidateException.Builder(
+                        "vfModule for requestId: " + infraActiveRequest.getRequestId()
+                                + " being resumed does not have an instanceName.",
+                        HttpStatus.SC_BAD_REQUEST, ErrorNumbers.SVC_BAD_PARAMETER).build();
+                updateStatus(currentActiveRequest, Status.FAILED, validateException.getMessage());
+                throw validateException;
+            }
+            if (instanceName != null) {
+                type.setName(currentActiveRequest, instanceName);
+            }
             type.setId(currentActiveRequest, type.getId(infraActiveRequest));
         } catch (IllegalArgumentException e) {
             logger.error(
index 3cb4e0c..91ca756 100644 (file)
@@ -39,6 +39,7 @@ import org.mockito.Mock;
 import org.mockito.Spy;
 import org.mockito.junit.MockitoJUnitRunner;
 import org.onap.so.apihandlerinfra.exceptions.ApiException;
+import org.onap.so.apihandlerinfra.exceptions.ValidateException;
 import org.onap.so.apihandlerinfra.exceptions.VfModuleNotFoundException;
 import org.onap.so.db.catalog.beans.VfModule;
 import org.onap.so.db.catalog.client.CatalogDbClient;
@@ -140,7 +141,7 @@ public class RequestHandlerUtilsUnitTest {
 
 
     @Test
-    public void createNewRecordCopyFromInfraActiveRequestTest() throws IOException {
+    public void createNewRecordCopyFromInfraActiveRequestTest() throws IOException, ApiException {
         doNothing().when(requestHandler).setInstanceIdAndName(infraActiveRequest, currentActiveRequest);
         doReturn(getRequestBody("/RequestBodyNewRequestorId.json")).when(requestHandler)
                 .updateRequestorIdInRequestBody(infraActiveRequest, "yyyyyy");
@@ -150,14 +151,14 @@ public class RequestHandlerUtilsUnitTest {
     }
 
     @Test
-    public void createNewRecordCopyFromInfraActiveRequestNullIARTest() {
+    public void createNewRecordCopyFromInfraActiveRequestNullIARTest() throws ApiException {
         InfraActiveRequests result = requestHandler.createNewRecordCopyFromInfraActiveRequest(null, CURRENT_REQUEST_ID,
                 startTimeStamp, "VID", requestUri, "xxxxxx", RESUMED_REQUEST_ID);
         assertThat(currentActiveRequestIARNull, sameBeanAs(result));
     }
 
     @Test
-    public void setInstanceIdAndNameServiceTest() {
+    public void setInstanceIdAndNameServiceTest() throws ApiException {
         InfraActiveRequests serviceRequest = new InfraActiveRequests();
 
         InfraActiveRequests expected = new InfraActiveRequests();
@@ -169,7 +170,40 @@ public class RequestHandlerUtilsUnitTest {
     }
 
     @Test
-    public void setInstanceIdAndNameRequestScopeNotValidTest() {
+    public void setInstanceIdAndNameServiceNullInstanceNameTest() throws ApiException {
+        InfraActiveRequests serviceRequest = new InfraActiveRequests();
+
+        InfraActiveRequests request = new InfraActiveRequests();
+        request.setServiceInstanceId(SERVICE_INSTANCE_ID);
+        request.setRequestScope(ModelType.service.toString());
+
+        InfraActiveRequests expected = new InfraActiveRequests();
+        expected.setServiceInstanceId(SERVICE_INSTANCE_ID);
+
+        requestHandler.setInstanceIdAndName(request, serviceRequest);
+        assertThat(serviceRequest, sameBeanAs(expected));
+    }
+
+    @Test
+    public void setInstanceIdAndNameServiceNullInstanceNameVfModuleTest() throws ApiException {
+        InfraActiveRequests vfModuleRequest = new InfraActiveRequests();
+        String errorMessage =
+                "vfModule for requestId: 59c7247f-839f-4923-90c3-05faa3ab354d being resumed does not have an instanceName.";
+        doNothing().when(requestHandler).updateStatus(vfModuleRequest, Status.FAILED, errorMessage);
+
+        InfraActiveRequests request = new InfraActiveRequests();
+        request.setServiceInstanceId(VFMODULE_ID);
+        request.setRequestScope(ModelType.vfModule.toString());
+        request.setRequestId(RESUMED_REQUEST_ID);
+
+        thrown.expect(ValidateException.class);
+        thrown.expectMessage(errorMessage);
+
+        requestHandler.setInstanceIdAndName(request, vfModuleRequest);
+    }
+
+    @Test
+    public void setInstanceIdAndNameRequestScopeNotValidTest() throws ApiException {
         InfraActiveRequests originalServiceRequest = new InfraActiveRequests();
         originalServiceRequest.setRequestScope("test");
         InfraActiveRequests serviceRequest = new InfraActiveRequests();
@@ -181,7 +215,7 @@ public class RequestHandlerUtilsUnitTest {
     }
 
     @Test
-    public void setInstanceIdAndNameVnfTest() {
+    public void setInstanceIdAndNameVnfTest() throws ApiException {
         InfraActiveRequests vnfRequestOriginal = new InfraActiveRequests();
         vnfRequestOriginal.setRequestScope("vnf");
         vnfRequestOriginal.setVnfId(VNF_ID);
@@ -197,7 +231,7 @@ public class RequestHandlerUtilsUnitTest {
     }
 
     @Test
-    public void setInstanceIdAndNameVfModuleTest() {
+    public void setInstanceIdAndNameVfModuleTest() throws ApiException {
         InfraActiveRequests vfModuleRequestOriginal = new InfraActiveRequests();
         vfModuleRequestOriginal.setRequestScope("vfModule");
         vfModuleRequestOriginal.setVfModuleId(VFMODULE_ID);
@@ -213,7 +247,7 @@ public class RequestHandlerUtilsUnitTest {
     }
 
     @Test
-    public void setInstanceIdAndNameNetworkTest() {
+    public void setInstanceIdAndNameNetworkTest() throws ApiException {
         InfraActiveRequests networkRequestOriginal = new InfraActiveRequests();
         networkRequestOriginal.setRequestScope("network");
         networkRequestOriginal.setNetworkId(NETWORK_ID);
@@ -229,7 +263,7 @@ public class RequestHandlerUtilsUnitTest {
     }
 
     @Test
-    public void setInstanceIdAndNameVolumeGroupTest() {
+    public void setInstanceIdAndNameVolumeGroupTest() throws ApiException {
         InfraActiveRequests volumeGroupRequestOriginal = new InfraActiveRequests();
         volumeGroupRequestOriginal.setRequestScope("volumeGroup");
         volumeGroupRequestOriginal.setVolumeGroupId(VOLUME_GROUP_ID);
@@ -357,7 +391,7 @@ public class RequestHandlerUtilsUnitTest {
     }
 
     @Test
-    public void getModelTypeApplyUpdatedConfigTest() {
+    public void getModelTypeApplyUpdatedConfigTest() throws ApiException {
         ModelType modelTypeExpected = ModelType.vnf;
 
         ModelType modelTypeResult = requestHandler.getModelType(Action.applyUpdatedConfig, null);
@@ -365,7 +399,7 @@ public class RequestHandlerUtilsUnitTest {
     }
 
     @Test
-    public void getModelTypeInPlaceSoftwareUpdateTest() {
+    public void getModelTypeInPlaceSoftwareUpdateTest() throws ApiException {
         ModelType modelTypeExpected = ModelType.vnf;
 
         ModelType modelTypeResult = requestHandler.getModelType(Action.inPlaceSoftwareUpdate, null);
@@ -373,7 +407,7 @@ public class RequestHandlerUtilsUnitTest {
     }
 
     @Test
-    public void getModelTypeAddMembersTest() {
+    public void getModelTypeAddMembersTest() throws ApiException {
         ModelType modelTypeExpected = ModelType.instanceGroup;
 
         ModelType modelTypeResult = requestHandler.getModelType(Action.addMembers, null);
@@ -381,7 +415,7 @@ public class RequestHandlerUtilsUnitTest {
     }
 
     @Test
-    public void getModelTypeRemoveMembersTest() {
+    public void getModelTypeRemoveMembersTest() throws ApiException {
         ModelType modelTypeExpected = ModelType.instanceGroup;
 
         ModelType modelTypeResult = requestHandler.getModelType(Action.removeMembers, null);
@@ -389,7 +423,7 @@ public class RequestHandlerUtilsUnitTest {
     }
 
     @Test
-    public void getModelTypeTest() {
+    public void getModelTypeTest() throws ApiException {
         ModelType modelTypeExpected = ModelType.service;
         ModelInfo modelInfo = new ModelInfo();
         modelInfo.setModelType(ModelType.service);