Make Directive values Tosca compliant 81/108081/3
authoraribeiro <anderson.ribeiro@est.tech>
Wed, 20 May 2020 09:05:48 +0000 (10:05 +0100)
committerOfir Sonsino <ofir.sonsino@intl.att.com>
Mon, 8 Jun 2020 06:56:36 +0000 (06:56 +0000)
Issue-ID: SDC-3079
Signed-off-by: aribeiro <anderson.ribeiro@est.tech>
Change-Id: Ie711c61244a4e2d68a96e2814ba2db52e067c6e4

catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentInstanceBusinessLogic.java
catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/utils/DirectivesEnum.java [new file with mode: 0644]
catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/utils/DirectivesUtils.java [deleted file]
catalog-be/src/main/java/org/openecomp/sdc/be/impl/ServiceFilterUtils.java
catalog-be/src/main/java/org/openecomp/sdc/be/servlets/ComponentInstanceServlet.java
catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/utils/DirectivesEnumTest.java [moved from catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/utils/DirectivesUtilsTest.java with 68% similarity]
catalog-be/src/test/java/org/openecomp/sdc/be/nodeFilter/BaseServiceFilterUtilsTest.java

index e943af8..486a6b2 100644 (file)
 
 package org.openecomp.sdc.be.components.impl;
 
+import static org.openecomp.sdc.be.components.property.GetInputUtils.isGetInputValueForInput;
+import static org.openecomp.sdc.be.components.utils.PropertiesUtils.getPropertyCapabilityOfChildInstance;
+
 import com.google.common.collect.Sets;
 import fj.data.Either;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.Set;
+import java.util.UUID;
+import java.util.function.BiConsumer;
+import java.util.stream.Collectors;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang.StringUtils;
@@ -30,7 +48,7 @@ import org.openecomp.sdc.be.components.impl.exceptions.ByActionStatusComponentEx
 import org.openecomp.sdc.be.components.impl.exceptions.ByResponseFormatComponentException;
 import org.openecomp.sdc.be.components.impl.exceptions.ComponentException;
 import org.openecomp.sdc.be.components.impl.instance.ComponentInstanceChangeOperationOrchestrator;
-import org.openecomp.sdc.be.components.impl.utils.DirectivesUtils;
+import org.openecomp.sdc.be.components.impl.utils.DirectivesEnum;
 import org.openecomp.sdc.be.components.merge.instance.ComponentInstanceMergeDataBusinessLogic;
 import org.openecomp.sdc.be.components.merge.instance.DataForMergeHolder;
 import org.openecomp.sdc.be.components.utils.PropertiesUtils;
@@ -109,25 +127,6 @@ import org.openecomp.sdc.common.util.ValidationUtils;
 import org.openecomp.sdc.exception.ResponseFormat;
 import org.springframework.beans.factory.annotation.Autowired;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.Set;
-import java.util.UUID;
-import java.util.function.BiConsumer;
-import java.util.stream.Collectors;
-
-import static org.openecomp.sdc.be.components.property.GetInputUtils.isGetInputValueForInput;
-import static org.openecomp.sdc.be.components.utils.PropertiesUtils.getPropertyCapabilityOfChildInstance;
-
 @org.springframework.stereotype.Component
 public class ComponentInstanceBusinessLogic extends BaseBusinessLogic {
 
@@ -943,7 +942,7 @@ public class ComponentInstanceBusinessLogic extends BaseBusinessLogic {
             CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG, "Failed to update the name of the component instance {} to {}. A component instance with the same name already exists. ", oldComponentInstance.getName(), newInstanceName);
             throw new ByActionStatusComponentException(ActionStatus.COMPONENT_NAME_ALREADY_EXIST, containerComponentType.getValue(), componentInstance.getName());
         }
