Add support for CapabilityDefinition isTypeOf 01/56001/2
authorshiria <shiri.amichai@amdocs.com>
Mon, 9 Jul 2018 05:36:15 +0000 (08:36 +0300)
committerAvi Gaffa <avi.gaffa@amdocs.com>
Wed, 11 Jul 2018 05:49:02 +0000 (05:49 +0000)
Change-Id: Id84b5b67ef85b6e252676f1004184fb3180cd053
Issue-ID: SDC-1475
Signed-off-by: shiria <shiri.amichai@amdocs.com>
openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/services/ToscaAnalyzerService.java
openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/services/impl/ToscaAnalyzerServiceImpl.java
openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/services/impl/ToscaAnalyzerServiceImplTest.java

index 34f5a90..97d2a7f 100644 (file)
@@ -54,6 +54,9 @@ public interface ToscaAnalyzerService {
     boolean isTypeOf(DefinitionOfDataType parameterDefinition, String dataType, ServiceTemplate serviceTemplate,
                             ToscaServiceModel toscaServiceModel);
 
+    boolean isTypeOf(CapabilityDefinition capabilityDefinition, String capabilityType, ServiceTemplate serviceTemplate,
+                            ToscaServiceModel toscaServiceModel);
+
     List<RequirementAssignment> getRequirements(NodeTemplate nodeTemplate, String requirementId);
 
     Optional<NodeTemplate> getNodeTemplateById(ServiceTemplate serviceTemplate, String nodeTemplateId);
index 5e0f2f2..2d0d3fb 100644 (file)
@@ -38,13 +38,14 @@ import java.util.*;
 
 public class ToscaAnalyzerServiceImpl implements ToscaAnalyzerService {
 
-    private final String GET_NODE_TYPE_METHOD_NAME = "getNode_types";
-    private final String GET_DERIVED_FROM_METHOD_NAME = "getDerived_from";
-    private final String GET_TYPE_METHOD_NAME = "getType";
-    private final String GET_DATA_TYPE_METHOD_NAME = "getData_types";
-    private final String GET_INTERFACE_TYPE_METHOD_NAME = "getInterface_types";
-    private final String TOSCA_DOT = "tosca.";
-    private final String DOT_ROOT = ".Root";
+    private static final String GET_NODE_TYPE_METHOD_NAME = "getNode_types";
+    private static final String GET_DERIVED_FROM_METHOD_NAME = "getDerived_from";
+    private static final String GET_TYPE_METHOD_NAME = "getType";
+    private static final String GET_DATA_TYPE_METHOD_NAME = "getData_types";
+    private static final String GET_INTERFACE_TYPE_METHOD_NAME = "getInterface_types";
+    private static final String GET_CAPABILITY_TYPE_METHOD_NAME = "getCapability_types";
+    private static final String TOSCA_DOT = "tosca.";
+    private static final String DOT_ROOT = ".Root";
 
     @Override
     public List<Map<String, RequirementDefinition>> calculateExposedRequirements(List<Map<String, RequirementDefinition>> nodeTypeRequirementsDefinitionList,
@@ -925,6 +926,13 @@ public class ToscaAnalyzerServiceImpl implements ToscaAnalyzerService {
         return isTypeOf(parameterDefinition, dataType, GET_DATA_TYPE_METHOD_NAME, serviceTemplate, toscaServiceModel);
     }
 
+    @Override
+    public boolean isTypeOf(CapabilityDefinition capabilityDefinition, String capabilityType,
+                                   ServiceTemplate serviceTemplate, ToscaServiceModel toscaServiceModel) {
+        return isTypeOf(capabilityDefinition, capabilityType, GET_CAPABILITY_TYPE_METHOD_NAME, serviceTemplate, toscaServiceModel);
+    }
+
+
     private <T> boolean isTypeOf(T object, String type, String getTypesMethodName, ServiceTemplate serviceTemplate,
                                         ToscaServiceModel toscaServiceModel) {
         if (object == null) {
@@ -944,7 +952,7 @@ public class ToscaAnalyzerServiceImpl implements ToscaAnalyzerService {
                     () -> new CoreException(new ToscaElementTypeNotFoundErrorBuilder(objectType).build()));
 
         } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
-            throw new RuntimeException(e);
+            throw new SdcRuntimeException(e);
         }
     }
 }
index d9e77e1..0f79ed0 100644 (file)
@@ -44,6 +44,11 @@ import static org.mockito.Mockito.when;
 
 @RunWith(MockitoJUnitRunner.class)
 public class ToscaAnalyzerServiceImplTest {
+
+    public static final String CAPABILITY_TYPE_A = "capabilityTypeA";
+    public static final String CAPABILITY_TYPE_B = "capabilityTypeB";
+    public static final String TOSCA_CAPABILITIES_ROOT = "tosca.capabilities.Root";
+
     /*
     Dictionary:
     SrvTmp: ServiceTemplate
@@ -874,4 +879,39 @@ public class ToscaAnalyzerServiceImplTest {
 
     // not found at all should throw core exception
 
+
+    @Test
+    public void capabilityDefinitionIsTypeOfDirectTypeFound() {
+        CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
+        capabilityDefinition.setType(CAPABILITY_TYPE_A);
+        assertTrue(toscaAnalyzerService.isTypeOf(capabilityDefinition, CAPABILITY_TYPE_A, new ServiceTemplate(),
+                toscaServiceModelMock));
+    }
+
+    @Test
+    public void capabilityDefinitionIsTypeOfReturnNo() {
+        CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
+        capabilityDefinition.setType(CAPABILITY_TYPE_A);
+        ServiceTemplate serviceTemplate = new ServiceTemplate();
+        serviceTemplate.setCapability_types(new HashMap<>());
+        CapabilityType capabilityType = new CapabilityType();
+        capabilityType.setDerived_from(TOSCA_CAPABILITIES_ROOT);
+        serviceTemplate.getCapability_types().put(CAPABILITY_TYPE_A, capabilityType);
+        assertFalse(toscaAnalyzerService
+                            .isTypeOf(capabilityDefinition, CAPABILITY_TYPE_B, serviceTemplate, toscaServiceModelMock));
+    }
+
+    @Test
+    public void capabilityDefinitionIsTypeOfInheritanceTypeFound() {
+        CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
+        capabilityDefinition.setType(CAPABILITY_TYPE_A);
+        ServiceTemplate serviceTemplate = new ServiceTemplate();
+        serviceTemplate.setCapability_types(new HashMap<>());
+        CapabilityType capabilityType = new CapabilityType();
+        capabilityType.setDerived_from(CAPABILITY_TYPE_B);
+        serviceTemplate.getCapability_types().put(CAPABILITY_TYPE_A, capabilityType);
+        assertTrue(toscaAnalyzerService
+                           .isTypeOf(capabilityDefinition, CAPABILITY_TYPE_B, serviceTemplate, toscaServiceModelMock));
+    }
+
 }