Toggle 58/109258/5
authortalio <talio@amdocs.com>
Wed, 17 Jun 2020 12:57:06 +0000 (15:57 +0300)
committerOfir Sonsino <ofir.sonsino@intl.att.com>
Sun, 21 Jun 2020 07:13:29 +0000 (07:13 +0000)
Add toggling mechanism to catalog side.
The first toggleable feature is healing - this was added to healing flow, in healJanusGraphDao

Issue-ID: SDC-2874
Signed-off-by: talio <talio@amdocs.com>
Change-Id: If386651cab8304ebaf13497ded3a7a50bd60e477
Signed-off-by: talio <talio@amdocs.com>
33 files changed:
asdctool/src/test/java/org/openecomp/sdc/asdctool/UtilsTest.java
catalog-be/pom.xml
catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/TogglingBusinessLogic.java [new file with mode: 0644]
catalog-be/src/main/java/org/openecomp/sdc/be/servlets/TogglingServlet.java [new file with mode: 0644]
catalog-be/src/main/java/org/openecomp/sdc/be/togglz/CassandraCustomStateRepository.java
catalog-be/src/main/java/org/openecomp/sdc/be/togglz/ToggleConfiguration.java [deleted file]
catalog-be/src/main/resources/application-context.xml
catalog-be/src/main/resources/config/features.properties [new file with mode: 0644]
catalog-be/src/main/webapp/WEB-INF/web.xml
catalog-be/src/test/java/org/openecomp/sdc/be/togglz/CassandraCustomStateRepositoryTest.java
catalog-dao/pom.xml
catalog-dao/src/main/java/org/openecomp/sdc/be/dao/impl/heal/HealJanusGraphDao.java
catalog-dao/src/main/java/org/openecomp/sdc/be/resources/data/togglz/FeatureToggleEvent.java
catalog-dao/src/test/java/org/openecomp/sdc/be/dao/cassandra/HealingPipelineDaoTest.java
catalog-dao/src/test/java/org/openecomp/sdc/be/resources/data/togglz/FeatureToggleEventTest.java
catalog-fe/src/test/java/org/openecomp/sdc/fe/servlets/FeHealthCheckServletTest.java
common-be/pom.xml
common-be/src/main/java/org/openecomp/sdc/be/togglz/ToggleableFeature.java [moved from catalog-dao/src/main/java/org/openecomp/sdc/be/resources/data/togglz/ToggleableFeature.java with 88% similarity]
common-be/src/main/java/org/openecomp/sdc/be/togglz/TogglzConfiguration.java [moved from openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/togglz/TogglzConfiguration.java with 89% similarity]
common-be/src/main/resources/feature.properties [new file with mode: 0644]
onboarding/pom.xml
openecomp-be/api/openecomp-sdc-rest-webapp/notifications-fe/pom.xml
openecomp-be/api/openecomp-sdc-rest-webapp/onboarding-rest-war/src/main/webapp/WEB-INF/web.xml
openecomp-be/api/openecomp-sdc-rest-webapp/togglz-rest/togglz-rest-services/pom.xml
openecomp-be/api/openecomp-sdc-rest-webapp/togglz-rest/togglz-rest-services/src/main/java/org/openecomp/sdcrests/togglz/rest/mapping/MapToggleableFeatureToDto.java
openecomp-be/api/openecomp-sdc-rest-webapp/togglz-rest/togglz-rest-services/src/main/java/org/openecomp/sdcrests/togglz/rest/services/TogglzFeaturesImpl.java
openecomp-be/api/openecomp-sdc-rest-webapp/togglz-rest/togglz-rest-services/src/test/java/org/openecomp/TogglzFeatureRestTest.java
openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/togglz/ToggleableFeature.java [deleted file]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationNovaServerImpl.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseFullTranslationTest.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/BaseResourceTranslationTest.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationNovaServerImplTest.java
pom.xml

