Add null test to ComponentBusinessLogic 06/106306/4
authorChris André <chris.andre@yoppworks.com>
Wed, 22 Apr 2020 15:22:29 +0000 (11:22 -0400)
committerOfir Sonsino <ofir.sonsino@intl.att.com>
Mon, 27 Apr 2020 05:51:54 +0000 (05:51 +0000)
- Added test in `getFilteredComponentInstanceProperties` for null value
- Removed nested `if` statements in `isMatchingComplexPropertyByRecursively`

Issue-ID: SDC-2907
Signed-off-by: Chris Andre <chris.andre@yoppworks.com>
Change-Id: I13a47b0dfe7aa6dec845a856c58bba8be5c1eead

catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentBusinessLogic.java

index 83e4cf4..0d25bb0 100644 (file)
 
 package org.openecomp.sdc.be.components.impl;
 
+import com.sun.org.apache.xpath.internal.operations.Bool;
 import fj.data.Either;
+import java.util.function.BooleanSupplier;
+import java.util.function.Supplier;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.tuple.ImmutablePair;
@@ -689,7 +692,7 @@ public abstract class ComponentBusinessLogic extends BaseBusinessLogic {
             log.debug("The exception {} occured during filtered instance properties fetching. the  containing component is {}. ", e, componentId);
             response = Either.right(componentsUtils.getResponseFormat(ActionStatus.GENERAL_ERROR));
         } finally{
-            if (response.isLeft()){
+            if (response != null && response.isLeft()){
                 toscaOperationFacade.commit();
             } else {
                 toscaOperationFacade.rollback();
@@ -792,18 +795,16 @@ public abstract class ComponentBusinessLogic extends BaseBusinessLogic {
         currentProperty = getDataTypeByNameRes.left().value();
         dataTypeProperties = currentProperty.getProperties();
 
-        if(CollectionUtils.isNotEmpty(dataTypeProperties)){
-            if (isMatchingComplexProperty(propertyNameFragment, searchByFragment, dataTypeProperties)){
-                return true;
-            }
-        }
-        dataTypeProperties = currentProperty.getDerivedFrom().getProperties();
-        if(CollectionUtils.isNotEmpty(dataTypeProperties)){
-            if (isMatchingComplexProperty(propertyNameFragment, searchByFragment, dataTypeProperties)){
-                return true;
-            }
-        }
-        return false;
+        boolean dataPropertiesNotNull = CollectionUtils.isNotEmpty(dataTypeProperties);
+        BooleanSupplier dataMatchesComplexProperty = () -> isMatchingComplexProperty(propertyNameFragment,
+            searchByFragment, dataTypeProperties);
+        BooleanSupplier parentPropertiesNotNull = () -> CollectionUtils
+            .isNotEmpty(currentProperty.getDerivedFrom().getProperties());
+        BooleanSupplier parentDataMatchesComplexProperty = () -> isMatchingComplexProperty(propertyNameFragment,
+            searchByFragment, currentProperty.getDerivedFrom().getProperties());
+
+        return ((dataPropertiesNotNull && dataMatchesComplexProperty.getAsBoolean())
+            || (parentPropertiesNotNull.getAsBoolean() && parentDataMatchesComplexProperty.getAsBoolean()));
     }
 
     private boolean isMatchingComplexProperty(String propertyNameFragment, boolean searchByFragment, List<PropertyDefinition> dataTypeProperties) {