Fixing vulnerabilities and code smells 11/113611/2
authorwaqas.ikram <waqas.ikram@est.tech>
Wed, 7 Oct 2020 12:20:38 +0000 (13:20 +0100)
committerwaqas.ikram <waqas.ikram@est.tech>
Wed, 7 Oct 2020 13:25:10 +0000 (14:25 +0100)
and increasing code coverage

Change-Id: If345b669433f754aedfbc81bef9c9b8a7686e92f
Issue-ID: SO-2867
Signed-off-by: waqas.ikram <waqas.ikram@est.tech>
15 files changed:
so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/pom.xml
so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/exceptions/NsRequestProcessingException.java
so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/extclients/etsicatalog/EtsiCatalogPackageManagementServiceProviderImpl.java
so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/FileEntry.java
so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/parser/FileParser.java [moved from so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/FileParser.java with 89% similarity]
so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/parser/NetworkServiceDescriptorParser.java [moved from so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/NetworkServiceDescriptorParser.java with 94% similarity]
so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/parser/ToscaMetadataParser.java [moved from so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/ToscaMetadataParser.java with 90% similarity]
so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/parser/YamlFileParser.java [moved from so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/YamlFileParser.java with 91% similarity]
so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/CreateInstantiateVnfTask.java
so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/InstantiateNsTask.java
so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/tasks/TerminateNsTask.java
so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/utils/LocalDateTimeTypeAdapter.java
so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/PojoClassesTests.java [new file with mode: 0644]
so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/parser/NetworkServiceDescriptorParserTest.java [moved from so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/nsd/NetworkServiceDescriptorParserTest.java with 93% similarity]
so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-service/src/main/java/org/onap/so/etsi/nfvo/ns/lcm/rest/NsLifecycleManagementController.java

index 1c13eca..3178b28 100644 (file)
       <version>${hamcrest-version}</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>nl.jqno.equalsverifier</groupId>
+      <artifactId>equalsverifier</artifactId>
+      <version>${equalsverifier-version}</version>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 </project>
\ No newline at end of file
index 0dcadfd..0901f07 100644 (file)
@@ -31,10 +31,11 @@ import org.springframework.web.bind.annotation.ResponseStatus;
 public class NsRequestProcessingException extends RuntimeException {
 
     private static final long serialVersionUID = 66862444537194516L;
-    private InlineResponse400 problemDetails;
+    private final InlineResponse400 problemDetails;
 
     public NsRequestProcessingException(final String message) {
         super(message);
+        problemDetails = null;
     }
 
     public NsRequestProcessingException(final String message, final InlineResponse400 problemDetails) {
index 75dd710..097db5c 100644 (file)
@@ -25,7 +25,7 @@ import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.
 import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.VnfPkgInfo;
 import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.exceptions.EtsiCatalogManagerRequestFailureException;
 import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.NetworkServiceDescriptor;
-import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.NetworkServiceDescriptorParser;
+import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.parser.NetworkServiceDescriptorParser;
 import org.onap.so.rest.service.HttpRestServiceProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
index 58ca250..cfe5b94 100644 (file)
@@ -22,6 +22,7 @@ package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd;
 import static org.onap.so.etsi.nfvo.ns.lcm.database.beans.utils.Utils.toIndentedString;
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
+import java.util.Arrays;
 import java.util.Objects;
 
 /**
@@ -82,7 +83,7 @@ public class FileEntry {
 
     @Override
     public int hashCode() {
-        return Objects.hash(isDirectory, filePathfileContent);
+        return Objects.hash(isDirectory, filePath) + Arrays.hashCode(fileContent);
     }
 
     @Override
@@ -90,7 +91,7 @@ public class FileEntry {
         if (obj instanceof FileEntry) {
             final FileEntry other = (FileEntry) obj;
             return Objects.equals(isDirectory, other.isDirectory) && Objects.equals(filePath, other.filePath)
-                    && Objects.equals(fileContent, other.fileContent);
+                    && Arrays.equals(fileContent, other.fileContent);
         }
         return false;
     }
@@ -17,7 +17,7 @@
  * SPDX-License-Identifier: Apache-2.0
  * ============LICENSE_END=========================================================
  */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd;
+package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.parser;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
@@ -31,6 +31,10 @@ import java.util.Optional;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
 import org.apache.commons.io.IOUtils;
+import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.FileEntry;
+import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.NetworkServiceDescriptor;
+import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.ToscaMetadata;
+import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.VirtualNetworkFunction;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -79,7 +83,7 @@ public class NetworkServiceDescriptorParser {
                         final Map<String, Object> nodeTemplates = getNodeTemplates(topologyTemplates);
 
                         final Optional<NetworkServiceDescriptor> nsdOptional =
-                                getNetworkServiceDescriptor(topologyTemplates);;
+                                getNetworkServiceDescriptor(topologyTemplates);
                         if (nsdOptional.isPresent()) {
                             final NetworkServiceDescriptor networkServiceDescriptor = nsdOptional.get();
                             networkServiceDescriptor.setVnfs(getVirtualNetworkFunctions(nodeTemplates));
@@ -91,10 +95,10 @@ public class NetworkServiceDescriptorParser {
 
             }
 
+            logger.error("Unable to find {} file in {}", TOSCA_META_PATH_FILE_NAME, files);
         } catch (final Exception exception) {
-            logger.error("Unable to parser nsd zip content", exception);
+            logger.error("Unable to parse nsd zip content", exception);
         }
-        logger.error("Unable to parser nsd zip content");
         return Optional.empty();
     }
 
@@ -191,7 +195,7 @@ public class NetworkServiceDescriptorParser {
             }
             return files;
         } catch (final Exception exception) {
-            logger.error("Unable to parser nsd zip content", exception);
+            logger.error("Unable to parse nsd zip content", exception);
             return Collections.emptyMap();
         }
     }
  * SPDX-License-Identifier: Apache-2.0
  * ============LICENSE_END=========================================================
  */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd;