index 017126e..8ea5300 100644 (file)
@@ -34,7 +34,7 @@ public class UtilsTest {
 
        @Test
        public void testBuildOkResponse() throws Exception {
-               int status = 0;
+               int status = 200;
                Object entity = null;
                Map<String, String> additionalHeaders = null;
                Response result;
index 47650bd..d0a0f95 100644 (file)
       <scope>test</scope>
     </dependency>
 
+      <dependency>
+          <groupId>org.openecomp.sdc</groupId>
+          <artifactId>togglz-rest-services</artifactId>
+          <version>${project.version}</version>
+      </dependency>
+
+      <dependency>
+          <groupId>com.rabbitmq</groupId>
+          <artifactId>amqp-client</artifactId>
+          <version>3.3.1</version>
+      </dependency>
+
     <!--JSON and YAML Parsing-->
     <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       </exclusions>
     </dependency>
 
+  <dependency>
+      <groupId>javax.ws.rs</groupId>
+      <artifactId>javax.ws.rs-api</artifactId>
+      <version>${ws.rs.version}</version>
+  </dependency>
+
     <dependency>
       <groupId>org.openecomp.sdc.be</groupId>
       <artifactId>common-be</artifactId>
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/TogglingBusinessLogic.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/TogglingBusinessLogic.java
new file mode 100644 (file)
index 0000000..538f565
--- /dev/null
@@ -0,0 +1,72 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.sdc.be.components.impl;
+
+import java.util.Arrays;
+import java.util.Map;
+import java.util.stream.Collectors;
+import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ArtifactsOperations;
+import org.openecomp.sdc.be.model.jsonjanusgraph.operations.InterfaceOperation;
+import org.openecomp.sdc.be.model.operations.api.IElementOperation;
+import org.openecomp.sdc.be.model.operations.api.IGroupInstanceOperation;
+import org.openecomp.sdc.be.model.operations.api.IGroupOperation;
+import org.openecomp.sdc.be.model.operations.api.IGroupTypeOperation;
+import org.openecomp.sdc.be.model.operations.impl.InterfaceLifecycleOperation;
+import org.openecomp.sdc.be.togglz.ToggleableFeature;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.togglz.core.Feature;
+import org.togglz.core.context.FeatureContext;
+import org.togglz.core.repository.FeatureState;
+import org.togglz.core.util.NamedFeature;
+
+@Component("togglingBusinessLogic")
+public class TogglingBusinessLogic extends BaseBusinessLogic {
+
+    @Autowired
+    public TogglingBusinessLogic(IElementOperation elementDao, IGroupOperation groupOperation,
+            IGroupInstanceOperation groupInstanceOperation, IGroupTypeOperation groupTypeOperation,
+            InterfaceOperation interfaceOperation, InterfaceLifecycleOperation interfaceLifecycleTypeOperation,
+            ArtifactsOperations artifactToscaOperation) {
+        super(elementDao, groupOperation, groupInstanceOperation, groupTypeOperation, interfaceOperation,
+                interfaceLifecycleTypeOperation, artifactToscaOperation);
+    }
+
+    public Map<String, Boolean> getAllFeatureStates() {
+        return Arrays.stream(ToggleableFeature.values()).collect(Collectors.toMap(Enum::name,
+                ToggleableFeature::isActive));
+    }
+
+    public boolean getFeatureState(String featureName) {
+        return ToggleableFeature.valueOf(featureName).isActive();
+    }
+
+    public void setAllFeatures(boolean state) {
+        Arrays.asList(ToggleableFeature.values())
+                .forEach(toggleableFeature -> updateFeatureState(toggleableFeature.name(), state));
+    }
+
+    public void updateFeatureState(String featureName, boolean state) {
+        Feature feature = new NamedFeature(featureName);
+        FeatureState featureState = new FeatureState(feature, state);
+        FeatureContext.getFeatureManager().setFeatureState(featureState);
+    }
+}
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/servlets/TogglingServlet.java b/catalog-be/src/main/java/org/openecomp/sdc/be/servlets/TogglingServlet.java
new file mode 100644 (file)
index 0000000..df53919
--- /dev/null
@@ -0,0 +1,168 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.sdc.be.servlets;
+
+import com.jcabi.aspects.Loggable;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.media.ArraySchema;
+import io.swagger.v3.oas.annotations.media.Content;
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.responses.ApiResponse;
+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.util.Map;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import org.openecomp.sdc.be.components.impl.ComponentInstanceBusinessLogic;
+import org.openecomp.sdc.be.components.impl.ResourceImportManager;
+import org.openecomp.sdc.be.components.impl.TogglingBusinessLogic;
+import org.openecomp.sdc.be.dao.api.ActionStatus;
+import org.openecomp.sdc.be.impl.ComponentsUtils;
+import org.openecomp.sdc.be.impl.ServletUtils;
+import org.openecomp.sdc.be.user.UserBusinessLogic;
+import org.openecomp.sdc.common.log.wrappers.Logger;
+
+@Loggable(prepend = true, value = Loggable.DEBUG, trim = false)
+@Path("/v1/catalog/toggle")
+@Tags({@Tag(name = "SDC Internal APIs")})
+@Servers({@Server(url = "/sdc2/rest")})
+@Singleton
+public class TogglingServlet extends AbstractValidationsServlet {
+
+    private final TogglingBusinessLogic togglingBusinessLogic;
+
+    @Inject
+    public TogglingServlet(UserBusinessLogic userBusinessLogic, ComponentInstanceBusinessLogic componentInstanceBL,
+            ComponentsUtils componentsUtils, ServletUtils servletUtils, ResourceImportManager resourceImportManager,
+            TogglingBusinessLogic togglingBusinessLogic) {
+        super(userBusinessLogic, componentInstanceBL, componentsUtils, servletUtils, resourceImportManager);
+        this.togglingBusinessLogic = togglingBusinessLogic;
+    }
+
+    private static final Logger log = Logger.getLogger(TogglingServlet.class);
+    private static final String ALL_FEATURES_STATES_WERE_SET_SUCCESSFULLY = "All features states were set successfully";
+    private static final String START_HANDLE_REQUEST_OF = "Start handle request of {}";
+    private static final String FEATURE_STATE_WAS_UPDATED_SUCCESSFULLY = "Feature state was updated successfully";
+
+
+    @GET
+    @Path("/")
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    @Operation(description = "Get all Toggleable features", method = "GET", summary = "Returns list of toggleable features", responses = {
+            @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = javax.ws.rs.core.Response.class)))),
+            @ApiResponse(responseCode = "200", description = "Success"),
+            @ApiResponse(responseCode = "403", description = "Restricted operation"),
+            @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"),
+            @ApiResponse(responseCode = "404", description = "Toggleable features not found")})
+    public Response getAllFeatures(@Context final HttpServletRequest request) {
+        String url = request.getMethod() + " " + request.getRequestURI();
+        log.debug(START_HANDLE_REQUEST_OF, url);
+
+        try {
+            Map<String, Boolean> features = togglingBusinessLogic.getAllFeatureStates();
+            return buildOkResponse(getComponentsUtils().getResponseFormat(ActionStatus.OK), features);
+        } catch (Exception e) {
+            return buildErrorResponse(getComponentsUtils().getResponseFormat(ActionStatus.GENERAL_ERROR));
+        }
+    }
+
+    @GET
+    @Path("/{featureName}/state")
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    @Operation(description = "Get Toggleable feature state", method = "GET", summary = "Returns one toggleable feature state", responses = {
+            @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = javax.ws.rs.core.Response.class)))),
+            @ApiResponse(responseCode = "200", description = "Success"),
+            @ApiResponse(responseCode = "403", description = "Restricted operation"),
+            @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"),
+            @ApiResponse(responseCode = "404", description = "Toggleable feature not found")})
+    public Response getToggleableFeature(@PathParam("featureName") String featureName, @Context final HttpServletRequest request) {
+        String url = request.getMethod() + " " + request.getRequestURI();
+        log.debug(START_HANDLE_REQUEST_OF, url);
+
+        try {
+            boolean featureState = togglingBusinessLogic.getFeatureState(featureName);
+            return buildOkResponse(getComponentsUtils().getResponseFormat(ActionStatus.OK), featureState);
+        } catch (Exception e) {
+            return buildErrorResponse(getComponentsUtils().getResponseFormat(ActionStatus.GENERAL_ERROR));
+        }
+    }
+
+    @PUT
+    @Path("/state/{state}")
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    @Operation(description = "Update all feature toggle state", method = "PUT", summary = "Update all feature status", responses = {
+            @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = javax.ws.rs.core.Response.class)))),
+            @ApiResponse(responseCode = "200", description = "Success"),
+            @ApiResponse(responseCode = "403", description = "Restricted operation"),
+            @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"),
+            @ApiResponse(responseCode = "404", description = "Toggleable features not found")})
+    public Response setAllFeatures(@PathParam("state") boolean state, @Context final HttpServletRequest request) {
+        String url = request.getMethod() + " " + request.getRequestURI();
+        log.debug(START_HANDLE_REQUEST_OF, url);
+
+        try {
+            togglingBusinessLogic.setAllFeatures(state);
+            return buildOkResponse(getComponentsUtils().getResponseFormat(ActionStatus.OK), ALL_FEATURES_STATES_WERE_SET_SUCCESSFULLY);
+        } catch (Exception e) {
+            return buildErrorResponse(getComponentsUtils().getResponseFormat(ActionStatus.GENERAL_ERROR));
+        }
+    }
+
+    @PUT
+    @Path("/{featureName}/state/{state}")
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    @Operation(description = "Update feature toggle state", method = "PUT", summary = "Update feature status", responses = {
+            @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = javax.ws.rs.core.Response.class)))),
+            @ApiResponse(responseCode = "200", description = "Success"),
+            @ApiResponse(responseCode = "403", description = "Restricted operation"),
+            @ApiResponse(responseCode = "400", description = "Invalid content / Missing content"),
+            @ApiResponse(responseCode = "404", description = "Toggleable features not found")})
+    public Response updateFeatureState(@PathParam("featureName") String featureName,
+            @PathParam("state") boolean state, @Context final HttpServletRequest request) {
+        String url = request.getMethod() + " " + request.getRequestURI();
+        log.debug("(get) Start handle request of {}", url);
+
+        try {
+            togglingBusinessLogic.updateFeatureState(featureName, state);
+            return buildOkResponse(getComponentsUtils().getResponseFormat(ActionStatus.OK), FEATURE_STATE_WAS_UPDATED_SUCCESSFULLY);
+        } catch (Exception e) {
+            return buildErrorResponse(getComponentsUtils().getResponseFormat(ActionStatus.GENERAL_ERROR));
+        }
+    }
+
+
+}
index a67bf4b..5e2f416 100644 (file)
@@ -24,7 +24,6 @@ import com.google.common.annotations.VisibleForTesting;
 import org.openecomp.sdc.be.dao.cassandra.CassandraOperationStatus;
 import org.openecomp.sdc.be.dao.cassandra.FeatureToggleDao;
 import org.openecomp.sdc.be.resources.data.togglz.FeatureToggleEvent;
-import org.openecomp.sdc.be.resources.data.togglz.ToggleableFeature;
 import org.openecomp.sdc.common.log.wrappers.Logger;
 import org.springframework.stereotype.Component;
 import org.togglz.core.Feature;
