Merge "Added check for nullpointer exception"
[so.git] / adapters / mso-catalog-db-adapter / src / main / java / org / onap / so / adapters / catalogdb / rest / CatalogDbAdapterRest.java
index eaf3e12..70f5313 100644 (file)
@@ -73,6 +73,7 @@ import org.onap.so.db.catalog.beans.Service;
 import org.onap.so.db.catalog.beans.ToscaCsar;
 import org.onap.so.db.catalog.beans.VfModule;
 import org.onap.so.db.catalog.beans.VfModuleCustomization;
+import org.onap.so.db.catalog.beans.VnfRecipe;
 import org.onap.so.db.catalog.beans.VnfResource;
 import org.onap.so.db.catalog.beans.VnfResourceCustomization;
 import org.onap.so.db.catalog.data.repository.AllottedResourceCustomizationRepository;
@@ -116,6 +117,7 @@ import java.util.List;
 public class CatalogDbAdapterRest {
     protected static Logger logger = LoggerFactory.getLogger(CatalogDbAdapterRest.class);
     private static final boolean IS_ARRAY = true;
+    private static final String NETWORK_SERVICE = "network service";
 
     @Autowired
     private VnfCustomizationRepository vnfCustomizationRepo;
@@ -518,13 +520,20 @@ public class CatalogDbAdapterRest {
         try {
             if (smUuid != null && !"".equals(smUuid)) {
                 logger.debug("Query Csar by service model uuid: {}",smUuid);
-                ToscaCsar toscaCsar = toscaCsarRepo.findOne(smUuid);
-                if (toscaCsar != null) {
-                    QueryServiceCsar serviceCsar = new QueryServiceCsar(toscaCsar);
-                    entity = serviceCsar.JSON2(false, false);
+                Service service = serviceRepo.findFirstOneByModelUUIDOrderByModelVersionDesc(smUuid);
+
+                if (service != null) {
+                    ToscaCsar toscaCsar = service.getCsar();
+                    if (toscaCsar != null) {
+                        QueryServiceCsar serviceCsar = new QueryServiceCsar(toscaCsar);
+                        entity = serviceCsar.JSON2(false, false);
+                    } else {
+                        respStatus = HttpStatus.SC_NOT_FOUND;
+                    }
                 } else {
                     respStatus = HttpStatus.SC_NOT_FOUND;
                 }
+
             } else {
                 throw (new Exception("Incoming parameter is null or blank"));
             }
@@ -563,15 +572,33 @@ public class CatalogDbAdapterRest {
             if (rmUuid != null && !"".equals(rmUuid)) {
                 logger.debug("Query recipe by resource model uuid: {}", rmUuid);
                 //check vnf and network and ar, the resource could be any resource.
+                Recipe recipe = null;
+
                 VnfResource vnf = vnfResourceRepo.findResourceByModelUUID(rmUuid);
-                Recipe recipe = vnfRecipeRepo.findFirstVnfRecipeByNfRoleAndAction(vnf.getModelName(), action);
+                if (vnf != null) {
+                    recipe = vnfRecipeRepo.findFirstVnfRecipeByNfRoleAndActionAndVersionStr(vnf.getModelName(), action, vnf.getModelVersion());
+
+                    // for network service fetch the default recipe
+                    if (recipe == null && vnf.getSubCategory().equalsIgnoreCase(NETWORK_SERVICE)) {
+                        recipe = vnfRecipeRepo.findFirstVnfRecipeByNfRoleAndAction("NS_DEFAULT", action);
+                    }
+                }
+
+
                 if (null == recipe) {
                     NetworkResource nResource = networkResourceRepo.findResourceByModelUUID(rmUuid);
-                    recipe = networkRecipeRepo.findFirstByModelNameAndAction(nResource.getModelName(), action);
+                    if(null!=vnf) {
+                       recipe = networkRecipeRepo.findFirstByModelNameAndActionAndVersionStr(nResource.getModelName(), action, vnf.getModelVersion());
+                    }
+                    // for network fetch the default recipe
+                    if (recipe == null) {
+                        recipe = networkRecipeRepo.findFirstByModelNameAndAction("SDNC_DEFAULT", action);
+                    }
                 }
+
                 if (null == recipe) {
                     AllottedResource arResource = arResourceRepo.findResourceByModelUUID(rmUuid);
-                    recipe = arRecipeRepo.findByModelNameAndAction(arResource.getModelName(), action);
+                    recipe = arRecipeRepo.findByModelNameAndActionAndVersion(arResource.getModelName(), action, arResource.getModelVersion());
                 }
                 if (recipe != null) {
                     QueryResourceRecipe resourceRecipe = new QueryResourceRecipe(recipe);