+package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.parser;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.apache.commons.lang3.StringUtils.isNotBlank;
 import java.util.List;
 import java.util.Optional;
 import org.apache.commons.io.IOUtils;
+import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.FileEntry;
+import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.ToscaMetadata;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
@@ -39,7 +42,7 @@ public class ToscaMetadataParser {
     public Optional<ToscaMetadata> parse(final FileEntry toscaMetaFile) {
         try {
             final ToscaMetadata toscaMetadata = new ToscaMetadata();
-            final List<String> lines = IOUtils.readLines(toscaMetaFile.getFileContentAsStream(), "utf-8");
+            final List<String> lines = IOUtils.readLines(toscaMetaFile.getFileContentAsStream(), UTF_8);
             for (final String line : lines) {
                 final String trimmedLine = line.trim();
                 if (!trimmedLine.isEmpty() && trimmedLine.contains(ATTRIBUTE_VALUE_SEPARATOR)) {
index bfeaf49..fcebea5 100644 (file)
@@ -47,6 +47,7 @@ import org.springframework.stereotype.Component;
  */
 @Component
 public class CreateInstantiateVnfTask extends AbstractNetworkServiceTask {
+    private static final String CREATE_INSTANTIATE_REQUEST_PARAM_NAME = "request";
     private static final Logger logger = LoggerFactory.getLogger(CreateInstantiateVnfTask.class);
     private static final String NF_INST_ID_PARAM_NAME = "NF_INST_ID";
     public static final String CREATE_VNF_RESPONSE_PARAM_NAME = "createVnfResponse";
@@ -64,7 +65,8 @@ public class CreateInstantiateVnfTask extends AbstractNetworkServiceTask {
 
     public void checkIfNfInstanceExistsInDb(final DelegateExecution execution) {
         logger.info("Executing checkIfNfInstanceInDb");
-        final CreateInstantiateRequest request = (CreateInstantiateRequest) execution.getVariable("request");
+        final CreateInstantiateRequest request =
+                (CreateInstantiateRequest) execution.getVariable(CREATE_INSTANTIATE_REQUEST_PARAM_NAME);
         logger.info("request: {}", request);
 
         setJobStatus(execution, JobStatusEnum.IN_PROGRESS, "Checking if NF Instance record exists in database for "
@@ -79,7 +81,8 @@ public class CreateInstantiateVnfTask extends AbstractNetworkServiceTask {
 
     public void createNfInstanceInDb(final DelegateExecution execution) {
         logger.info("Executing createNfInstanceInDb");
-        final CreateInstantiateRequest request = (CreateInstantiateRequest) execution.getVariable("request");
+        final CreateInstantiateRequest request =
+                (CreateInstantiateRequest) execution.getVariable(CREATE_INSTANTIATE_REQUEST_PARAM_NAME);
         logger.info("request: {}", request);
 
         setJobStatus(execution, IN_PROGRESS, "Creating NF Instance record in database for " + request.getVnfName());
@@ -104,7 +107,8 @@ public class CreateInstantiateVnfTask extends AbstractNetworkServiceTask {
     public void createGenericVnfInAai(final DelegateExecution execution) {
         logger.info("Executing createGenericVnfInAai");
         try {
-            final CreateInstantiateRequest request = (CreateInstantiateRequest) execution.getVariable("request");
+            final CreateInstantiateRequest request =
+                    (CreateInstantiateRequest) execution.getVariable(CREATE_INSTANTIATE_REQUEST_PARAM_NAME);
 
             setJobStatus(execution, IN_PROGRESS, "Creating GenericVnf record in AAI for " + request.getVnfName());
 
@@ -140,7 +144,8 @@ public class CreateInstantiateVnfTask extends AbstractNetworkServiceTask {
         logger.info("Executing invokeCreateInstantiationRequest");
 
         try {
-            final CreateInstantiateRequest request = (CreateInstantiateRequest) execution.getVariable("request");
+            final CreateInstantiateRequest request =
+                    (CreateInstantiateRequest) execution.getVariable(CREATE_INSTANTIATE_REQUEST_PARAM_NAME);
             logger.info("request: {}", request);
 
             setJobStatus(execution, IN_PROGRESS,
@@ -180,7 +185,8 @@ public class CreateInstantiateVnfTask extends AbstractNetworkServiceTask {
         logger.info("Executing updateNfInstanceStatusToInstantiated");
 
         updateNfInstanceStatus(execution, State.INSTANTIATED);
-        final CreateInstantiateRequest request = (CreateInstantiateRequest) execution.getVariable("request");
+        final CreateInstantiateRequest request =
+                (CreateInstantiateRequest) execution.getVariable(CREATE_INSTANTIATE_REQUEST_PARAM_NAME);
         setJobStatus(execution, FINISHED, "Successfully created and Instantiated VNF: " + request.getVnfName()
                 + " will set status to " + State.INSTANTIATED);
 
@@ -192,7 +198,8 @@ public class CreateInstantiateVnfTask extends AbstractNetworkServiceTask {
         logger.info("Executing updateNfInstanceStatusToActive");
 
         updateNfInstanceStatus(execution, State.FAILED);
-        final CreateInstantiateRequest request = (CreateInstantiateRequest) execution.getVariable("request");
+        final CreateInstantiateRequest request =
+                (CreateInstantiateRequest) execution.getVariable(CREATE_INSTANTIATE_REQUEST_PARAM_NAME);
         setJobStatus(execution, ERROR, "Failed to create and instantiate VNF: " + request.getVnfName()
                 + " will set status to " + State.FAILED);
 
@@ -204,7 +211,7 @@ public class CreateInstantiateVnfTask extends AbstractNetworkServiceTask {
         final String nfInstId = (String) execution.getVariable(NF_INST_ID_PARAM_NAME);
 
         final Optional<NfvoNfInst> optional = databaseServiceProvider.getNfvoNfInst(nfInstId);
-        if (!optional.isPresent()) {
+        if (optional.isEmpty()) {
             final String message = "Unable to find NfvoNfInst record in database using nfInstId: " + nfInstId;
             logger.error(message);
 
index 1d9e09e..f3dbf37 100644 (file)
@@ -240,12 +240,20 @@ public class InstantiateNsTask extends AbstractNetworkServiceTask {
 
         final String nsInstId = (String) execution.getVariable(NS_INSTANCE_ID_PARAM_NAME);
         final NfvoNsInst nfvoNsInst = getNfvoNsInst(execution, nsInstId);
-
         final String nsPackageId = nfvoNsInst.getNsPackageId();
-        final NsdInfo nsdInfo = getNsdInfo(execution, nsPackageId);
 
         final Map<String, String> vnfdIdToVnfPkgIdMapping = new HashMap<>();
         try {
+            final Optional<NsdInfo> nsdInfoOptional =
+                    etsiCatalogPackageManagementServiceProvider.getNSPackageModel(nsPackageId);
+
+            if (nsdInfoOptional.isEmpty()) {
+                final String message = "Unable to find NS package using NS package id: " + nsPackageId;
+                logger.error(message);
+                abortOperation(execution, message);
+            }
+
+            final NsdInfo nsdInfo = nsdInfoOptional.get();
             for (final String vnfPkgId : nsdInfo.getVnfPkgIds()) {
                 final Optional<VnfPkgInfo> optional =
                         etsiCatalogPackageManagementServiceProvider.getVnfPkgInfo(vnfPkgId);
@@ -290,32 +298,6 @@ public class InstantiateNsTask extends AbstractNetworkServiceTask {
         setJobStatusToError(execution, "Instantiate NS workflow process failed");
     }
 
-    private NsdInfo getNsdInfo(final DelegateExecution execution, final String nsPackageId) {
-        try {
-            final Optional<NsdInfo> optional =
-                    etsiCatalogPackageManagementServiceProvider.getNSPackageModel(nsPackageId);
-
-            if (optional.isPresent()) {
-                final NsdInfo packageModel = optional.get();
-                logger.info("NS Package exists {}", packageModel);
-                return packageModel;
-            }
-
-        } catch (final EtsiCatalogManagerRequestFailureException failureException) {
-            final String message =
-                    "Unexpected exception occured while getting ns package using nsPackageId: " + nsPackageId;
-            logger.error(message, failureException);
-
-            abortOperation(execution, message);
-        }
-
-        final String message = "Unable to find NS package using NS package id: " + nsPackageId;
-        logger.error(message);
-        abortOperation(execution, message);
-        return null;
-
-    }
-
     private Optional<Tenant> getTenant(final Map<String, String> additionalParams) {
         final String vimId = (String) additionalParams.get("vim_id");
         if (vimId != null) {
index 2baa284..23a239e 100644 (file)
@@ -109,9 +109,8 @@ public class TerminateNsTask extends AbstractNetworkServiceTask {
         final String nsInstId = (String) execution.getVariable(NS_INSTANCE_ID_PARAM_NAME);
         final List<NfvoNfInst> nfInstances = databaseServiceProvider.getNfvoNfInstByNsInstId(nsInstId);
         if (nfInstances != null) {
-            nfInstances.stream().forEach(instance -> {
-                logger.info("Current status {} of vnf: {}", instance.getStatus(), instance.getName());
-            });
+            nfInstances.stream().forEach(
+                    instance -> logger.info("Current status {} of vnf: {}", instance.getStatus(), instance.getName()));
         }
     }
 
@@ -120,16 +119,14 @@ public class TerminateNsTask extends AbstractNetworkServiceTask {
         logger.info("Getting NfvoNfInstList using nsInstId: {}", nsInstId);
         final List<NfvoNfInst> nfvoNfInstList = databaseServiceProvider.getNfvoNfInstByNsInstId(nsInstId);
 
-        if (nfvoNfInstList.size() == 0) {
+        if (nfvoNfInstList == null || nfvoNfInstList.size() == 0) {
             final String message = "Unable to find NF Instances in database using id: " + nsInstId;
             abortOperation(execution, message);
         }
 
         final List<String> vnfIdsList = new ArrayList<>();
 
-        nfvoNfInstList.stream().forEach(nfvoNfInst -> {
-            vnfIdsList.add(nfvoNfInst.getNfInstId());
-        });
+        nfvoNfInstList.stream().forEach(nfvoNfInst -> vnfIdsList.add(nfvoNfInst.getNfInstId()));
 
         return vnfIdsList;
     }
index 34959ee..9f21d2b 100644 (file)
@@ -24,6 +24,7 @@ import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import com.google.gson.TypeAdapter;
 import com.google.gson.stream.JsonReader;
+import com.google.gson.stream.JsonToken;
 import com.google.gson.stream.JsonWriter;
 
 /**
@@ -45,14 +46,14 @@ public class LocalDateTimeTypeAdapter extends TypeAdapter<LocalDateTime> {
 
     @Override
     public LocalDateTime read(final JsonReader in) throws IOException {
-        switch (in.peek()) {
-            case NULL:
-                in.nextNull();
-                return null;
-            default:
-                final String dateTime = in.nextString();
-                return LocalDateTime.parse(dateTime, FORMATTER);
+        if (JsonToken.NULL == in.peek()) {
+            in.nextNull();
+            return null;
+
         }
+        final String dateTime = in.nextString();
+        return LocalDateTime.parse(dateTime, FORMATTER);
+
     }
 
 }
diff --git a/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/PojoClassesTests.java b/so-etsi-nfvo/so-etsi-nfvo-ns-lcm/so-etsi-nfvo-ns-lcm-bpmn-flows/src/test/java/org/onap/so/etsi/nfvo/ns/lcm/bpmn/flows/PojoClassesTests.java
new file mode 100644 (file)
index 0000000..edfb20a
--- /dev/null
@@ -0,0 +1,63 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2020 Nordix Foundation.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows;
+
+import java.util.Arrays;
+import java.util.List;
+import org.junit.Test;
+import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.FileEntry;
+import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.NetworkServiceDescriptor;
+import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.ToscaMetadata;
+import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.VirtualNetworkFunction;
+import org.onap.so.openpojo.rules.ToStringTester;
+import com.openpojo.reflection.filters.FilterPackageInfo;
+import com.openpojo.validation.Validator;
+import com.openpojo.validation.ValidatorBuilder;
+import com.openpojo.validation.test.impl.GetterTester;
+import com.openpojo.validation.test.impl.SetterTester;
+import nl.jqno.equalsverifier.EqualsVerifier;
+import nl.jqno.equalsverifier.Warning;
+
+/**
+ * @author Waqas Ikram (waqas.ikram@est.tech)
+ *
+ */
+public class PojoClassesTests {
+
+    @Test
+    public void test_nsd_parser_pojo_classes() throws ClassNotFoundException {
+
+        final Validator validator = ValidatorBuilder.create().with(new SetterTester()).with(new GetterTester())
+                .with(new ToStringTester()).build();
+        validator.validate(FileEntry.class.getPackageName(), new FilterPackageInfo());
+    }
+
+
+    @Test
+    public void test_nsd_parser_pojo_classes_equalAndHashMethod() throws ClassNotFoundException {
+        final List<Class<?>> classes = Arrays.asList(FileEntry.class, NetworkServiceDescriptor.class,
+                ToscaMetadata.class, VirtualNetworkFunction.class);
+        for (final Class<?> clazz : classes) {
+            EqualsVerifier.forClass(clazz).suppress(Warning.STRICT_INHERITANCE, Warning.NONFINAL_FIELDS,
+                    Warning.INHERITED_DIRECTLY_FROM_OBJECT).verify();
+        }
+    }
+
+}
@@ -17,7 +17,7 @@
  * SPDX-License-Identifier: Apache-2.0
  * ============LICENSE_END=========================================================
  */
-package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd;
+package org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.parser;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -31,6 +31,8 @@ import java.util.Optional;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.TestApplication;
+import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.NetworkServiceDescriptor;
+import org.onap.so.etsi.nfvo.ns.lcm.bpmn.flows.nsd.parser.NetworkServiceDescriptorParser;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.ActiveProfiles;
index 78ab9e9..2390cef 100644 (file)
@@ -77,7 +77,7 @@ public class NsLifecycleManagementController {
      */
     @PostMapping(value = "/ns_instances", produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML},
             consumes = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
-    public ResponseEntity<?> createNs(
+    public ResponseEntity<NsInstancesNsInstance> createNs(
             @RequestHeader(value = HTTP_GLOBAL_CUSTOMER_ID_HTTP_HEADER_PARM_NAME,
                     required = true) final String globalCustomerId,
             @RequestHeader(value = HTTP_SERVICETYPE_HEADER_PARM_NAME, required = false,
@@ -106,7 +106,7 @@ public class NsLifecycleManagementController {
      */
     @DeleteMapping(value = "/ns_instances/{nsInstanceId}",
             produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
-    public ResponseEntity<?> deleteNs(@PathVariable("nsInstanceId") final String nsInstanceId) {
+    public ResponseEntity<Void> deleteNs(@PathVariable("nsInstanceId") final String nsInstanceId) {
         logger.debug("Received delete NS request for nsInstanceId: {}", nsInstanceId);
         nsLifeCycleManager.deleteNs(nsInstanceId);
         logger.info("Successfully deleted NS for nsInstanceId: {}", nsInstanceId);
@@ -124,7 +124,7 @@ public class NsLifecycleManagementController {
     @PostMapping(value = "/ns_instances/{nsInstanceId}/instantiate",
             produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML},
             consumes = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
-    public ResponseEntity<?> instantiateNs(@PathVariable("nsInstanceId") final String nsInstanceId,
+    public ResponseEntity<Void> instantiateNs(@PathVariable("nsInstanceId") final String nsInstanceId,
             @RequestBody final InstantiateNsRequest instantiateNsRequest) {
         logger.debug("Received instantiate NS request: {}\n with nsInstanceId: {}", instantiateNsRequest, nsInstanceId);
         final URI resourceUri = nsLifeCycleManager.instantiateNs(nsInstanceId, instantiateNsRequest);
@@ -144,7 +144,7 @@ public class NsLifecycleManagementController {
     @PostMapping(value = "/ns_instances/{nsInstanceId}/terminate",
             produces = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML},
             consumes = {MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
-    public ResponseEntity<?> terminateNs(@PathVariable("nsInstanceId") final String nsInstanceId,
+    public ResponseEntity<Void> terminateNs(@PathVariable("nsInstanceId") final String nsInstanceId,
             @RequestBody final TerminateNsRequest terminateNsRequest) {
         logger.debug("Received terminate NS request: {}\n with nsInstanceId: {}", terminateNsRequest, nsInstanceId);
         final URI resourceUri = nsLifeCycleManager.terminateNs(nsInstanceId, terminateNsRequest);