@@ -38,7 +37,7 @@ import java.util.stream.Collectors;
 @Component
 public class CassandraCustomStateRepository implements StateRepository {
 
-    private final static Logger logger = Logger.getLogger(CassandraCustomStateRepository.class);
+    private static final Logger logger = Logger.getLogger(CassandraCustomStateRepository.class);
     private final FeatureToggleDao featureToggleDao;
 
     public CassandraCustomStateRepository(FeatureToggleDao featureToggleDao) {
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/togglz/ToggleConfiguration.java b/catalog-be/src/main/java/org/openecomp/sdc/be/togglz/ToggleConfiguration.java
deleted file mode 100644 (file)
index 52bbf86..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.sdc.be.togglz;
-
-import org.openecomp.sdc.be.resources.data.togglz.ToggleableFeature;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import org.togglz.core.Feature;
-import org.togglz.core.manager.TogglzConfig;
-import org.togglz.core.repository.StateRepository;
-import org.togglz.core.repository.cache.CachingStateRepository;
-import org.togglz.core.user.SimpleFeatureUser;
-import org.togglz.core.user.UserProvider;
-
-@Component
-public class ToggleConfiguration implements TogglzConfig {
-    @Autowired
-    private CassandraCustomStateRepository cassandraCustomStateRepository;
-
-    @Override
-    public Class<? extends Feature> getFeatureClass() {
-        return ToggleableFeature.class;
-    }
-
-    @Override
-    public StateRepository getStateRepository() {
-        return new CachingStateRepository(cassandraCustomStateRepository, 10000);
-    }
-
-    @Override
-    public UserProvider getUserProvider() {
-        return () -> new SimpleFeatureUser("admin", true);
-    }
-}
\ No newline at end of file
index ca36de1..403debf 100644 (file)
@@ -14,7 +14,8 @@
                          org.openecomp.sdc.be.servlets,
                          org.openecomp.sdc.be.externalapi.servlet,
                          org.openecomp.sdc.be.components.scheduledtasks,
-                         org.openecomp.sdc.be.facade.operations">
+                         org.openecomp.sdc.be.facade.operations,
+                         org.openecomp.sdc.be.components.impl">
   </context:component-scan>
 
   <bean class="org.openecomp.sdc.be.dao.config.DAOSpringConfig"/>
diff --git a/catalog-be/src/main/resources/config/features.properties b/catalog-be/src/main/resources/config/features.properties
new file mode 100644 (file)
index 0000000..488a78f
--- /dev/null
@@ -0,0 +1 @@
+HEALING=false
\ No newline at end of file
index 9991e30..23a0831 100644 (file)
                 org.openecomp.sdc.be.filters.BeServletFilter,
                 org.openecomp.sdc.be.filters.ComponentsAvailabilityFilter,
                 org.glassfish.jersey.server.filter.RolesAllowedDynamicFeature,
-                               org.openecomp.sdc.be.servlets.exception.DefaultExceptionMapper,
+                org.openecomp.sdc.be.servlets.exception.DefaultExceptionMapper,
                 org.openecomp.sdc.be.servlets.exception.ComponentExceptionMapper,
                 org.openecomp.sdc.be.servlets.exception.ConstraintViolationExceptionMapper,
-                               org.openecomp.sdc.be.servlets.exception.StorageExceptionMapper,
+                org.openecomp.sdc.be.servlets.exception.StorageExceptionMapper,
                 org.openecomp.sdc.be.view.MixinModelWriter,
                 org.openecomp.sdc.config.ObjectMapperProvider
             </param-value>
         <async-supported>true</async-supported>
     </servlet>
 
-<!--    <filter>-->
-<!--        <filter-name>CadiAuthFilter</filter-name>-->
-<!--        <filter-class>org.onap.portalsdk.core.onboarding.crossapi.CadiAuthFilter</filter-class>-->
-<!--        <init-param>-->
-<!--            <param-name>cadi_prop_files</param-name>-->
-<!--            &lt;!&ndash; Add Absolute path of cadi.properties &ndash;&gt;-->
-<!--            <param-value>etc/cadi.properties</param-value>-->
-<!--        </init-param>-->
-<!--        &lt;!&ndash;Add param values with comma delimited values &ndash;&gt;-->
-<!--        &lt;!&ndash; for example /api/v3/*,/auxapi/*&ndash;&gt;-->
-<!--        <init-param>-->
-<!--            <param-name>include_url_endpoints</param-name>-->
-<!--            <param-value>/api/v3/roles,/api/v3/user/*,/api/v3/user/*/roles,/api/v3/users,/api/v3/sessionTimeOuts,/api/v3/updateSessionTimeOuts</param-value>-->
-<!--        </init-param>-->
-<!--        <init-param>-->
-<!--            <param-name>exclude_url_endpoints</param-name>-->
-<!--            <param-value>/api/v3/analytics,/api/v3/storeAnalytics</param-value>-->
-<!--        </init-param>-->
-<!--    </filter>-->
-<!--    <filter-mapping>-->
-<!--        <filter-name>CadiAuthFilter</filter-name>-->
-<!--        <url-pattern>/api/v3/*</url-pattern>-->
-<!--    </filter-mapping>-->
+    <!--    <filter>-->
+    <!--        <filter-name>CadiAuthFilter</filter-name>-->
+    <!--        <filter-class>org.onap.portalsdk.core.onboarding.crossapi.CadiAuthFilter</filter-class>-->
+    <!--        <init-param>-->
+    <!--            <param-name>cadi_prop_files</param-name>-->
+    <!--            &lt;!&ndash; Add Absolute path of cadi.properties &ndash;&gt;-->
+    <!--            <param-value>etc/cadi.properties</param-value>-->
+    <!--        </init-param>-->
+    <!--        &lt;!&ndash;Add param values with comma delimited values &ndash;&gt;-->
+    <!--        &lt;!&ndash; for example /api/v3/*,/auxapi/*&ndash;&gt;-->
+    <!--        <init-param>-->
+    <!--            <param-name>include_url_endpoints</param-name>-->
+    <!--            <param-value>/api/v3/roles,/api/v3/user/*,/api/v3/user/*/roles,/api/v3/users,/api/v3/sessionTimeOuts,/api/v3/updateSessionTimeOuts</param-value>-->
+    <!--        </init-param>-->
+    <!--        <init-param>-->
+    <!--            <param-name>exclude_url_endpoints</param-name>-->
+    <!--            <param-value>/api/v3/analytics,/api/v3/storeAnalytics</param-value>-->
+    <!--        </init-param>-->
+    <!--    </filter>-->
+    <!--    <filter-mapping>-->
+    <!--        <filter-name>CadiAuthFilter</filter-name>-->
+    <!--        <url-pattern>/api/v3/*</url-pattern>-->
+    <!--    </filter-mapping>-->
 
     <servlet>
         <servlet-name>ViewStatusMessages</servlet-name>
     <!--<async-supported>true</async-supported>-->
     <!--</filter>-->
 
-<!--    <filter>-->
-<!--    <filter-name>gatewayFilter</filter-name>-->
-<!--    <filter-class>org.openecomp.sdc.be.filters.GatewayFilter</filter-class>-->
-<!--    </filter>-->
+    <!--    <filter>-->
+    <!--    <filter-name>gatewayFilter</filter-name>-->
+    <!--    <filter-class>org.openecomp.sdc.be.filters.GatewayFilter</filter-class>-->
+    <!--    </filter>-->
 
     <filter>
         <filter-name>gatewayFilter</filter-name>
         <url-pattern>/sdc/*</url-pattern>
     </filter-mapping>
 
-<!--    <filter>-->
-<!--        <filter-name>beRestrictionAccessFilter</filter-name>-->
-<!--        <filter-class>-->
-<!--            org.springframework.web.filter.DelegatingFilterProxy-->
-<!--        </filter-class>-->
-<!--        <init-param>-->
-<!--            <param-name>targetFilterLifecycle</param-name>-->
-<!--            <param-value>true</param-value>-->
-<!--        </init-param>-->
-<!--    </filter>-->
-<!--    <filter-mapping>-->
-<!--        <filter-name>beRestrictionAccessFilter</filter-name>-->
-<!--        <url-pattern>/sdc2/rest/*</url-pattern>-->
-<!--    </filter-mapping>-->
-
-<!--    <filter>-->
-<!--        <filter-name>CADI</filter-name>-->
-<!--        <filter-class>org.openecomp.sdc.be.filters.BeCadiServletFilter</filter-class>-->
-<!--        <init-param>-->
-<!--            <param-name>cadi_prop_files</param-name>-->
-<!--            <param-value>etc/cadi.properties</param-value>-->
-<!--        </init-param>-->
-<!--    </filter>-->
-
-<!--    <filter-mapping>-->
-<!--        <filter-name>CADI</filter-name>-->
-<!--        <url-pattern>/sdc/*</url-pattern>-->
-<!--        <url-pattern>/sdc2/rest/*</url-pattern>-->
-<!--    </filter-mapping>-->
+    <!--    <filter>-->
+    <!--        <filter-name>beRestrictionAccessFilter</filter-name>-->
+    <!--        <filter-class>-->
+    <!--            org.springframework.web.filter.DelegatingFilterProxy-->
+    <!--        </filter-class>-->
+    <!--        <init-param>-->
+    <!--            <param-name>targetFilterLifecycle</param-name>-->
+    <!--            <param-value>true</param-value>-->
+    <!--        </init-param>-->
+    <!--    </filter>-->
+    <!--    <filter-mapping>-->
+    <!--        <filter-name>beRestrictionAccessFilter</filter-name>-->
+    <!--        <url-pattern>/sdc2/rest/*</url-pattern>-->
+    <!--    </filter-mapping>-->
+
+    <!--    <filter>-->
+    <!--        <filter-name>CADI</filter-name>-->
+    <!--        <filter-class>org.openecomp.sdc.be.filters.BeCadiServletFilter</filter-class>-->
+    <!--        <init-param>-->
+    <!--            <param-name>cadi_prop_files</param-name>-->
+    <!--            <param-value>etc/cadi.properties</param-value>-->
+    <!--        </init-param>-->
+    <!--    </filter>-->
+
+    <!--    <filter-mapping>-->
+    <!--        <filter-name>CADI</filter-name>-->
+    <!--        <url-pattern>/sdc/*</url-pattern>-->
+    <!--        <url-pattern>/sdc2/rest/*</url-pattern>-->
+    <!--    </filter-mapping>-->
 
     <filter>
         <filter-name>reqValidationFilter</filter-name>
         <exception-type>java.lang.RuntimeException</exception-type>
         <location>/sdc2/rest/v1/catalog/handleException/</location>
     </error-page>
-       <context-param>
-               <param-name>contextConfigLocation</param-name>
-               <param-value>classpath:application-context.xml</param-value>
-       </context-param>
-
-       <listener>
-               <listener-class>org.openecomp.sdc.be.listen.BEAppContextListener</listener-class>
-       </listener>
+    <context-param>
+        <param-name>contextConfigLocation</param-name>
+        <param-value>classpath:application-context.xml</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>org.togglz.core.manager.TogglzConfig</param-name>
+        <param-value>org.openecomp.sdc.be.togglz.TogglzConfiguration</param-value>
+    </context-param>
+
+    <listener>
+        <listener-class>org.openecomp.sdc.be.listen.BEAppContextListener</listener-class>
+    </listener>
 
     <listener>
         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
index 7786f6e..2560c04 100644 (file)
@@ -29,7 +29,6 @@ import org.mockito.junit.MockitoJUnitRunner;
 import org.openecomp.sdc.be.dao.cassandra.CassandraOperationStatus;
 import org.openecomp.sdc.be.dao.cassandra.FeatureToggleDao;
 import org.openecomp.sdc.be.resources.data.togglz.FeatureToggleEvent;
-import org.openecomp.sdc.be.resources.data.togglz.ToggleableFeature;
 import org.togglz.core.Feature;
 import org.togglz.core.repository.FeatureState;
 
index 06cb1e8..d1d9b34 100644 (file)
@@ -356,6 +356,12 @@ Modifications copyright (c) 2018 Nokia
       <groupId>org.codehaus.groovy</groupId>
       <artifactId>groovy</artifactId>
     </dependency>
+      <dependency>
+          <groupId>org.togglz</groupId>
+          <artifactId>togglz-testing</artifactId>
+          <version>${togglz.version}</version>
+          <scope>test</scope>
+      </dependency>
   </dependencies>
 
   <build>
index e74556a..c0a0663 100644 (file)
@@ -28,6 +28,7 @@ import org.openecomp.sdc.be.dao.jsongraph.heal.HealVersion;
 import org.openecomp.sdc.be.dao.jsongraph.heal.HealVersionBuilder;
 import org.openecomp.sdc.be.dao.neo4j.GraphEdgeLabels;
 import org.openecomp.sdc.be.datatypes.enums.GraphPropertyEnum;
+import org.openecomp.sdc.be.togglz.ToggleableFeature;
 
 public class HealJanusGraphDao implements HealGraphDao<JanusGraphVertex, GraphEdgeLabels> {
 
@@ -41,18 +42,23 @@ public class HealJanusGraphDao implements HealGraphDao<JanusGraphVertex, GraphEd
     public JanusGraphVertex performGraphReadHealing(JanusGraphVertex childVertex, GraphEdgeLabels graphEdgeLabels) {
         final Integer healingVersionInt = (Integer) childVertex.property(GraphPropertyEnum.HEALING_VERSION.getProperty()).orElse(HealConstants.DEFAULT_HEAL_VERSION);
         HealVersion<Integer> healingVersion = HealVersionBuilder.build(healingVersionInt);
-        healingPipelineDao.getHealersForVertex(graphEdgeLabels.name(), healingVersion).forEach(heal -> healGraphVertex(childVertex, heal));
-        childVertex.property(GraphPropertyEnum.HEALING_VERSION.getProperty(), healingPipelineDao.getCurrentHealVersion().getVersion());
+        healingPipelineDao.getHealersForVertex(graphEdgeLabels.name(), healingVersion)
+                .forEach(heal -> healGraphVertex(childVertex, heal));
+        childVertex.property(GraphPropertyEnum.HEALING_VERSION.getProperty(),
+                healingPipelineDao.getCurrentHealVersion().getVersion());
+
         return childVertex;
     }
 
 
     private JanusGraphVertex healGraphVertex(JanusGraphVertex childVertex, Heal<JanusGraphVertex> heal) {
-        heal.healData(childVertex);
-        final HealVersion<Integer> healVersion = heal.fromVersion();
-        HealVersion newerVersion = HealVersionBuilder.build(healVersion.getVersion() + 1);
-        childVertex.property(GraphPropertyEnum.HEALING_VERSION.getProperty(), newerVersion);
-        heal.healData(childVertex);
+        if(ToggleableFeature.HEALING.isActive()) {
+            heal.healData(childVertex);
+            final HealVersion<Integer> healVersion = heal.fromVersion();
+            HealVersion<Integer> newerVersion = HealVersionBuilder.build(healVersion.getVersion() + 1);
+            childVertex.property(GraphPropertyEnum.HEALING_VERSION.getProperty(), newerVersion);
+            heal.healData(childVertex);
+        }
         return childVertex;
     }
 }
index 501b421..ed5a5a0 100644 (file)
@@ -26,6 +26,7 @@ import com.datastax.driver.mapping.annotations.Table;
 import com.google.common.base.Joiner;
 import com.google.common.base.Splitter;
 import org.openecomp.sdc.be.resources.data.auditing.AuditingTypesConstants;
+import org.openecomp.sdc.be.togglz.ToggleableFeature;
 import org.openecomp.sdc.common.log.enums.EcompLoggerErrorCode;
 import org.openecomp.sdc.common.log.wrappers.Logger;
 import org.togglz.core.Feature;
index c0d9e46..f079ddd 100644 (file)
@@ -22,6 +22,8 @@ import org.janusgraph.graphdb.relations.StandardVertexProperty;
 import org.janusgraph.graphdb.types.system.EmptyVertex;
 import org.janusgraph.graphdb.types.system.ImplicitKey;
 import java.util.HashMap;
+import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.Test;
 import org.mockito.Mockito;
 import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge;
@@ -36,11 +38,21 @@ import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
 
 import java.util.Map;
 import java.util.Optional;
+import org.openecomp.sdc.be.togglz.ToggleableFeature;
+import org.togglz.testing.TestFeatureManager;
+import org.togglz.testing.TestFeatureManagerProvider;
 
 import static org.junit.Assert.*;
 
 public class HealingPipelineDaoTest {
 
+    @Before
+    public void enableToggleableFeatures(){
+        TestFeatureManager manager = new TestFeatureManager(ToggleableFeature.class);
+        manager.enableAll();
+        TestFeatureManagerProvider.setFeatureManager(manager);
+    }
+
 
     @Test
     public void shouldUpgrade() {
index 53bf27d..9675e3a 100644 (file)
 
 package org.openecomp.sdc.be.resources.data.togglz;
 
-import org.junit.Test;
-import org.togglz.core.repository.FeatureState;
-
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.Matchers.isEmptyOrNullString;
 import static org.hamcrest.Matchers.isEmptyString;
 import static org.hamcrest.Matchers.nullValue;
 import static org.junit.Assert.assertThat;
 
+import org.junit.Test;
+import org.openecomp.sdc.be.togglz.ToggleableFeature;
+import org.togglz.core.repository.FeatureState;
+
 public class FeatureToggleEventTest {
     private final String strategyId = "123456";
     private final String param1 = "param1";
index 616e658..2aadddb 100644 (file)
@@ -40,7 +40,7 @@ import static org.openecomp.sdc.common.api.Constants.HEALTH_CHECK_SERVICE_ATTR;
 public class FeHealthCheckServletTest {
 
     private final FeHealthCheckServlet healthCheckServlet = new FeHealthCheckServlet();
-    private final Response response = Response.status(200).entity("Ok").build();
+    private final Response response = Response.ok().entity("Ok").build();
 
     @Mock
     private HealthCheckService healthCheckService;
index 2005537..175b387 100644 (file)
       <version>${togglz.version}</version>
     </dependency>
 
-    <!-- Togglz for testing -->
-    <dependency>
-      <groupId>org.togglz</groupId>
-      <artifactId>togglz-testing</artifactId>
-      <version>${togglz.version}</version>
-      <scope>test</scope>
-    </dependency>
+        <!-- Togglz for testing -->
+        <dependency>
+            <groupId>org.togglz</groupId>
+            <artifactId>togglz-testing</artifactId>
+            <version>${togglz.version}</version>
+            <scope>test</scope>
+        </dependency>
+               <dependency>
+                       <groupId>org.togglz</groupId>
+                       <artifactId>togglz-core</artifactId>
+                       <version>${togglz.version}</version>
+                       <scope>compile</scope>
+               </dependency>
 
   </dependencies>
   <build>
@@ -7,9 +7,9 @@
  * 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.
  * ============LICENSE_END=========================================================
  */
 
-package org.openecomp.sdc.be.resources.data.togglz;
+package org.openecomp.sdc.be.togglz;
 
+import java.util.Arrays;
 import org.togglz.core.Feature;
 import org.togglz.core.annotation.Label;
 import org.togglz.core.context.FeatureContext;
 
-import java.util.Arrays;
+public enum ToggleableFeature implements Feature {
+    @Label("Default Feature")
+    DEFAULT_FEATURE,
 
-public enum ToggleableFeature implements Feature{
-    @Label("Default feature")
-    DEFAULT_FEATURE;
+    @Label("Healing")
+    HEALING;
 
     public static Feature getFeatureByName(String featureName) {
         return Arrays.stream(values()).
@@ -18,7 +18,7 @@
  * ============LICENSE_END=========================================================
  */
 
-package org.openecomp.sdc.common.togglz;
+package org.openecomp.sdc.be.togglz;
 
 import org.togglz.core.Feature;
 import org.togglz.core.manager.TogglzConfig;
@@ -30,6 +30,9 @@ import org.togglz.core.user.UserProvider;
 import java.io.File;
 
 public class TogglzConfiguration implements TogglzConfig {
+
+  private static final String TOGGLZ_FILE_LOCATION = "/tmp/features.properties";
+
   @Override
   public Class<? extends Feature> getFeatureClass() {
     return ToggleableFeature.class;
@@ -37,7 +40,7 @@ public class TogglzConfiguration implements TogglzConfig {
 
   @Override
   public StateRepository getStateRepository() {
-    return new FileBasedStateRepository(new File("/tmp/features.properties"));
+    return new FileBasedStateRepository(new File(TOGGLZ_FILE_LOCATION));
   }
 
   @Override
diff --git a/common-be/src/main/resources/feature.properties b/common-be/src/main/resources/feature.properties
new file mode 100644 (file)
index 0000000..e69de29
index c86cca4..fb04f8a 100644 (file)
@@ -74,7 +74,7 @@
     <commons.io.version>2.5</commons.io.version>
     <commons.lang.version>2.6</commons.lang.version>
     <commons.lang3.version>3.4</commons.lang3.version>
-    <cxf.version>3.1.16</cxf.version>
+    <cxf.version>3.3.6</cxf.version>
     <datastax.cassandra.version>3.8.0</datastax.cassandra.version>
     <easymock.version>3.4</easymock.version>
     <groovy.version>2.4.8</groovy.version>
index 7668337..6a6dd0a 100644 (file)
@@ -72,7 +72,7 @@
         <dependency>
             <groupId>javax.ws.rs</groupId>
             <artifactId>javax.ws.rs-api</artifactId>
-            <version>2.0.1</version>
+            <version>${ws.rs.version}</version>
         </dependency>
         <dependency>
             <groupId>org.codehaus.groovy</groupId>
             <artifactId>cxf-rt-transports-http</artifactId>
             <version>${cxf.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-frontend-jaxrs</artifactId>
+            <version>${cxf.version}</version>
+        </dependency>
     </dependencies>
 
     <!-- Should be removed once TogglZ usage in pom files is fixed -->
index 2b1b989..1e41ed2 100644 (file)
@@ -13,7 +13,7 @@
 
     <context-param>
         <param-name>org.togglz.core.manager.TogglzConfig</param-name>
-        <param-value>org.openecomp.sdc.common.togglz.TogglzConfiguration</param-value>
+        <param-value>org.openecomp.sdc.be.togglz.TogglzConfiguration</param-value>
     </context-param>
 
 
index 2d26276..fb52370 100644 (file)
   <dependencies>
 
 
-    <dependency>
-      <groupId>javax.ws.rs</groupId>
-      <artifactId>javax.ws.rs-api</artifactId>
-      <version>${ws.rs.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.springframework</groupId>
-      <artifactId>spring-context</artifactId>
-      <version>${spring.framework.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>javax.inject</groupId>
-      <artifactId>javax.inject</artifactId>
-      <version>${javax.inject.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.openecomp.sdc.core</groupId>
-      <artifactId>openecomp-common-lib</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.openecomp.sdc</groupId>
-      <artifactId>togglz-rest-types</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.openecomp.sdc</groupId>
-      <artifactId>openecomp-sdc-common-rest</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <!-- CXF -->
-    <dependency>
-      <groupId>org.apache.cxf</groupId>
-      <artifactId>cxf-rt-frontend-jaxrs</artifactId>
-      <version>${cxf.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.mockito</groupId>
-      <artifactId>mockito-core</artifactId>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
+        <dependency>
+            <groupId>javax.ws.rs</groupId>
+            <artifactId>javax.ws.rs-api</artifactId>
+            <version>${ws.rs.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-context</artifactId>
+            <version>${spring.framework.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.inject</groupId>
+            <artifactId>javax.inject</artifactId>
+            <version>${javax.inject.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.openecomp.sdc.core</groupId>
+            <artifactId>openecomp-common-lib</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+             <groupId>org.openecomp.sdc</groupId>
+            <artifactId>togglz-rest-types</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.openecomp.sdc</groupId>
+            <artifactId>openecomp-sdc-common-rest</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+         <!-- CXF -->
+        <dependency>
+            <groupId>org.apache.cxf</groupId>
+            <artifactId>cxf-rt-frontend-jaxrs</artifactId>
+            <version>${cxf.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.openecomp.sdc.be</groupId>
+            <artifactId>common-be</artifactId>
+            <version>${project.version}</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
 
 
 </project>
\ No newline at end of file
index 7fe6542..c6fbed6 100644 (file)
  */
 package org.openecomp.sdcrests.togglz.rest.mapping;
 
-import org.openecomp.sdc.common.togglz.ToggleableFeature;
-import org.openecomp.sdcrests.mapping.MappingBase;
-import org.openecomp.sdcrests.togglz.types.FeatureDto;
-import org.openecomp.sdcrests.togglz.types.FeatureSetDto;
-
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Set;
 import java.util.stream.Collectors;
+import org.openecomp.sdc.be.togglz.ToggleableFeature;
+import org.openecomp.sdcrests.mapping.MappingBase;
+import org.openecomp.sdcrests.togglz.types.FeatureDto;
+import org.openecomp.sdcrests.togglz.types.FeatureSetDto;
 
 public class MapToggleableFeatureToDto extends MappingBase<Collection<ToggleableFeature>, FeatureSetDto> {
 
index d62dd4a..4777d0a 100644 (file)
  */
 
 package org.openecomp.sdcrests.togglz.rest.services;
-
-import org.openecomp.sdc.common.togglz.ToggleableFeature;
 import org.openecomp.sdcrests.togglz.rest.TogglzFeatures;
 import org.openecomp.sdcrests.togglz.rest.mapping.MapToggleableFeatureToDto;
 import org.openecomp.sdcrests.togglz.types.FeatureDto;
 import org.openecomp.sdcrests.togglz.types.FeatureSetDto;
+import org.openecomp.sdc.be.togglz.ToggleableFeature;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Service;
 import org.togglz.core.Feature;
index 8035f11..9b9eed1 100644 (file)
@@ -22,7 +22,7 @@ package org.openecomp;
 
 import com.google.common.collect.Sets;
 import org.junit.Test;
-import org.openecomp.sdc.common.togglz.ToggleableFeature;
+import org.openecomp.sdc.be.togglz.ToggleableFeature;
 import org.openecomp.sdcrests.togglz.rest.TogglzFeatures;
 import org.openecomp.sdcrests.togglz.rest.mapping.MapToggleableFeatureToDto;
 import org.openecomp.sdcrests.togglz.rest.services.TogglzFeaturesImpl;
diff --git a/openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/togglz/ToggleableFeature.java b/openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/togglz/ToggleableFeature.java
deleted file mode 100644 (file)
index 440a508..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.sdc.common.togglz;
-
-import org.togglz.core.Feature;
-import org.togglz.core.annotation.Label;
-import org.togglz.core.context.FeatureContext;
-
-public enum ToggleableFeature implements Feature {
-
-    @Label("Default Feature")
-    DEFAULT_FEATURE;
-
-    public boolean isActive() {
-        return FeatureContext.getFeatureManager().isActive(this);
-    }
-}
index 39ee8b7..71dfeb9 100644 (file)
@@ -37,7 +37,6 @@ import org.onap.sdc.tosca.datatypes.model.RelationshipTemplate;
 import org.onap.sdc.tosca.datatypes.model.RequirementAssignment;
 import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
 import org.onap.sdc.tosca.datatypes.model.CapabilityDefinition;
-import org.openecomp.sdc.common.togglz.ToggleableFeature;
 import org.openecomp.sdc.heat.datatypes.HeatBoolean;
 import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
 import org.openecomp.sdc.heat.datatypes.model.HeatResourcesTypes;
index cae53f5..31dbb21 100644 (file)
 
 package org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation;
 
+import static org.junit.Assert.assertEquals;
+import static org.openecomp.sdc.translator.TestUtils.getErrorAsString;
+
+import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.zip.ZipInputStream;
 import org.apache.commons.collections4.MapUtils;
 import org.junit.Assert;
 import org.junit.BeforeClass;
@@ -24,27 +38,16 @@ import org.openecomp.core.translator.datatypes.TranslatorOutput;
 import org.openecomp.core.translator.factory.HeatToToscaTranslatorFactory;
 import org.openecomp.core.utilities.file.FileUtils;
 import org.openecomp.core.validation.util.MessageContainerUtil;
+import org.openecomp.sdc.be.togglz.ToggleableFeature;
 import org.openecomp.sdc.common.errors.CoreException;
 import org.openecomp.sdc.common.errors.ErrorCategory;
 import org.openecomp.sdc.common.errors.ErrorCode;
-import org.openecomp.sdc.common.togglz.ToggleableFeature;
 import org.openecomp.sdc.datatypes.error.ErrorLevel;
 import org.openecomp.sdc.tosca.services.impl.ToscaFileOutputServiceCsarImpl;
 import org.openecomp.sdc.translator.TestUtils;
 import org.togglz.testing.TestFeatureManager;
 import org.togglz.testing.TestFeatureManagerProvider;
 
-import java.io.*;
-import java.net.URL;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.zip.ZipInputStream;
-
-import static org.junit.Assert.assertEquals;
-import static org.openecomp.sdc.translator.TestUtils.getErrorAsString;
-
 
 public class BaseFullTranslationTest {
 
@@ -88,8 +91,7 @@ public class BaseFullTranslationTest {
         }
 
         try (ByteArrayInputStream fis = new ByteArrayInputStream(translatedZipFile);
-             BufferedInputStream bis = new BufferedInputStream(fis);
-             ZipInputStream zis = new ZipInputStream(bis)) {
+             BufferedInputStream bis = new BufferedInputStream(fis); ZipInputStream zis = new ZipInputStream(bis)) {
             TestUtils.compareTranslatedOutput(expectedResultFileNameSet, expectedResultMap, zis);
         }
         assertEquals(0, expectedResultFileNameSet.size());
@@ -105,8 +107,8 @@ public class BaseFullTranslationTest {
                 MessageContainerUtil.getMessageByLevel(ErrorLevel.ERROR, translatorOutput.getErrorMessages()))) {
             throw new CoreException((new ErrorCode.ErrorCodeBuilder()).withMessage(
                     "Error in validation " + getErrorAsString(translatorOutput.getErrorMessages()))
-                                                                      .withId("Validation Error")
-                                                                      .withCategory(ErrorCategory.APPLICATION).build());
+                                            .withId("Validation Error").withCategory(ErrorCategory.APPLICATION)
+                                            .build());
         }
 
         return new ToscaFileOutputServiceCsarImpl().createOutputFile(translatorOutput.getToscaServiceModel(), null);
index 5e5bda3..42f4cfd 100644 (file)
 
 package org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation;
 
+import static org.junit.Assert.assertEquals;
+import static org.openecomp.sdc.common.utils.SdcCommon.MANIFEST_NAME;
+import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataTestUtil.validateComputeConnectivityIn;
+import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataTestUtil.validateComputeConnectivityOut;
+import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataTestUtil.validateDependsOnInConsolidationData;
+import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataTestUtil.validateGetAttr;
+import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataTestUtil.validateGroupsInConsolidationData;
+import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataTestUtil.validateNestedConsolidationData;
+import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataTestUtil.validateNestedConsolidationDataNodeTemplateIds;
+import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataTestUtil.validatePortConnectivityIn;
+import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataTestUtil.validatePortConnectivityOut;
+import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataTestUtil.validatePortsInConsolidationData;
+import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataTestUtil.validateVolumeInConsolidationData;
+
+import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.net.URL;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.zip.ZipInputStream;
 import org.apache.commons.collections4.MapUtils;
 import org.junit.Assert;
 import org.junit.Before;
@@ -25,272 +52,253 @@ import org.openecomp.core.translator.datatypes.TranslatorOutput;
 import org.openecomp.core.utilities.file.FileUtils;
 import org.openecomp.core.utilities.json.JsonUtil;
 import org.openecomp.core.validation.util.MessageContainerUtil;
+import org.openecomp.sdc.be.togglz.ToggleableFeature;
 import org.openecomp.sdc.common.errors.CoreException;
 import org.openecomp.sdc.common.errors.ErrorCategory;
 import org.openecomp.sdc.common.errors.ErrorCode;
-import org.openecomp.sdc.common.togglz.ToggleableFeature;
 import org.openecomp.sdc.datatypes.error.ErrorLevel;
 import org.openecomp.sdc.heat.datatypes.manifest.FileData;
 import org.openecomp.sdc.heat.datatypes.manifest.ManifestContent;
 import org.openecomp.sdc.heat.datatypes.manifest.ManifestFile;
-import org.openecomp.sdc.tosca.services.ToscaFileOutputService;
 import org.openecomp.sdc.tosca.services.impl.ToscaFileOutputServiceCsarImpl;
 import org.openecomp.sdc.translator.TestUtils;
 import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
-import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.*;
+import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ComputeTemplateConsolidationData;
+import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.ConsolidationData;
+import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FileComputeConsolidationData;
+import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.FilePortConsolidationData;
+import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortTemplateConsolidationData;
+import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.TypeComputeConsolidationData;
 import org.openecomp.sdc.translator.services.heattotosca.TranslationService;
 import org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataValidationType;
 import org.togglz.testing.TestFeatureManager;
 import org.togglz.testing.TestFeatureManagerProvider;
 
-import java.io.*;
-import java.net.URL;
-import java.util.*;
-import java.util.zip.ZipInputStream;
-
-import static org.junit.Assert.assertEquals;
-import static org.openecomp.sdc.common.utils.SdcCommon.MANIFEST_NAME;
-import static org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.ConsolidationDataTestUtil.*;
-
 
 public class BaseResourceTranslationTest {
 
-  protected String inputFilesPath;
-  protected String outputFilesPath;
-  TranslationContext translationContext;
+    protected String inputFilesPath;
+    protected String outputFilesPath;
+    TranslationContext translationContext;
 
-  private TranslationService translationService;
-  private byte[] translatedZipFile;
+    private TranslationService translationService;
+    private byte[] translatedZipFile;
 
-  private Map<String, byte[]> expectedResultMap = new HashMap<>();
-  private Set<String> expectedResultFileNameSet = new HashSet<>();
+    private Map<String, byte[]> expectedResultMap = new HashMap<>();
+    private Set<String> expectedResultFileNameSet = new HashSet<>();
 
-  protected static TestFeatureManager manager;
+    protected static TestFeatureManager manager;
 
-  @BeforeClass
-  public static void enableToggleableFeatures(){
-    manager = new TestFeatureManager(ToggleableFeature.class);
-    manager.enableAll();
-    TestFeatureManagerProvider.setFeatureManager(manager);
-  }
+    @BeforeClass
+    public static void enableToggleableFeatures() {
+        manager = new TestFeatureManager(ToggleableFeature.class);
+        manager.enableAll();
+        TestFeatureManagerProvider.setFeatureManager(manager);
+    }
 
-  @Before
-  public void setUp() throws IOException {
-    initTranslatorAndTranslate();
-  }
+    @Before
+    public void setUp() throws IOException {
+        initTranslatorAndTranslate();
+    }
 
 
-  protected void initTranslatorAndTranslate() throws IOException {
-    translationService = new TranslationService();
-    translationContext = new TranslationContext();
-    translatedZipFile = translateZipFile();
-  }
+    protected void initTranslatorAndTranslate() throws IOException {
+        translationService = new TranslationService();
+        translationContext = new TranslationContext();
+        translatedZipFile = translateZipFile();
+    }
 
-  protected void testTranslation() throws IOException {
+    protected void testTranslation() throws IOException {
 
-    URL url = BaseResourceTranslationTest.class.getResource(outputFilesPath);
+        URL url = BaseResourceTranslationTest.class.getResource(outputFilesPath);
 
-    String path = url.getPath();
-    File pathFile = new File(path);
-    File[] files = pathFile.listFiles();
-    Assert.assertNotNull("manifest files is empty", files);
-    for (File expectedFile : files) {
-      expectedResultFileNameSet.add(expectedFile.getName());
-      try (FileInputStream input = new FileInputStream(expectedFile)) {
-        expectedResultMap.put(expectedFile.getName(), FileUtils.toByteArray(input));
-      }
-    }
+        String path = url.getPath();
+        File pathFile = new File(path);
+        File[] files = pathFile.listFiles();
+        Assert.assertNotNull("manifest files is empty", files);
+        for (File expectedFile : files) {
+            expectedResultFileNameSet.add(expectedFile.getName());
+            try (FileInputStream input = new FileInputStream(expectedFile)) {
+                expectedResultMap.put(expectedFile.getName(), FileUtils.toByteArray(input));
+            }
+        }
 
-    try (ByteArrayInputStream fis = new ByteArrayInputStream(translatedZipFile);
-         BufferedInputStream bis = new BufferedInputStream(fis);
-         ZipInputStream zis = new ZipInputStream(bis)) {
-      TestUtils.compareTranslatedOutput(expectedResultFileNameSet, expectedResultMap, zis);
+        try (ByteArrayInputStream fis = new ByteArrayInputStream(translatedZipFile);
+             BufferedInputStream bis = new BufferedInputStream(fis); ZipInputStream zis = new ZipInputStream(bis)) {
+            TestUtils.compareTranslatedOutput(expectedResultFileNameSet, expectedResultMap, zis);
+        }
+        assertEquals(0, expectedResultFileNameSet.size());
     }
-    assertEquals(0, expectedResultFileNameSet.size());
-  }
-
-  private byte[] translateZipFile() throws IOException {
-    URL inputFilesUrl = this.getClass().getResource(inputFilesPath);
-    String path = inputFilesUrl.getPath();
-    addFilesToTranslator(translationContext, path);
-    TranslatorOutput translatorOutput = translationService.translateHeatFiles(translationContext);
-    Assert.assertNotNull(translatorOutput);
-    if (MapUtils.isNotEmpty(translatorOutput.getErrorMessages()) && MapUtils.isNotEmpty(
-        MessageContainerUtil
-            .getMessageByLevel(ErrorLevel.ERROR, translatorOutput.getErrorMessages()))) {
-      throw new CoreException((new ErrorCode.ErrorCodeBuilder()).withMessage(
-          "Error in validation " + TestUtils.getErrorAsString(translatorOutput.getErrorMessages()))
-          .withId("Validation Error").withCategory(ErrorCategory.APPLICATION).build());
+
+    private byte[] translateZipFile() throws IOException {
+        URL inputFilesUrl = this.getClass().getResource(inputFilesPath);
+        String path = inputFilesUrl.getPath();
+        addFilesToTranslator(translationContext, path);
+        TranslatorOutput translatorOutput = translationService.translateHeatFiles(translationContext);
+        Assert.assertNotNull(translatorOutput);
+        if (MapUtils.isNotEmpty(translatorOutput.getErrorMessages()) && MapUtils.isNotEmpty(
+                MessageContainerUtil.getMessageByLevel(ErrorLevel.ERROR, translatorOutput.getErrorMessages()))) {
+            throw new CoreException((new ErrorCode.ErrorCodeBuilder()).withMessage(
+                    "Error in validation " + TestUtils.getErrorAsString(translatorOutput.getErrorMessages()))
+                                            .withId("Validation Error").withCategory(ErrorCategory.APPLICATION)
+                                            .build());
+        }
+
+        return new ToscaFileOutputServiceCsarImpl().createOutputFile(translatorOutput.getToscaServiceModel(), null);
+
     }
-    
-    return new ToscaFileOutputServiceCsarImpl().createOutputFile(translatorOutput.getToscaServiceModel(), null);
-    
-  }
 
 
-  private void addFilesToTranslator(TranslationContext translationContext, String path)
-      throws IOException {
-    File manifestFile = new File(path);
-    File[] files = manifestFile.listFiles();
-    byte[] fileContent;
+    private void addFilesToTranslator(TranslationContext translationContext, String path) throws IOException {
+        File manifestFile = new File(path);
+        File[] files = manifestFile.listFiles();
+        byte[] fileContent;
 
-    Assert.assertNotNull("manifest files is empty", files);
+        Assert.assertNotNull("manifest files is empty", files);
 
-    for (File file : files) {
+        for (File file : files) {
 
-      try (FileInputStream fis = new FileInputStream(file)) {
+            try (FileInputStream fis = new FileInputStream(file)) {
 
-        fileContent = FileUtils.toByteArray(fis);
+                fileContent = FileUtils.toByteArray(fis);
 
-        if (file.getName().equals(MANIFEST_NAME)) {
-          addManifest(translationContext, fileContent);
-        } else {
-          String validationFilename = "validationOutput.json";
-          String zipFilename = "VSP.zip";
-          if (!file.getName().equals(zipFilename) && (!file.getName().equals(validationFilename))) {
-            addFile(translationContext, file.getName(), fileContent);
-          }
+                if (file.getName().equals(MANIFEST_NAME)) {
+                    addManifest(translationContext, fileContent);
+                } else {
+                    String validationFilename = "validationOutput.json";
+                    String zipFilename = "VSP.zip";
+                    if (!file.getName().equals(zipFilename) && (!file.getName().equals(validationFilename))) {
+                        addFile(translationContext, file.getName(), fileContent);
+                    }
+                }
+            }
         }
-      }
     }
-  }
-
-  private static void addManifest(TranslationContext translationContext,
-                                  byte[] content) {
-    ManifestContent manifestData = JsonUtil.json2Object(new String(content), ManifestContent.class);
-    ManifestFile manifest = new ManifestFile();
-    manifest.setName(MANIFEST_NAME);
-    manifest.setContent(manifestData);
-    translationContext.setManifest(manifest);
-    translationContext.addFile(MANIFEST_NAME, content);
-    addFilesFromManifestToTranslationContextManifestFilesMap(translationContext, manifestData
-        .getData());
-  }
-
-  private static void addFile(TranslationContext translationContext,
-                              String name, byte[] content) {
-    translationContext.addFile(name, content);
-  }
-
-  private static void addFilesFromManifestToTranslationContextManifestFilesMap(
-      TranslationContext translationContext, List<FileData> fileDataListFromManifest) {
-    for (FileData fileFromManfiest : fileDataListFromManifest) {
-      translationContext.addManifestFile(fileFromManfiest.getFile(), fileFromManfiest.getType());
+
+    private static void addManifest(TranslationContext translationContext, byte[] content) {
+        ManifestContent manifestData = JsonUtil.json2Object(new String(content), ManifestContent.class);
+        ManifestFile manifest = new ManifestFile();
+        manifest.setName(MANIFEST_NAME);
+        manifest.setContent(manifestData);
+        translationContext.setManifest(manifest);
+        translationContext.addFile(MANIFEST_NAME, content);
+        addFilesFromManifestToTranslationContextManifestFilesMap(translationContext, manifestData.getData());
+    }
+
+    private static void addFile(TranslationContext translationContext, String name, byte[] content) {
+        translationContext.addFile(name, content);
     }
-  }
-
-  void validateNodeTemplateIdInNestedConsolidationData(){
-    ConsolidationData consolidationData = translationContext.getConsolidationData();
-    Map<String, ServiceTemplate> expectedServiceTemplateModels = TestUtils.getServiceTemplates
-        (expectedResultMap);
-    Assert.assertNotNull(consolidationData);
-    validateNestedConsolidationDataNodeTemplateIds(consolidationData,expectedServiceTemplateModels);
-  }
-
-  protected void validateComputeTemplateConsolidationData(ConsolidationDataValidationType
-                                                                  validationType,
-                                                          String testName) {
-    ConsolidationData consolidationData = translationContext.getConsolidationData();
-    Map<String, ServiceTemplate> expectedServiceTemplateModels = TestUtils.getServiceTemplates
-        (expectedResultMap);
-    Assert.assertNotNull(consolidationData);
-    Assert.assertNotNull(consolidationData.getComputeConsolidationData());
-    Set<String> serviceTemplateFileNames = consolidationData.getComputeConsolidationData()
-        .getAllServiceTemplateFileNames();
-    Assert.assertNotNull(serviceTemplateFileNames);
-    for(String serviceTemplateName : serviceTemplateFileNames){
-      Assert.assertTrue(expectedServiceTemplateModels.containsKey(serviceTemplateName));
-      ServiceTemplate expectedServiceTemplate = expectedServiceTemplateModels.get
-          (serviceTemplateName);
-      FileComputeConsolidationData fileComputeConsolidationData = consolidationData
-          .getComputeConsolidationData().getFileComputeConsolidationData(serviceTemplateName);
-      Assert.assertNotNull(fileComputeConsolidationData);
-      Set<String> computeTypes = fileComputeConsolidationData.getAllComputeTypes();
-      Assert.assertNotNull(computeTypes);
-      for(String computeType : computeTypes) {
-        TypeComputeConsolidationData typeComputeConsolidationData = fileComputeConsolidationData
-            .getTypeComputeConsolidationData(computeType);
-        Assert.assertNotNull(typeComputeConsolidationData);
-
-        Collection<String> computeNodeTemplateIds = typeComputeConsolidationData
-            .getAllComputeNodeTemplateIds();
-        Assert.assertNotNull(computeNodeTemplateIds);
-        Assert.assertNotEquals(computeNodeTemplateIds.size(), 0);
-
-        for(String computeNodeTemplateId : computeNodeTemplateIds) {
-          ComputeTemplateConsolidationData computeTemplateConsolidationData =
-              typeComputeConsolidationData.getComputeTemplateConsolidationData
-                  (computeNodeTemplateId);
-          switch(validationType){
-            case VALIDATE_GROUP:
-              validateGroupsInConsolidationData(computeNodeTemplateId,
-                  computeTemplateConsolidationData, expectedServiceTemplate);
-              break;
-            case VALIDATE_PORT:
-              validatePortsInConsolidationData(computeNodeTemplateId,
-                  computeTemplateConsolidationData,
-                  expectedServiceTemplate);
-              break;
-            case VALIDATE_VOLUME:
-              validateVolumeInConsolidationData(computeNodeTemplateId,
-                  computeTemplateConsolidationData, expectedServiceTemplate, testName);
-              break;
-            case VALIDATE_CONNECTIVITY:
-              validateComputeConnectivityIn(computeTemplateConsolidationData,
-                  expectedServiceTemplate);
-              validateComputeConnectivityOut(computeNodeTemplateId, computeTemplateConsolidationData,
-                      expectedServiceTemplate);
-              break;
-            case VALIDATE_DEPENDS_ON:
-              validateDependsOnInConsolidationData(computeNodeTemplateId,
-                  computeTemplateConsolidationData,
-                  expectedServiceTemplate, testName);
-              break;
-          }
+
+    private static void addFilesFromManifestToTranslationContextManifestFilesMap(TranslationContext translationContext,
+            List<FileData> fileDataListFromManifest) {
+        for (FileData fileFromManfiest : fileDataListFromManifest) {
+            translationContext.addManifestFile(fileFromManfiest.getFile(), fileFromManfiest.getType());
+        }
+    }
+
+    void validateNodeTemplateIdInNestedConsolidationData() {
+        ConsolidationData consolidationData = translationContext.getConsolidationData();
+        Map<String, ServiceTemplate> expectedServiceTemplateModels = TestUtils.getServiceTemplates(expectedResultMap);
+        Assert.assertNotNull(consolidationData);
+        validateNestedConsolidationDataNodeTemplateIds(consolidationData, expectedServiceTemplateModels);
+    }
+
+    protected void validateComputeTemplateConsolidationData(ConsolidationDataValidationType validationType,
+            String testName) {
+        ConsolidationData consolidationData = translationContext.getConsolidationData();
+        Map<String, ServiceTemplate> expectedServiceTemplateModels = TestUtils.getServiceTemplates(expectedResultMap);
+        Assert.assertNotNull(consolidationData);
+        Assert.assertNotNull(consolidationData.getComputeConsolidationData());
+        Set<String> serviceTemplateFileNames =
+                consolidationData.getComputeConsolidationData().getAllServiceTemplateFileNames();
+        Assert.assertNotNull(serviceTemplateFileNames);
+        for (String serviceTemplateName : serviceTemplateFileNames) {
+            Assert.assertTrue(expectedServiceTemplateModels.containsKey(serviceTemplateName));
+            ServiceTemplate expectedServiceTemplate = expectedServiceTemplateModels.get(serviceTemplateName);
+            FileComputeConsolidationData fileComputeConsolidationData = consolidationData.getComputeConsolidationData()
+                                                                                .getFileComputeConsolidationData(
+                                                                                        serviceTemplateName);
+            Assert.assertNotNull(fileComputeConsolidationData);
+            Set<String> computeTypes = fileComputeConsolidationData.getAllComputeTypes();
+            Assert.assertNotNull(computeTypes);
+            for (String computeType : computeTypes) {
+                TypeComputeConsolidationData typeComputeConsolidationData =
+                        fileComputeConsolidationData.getTypeComputeConsolidationData(computeType);
+                Assert.assertNotNull(typeComputeConsolidationData);
+
+                Collection<String> computeNodeTemplateIds = typeComputeConsolidationData.getAllComputeNodeTemplateIds();
+                Assert.assertNotNull(computeNodeTemplateIds);
+                Assert.assertNotEquals(computeNodeTemplateIds.size(), 0);
+
+                for (String computeNodeTemplateId : computeNodeTemplateIds) {
+                    ComputeTemplateConsolidationData computeTemplateConsolidationData =
+                            typeComputeConsolidationData.getComputeTemplateConsolidationData(computeNodeTemplateId);
+                    switch (validationType) {
+                        case VALIDATE_GROUP:
+                            validateGroupsInConsolidationData(computeNodeTemplateId, computeTemplateConsolidationData,
+                                    expectedServiceTemplate);
+                            break;
+                        case VALIDATE_PORT:
+                            validatePortsInConsolidationData(computeNodeTemplateId, computeTemplateConsolidationData,
+                                    expectedServiceTemplate);
+                            break;
+                        case VALIDATE_VOLUME:
+                            validateVolumeInConsolidationData(computeNodeTemplateId, computeTemplateConsolidationData,
+                                    expectedServiceTemplate, testName);
+                            break;
+                        case VALIDATE_CONNECTIVITY:
+                            validateComputeConnectivityIn(computeTemplateConsolidationData, expectedServiceTemplate);
+                            validateComputeConnectivityOut(computeNodeTemplateId, computeTemplateConsolidationData,
+                                    expectedServiceTemplate);
+                            break;
+                        case VALIDATE_DEPENDS_ON:
+                            validateDependsOnInConsolidationData(computeNodeTemplateId,
+                                    computeTemplateConsolidationData, expectedServiceTemplate, testName);
+                            break;
+                    }
+                }
+            }
         }
-      }
     }
-  }
 
     protected void validateGetAttribute(String testName) {
         validateGetAttr(translationContext, testName);
     }
 
-  protected void validateNestedTemplateConsolidationData(String testName){
-    validateNestedConsolidationData(translationContext, testName);
-  }
-
-  void validatePortTemplateConsolidationData() {
-    ConsolidationData consolidationData = translationContext.getConsolidationData();
-    Map<String, ServiceTemplate> expectedServiceTemplateModels = TestUtils.getServiceTemplates
-        (expectedResultMap);
-    Assert.assertNotNull(consolidationData);
-    Assert.assertNotNull(consolidationData.getPortConsolidationData());
-    Set<String> serviceTemplateFileNames = consolidationData.getPortConsolidationData()
-        .getAllServiceTemplateFileNames();
-    Assert.assertNotNull(serviceTemplateFileNames);
-    for(String serviceTemplateName : serviceTemplateFileNames){
-      Assert.assertTrue(expectedServiceTemplateModels.containsKey(serviceTemplateName));
-      ServiceTemplate expectedServiceTemplate = expectedServiceTemplateModels.get
-          (serviceTemplateName);
-      FilePortConsolidationData filePortConsolidationData = consolidationData
-          .getPortConsolidationData().getFilePortConsolidationData(serviceTemplateName);
-      Assert.assertNotNull(filePortConsolidationData);
-
-      Set<String> portNodeTemplateIds = filePortConsolidationData.getAllPortNodeTemplateIds();
-      Assert.assertNotNull(portNodeTemplateIds);
-      Assert.assertNotEquals(portNodeTemplateIds.size(), 0);
-
-      for(String portNodeTemplateId : portNodeTemplateIds) {
-        PortTemplateConsolidationData portTemplateConsolidationData =
-            filePortConsolidationData.getPortTemplateConsolidationData(portNodeTemplateId);
-        switch(ConsolidationDataValidationType.VALIDATE_CONNECTIVITY){
-          case VALIDATE_CONNECTIVITY:
-            validatePortConnectivityIn(portTemplateConsolidationData,expectedServiceTemplate);
-            validatePortConnectivityOut(portNodeTemplateId, portTemplateConsolidationData, expectedServiceTemplate);
-            break;
+    protected void validateNestedTemplateConsolidationData(String testName) {
+        validateNestedConsolidationData(translationContext, testName);
+    }
+
+    void validatePortTemplateConsolidationData() {
+        ConsolidationData consolidationData = translationContext.getConsolidationData();
+        Map<String, ServiceTemplate> expectedServiceTemplateModels = TestUtils.getServiceTemplates(expectedResultMap);
+        Assert.assertNotNull(consolidationData);
+        Assert.assertNotNull(consolidationData.getPortConsolidationData());
+        Set<String> serviceTemplateFileNames =
+                consolidationData.getPortConsolidationData().getAllServiceTemplateFileNames();
+        Assert.assertNotNull(serviceTemplateFileNames);
+        for (String serviceTemplateName : serviceTemplateFileNames) {
+            Assert.assertTrue(expectedServiceTemplateModels.containsKey(serviceTemplateName));
+            ServiceTemplate expectedServiceTemplate = expectedServiceTemplateModels.get(serviceTemplateName);
+            FilePortConsolidationData filePortConsolidationData =
+                    consolidationData.getPortConsolidationData().getFilePortConsolidationData(serviceTemplateName);
+            Assert.assertNotNull(filePortConsolidationData);
+
+            Set<String> portNodeTemplateIds = filePortConsolidationData.getAllPortNodeTemplateIds();
+            Assert.assertNotNull(portNodeTemplateIds);
+            Assert.assertNotEquals(portNodeTemplateIds.size(), 0);
+
+            for (String portNodeTemplateId : portNodeTemplateIds) {
+                PortTemplateConsolidationData portTemplateConsolidationData =
+                        filePortConsolidationData.getPortTemplateConsolidationData(portNodeTemplateId);
+                switch (ConsolidationDataValidationType.VALIDATE_CONNECTIVITY) {
+                    case VALIDATE_CONNECTIVITY:
+                        validatePortConnectivityIn(portTemplateConsolidationData, expectedServiceTemplate);
+                        validatePortConnectivityOut(portNodeTemplateId, portTemplateConsolidationData,
+                                expectedServiceTemplate);
+                        break;
+                }
+            }
         }
-      }
     }
-  }
 }
diff --git a/pom.xml b/pom.xml
index 59b597b..d29852d 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -62,7 +62,7 @@ Modifications copyright (c) 2018-2019 Nokia
     <onap.logging.version>1.6.1</onap.logging.version>
 
     <commons.collections.version>4.1</commons.collections.version>
-    <ws.rs.version>2.0.1</ws.rs.version>
+    <ws.rs.version>2.1</ws.rs.version>
 
     <jetty.version>9.4.18.v20190429</jetty.version>