-        if(!DirectivesUtils.isValid(componentInstance.getDirectives())) {
+        if(!DirectivesEnum.isValid(componentInstance.getDirectives())) {
             final String directivesStr =
                     componentInstance.getDirectives().stream().collect(Collectors.joining(" , ", " [ ", " ] "));
             CommonUtility.addRecordToLog(log, LogLevelEnum.DEBUG,
@@ -1124,9 +1123,8 @@ public class ComponentInstanceBusinessLogic extends BaseBusinessLogic {
                         return Either.right(componentsUtils.getResponseFormat(ActionStatus.GENERAL_ERROR));
                     }
                     ComponentInstance ci = componentInstanceById.get();
-                    List<String> directives = ci.getDirectives();
-                    directives.remove(DirectivesUtils.SELECTABLE);
-                    ci.setDirectives(directives);
+                    ci.setDirectives(Collections.emptyList());
+
                     final Either<ComponentInstance, ResponseFormat> componentInstanceResponseFormatEither =
                             updateComponentInstanceMetadata(ComponentTypeEnum.SERVICE_PARAM_NAME, service.getUniqueId(),
                                     ci.getUniqueId(), userId, ci, true, false);
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/utils/DirectivesEnum.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/utils/DirectivesEnum.java
new file mode 100644 (file)
index 0000000..e312504
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Copyright © 2016-2018 European Support Limited
+ *
+ * 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.
+ */
+
+package org.openecomp.sdc.be.components.impl.utils;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Optional;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import org.apache.commons.collections.CollectionUtils;
+
+@AllArgsConstructor
+@Getter
+public enum DirectivesEnum {
+
+    SELECT("select"),
+    SELECTABLE("selectable"),
+    SUBSTITUTE("substitute"),
+    SUBSTITUTABLE("substitutable");
+
+    private final String value;
+
+    public static Optional<DirectivesEnum> getDirective(final String directiveValue) {
+        return Arrays.stream(values())
+            .filter(directivesEnum -> directivesEnum.getValue().equals(directiveValue))
+            .findFirst();
+    }
+
+    public static boolean isValid(final List<String> inDirectives) {
+        if (CollectionUtils.isEmpty(inDirectives)) {
+            return true;
+        }
+
+        return inDirectives.stream().allMatch(directive -> getDirective(directive).isPresent());
+    }
+
+}
\ No newline at end of file
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/utils/DirectivesUtils.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/utils/DirectivesUtils.java
deleted file mode 100644 (file)
index 900e961..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright © 2016-2018 European Support Limited
- *
- * 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.
- */
-
-package org.openecomp.sdc.be.components.impl.utils;
-
-import com.google.common.collect.Sets;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang.StringUtils;
-
-import java.util.List;
-import java.util.Optional;
-
-public class DirectivesUtils {
-
-    public static final String SUBSTITUTABLE = "substitutable";
-    public static final String SELECTABLE = "selectable";
-    public enum DIRECTIVE {
-
-        SUBSTITUTABLE(DirectivesUtils.SUBSTITUTABLE), SELECTABLE(DirectivesUtils.SELECTABLE);
-
-        private final String value;
-
-        DIRECTIVE(String value) {
-            this.value = value;
-        }
-
-        @Override
-        public String toString() {
-            return value;
-        }
-
-    }
-
-    public static Optional<DIRECTIVE> getDirective(String inDirective) {
-        if (StringUtils.isEmpty(inDirective)) {
-            return Optional.empty();
-        }
-
-        return Sets.newHashSet(DIRECTIVE.values()).stream()
-                   .filter(directive -> directive.toString().equals(inDirective)).findAny();
-    }
-
-    public static boolean isValid(List<String> inDirectives){
-        if (CollectionUtils.isEmpty(inDirectives)){
-            return true;
-        }
-        return inDirectives.stream().allMatch(directive -> getDirective(directive).isPresent());
-    }
-
-}
index 4485db1..e6d7df6 100644 (file)
 
 package org.openecomp.sdc.be.impl;
 
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import org.apache.commons.collections.CollectionUtils;
 import org.javatuples.Pair;
-import org.openecomp.sdc.be.components.impl.utils.DirectivesUtils;
 import org.openecomp.sdc.be.datamodel.utils.ConstraintConvertor;
 import org.openecomp.sdc.be.datatypes.elements.CINodeFilterDataDefinition;
 import org.openecomp.sdc.be.datatypes.elements.RequirementNodeFilterPropertyDataDefinition;
@@ -26,12 +31,6 @@ import org.openecomp.sdc.be.model.InputDefinition;
 import org.openecomp.sdc.be.model.Service;
 import org.openecomp.sdc.be.ui.model.UIConstraint;
 
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
 public class ServiceFilterUtils {
 
 
@@ -46,8 +45,7 @@ public class ServiceFilterUtils {
 
 
     private static boolean propertyIsUsedInCI(ComponentInstance ci, String ciName, String propertyName) {
-        final List<String> directives = ci.getDirectives();
-        if (!directives.contains(DirectivesUtils.SELECTABLE)) {
+        if (CollectionUtils.isEmpty(ci.getDirectives())) {
             return false;
         }
         if (ci.getNodeFilter() == null || ci.getNodeFilter().getProperties() == null
@@ -114,8 +112,7 @@ public class ServiceFilterUtils {
 
 
     private static boolean isNodeFilterUsingChangedCi(ComponentInstance ci, String name) {
-        final List<String> directives = ci.getDirectives();
-        if (!directives.contains(DirectivesUtils.SELECTABLE)) {
+        if (CollectionUtils.isEmpty(ci.getDirectives())) {
             return false;
         }
         if (ci.getNodeFilter() == null || ci.getNodeFilter().getProperties() == null
@@ -152,8 +149,7 @@ public class ServiceFilterUtils {
     }
 
     private static boolean isNodeFilterUsingChangedInput(ComponentInstance ci, InputDefinition changedInput) {
-        final List<String> directives = ci.getDirectives();
-        if (!directives.contains(DirectivesUtils.SELECTABLE)) {
+        if (CollectionUtils.isEmpty(ci.getDirectives())) {
             return false;
         }
         return ci.getNodeFilter().getProperties().getListToscaDataDefinition().stream()
index a8d3bc0..d8580e8 100644 (file)
@@ -38,6 +38,30 @@ import io.swagger.v3.oas.annotations.servers.Server;
 import io.swagger.v3.oas.annotations.servers.Servers;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import io.swagger.v3.oas.annotations.tags.Tags;
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import javax.inject.Inject;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.HeaderParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.StringUtils;
 import org.openecomp.sdc.be.components.impl.ComponentInstanceBusinessLogic;
@@ -48,7 +72,6 @@ import org.openecomp.sdc.be.components.impl.aaf.AafPermission;
 import org.openecomp.sdc.be.components.impl.aaf.PermissionAllowed;
 import org.openecomp.sdc.be.components.impl.exceptions.ByActionStatusComponentException;
 import org.openecomp.sdc.be.components.impl.exceptions.ComponentException;
-import org.openecomp.sdc.be.components.impl.utils.DirectivesUtils;
 import org.openecomp.sdc.be.config.BeEcompErrorManager;
 import org.openecomp.sdc.be.dao.api.ActionStatus;
 import org.openecomp.sdc.be.datamodel.ForwardingPaths;
@@ -78,30 +101,6 @@ import org.openecomp.sdc.common.log.wrappers.Logger;
 import org.openecomp.sdc.exception.ResponseFormat;
 import org.springframework.stereotype.Controller;
 
-import javax.inject.Inject;
-import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.HeaderParam;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
 /**
  * Root resource (exposed at "/" path) .json
  */
@@ -249,19 +248,17 @@ public class ComponentInstanceServlet extends AbstractValidationsServlet {
             }
             ComponentInstance resultValue = actionResponse.left().value();
             if (componentTypeEnum.equals(ComponentTypeEnum.SERVICE)){
-                boolean shouldCreateServiceFilter = resourceInstance.getDirectives() != null && resourceInstance.getDirectives().contains(
-                        DirectivesUtils.SELECTABLE);
-
-                if(shouldCreateServiceFilter) {
+                if(CollectionUtils.isNotEmpty(resourceInstance.getDirectives())) {
                     Either<CINodeFilterDataDefinition, ResponseFormat> either =
-                            serviceBusinessLogic.createIfNotAlreadyExistServiceFilter(componentId, componentInstanceId, userId,
-                                    true);
+                        serviceBusinessLogic.createIfNotAlreadyExistServiceFilter(componentId, componentInstanceId, userId,
+                            true);
                     if (either.isRight()){
                         BeEcompErrorManager.getInstance().logBeSystemError("Resource Instance - updateResourceInstance Failed to create service filter.");
                         log.debug("Failed to create service filter.");
                         return buildErrorResponse(convertResponse.right().value());
                     }
                     resultValue.setNodeFilter(either.left().value());
+
                 } else {
                     Either<String, ResponseFormat> either = serviceBusinessLogic.deleteIfNotAlreadyDeletedServiceFilter(componentId, componentInstanceId,  userId,true);
                     if (either.isRight()){
 
 package org.openecomp.sdc.be.components.impl.utils;
 
-import org.junit.Before;
-import org.junit.Test;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
 
 import java.util.ArrayList;
 import java.util.List;
+import org.junit.Before;
+import org.junit.Test;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-public class DirectivesUtilsTest {
+public class DirectivesEnumTest {
 
     private List<String> directives;
 
     @Before
-    public void setup(){
+    public void setup() {
         directives = new ArrayList<>();
     }
 
     @Test
-    public void testGivenValidDirectives_returnsTrue(){
-        directives.add(DirectivesUtils.DIRECTIVE.SUBSTITUTABLE.toString());
-        directives.add(DirectivesUtils.DIRECTIVE.SELECTABLE.toString());
-        assertTrue(DirectivesUtils.isValid(directives));
+    public void testGivenValidDirectives_returnsTrue() {
+        directives.add(DirectivesEnum.SELECT.getValue());
+        directives.add(DirectivesEnum.SELECTABLE.getValue());
+        directives.add(DirectivesEnum.SUBSTITUTE.getValue());
+        directives.add(DirectivesEnum.SUBSTITUTABLE.getValue());
+        assertTrue(DirectivesEnum.isValid(directives));
     }
 
     @Test
-    public void testGivenEmptyDirectives_returnsTrue(){
-        assertTrue(DirectivesUtils.isValid(directives));
+    public void testGivenEmptyDirectives_returnsTrue() {
+        assertTrue(DirectivesEnum.isValid(directives));
     }
 
     @Test
-    public void testGivenInvalidDirectives_returnsFalse(){
+    public void testGivenInvalidDirectives_returnsFalse() {
         directives.add("Invalid");
-        assertFalse(DirectivesUtils.isValid(directives));
+        assertFalse(DirectivesEnum.isValid(directives));
     }
 }
\ No newline at end of file
index 8ddf06a..adf6e44 100644 (file)
@@ -18,7 +18,7 @@ package org.openecomp.sdc.be.nodeFilter;
 
 import org.junit.Assert;
 import org.junit.Before;
-import org.openecomp.sdc.be.components.impl.utils.DirectivesUtils;
+import org.openecomp.sdc.be.components.impl.utils.DirectivesEnum;
 import org.openecomp.sdc.be.datatypes.elements.CINodeFilterDataDefinition;
 import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition;
 import org.openecomp.sdc.be.datatypes.elements.RequirementNodeFilterPropertyDataDefinition;
@@ -46,7 +46,7 @@ public class BaseServiceFilterUtilsTest {
             componentInstance.setUniqueId(CI_NAME);
             componentInstance.setName(CI_NAME);
             service.setComponentInstances(Arrays.asList(componentInstance));
-            componentInstance.setDirectives(Arrays.asList(DirectivesUtils.SELECTABLE));
+            componentInstance.setDirectives(Arrays.asList(DirectivesEnum.SELECTABLE.getValue()));
             CINodeFilterDataDefinition serviceFilter = new CINodeFilterDataDefinition();
             componentInstance.setNodeFilter(serviceFilter);
             requirementNodeFilterPropertyDataDefinition = new RequirementNodeFilterPropertyDataDefinition();