Refactor Onboarding Function Translation code 53/49353/3
authorojasdubey <ojas.dubey@amdocs.com>
Tue, 29 May 2018 12:28:56 +0000 (17:58 +0530)
committerOren Kleks <orenkle@amdocs.com>
Thu, 31 May 2018 14:01:02 +0000 (14:01 +0000)
1. Fixed sonar violations and static
analysis issues for function translation
2. Refactored methods for code smells

Note: The below files are modified to keep
successful compilation and will be handled
separately in a different commit
(i) HeatToToscaUtil
(ii) TranslatorHeatToToscaParameterConverter
(iii) TranslatorHeatToToscaPropertyConverter

Change-Id: I75472c2848d1eb812468e7d6457c8da96d6c0e4e
Issue-ID: SDC-1331
Signed-off-by: ojasdubey <ojas.dubey@amdocs.com>
14 files changed:
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/FunctionTranslation.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/FunctionTranslationFactory.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/HeatToToscaUtil.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/helper/FunctionTranslationHelper.java [deleted file]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/functiontranslation/FunctionTranslationGetAttrImpl.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/functiontranslation/FunctionTranslationGetFileImpl.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/functiontranslation/FunctionTranslationGetParamImpl.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/functiontranslation/FunctionTranslationGetResourceImpl.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/functiontranslation/FunctionTranslator.java [new file with mode: 0644]
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/mapping/TranslatorHeatToToscaParameterConverter.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/mapping/TranslatorHeatToToscaPropertyConverter.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/functiontranslation/FunctionTranslationGetAttrImplTest.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/functiontranslation/FunctionTranslationGetFileImplTest.java
openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/functiontranslation/FunctionTranslationGetParamImplTest.java

index 0c2ea4b..54805be 100644 (file)
@@ -1,38 +1,25 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
+/*
+ * 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.
- * ============LICENSE_END=========================================================
  */
 
 package org.openecomp.sdc.translator.services.heattotosca;
 
-
-import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
-import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
-import org.onap.sdc.tosca.datatypes.model.Template;
-import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
+import org.openecomp.sdc.translator.services.heattotosca.impl.functiontranslation.FunctionTranslator;
 
 
 public interface FunctionTranslation {
 
-  //return the value of the translated function ("get_param", "get_attr" and etc)
-  Object translateFunction(ServiceTemplate serviceTemplate,
-                           String resourceId, String propertyName, String functionKey,
-                           Object functionValue, String heatFileName,
-                           HeatOrchestrationTemplate heatOrchestrationTemplate,
-                           Template toscaTemplate, TranslationContext context);
+    Object translateFunction(FunctionTranslator functionTranslator);
 }
index 90abc1b..aafcdbe 100644 (file)
@@ -1,70 +1,60 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
+/*
+ * 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.
- * ============LICENSE_END=========================================================
  */
 
 package org.openecomp.sdc.translator.services.heattotosca;
 
+import java.util.Map;
+import java.util.Optional;
 
 import org.onap.config.api.Configuration;
 import org.onap.config.api.ConfigurationManager;
 import org.openecomp.core.utilities.CommonMethods;
 import org.openecomp.sdc.datatypes.configuration.ImplementationConfiguration;
 
-import java.util.Map;
-import java.util.Optional;
-
-
 public class FunctionTranslationFactory {
-  private static Map<String, ImplementationConfiguration> functionTranslationImplMap;
+    private static final Map<String, ImplementationConfiguration> functionTranslationImplMap;
 
-  static {
-    Configuration config = ConfigurationManager.lookup();
-    functionTranslationImplMap = config.populateMap(ConfigConstants.TRANSLATOR_NAMESPACE,
-        ConfigConstants.FUNCTION_TRANSLATION_IMPL_KEY, ImplementationConfiguration.class);
-    functionTranslationImplMap.putAll(config.populateMap(ConfigConstants.MANDATORY_TRANSLATOR_NAMESPACE,
-        ConfigConstants.FUNCTION_TRANSLATION_IMPL_KEY, ImplementationConfiguration.class));
+    static {
+        Configuration config = ConfigurationManager.lookup();
+        functionTranslationImplMap = config.populateMap(ConfigConstants.TRANSLATOR_NAMESPACE,
+                ConfigConstants.FUNCTION_TRANSLATION_IMPL_KEY, ImplementationConfiguration.class);
+        functionTranslationImplMap.putAll(config.populateMap(ConfigConstants.MANDATORY_TRANSLATOR_NAMESPACE,
+                ConfigConstants.FUNCTION_TRANSLATION_IMPL_KEY, ImplementationConfiguration.class));
 
-  }
-
-  /**
-   * Gets function translation instance.
-   *
-   * @param heatFunctionKey heat function key
-   * @return the instance
-   */
-  public static Optional<FunctionTranslation> getInstance(String heatFunctionKey) {
-    if (isSupportedFunction(heatFunctionKey)) {
-      String functionTranslationImplClassName =
-          functionTranslationImplMap.get(heatFunctionKey).getImplementationClass();
-      return Optional.of(CommonMethods
-          .newInstance(functionTranslationImplClassName, FunctionTranslation.class));
     }
 
-    return Optional.empty();
-  }
+    /**
+     * Gets function translation instance.
+     *
+     * @param heatFunctionKey heat function key
+     * @return the instance
+     */
+    public static Optional<FunctionTranslation> getInstance(String heatFunctionKey) {
+        if (isSupportedFunction(heatFunctionKey)) {
+            String functionTranslationImplClassName =
+                    functionTranslationImplMap.get(heatFunctionKey).getImplementationClass();
+            return Optional.of(CommonMethods
+                    .newInstance(functionTranslationImplClassName, FunctionTranslation.class));
+        }
+        return Optional.empty();
+    }
 
-  private static boolean isSupportedFunction(String heatFunctionKey) {
-    if (functionTranslationImplMap.containsKey(heatFunctionKey)) {
-      return true;
+    private static boolean isSupportedFunction(String heatFunctionKey) {
+        return functionTranslationImplMap.containsKey(heatFunctionKey);
     }
-    return false;
-  }
 
 }
 
index 600aa52..33afabc 100644 (file)
 
 package org.openecomp.sdc.translator.services.heattotosca;
 
+import static org.openecomp.sdc.translator.services.heattotosca.impl.functiontranslation.FunctionTranslator.getFunctionTranslateTo;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.io.FilenameUtils;
+import org.onap.sdc.tosca.datatypes.model.AttributeDefinition;
+import org.onap.sdc.tosca.datatypes.model.CapabilityDefinition;
+import org.onap.sdc.tosca.datatypes.model.Import;
+import org.onap.sdc.tosca.datatypes.model.NodeTemplate;
+import org.onap.sdc.tosca.datatypes.model.NodeType;
+import org.onap.sdc.tosca.datatypes.model.ParameterDefinition;
+import org.onap.sdc.tosca.datatypes.model.PropertyDefinition;
+import org.onap.sdc.tosca.datatypes.model.PropertyType;
+import org.onap.sdc.tosca.datatypes.model.RequirementAssignment;
+import org.onap.sdc.tosca.datatypes.model.RequirementDefinition;
+import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
+import org.onap.sdc.tosca.datatypes.model.Template;
+import org.onap.sdc.tosca.datatypes.model.TopologyTemplate;
+import org.onap.sdc.tosca.services.ToscaExtensionYamlUtil;
+import org.onap.sdc.tosca.services.YamlUtil;
 import org.openecomp.core.translator.api.HeatToToscaTranslator;
 import org.openecomp.core.translator.datatypes.TranslatorOutput;
 import org.openecomp.core.translator.factory.HeatToToscaTranslatorFactory;
@@ -50,25 +82,10 @@ import org.openecomp.sdc.tosca.datatypes.ToscaFunctions;
 import org.openecomp.sdc.tosca.datatypes.ToscaNodeType;
 import org.openecomp.sdc.tosca.datatypes.ToscaRelationshipType;
 import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
-import org.onap.sdc.tosca.datatypes.model.AttributeDefinition;
-import org.onap.sdc.tosca.datatypes.model.CapabilityDefinition;
-import org.onap.sdc.tosca.datatypes.model.Import;
-import org.onap.sdc.tosca.datatypes.model.NodeTemplate;
-import org.onap.sdc.tosca.datatypes.model.NodeType;
-import org.onap.sdc.tosca.datatypes.model.ParameterDefinition;
-import org.onap.sdc.tosca.datatypes.model.PropertyDefinition;
-import org.onap.sdc.tosca.datatypes.model.PropertyType;
-import org.onap.sdc.tosca.datatypes.model.RequirementAssignment;
-import org.onap.sdc.tosca.datatypes.model.RequirementDefinition;
-import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
-import org.onap.sdc.tosca.datatypes.model.Template;
-import org.onap.sdc.tosca.datatypes.model.TopologyTemplate;
 import org.openecomp.sdc.tosca.services.DataModelUtil;
 import org.openecomp.sdc.tosca.services.ToscaAnalyzerService;
 import org.openecomp.sdc.tosca.services.ToscaConstants;
-import org.onap.sdc.tosca.services.ToscaExtensionYamlUtil;
 import org.openecomp.sdc.tosca.services.ToscaUtil;
-import org.onap.sdc.tosca.services.YamlUtil;
 import org.openecomp.sdc.tosca.services.impl.ToscaAnalyzerServiceImpl;
 import org.openecomp.sdc.translator.datatypes.heattotosca.AttachedPropertyVal;
 import org.openecomp.sdc.translator.datatypes.heattotosca.AttachedResourceId;
@@ -79,25 +96,10 @@ import org.openecomp.sdc.translator.datatypes.heattotosca.to.TranslateTo;
 import org.openecomp.sdc.translator.services.heattotosca.errors.ResourceNotFoundInHeatFileErrorBuilder;
 import org.openecomp.sdc.translator.services.heattotosca.globaltypes.GlobalTypesGenerator;
 import org.openecomp.sdc.translator.services.heattotosca.helper.ContrailV2VirtualMachineInterfaceHelper;
-import org.openecomp.sdc.translator.services.heattotosca.helper.FunctionTranslationHelper;
+import org.openecomp.sdc.translator.services.heattotosca.impl.functiontranslation.FunctionTranslator;
 import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.ResourceTranslationBase;
 import org.openecomp.sdc.translator.services.heattotosca.mapping.TranslatorHeatToToscaPropertyConverter;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.stream.Collectors;
-
 /**
  * The type Heat to tosca util.
  */
@@ -382,12 +384,13 @@ public class HeatToToscaUtil {
       if (!FunctionTranslationFactory.getInstance(entry.getKey()).isPresent()) {
         translatedId = null;
       } else {
+        FunctionTranslator functionTranslator = new FunctionTranslator(getFunctionTranslateTo(null, null,
+                heatFileName, heatOrchestrationTemplate, context), null, entry.getValue(), null);
         translatedId = FunctionTranslationFactory.getInstance(entry.getKey()).get()
-            .translateFunction(null, null, null, entry.getKey(), entry.getValue(), heatFileName,
-                heatOrchestrationTemplate, null, context);
+            .translateFunction(functionTranslator);
       }
       if (translatedId instanceof String
-          && !FunctionTranslationHelper.isResourceSupported((String) translatedId)) {
+          && !new FunctionTranslator().isResourceSupported((String) translatedId)) {
         translatedId = null;
       }
 
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/helper/FunctionTranslationHelper.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/helper/FunctionTranslationHelper.java
deleted file mode 100644 (file)
index c068920..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 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.translator.services.heattotosca.helper;
-
-/**
- * @author SHIRIA
- * @since December 15, 2016.
- */
-public class FunctionTranslationHelper {
-
-  private static final String UNSUPPORTED_RESOURCE = "UNSUPPORTED_RESOURCE_";
-  private static final String UNSUPPORTED_ATTRIBUTE = "UNSUPPORTED_ATTRIBUTE_";
-
-  public static boolean isResourceSupported(String translatedResourceId) {
-    return !translatedResourceId.startsWith(UNSUPPORTED_RESOURCE);
-  }
-
-  public static boolean isAttributeSupported(String translatedAttName) {
-    return !translatedAttName.startsWith(UNSUPPORTED_ATTRIBUTE);
-  }
-
-  public static String getUnsupportedResourcePrefix() {
-    return UNSUPPORTED_RESOURCE;
-  }
-
-  public static String getUnsupportedAttributePrefix() {
-    return UNSUPPORTED_ATTRIBUTE;
-  }
-}
index 38dcc54..f533353 100644 (file)
@@ -18,15 +18,22 @@ package org.openecomp.sdc.translator.services.heattotosca.impl.functiontranslati
 
 import static org.openecomp.sdc.translator.services.heattotosca.ConfigConstants.TRANS_MAPPING_DELIMITER_CHAR;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.Set;
+
 import org.apache.commons.lang3.StringUtils;
+import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
+import org.onap.sdc.tosca.services.YamlUtil;
 import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
 import org.openecomp.sdc.heat.datatypes.model.Resource;
 import org.openecomp.sdc.heat.services.HeatConstants;
 import org.openecomp.sdc.tosca.datatypes.ToscaFunctions;
-import org.onap.sdc.tosca.datatypes.model.NodeTemplate;
-import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
-import org.onap.sdc.tosca.datatypes.model.Template;
-import org.onap.sdc.tosca.services.YamlUtil;
 import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
 import org.openecomp.sdc.translator.datatypes.heattotosca.to.TranslateTo;
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.EntityConsolidationData;
@@ -37,461 +44,352 @@ import org.openecomp.sdc.translator.services.heattotosca.FunctionTranslation;
 import org.openecomp.sdc.translator.services.heattotosca.FunctionTranslationFactory;
 import org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil;
 import org.openecomp.sdc.translator.services.heattotosca.NameExtractor;
-import org.openecomp.sdc.translator.services.heattotosca.helper.FunctionTranslationHelper;
 import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.ResourceTranslationBase;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
-import java.util.stream.Collectors;
-
 public class FunctionTranslationGetAttrImpl implements FunctionTranslation {
 
+    private static List<Object> translateGetAttributeFunctionExpression(FunctionTranslator functionTranslator) {
 
-  @Override
-  public Object translateFunction(ServiceTemplate serviceTemplate,
-                                  String resourceId, String propertyName, String functionKey,
-                                  Object functionValue, String heatFileName,
-                                  HeatOrchestrationTemplate heatOrchestrationTemplate,
-                                  Template toscaTemplate, TranslationContext context) {
-    Object returnValue = new HashMap<>();
-    List<Object> attributeFunctionExpression =
-        translateGetAttributeFunctionExpression(serviceTemplate, resourceId, functionValue,
-            propertyName, heatFileName, heatOrchestrationTemplate, (NodeTemplate) toscaTemplate,
-            context);
-    if (FunctionTranslationHelper.isResourceSupported(attributeFunctionExpression.get(0).toString())
-        && FunctionTranslationHelper.isAttributeSupported(attributeFunctionExpression.get(0)
-        .toString())) {
-      ((Map) returnValue)
-          .put(ToscaFunctions.GET_ATTRIBUTE.getDisplayName(), attributeFunctionExpression);
-    } else {
-      returnValue = attributeFunctionExpression;
-    }
+        List<Object> attributeParamList = (List) functionTranslator.getFunctionValue();
+        List<Object> toscaAttributeParamList = new ArrayList<>();
 
-    return returnValue;
-  }
-
-  private static List<Object> translateGetAttributeFunctionExpression(
-      ServiceTemplate serviceTemplate,
-      String resourceId,
-      Object functionValue,
-      String propertyName,
-      String heatFileName,
-      HeatOrchestrationTemplate heatOrchestrationTemplate,
-      NodeTemplate nodeTemplate,
-      TranslationContext context) {
-
-    List<Object> attributeParamList = (List) functionValue;
-    List<Object> toscaAttributeParamList = new ArrayList<>();
-
-    Optional<String> targetResourceTranslatedId = Optional.empty();
-    String targetResourceId = null;
-    if( attributeParamList.get(0) instanceof String) {
-      targetResourceId = (String) attributeParamList.get(0);
-      targetResourceTranslatedId =
-          handleResourceName(targetResourceId, heatFileName, heatOrchestrationTemplate,
-              context);
-    }
-    if (!targetResourceTranslatedId.isPresent()) {
-      //unsupported resource
-      toscaAttributeParamList
-          .add(
-              FunctionTranslationHelper.getUnsupportedResourcePrefix() + attributeParamList.get(0));
-      return toscaAttributeParamList;
-    } else {
-      toscaAttributeParamList.add(targetResourceTranslatedId.get());
+        Optional<String> targetResourceTranslatedId = Optional.empty();
+        String targetResourceId = null;
+        if (attributeParamList.get(0) instanceof String) {
+            targetResourceId = (String) attributeParamList.get(0);
+            targetResourceTranslatedId = handleResourceName(targetResourceId, functionTranslator.getHeatFileName(),
+                    functionTranslator.getHeatOrchestrationTemplate(), functionTranslator.getContext());
+        }
+        if (!targetResourceTranslatedId.isPresent()) {
+            //unsupported resource
+            toscaAttributeParamList.add(functionTranslator.getUnsupportedResourcePrefix() + attributeParamList.get(0));
+            return toscaAttributeParamList;
+        }
+        toscaAttributeParamList.add(targetResourceTranslatedId.get());
+        Optional<List<Object>> toscaAttList = handleAttributeName(attributeParamList, functionTranslator);
+        if (!toscaAttList.isPresent()) {
+            //Unsupported attribute
+            toscaAttributeParamList.clear();
+            toscaAttributeParamList.add(functionTranslator.getUnsupportedAttributePrefix()
+                    + attributeParamList.get(0) + "." + attributeParamList.get(1));
+            return toscaAttributeParamList;
+        }
+        toscaAttributeParamList.addAll(toscaAttList.get());
+        handleGetAttrConsolidationData(functionTranslator, targetResourceId, targetResourceTranslatedId.get(),
+                toscaAttList.get());
+
+        String resourceType = HeatToToscaUtil.getResourceType((String) attributeParamList.get(0), functionTranslator
+                .getHeatOrchestrationTemplate(), functionTranslator.getHeatFileName());
+        Optional<List<Object>> toscaIndexOrKey = handleAttributeIndexOrKey(functionTranslator, resourceType,
+                attributeParamList);
+        toscaIndexOrKey.ifPresent(toscaAttributeParamList::addAll);
+        return toscaAttributeParamList;
     }
 
-    Optional<List<Object>> toscaAttList =
-        handleAttributeName(attributeParamList, heatOrchestrationTemplate, propertyName,
-            heatFileName, serviceTemplate,
-            context);
-    if (!toscaAttList.isPresent()) {
-      //Unsupported attribute
-      toscaAttributeParamList.clear();
-      toscaAttributeParamList
-          .add(FunctionTranslationHelper.getUnsupportedAttributePrefix() + attributeParamList.get(0)
-              + "." + attributeParamList.get(1));
-      return toscaAttributeParamList;
-    } else {
-      toscaAttributeParamList.addAll(toscaAttList.get());
-
-      handleGetAttrConsolidationData(serviceTemplate, resourceId, propertyName, heatFileName,
-          heatOrchestrationTemplate, context, targetResourceId,
-          targetResourceTranslatedId,
-          toscaAttList.get());
+    private static void handleGetAttrConsolidationData(FunctionTranslator functionTranslator,
+                                                       String targetResourceId,
+                                                       String targetResourceTranslatedId,
+                                                       List<Object> toscaAttList) {
+
+        Optional<String> resourceTranslatedId;
+        String resourceId = functionTranslator.getResourceId();
+        String resourceTranslatedIdValue = null;
+        if (resourceId != null) {
+            resourceTranslatedId = handleResourceName(resourceId, functionTranslator.getHeatFileName(),
+                    functionTranslator.getHeatOrchestrationTemplate(), functionTranslator.getContext());
+            if (resourceTranslatedId.isPresent()) {
+                resourceTranslatedIdValue = resourceTranslatedId.get();
+                handleGetAttrOutConsolidationData(functionTranslator, targetResourceTranslatedId,
+                        resourceTranslatedIdValue, toscaAttList);
+            }
+        }
+        handleGetAttrInConsolidationData(functionTranslator, resourceTranslatedIdValue, targetResourceId,
+                targetResourceTranslatedId, toscaAttList);
     }
 
-    Optional<List<Object>> toscaIndexOrKey = handleAttributeIndexOrKey(serviceTemplate,
-        resourceId, propertyName, HeatToToscaUtil
-            .getResourceType((String) attributeParamList.get(0), heatOrchestrationTemplate,
-                heatFileName), attributeParamList, context, heatFileName,
-        heatOrchestrationTemplate);
-    toscaIndexOrKey.ifPresent(toscaAttributeParamList::addAll);
-
-    return toscaAttributeParamList;
-  }
-
-  private static void handleGetAttrConsolidationData(
-      ServiceTemplate serviceTemplate,
-      String resourceId, String propertyName,
-      String heatFileName,
-      HeatOrchestrationTemplate heatOrchestrationTemplate,
-      TranslationContext context,
-      String targetResourceId,
-      Optional<String> targetResourceTranslatedId,
-      List<Object> toscaAttList) {
-
-    Optional<String> resourceTranslatedId = Optional.empty();
-    if (resourceId != null) {
-      resourceTranslatedId =
-          handleResourceName(resourceId, heatFileName, heatOrchestrationTemplate,
-              context);
-      resourceTranslatedId
-          .ifPresent(resourceTranslatedIdValue -> handleGetAttrOutConsolidationData(serviceTemplate,
-              propertyName,
-              heatOrchestrationTemplate, context, resourceId, targetResourceTranslatedId.get(),
-              resourceTranslatedIdValue, toscaAttList, heatFileName));
+    private static void handleGetAttrOutConsolidationData(FunctionTranslator functionTranslator,
+                                                          String targetTranslatedResourceId,
+                                                          String resourceTranslatedId,
+                                                          List<Object> toscaAttList) {
+        if (functionTranslator.getServiceTemplate() == null) {
+            return;
+        }
+        Optional<EntityConsolidationData> entityConsolidationData = getEntityConsolidationData(functionTranslator,
+                functionTranslator.getResourceId(), resourceTranslatedId);
+        if (entityConsolidationData.isPresent()) {
+            String attName = (String) toscaAttList.get(0);
+            handleNodeGetAttrOut(targetTranslatedResourceId, functionTranslator, entityConsolidationData.get(),
+                    attName);
+        }
     }
 
-    if (targetResourceTranslatedId.isPresent()) {
-      handleGetAttrInConsolidationData(serviceTemplate, resourceId, resourceTranslatedId,
-          propertyName, heatOrchestrationTemplate, context, targetResourceId,
-          targetResourceTranslatedId.get(), toscaAttList, heatFileName);
-    }
-  }
-
-  private static void handleGetAttrOutConsolidationData(
-      ServiceTemplate serviceTemplate,
-      String propertyName,
-      HeatOrchestrationTemplate heatOrchestrationTemplate,
-      TranslationContext context,
-      String resourceId,
-      String targetTranslatedResourceId,
-      String resourceTranslatedId,
-      List<Object> toscaAttList,
-      String heatFileName) {
-    if (serviceTemplate != null) {
-      Optional<EntityConsolidationData> entityConsolidationData =
-          getEntityConsolidationData(serviceTemplate, heatOrchestrationTemplate, context,
-              resourceId, resourceTranslatedId, heatFileName);
-      if (entityConsolidationData.isPresent()) {
-        String attName = (String) toscaAttList.get(0);
-        handleNodeGetAttrOut(targetTranslatedResourceId, propertyName, heatOrchestrationTemplate,
-            context, resourceId, entityConsolidationData.get(), attName);
-      }
-    }
-  }
-
-  private static void handleGetAttrInConsolidationData(
-      ServiceTemplate serviceTemplate,
-      String resourceId,
-      Optional<String> resourceTranslatedId,
-      String propertyName,
-      HeatOrchestrationTemplate heatOrchestrationTemplate,
-      TranslationContext context,
-      String targetResourceId,
-      String targetResourceTranslatedId,
-      List<Object> toscaAttList,
-      String  heatFileName) {
-
-    if (serviceTemplate != null) {
-      Optional<EntityConsolidationData> entityConsolidationData =
-          getEntityConsolidationData(serviceTemplate, heatOrchestrationTemplate, context,
-              targetResourceId, targetResourceTranslatedId, heatFileName);
-      if (entityConsolidationData.isPresent()) {
+    private static void handleGetAttrInConsolidationData(FunctionTranslator functionTranslator,
+                                                         String resourceTranslatedId,
+                                                         String targetResourceId,
+                                                         String targetResourceTranslatedId,
+                                                         List<Object> toscaAttList) {
+        if (functionTranslator.getServiceTemplate() == null) {
+            return;
+        }
+        Optional<EntityConsolidationData> entityConsolidationData = getEntityConsolidationData(functionTranslator,
+                targetResourceId, targetResourceTranslatedId);
+        if (!entityConsolidationData.isPresent()) {
+            return;
+        }
         String attName = (String) toscaAttList.get(0);
-        if (resourceTranslatedId.isPresent()) {
-          handleNodeGetAttrIn(resourceTranslatedId.get(), propertyName, heatOrchestrationTemplate,
-              context,
-              resourceId, entityConsolidationData.get(), attName);
+        if (Objects.nonNull(resourceTranslatedId)) {
+            handleNodeGetAttrIn(resourceTranslatedId, functionTranslator, entityConsolidationData.get(), attName);
         } else {
-          ConsolidationDataUtil
-              .updateOutputGetAttributeInConsolidationData(entityConsolidationData.get(),
-                  propertyName, attName);
+            ConsolidationDataUtil.updateOutputGetAttributeInConsolidationData(entityConsolidationData.get(),
+                    functionTranslator.getPropertyName(), attName);
         }
-      }
-    }
-  }
-
-  private static void handleNodeGetAttrOut(String nodeTemplateId, String propertyName,
-                                           HeatOrchestrationTemplate heatOrchestrationTemplate,
-                                           TranslationContext context, String resourceId,
-                                           EntityConsolidationData entityConsolidationData,
-                                           String attName) {
-    Resource resource = heatOrchestrationTemplate.getResources().get(resourceId);
-    boolean isNestedResource = HeatToToscaUtil.isNestedResource(resource);
-    String toscaPropertyName = propertyName;
-    if (!isNestedResource) {
-      toscaPropertyName = HeatToToscaUtil.getToscaPropertyName(context, resource
-          .getType(), propertyName);
-    }
-    ConsolidationDataUtil
-        .updateNodeGetAttributeOut(entityConsolidationData,
-            nodeTemplateId, toscaPropertyName, attName);
-  }
-
-  private static void handleNodeGetAttrIn(String nodeTemplateId, String propertyName,
-                                          HeatOrchestrationTemplate heatOrchestrationTemplate,
-                                          TranslationContext context, String resourceId,
-                                          EntityConsolidationData entityConsolidationData,
-                                          String attName) {
-    Resource resource = heatOrchestrationTemplate.getResources().get(resourceId);
-    boolean isNestedResource = HeatToToscaUtil.isNestedResource(resource);
-    String heatPropertyName = propertyName;
-    String toscaPropertyName = propertyName;
-    //For handling get_attr in inner levels for complex properties
-    if (propertyName.contains(TRANS_MAPPING_DELIMITER_CHAR)) {
-      heatPropertyName = propertyName.substring(0,
-          propertyName.indexOf(TRANS_MAPPING_DELIMITER_CHAR));
-    }
-    if (!isNestedResource) {
-      toscaPropertyName = HeatToToscaUtil.getToscaPropertyName(context, resource
-          .getType(), heatPropertyName);
     }
-    ConsolidationDataUtil
-        .updateNodeGetAttributeIn(entityConsolidationData,
-            nodeTemplateId, toscaPropertyName, attName);
-  }
-
-  private static Optional<EntityConsolidationData> getEntityConsolidationData(
-      ServiceTemplate serviceTemplate,
-      HeatOrchestrationTemplate heatOrchestrationTemplate,
-      TranslationContext context,
-      String resourceId,
-      String resourceTranslatedId,
-      String heatFileName) {
-    Resource resource = heatOrchestrationTemplate.getResources().get(resourceId);
-    if (ConsolidationDataUtil.isComputeResource(heatOrchestrationTemplate, resourceId)) {
-      String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
-      NameExtractor nodeTypeNameExtractor =
-          context.getNameExtractorImpl(resourceType);
-      String computeType =
-          nodeTypeNameExtractor.extractNodeTypeName(
-              resource, resourceId, context.getTranslatedIds().get(heatFileName).get(resourceId));
-
-      return Optional.of(
-          ConsolidationDataUtil.getComputeTemplateConsolidationData(context, serviceTemplate,
-              computeType, resourceTranslatedId));
-    } else if (ConsolidationDataUtil.isPortResource(heatOrchestrationTemplate, resourceId)) {
-      return Optional.of(ConsolidationDataUtil
-          .getPortTemplateConsolidationData(context, serviceTemplate, resourceId, resource.getType(),
-              resourceTranslatedId));
-    } else if (HeatToToscaUtil.isSubInterfaceResource(resource, context)) {
-      TranslateTo subInterfaceTo = new TranslateTo(heatFileName, serviceTemplate, heatOrchestrationTemplate,
-          resource, resourceId, resourceTranslatedId, context);
-      Optional<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationData =
-          ConsolidationDataUtil.getSubInterfaceTemplateConsolidationData(subInterfaceTo, resourceTranslatedId);
-      if (subInterfaceTemplateConsolidationData.isPresent()) {
-        return Optional.of(subInterfaceTemplateConsolidationData.get());
-      }
-    } else if (HeatToToscaUtil.isNestedResource(resource)) {
-      return Optional.ofNullable(ConsolidationDataUtil
-          .getNestedTemplateConsolidationData(context, serviceTemplate, heatFileName, resourceTranslatedId));
+
+    private static void handleNodeGetAttrOut(String nodeTemplateId, FunctionTranslator functionTranslator,
+                                             EntityConsolidationData entityConsolidationData,
+                                             String attName) {
+        Resource resource = functionTranslator.getHeatOrchestrationTemplate().getResources().get(functionTranslator
+                .getResourceId());
+        boolean isNestedResource = HeatToToscaUtil.isNestedResource(resource);
+        String toscaPropertyName = functionTranslator.getPropertyName();
+        if (!isNestedResource) {
+            toscaPropertyName = HeatToToscaUtil.getToscaPropertyName(functionTranslator.getContext(), resource
+                    .getType(), functionTranslator.getPropertyName());
+        }
+        ConsolidationDataUtil.updateNodeGetAttributeOut(entityConsolidationData, nodeTemplateId, toscaPropertyName,
+                attName);
     }
-    return Optional.empty();
-  }
-
-  private static Optional<List<Object>> handleAttributeIndexOrKey(
-      ServiceTemplate serviceTemplate,
-      String resourceId, String propertyName,
-      String resourceType,
-      List<Object> attributeParamList,
-      TranslationContext context,
-      String heatFileName,
-      HeatOrchestrationTemplate heatOrchestrationTemplate) {
-
-    List<Object> attributeIndexOrKey = new ArrayList<>();
-    if (attributeParamList.size() < 3) {
-      return Optional.empty();
+
+    private static void handleNodeGetAttrIn(String nodeTemplateId, FunctionTranslator functionTranslator,
+                                            EntityConsolidationData entityConsolidationData,
+                                            String attName) {
+        Resource resource = functionTranslator.getHeatOrchestrationTemplate().getResources().get(functionTranslator
+                .getResourceId());
+        boolean isNestedResource = HeatToToscaUtil.isNestedResource(resource);
+        String propertyName = functionTranslator.getPropertyName();
+        String heatPropertyName = propertyName;
+        String toscaPropertyName = propertyName;
+        //For handling get_attr in inner levels for complex properties
+        if (propertyName.contains(TRANS_MAPPING_DELIMITER_CHAR)) {
+            heatPropertyName = propertyName.substring(0, propertyName.indexOf(TRANS_MAPPING_DELIMITER_CHAR));
+        }
+        if (!isNestedResource) {
+            toscaPropertyName = HeatToToscaUtil.getToscaPropertyName(functionTranslator.getContext(), resource
+                    .getType(), heatPropertyName);
+        }
+        ConsolidationDataUtil.updateNodeGetAttributeIn(entityConsolidationData, nodeTemplateId, toscaPropertyName,
+                attName);
     }
 
-    Object attributeName = attributeParamList.get(1);
-    for (int i = 2; i < attributeParamList.size(); i++) {
-
-      if (isInteger(attributeParamList.get(i))) {
-        attributeIndexOrKey.add(attributeParamList.get(i));
-      } else if (attributeParamList.get(i) instanceof Map) {
-        attributeIndexOrKey.add(getToscaAttributeValue(serviceTemplate, resourceId,
-            propertyName, attributeParamList.get(i), resourceType, heatFileName,
-            heatOrchestrationTemplate, null, context));
-
-      } else {
-        Object toscaAttributeName = resourceType == null ? null : context
-            .getElementMapping(resourceType, Constants.ATTR,
-                getAttributeFullPath(attributeParamList, i));
-        if (toscaAttributeName == null) {
-          toscaAttributeName = attributeParamList.get(i);
+    private static Optional<EntityConsolidationData> getEntityConsolidationData(FunctionTranslator functionTranslator,
+                                                                                String resourceId,
+                                                                                String resourceTranslatedId) {
+        HeatOrchestrationTemplate heatOrchestrationTemplate = functionTranslator.getHeatOrchestrationTemplate();
+        TranslationContext context = functionTranslator.getContext();
+        ServiceTemplate serviceTemplate = functionTranslator.getServiceTemplate();
+        String heatFileName = functionTranslator.getHeatFileName();
+
+        Resource resource = heatOrchestrationTemplate.getResources().get(resourceId);
+        if (ConsolidationDataUtil.isComputeResource(heatOrchestrationTemplate, resourceId)) {
+            String resourceType = heatOrchestrationTemplate.getResources().get(resourceId).getType();
+            NameExtractor nodeTypeNameExtractor = TranslationContext.getNameExtractorImpl(resourceType);
+            String computeType = nodeTypeNameExtractor.extractNodeTypeName(resource, resourceId, context
+                    .getTranslatedIds().get(heatFileName).get(resourceId));
+
+            return Optional.of(ConsolidationDataUtil.getComputeTemplateConsolidationData(context, serviceTemplate,
+                    computeType, resourceTranslatedId));
+        } else if (ConsolidationDataUtil.isPortResource(heatOrchestrationTemplate, resourceId)) {
+            return Optional.of(ConsolidationDataUtil
+                    .getPortTemplateConsolidationData(context, serviceTemplate, resourceId, resource.getType(),
+                            resourceTranslatedId));
+        } else if (HeatToToscaUtil.isSubInterfaceResource(resource, context)) {
+            TranslateTo subInterfaceTo = new TranslateTo(heatFileName, serviceTemplate, heatOrchestrationTemplate,
+                    resource, resourceId, resourceTranslatedId, context);
+            Optional<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationData =
+                    ConsolidationDataUtil.getSubInterfaceTemplateConsolidationData(subInterfaceTo,
+                            resourceTranslatedId);
+            if (subInterfaceTemplateConsolidationData.isPresent()) {
+                return Optional.of(subInterfaceTemplateConsolidationData.get());
+            }
+        } else if (HeatToToscaUtil.isNestedResource(resource)) {
+            return Optional.ofNullable(ConsolidationDataUtil
+                    .getNestedTemplateConsolidationData(context, serviceTemplate, heatFileName, resourceTranslatedId));
         }
-        attributeIndexOrKey.add(toscaAttributeName);
-      }
+        return Optional.empty();
     }
 
-    return Optional.of(attributeIndexOrKey);
-  }
+    private static Optional<List<Object>> handleAttributeIndexOrKey(FunctionTranslator functionTranslator,
+                                                                    String resourceType,
+                                                                    List<Object> attributeParamList) {
 
-  private static String getAttributeFullPath(List<Object> attributeParamList, int attributeIndex) {
-    if (attributeParamList.size() < 3) {
-      return null;
-    }
-    StringBuilder attributeFullPath = new StringBuilder();
-    attributeFullPath.append(attributeParamList.get(1));
-    for (int j = 2; j <= attributeIndex; j++) {
-      if (isInteger(attributeParamList.get(j))) {
-        continue;
-      }
-      attributeFullPath.append(TRANS_MAPPING_DELIMITER_CHAR);
-      attributeFullPath.append(attributeParamList.get(j));
+        List<Object> attributeIndexOrKey = new ArrayList<>();
+        if (attributeParamList.size() < 3) {
+            return Optional.empty();
+        }
+
+        for (int i = 2; i < attributeParamList.size(); i++) {
+            if (isInteger(attributeParamList.get(i))) {
+                attributeIndexOrKey.add(attributeParamList.get(i));
+            } else if (attributeParamList.get(i) instanceof Map) {
+                attributeIndexOrKey.add(getToscaAttributeValue(functionTranslator, attributeParamList.get(i)));
+            } else {
+                Object toscaAttributeName = resourceType == null ? null : functionTranslator.getContext()
+                        .getElementMapping(resourceType, Constants.ATTR, getAttributeFullPath(attributeParamList, i));
+                if (toscaAttributeName == null) {
+                    toscaAttributeName = attributeParamList.get(i);
+                }
+                attributeIndexOrKey.add(toscaAttributeName);
+            }
+        }
+
+        return Optional.of(attributeIndexOrKey);
     }
-    return attributeFullPath.toString();
-  }
 
-  private static boolean isInteger(Object inputNumber) {
-    if (inputNumber == null) {
-      return false;
+    private static String getAttributeFullPath(List<Object> attributeParamList, int attributeIndex) {
+        if (attributeParamList.size() < 3) {
+            return null;
+        }
+        StringBuilder attributeFullPath = new StringBuilder();
+        attributeFullPath.append(attributeParamList.get(1));
+        for (int j = 2; j <= attributeIndex; j++) {
+            if (isInteger(attributeParamList.get(j))) {
+                continue;
+            }
+            attributeFullPath.append(TRANS_MAPPING_DELIMITER_CHAR);
+            attributeFullPath.append(attributeParamList.get(j));
+        }
+        return attributeFullPath.toString();
     }
 
-    if (StringUtils.isNumeric(String.valueOf(inputNumber))){
-      return true;
-    } else {
-      return false;
+    private static boolean isInteger(Object inputNumber) {
+        if (inputNumber == null) {
+            return false;
+        }
+        return StringUtils.isNumeric(String.valueOf(inputNumber));
     }
-  }
-
-  private static Optional<String> handleResourceName(String resourceId, String heatFileName,
-                                                     HeatOrchestrationTemplate
-                                                         heatOrchestrationTemplate,
-                                                     TranslationContext context) {
-    return ResourceTranslationBase
-        .getResourceTranslatedId(heatFileName, heatOrchestrationTemplate, resourceId, context);
-  }
-
-  private static Optional<List<Object>> handleAttributeName(List<Object> attributeParamList,
-                                                            HeatOrchestrationTemplate
-                                                                heatOrchestrationTemplate,
-                                                            String propertyName,
-                                                            String heatFileName,
-                                                            ServiceTemplate serviceTemplate,
-                                                            TranslationContext context) {
-    String resourceId = (String) attributeParamList.get(0);
-    Resource resource =
-        HeatToToscaUtil.getResource(heatOrchestrationTemplate, resourceId, heatFileName);
-
-    if (attributeParamList.size() == 1) {
-      return getResourceTranslatedAttributesList(resource, context);
+
+    private static Optional<String> handleResourceName(String resourceId, String heatFileName,
+                                                       HeatOrchestrationTemplate heatOrchestrationTemplate,
+                                                       TranslationContext context) {
+        return ResourceTranslationBase
+                .getResourceTranslatedId(heatFileName, heatOrchestrationTemplate, resourceId, context);
     }
 
-    if (!(attributeParamList.get(1) instanceof String)) {
-      return Optional.empty();
+    private static Optional<List<Object>> handleAttributeName(List<Object> attributeParamList,
+                                                              FunctionTranslator functionTranslator) {
+        String resourceId = (String) attributeParamList.get(0);
+        Resource resource = HeatToToscaUtil.getResource(functionTranslator.getHeatOrchestrationTemplate(),
+                resourceId, functionTranslator.getHeatFileName());
+        if (attributeParamList.size() == 1) {
+            return getResourceTranslatedAttributesList(resource, functionTranslator.getContext());
+        }
+        if (!(attributeParamList.get(1) instanceof String)) {
+            return Optional.empty();
+        }
+        if (HeatToToscaUtil.isNestedResource(resource)) {
+            return getNestedResourceTranslatedAttribute((String) attributeParamList.get(1));
+        } else {
+            return getResourceTranslatedAttribute(resource, (String) attributeParamList.get(1), functionTranslator
+                    .getContext());
+        }
     }
 
-    if (HeatToToscaUtil.isNestedResource(resource)) {
-      return getNestedResourceTranslatedAttribute((String) attributeParamList.get(1));
-    } else {
-      return getResourceTranslatedAttribute(resource, (String) attributeParamList.get(1), context);
+    private static Optional<List<Object>> getNestedResourceTranslatedAttribute(String attributeName) {
+        List<Object> translatedAttributesList = new ArrayList<>();
+        if (attributeName.startsWith(HeatConstants.GET_ATTR_FROM_RESOURCE_GROUP_PREFIX)) {
+            String[] attributeSplit = attributeName.split("\\.");
+            if (attributeSplit.length == 2) {
+                translatedAttributesList.add(attributeSplit[1]);
+            } else if (attributeSplit.length == 3) {
+                translatedAttributesList.add(attributeSplit[2]);
+                translatedAttributesList.add(Integer.valueOf(attributeSplit[1]));
+            } else {
+                return Optional.empty();
+            }
+        } else {
+            translatedAttributesList.add(attributeName);
+        }
+        return Optional.of(translatedAttributesList);
     }
-  }
-
-  private static Optional<List<Object>> getNestedResourceTranslatedAttribute(String attributeName) {
-    List<Object> translatedAttributesList = new ArrayList<>();
-
-    if (attributeName.startsWith(HeatConstants.GET_ATTR_FROM_RESOURCE_GROUP_PREFIX)) {
-      String[] attributeSplit = attributeName.split("\\.");
-      if (attributeSplit.length == 2) {
-        translatedAttributesList.add(attributeSplit[1]);
-      } else if (attributeSplit.length == 3) {
-        translatedAttributesList.add(attributeSplit[2]);
-        translatedAttributesList.add(Integer.valueOf(attributeSplit[1]));
-      } else {
-        return Optional.empty();
-      }
-    } else {
-      translatedAttributesList.add(attributeName);
+
+    private static Optional<List<Object>> getResourceTranslatedAttributesList(Resource resource,
+                                                                              TranslationContext context) {
+        List<Object> translatedAttributes = new ArrayList<>();
+        if (HeatToToscaUtil.isNestedResource(resource)) {
+            Optional<String> nestedFile = HeatToToscaUtil.getNestedFile(resource);
+            if (!nestedFile.isPresent()) {
+                return Optional.empty();
+            }
+            HeatOrchestrationTemplate nestedHeatOrchestrationTemplate = new YamlUtil()
+                    .yamlToObject(context.getFiles().getFileContent(nestedFile.get()), HeatOrchestrationTemplate.class);
+            translatedAttributes.addAll(nestedHeatOrchestrationTemplate.getOutputs().keySet());
+            return Optional.of(translatedAttributes);
+
+        } else {
+            Map<String, String> resourceMappingAttributes =
+                    context.getElementMapping(resource.getType(), Constants.ATTR);
+            if (resourceMappingAttributes == null) {
+                return Optional.empty();
+            }
+            Set<String> mappingAttributes = new HashSet<>(new ArrayList<>(resourceMappingAttributes.values()));
+            translatedAttributes.addAll(mappingAttributes);
+            return Optional.of(translatedAttributes);
+        }
     }
-    return Optional.of(translatedAttributesList);
-  }
-
-  private static Optional<List<Object>> getResourceTranslatedAttributesList(Resource resource,
-                                                                            TranslationContext
-                                                                                context) {
-    List<Object> translatedAttributes = new ArrayList<>();
-    if (HeatToToscaUtil.isNestedResource(resource)) {
-      Optional<String> nestedFile = HeatToToscaUtil.getNestedFile(resource);
-      if (!nestedFile.isPresent()) {
-        return Optional.empty();
-      }
-      HeatOrchestrationTemplate nestedHeatOrchestrationTemplate = new YamlUtil()
-          .yamlToObject(context.getFiles().getFileContent(nestedFile.get()),
-              HeatOrchestrationTemplate.class);
-      translatedAttributes.addAll(nestedHeatOrchestrationTemplate.getOutputs().keySet());
-      return Optional.of(translatedAttributes);
-
-    } else {
-      Map<String, String> resourceMappingAttributes =
-          context.getElementMapping(resource.getType(), Constants.ATTR);
-      if (resourceMappingAttributes == null) {
-        return Optional.empty();
-      }
-      Set<String> mappingAttributes = new HashSet<>();
-      mappingAttributes
-          .addAll(resourceMappingAttributes.values().stream().collect(Collectors.toList()));
-      translatedAttributes.addAll(mappingAttributes);
-      return Optional.of(translatedAttributes);
+
+    private static Optional<List<Object>> getResourceTranslatedAttribute(Resource resource,
+                                                                         String attributeName,
+                                                                         TranslationContext context) {
+        List<Object> translatedAttributesList = new ArrayList<>();
+        String translatedAttribute = context.getElementMapping(resource.getType(), Constants.ATTR, attributeName);
+        if (translatedAttribute != null) {
+            translatedAttributesList.add(translatedAttribute);
+            return Optional.of(translatedAttributesList);
+        } else {   //unsupported attribute
+            return Optional.empty();
+        }
     }
-  }
-
-  private static Optional<List<Object>> getResourceTranslatedAttribute(Resource resource,
-                                                                       String attributeName,
-                                                                       TranslationContext context) {
-    List<Object> translatedAttributesList = new ArrayList<>();
-    String translatedAttribute =
-        context.getElementMapping(resource.getType(), Constants.ATTR, attributeName);
-    if (translatedAttribute != null) {
-      translatedAttributesList.add(translatedAttribute);
-      return Optional.of(translatedAttributesList);
-    } else {   //unsupported attribute
-      return Optional.empty();
+
+    private static Object getToscaAttributeValue(FunctionTranslator functionTranslator,
+                                                 Object attributeVal) {
+        if (attributeVal instanceof Map && !((Map) attributeVal).isEmpty()) {
+            Map.Entry<String, Object> functionMapEntry =
+                    (Map.Entry<String, Object>) ((Map) attributeVal).entrySet().iterator().next();
+            Optional<FunctionTranslation> functionTranslationInstance =
+                    FunctionTranslationFactory.getInstance(functionMapEntry.getKey());
+            if (functionTranslationInstance.isPresent()) {
+                functionTranslator.setFunctionValue(functionMapEntry.getValue());
+                return functionTranslationInstance.get().translateFunction(functionTranslator);
+            }
+            Map<String, Object> attrValueMap = new HashMap<>();
+            for (Map.Entry<String, Object> entry : ((Map<String, Object>) attributeVal).entrySet()) {
+                attrValueMap.put(entry.getKey(), getToscaAttributeValue(functionTranslator, entry.getValue()));
+            }
+            return attrValueMap;
+        } else if (attributeVal instanceof List && !((List) attributeVal).isEmpty()) {
+            List<Object> propertyValueArray = new ArrayList<>();
+            for (int i = 0; i < ((List) attributeVal).size(); i++) {
+                propertyValueArray.add(getToscaAttributeValue(functionTranslator, ((List) attributeVal).get(i)));
+            }
+            return propertyValueArray;
+        }
+        return attributeVal;
     }
-  }
-
-  private static Object getToscaAttributeValue(ServiceTemplate serviceTemplate,
-                                               String resourceId, String propertyName,
-                                               Object attributeVal, String resourceType,
-                                               String heatFileName,
-                                               HeatOrchestrationTemplate heatOrchestrationTemplate,
-                                               Template template, TranslationContext context) {
-    if (attributeVal instanceof Map && !((Map) attributeVal).isEmpty()) {
-      Map.Entry<String, Object> functionMapEntry =
-          (Map.Entry<String, Object>) ((Map) attributeVal).entrySet().iterator().next();
-      if (FunctionTranslationFactory.getInstance(functionMapEntry.getKey()).isPresent()) {
-        return FunctionTranslationFactory.getInstance(functionMapEntry.getKey()).get()
-            .translateFunction(serviceTemplate, resourceId, propertyName,
-                functionMapEntry.getKey(), functionMapEntry
-                    .getValue(), heatFileName, heatOrchestrationTemplate, template, context);
-      }
-      Map<String, Object> attrValueMap = new HashMap<>();
-      for (Map.Entry<String, Object> entry : ((Map<String, Object>) attributeVal).entrySet()) {
-        attrValueMap.put(entry.getKey(),
-            getToscaAttributeValue(serviceTemplate, resourceId, propertyName, entry.getValue(),
-                resourceType, heatFileName, heatOrchestrationTemplate, template, context));
-      }
-      return attrValueMap;
-    } else if (attributeVal instanceof List && !((List) attributeVal).isEmpty()) {
-      List propertyValueArray = new ArrayList<>();
-      for (int i = 0; i < ((List) attributeVal).size(); i++) {
-        propertyValueArray.add(
-            getToscaAttributeValue(serviceTemplate, resourceId, propertyName,
-                ((List) attributeVal).get(i), resourceType, heatFileName,
-                heatOrchestrationTemplate, template, context));
-      }
-      return propertyValueArray;
+
+    @Override
+    public Object translateFunction(FunctionTranslator functionTranslator) {
+        Object returnValue;
+        List<Object> attributeFunctionExpression = translateGetAttributeFunctionExpression(functionTranslator);
+        if (functionTranslator.isResourceSupported(attributeFunctionExpression.get(0).toString())
+                && functionTranslator.isAttributeSupported(attributeFunctionExpression.get(0).toString())) {
+            Map<String, Object> getAttrValue = new HashMap<>();
+            getAttrValue.put(ToscaFunctions.GET_ATTRIBUTE.getDisplayName(), attributeFunctionExpression);
+            returnValue = getAttrValue;
+        } else {
+            returnValue = attributeFunctionExpression;
+        }
+        return returnValue;
     }
-    return attributeVal;
-  }
 
 
 }
index 73ca520..a56350c 100644 (file)
@@ -1,87 +1,65 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
+/*
+ * 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.
- * ============LICENSE_END=========================================================
  */
 
 package org.openecomp.sdc.translator.services.heattotosca.impl.functiontranslation;
 
-import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
-import org.openecomp.sdc.tosca.datatypes.ToscaArtifactType;
-import org.openecomp.sdc.tosca.datatypes.ToscaFunctions;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 import org.onap.sdc.tosca.datatypes.model.ArtifactDefinition;
 import org.onap.sdc.tosca.datatypes.model.NodeTemplate;
-import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
-import org.onap.sdc.tosca.datatypes.model.Template;
+import org.openecomp.sdc.tosca.datatypes.ToscaArtifactType;
+import org.openecomp.sdc.tosca.datatypes.ToscaFunctions;
 import org.openecomp.sdc.tosca.services.ToscaConstants;
 import org.openecomp.sdc.tosca.services.ToscaFileOutputService;
 import org.openecomp.sdc.tosca.services.impl.ToscaFileOutputServiceCsarImpl;
-import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
 import org.openecomp.sdc.translator.services.heattotosca.FunctionTranslation;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author SHIRIA
- * @since December 15, 2016.
- */
 public class FunctionTranslationGetFileImpl implements FunctionTranslation {
-  @Override
-  public Object translateFunction(ServiceTemplate serviceTemplate,
-                                  String resourceId, String propertyName, String functionKey,
-                                  Object functionValue, String heatFileName,
-                                  HeatOrchestrationTemplate heatOrchestrationTemplate,
-                                  Template toscaTemplate, TranslationContext context) {
-    String file = ((String) functionValue).replace("file:///", "");
-    Object returnValue;
-    final String artifactId = file.split("\\.")[0];
+    private static ArtifactDefinition createArtifactDefinition(Object function,
+                                                               ToscaFileOutputService toscaFileOutputService) {
+        ArtifactDefinition artifactDefinition = new ArtifactDefinition();
+        artifactDefinition.setType(ToscaArtifactType.NATIVE_DEPLOYMENT);
+        artifactDefinition.setFile("../" + toscaFileOutputService.getArtifactsFolderName() + "/" + function);
+        return artifactDefinition;
+    }
 
-    returnValue = new HashMap<>();
-    List artifactParameters = new ArrayList();
-    artifactParameters.add(0, ToscaConstants.MODELABLE_ENTITY_NAME_SELF);
-    ((Map) returnValue).put(ToscaFunctions.GET_ARTIFACT.getDisplayName(), artifactParameters);
-    artifactParameters.add(1, artifactId);
+    @Override
+    public Object translateFunction(FunctionTranslator functionTranslator) {
 
-    ToscaFileOutputService toscaFileOutputService = new ToscaFileOutputServiceCsarImpl();
-    if (toscaTemplate != null) {
-      if (toscaTemplate instanceof NodeTemplate) {
-        NodeTemplate nodeTemplate = (NodeTemplate) toscaTemplate;
-        ArtifactDefinition artifactDefinition =
-            createArtifactDefinition(file, toscaFileOutputService);
-        if (nodeTemplate.getArtifacts() == null) {
-          nodeTemplate.setArtifacts(new HashMap<>());
+        String file = ((String) functionTranslator.getFunctionValue()).replace("file:///", "");
+        final String artifactId = file.split("\\.")[0];
+        Map<String, Object> returnValue = new HashMap<>();
+        List<String> artifactParameters = new ArrayList<>();
+        artifactParameters.add(ToscaConstants.MODELABLE_ENTITY_NAME_SELF);
+        returnValue.put(ToscaFunctions.GET_ARTIFACT.getDisplayName(), artifactParameters);
+        artifactParameters.add(artifactId);
+
+        ToscaFileOutputService toscaFileOutputService = new ToscaFileOutputServiceCsarImpl();
+        if (functionTranslator.getToscaTemplate() instanceof NodeTemplate) {
+            NodeTemplate nodeTemplate = (NodeTemplate) functionTranslator.getToscaTemplate();
+            ArtifactDefinition artifactDefinition = createArtifactDefinition(file, toscaFileOutputService);
+            if (nodeTemplate.getArtifacts() == null) {
+                nodeTemplate.setArtifacts(new HashMap<>());
+            }
+            nodeTemplate.getArtifacts().put(artifactId, artifactDefinition);
         }
-        nodeTemplate.getArtifacts().put(artifactId, artifactDefinition);
-      }
+        return returnValue;
     }
-    return returnValue;
-  }
-
-  private static ArtifactDefinition createArtifactDefinition(Object function,
-                                                             ToscaFileOutputService
-                                                                 toscaFileOutputService) {
-    ArtifactDefinition artifactDefinition = new ArtifactDefinition();
-    artifactDefinition.setType(ToscaArtifactType.NATIVE_DEPLOYMENT);
-    artifactDefinition
-        .setFile("../" + toscaFileOutputService.getArtifactsFolderName() + "/" + function);
-    return artifactDefinition;
-  }
 
 }
index a9f8e59..b25d336 100644 (file)
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
+/*
+ * 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.
- * ============LICENSE_END=========================================================
  */
 
 package org.openecomp.sdc.translator.services.heattotosca.impl.functiontranslation;
 
-import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
-import org.openecomp.sdc.heat.datatypes.model.HeatPseudoParameters;
-import org.openecomp.sdc.tosca.datatypes.ToscaFunctions;
-import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
-import org.onap.sdc.tosca.datatypes.model.Template;
-import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
-import org.openecomp.sdc.translator.services.heattotosca.FunctionTranslation;
-import org.openecomp.sdc.translator.services.heattotosca.FunctionTranslationFactory;
-
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 
-/**
- * @author SHIRIA
- * @since December 15, 2016.
- */
-public class FunctionTranslationGetParamImpl implements FunctionTranslation {
-  @Override
-  public Object translateFunction(ServiceTemplate serviceTemplate, String resourceId,
-                                  String propertyName, String functionKey,
-                                  Object functionValue, String heatFileName,
-                                  HeatOrchestrationTemplate heatOrchestrationTemplate,
-                                  Template toscaTemplate, TranslationContext context) {
-    Map returnValue = new HashMap<>();
-    returnValue.put(ToscaFunctions.GET_INPUT.getDisplayName(),
-        translateGetParamFunctionExpression(serviceTemplate, resourceId, propertyName,
-            functionValue, heatFileName, heatOrchestrationTemplate, context));
-    return returnValue;
-  }
+import org.openecomp.sdc.heat.datatypes.model.HeatPseudoParameters;
+import org.openecomp.sdc.tosca.datatypes.ToscaFunctions;
+import org.openecomp.sdc.translator.services.heattotosca.FunctionTranslation;
+import org.openecomp.sdc.translator.services.heattotosca.FunctionTranslationFactory;
 
-  private static Object translateGetParamFunctionExpression(ServiceTemplate serviceTemplate,
-                                                            String resourceId,
-                                                            String propertyName,Object functionValue,
-                                                            String heatFileName,
-                                                            HeatOrchestrationTemplate
-                                                                heatOrchestrationTemplate,
-                                                            TranslationContext context) {
-    Object returnValue = null;
-    if (functionValue instanceof String) {
-      returnValue = functionValue;
-      if (HeatPseudoParameters.getPseudoParameterNames().contains(functionValue)) {
-        context
-            .addUsedHeatPseudoParams(heatFileName, (String) functionValue, (String) functionValue);
-      }
-    } else if (functionValue instanceof List) {
-      returnValue = new ArrayList<>();
-      for (int i = 0; i < ((List) functionValue).size(); i++) {
-        Object paramValue = ((List) functionValue).get(i);
-        if ((paramValue instanceof Map && !((Map) paramValue).isEmpty())) {
-          Map<String, Object> paramMap = (Map) paramValue;
-          ((List) returnValue).add(translatedInnerMap(serviceTemplate, resourceId,
-              propertyName, paramMap, heatFileName, heatOrchestrationTemplate, context));
-        } else {
-          ((List) returnValue).add(paramValue);
+public class FunctionTranslationGetParamImpl implements FunctionTranslation {
+    private static Object translateGetParamFunctionExpression(FunctionTranslator functionTranslator) {
+        Object functionValue = functionTranslator.getFunctionValue();
+        Object returnValue = null;
+        if (functionValue instanceof String) {
+            returnValue = functionValue;
+            if (HeatPseudoParameters.getPseudoParameterNames().contains(functionValue)) {
+                functionTranslator.getContext().addUsedHeatPseudoParams(functionTranslator.getHeatFileName(),
+                        (String) functionValue, (String) functionValue);
+            }
+        } else if (functionValue instanceof List) {
+            returnValue = new ArrayList<>();
+            for (int i = 0; i < ((List) functionValue).size(); i++) {
+                Object paramValue = ((List) functionValue).get(i);
+                if ((paramValue instanceof Map && !((Map) paramValue).isEmpty())) {
+                    Map<String, Object> paramMap = (Map) paramValue;
+                    ((List) returnValue).add(translatedInnerMap(functionTranslator, paramMap));
+                } else {
+                    ((List) returnValue).add(paramValue);
+                }
+            }
         }
-      }
-    }
 
-    return returnValue;
-  }
+        return returnValue;
+    }
 
-  private static Object translatedInnerMap(ServiceTemplate serviceTemplate, String resourceId,
-                                           String propertyName, Map<String, Object> paramMap,
-                                           String heatFileName,HeatOrchestrationTemplate
-                                               heatOrchestrationTemplate,
-                                           TranslationContext context) {
+    private static Object translatedInnerMap(FunctionTranslator functionTranslator, Map<String, Object> paramMap) {
+        Map<String, Object> translatedInnerMapValue = new HashMap<>();
+        for (Map.Entry<String, Object> entry : paramMap.entrySet()) {
+            Optional<FunctionTranslation> functionTranslationInstance =
+                    FunctionTranslationFactory.getInstance(entry.getKey());
+            if (functionTranslationInstance.isPresent()) {
+                functionTranslator.setFunctionValue(entry.getValue());
+                return functionTranslationInstance.get().translateFunction(functionTranslator);
+            } else {
+                translatedInnerMapValue.put(entry.getKey(), translatedInnerValue(functionTranslator, entry.getValue()));
+            }
+        }
+        return translatedInnerMapValue;
+    }
 
-    Map<String, Object> translatedInnerMapValue = new HashMap<>();
-    for (Map.Entry<String, Object> entry : paramMap.entrySet()) {
-      if (FunctionTranslationFactory.getInstance(entry.getKey()).isPresent()) {
-        return FunctionTranslationFactory.getInstance(entry.getKey()).get()
-            .translateFunction(serviceTemplate, resourceId, propertyName, entry.getKey(),
-                entry.getValue(), heatFileName, heatOrchestrationTemplate, null, context);
-      } else {
-        translatedInnerMapValue.put(entry.getKey(),
-            translatedInnerValue(serviceTemplate, resourceId, propertyName,entry.getValue(),
-                heatFileName, heatOrchestrationTemplate, context));
+    private static Object translatedInnerValue(FunctionTranslator functionTranslator,
+                                               Object value) {
+        if (value instanceof String) {
+            return value;
+        } else if (value instanceof Map) {
+            return translatedInnerMap(functionTranslator, (Map<String, Object>) value);
+        } else if (value instanceof List) {
+            List<Object> returnedList = new ArrayList<>();
+            for (int i = 0; i < ((List) value).size(); i++) {
+                returnedList.add(translatedInnerValue(functionTranslator, ((List) value).get(i)));
+            }
+            return returnedList;
+        }
 
-      }
+        return value;
     }
-    return translatedInnerMapValue;
-  }
 
-  private static Object translatedInnerValue(ServiceTemplate serviceTemplate, String resourceId,
-                                             String propertyName,Object value, String heatFileName,
-                                             HeatOrchestrationTemplate heatOrchestrationTemplate,
-                                             TranslationContext context) {
-    if (value instanceof String) {
-      return value;
-    } else if (value instanceof Map) {
-      return translatedInnerMap(serviceTemplate, resourceId, propertyName,(Map<String, Object>)
-          value, heatFileName, heatOrchestrationTemplate, context);
-    } else if (value instanceof List) {
-      List returnedList = new ArrayList();
-      for (int i = 0; i < ((List) value).size(); i++) {
-        returnedList.add(translatedInnerValue(serviceTemplate, resourceId, propertyName,
-            ((List) value).get(i), heatFileName, heatOrchestrationTemplate, context));
-      }
-      return returnedList;
+    @Override
+    public Object translateFunction(FunctionTranslator functionTranslator) {
+        Map<String, Object> returnValue = new HashMap<>();
+        returnValue.put(ToscaFunctions.GET_INPUT.getDisplayName(),
+                translateGetParamFunctionExpression(functionTranslator));
+        return returnValue;
     }
-
-    return value;
-  }
 }
index ffb0b72..6bd6bf3 100644 (file)
@@ -1,52 +1,35 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
+/*
+ * 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.
- * ============LICENSE_END=========================================================
  */
 
 package org.openecomp.sdc.translator.services.heattotosca.impl.functiontranslation;
 
-import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
-import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
-import org.onap.sdc.tosca.datatypes.model.Template;
-import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
+import java.util.Optional;
+
 import org.openecomp.sdc.translator.services.heattotosca.FunctionTranslation;
-import org.openecomp.sdc.translator.services.heattotosca.helper.FunctionTranslationHelper;
 import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.ResourceTranslationBase;
 
-import java.util.Optional;
-
-/**
- * @author SHIRIA
- * @since December 15, 2016.
- */
 public class FunctionTranslationGetResourceImpl implements FunctionTranslation {
-  @Override
-  public Object translateFunction(ServiceTemplate serviceTemplate, String resourceId,
-                                  String propertyName, String functionKey,
-                                  Object functionValue, String heatFileName,
-                                  HeatOrchestrationTemplate heatOrchestrationTemplate,
-                                  Template toscaTemplate, TranslationContext context) {
-    Object returnValue;
-    Optional<String> resourceTranslatedId = ResourceTranslationBase
-        .getResourceTranslatedId(heatFileName, heatOrchestrationTemplate, (String) functionValue,
-            context);
-    returnValue = resourceTranslatedId
-        .orElseGet(() -> FunctionTranslationHelper.getUnsupportedResourcePrefix() + functionValue);
-    return returnValue;
-  }
+    @Override
+    public Object translateFunction(FunctionTranslator functionTranslator) {
+        Object returnValue;
+        Optional<String> resourceTranslatedId = ResourceTranslationBase.getResourceTranslatedId(functionTranslator
+                .getHeatFileName(), functionTranslator.getHeatOrchestrationTemplate(),
+                (String) functionTranslator.getFunctionValue(), functionTranslator.getContext());
+        returnValue = resourceTranslatedId.orElseGet(() -> functionTranslator.getUnsupportedResourcePrefix()
+                + functionTranslator.getFunctionValue());
+        return returnValue;
+    }
 }
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/functiontranslation/FunctionTranslator.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/functiontranslation/FunctionTranslator.java
new file mode 100644 (file)
index 0000000..768f531
--- /dev/null
@@ -0,0 +1,113 @@
+/*
+ * 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.translator.services.heattotosca.impl.functiontranslation;
+
+import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
+import org.onap.sdc.tosca.datatypes.model.Template;
+import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
+import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
+import org.openecomp.sdc.translator.datatypes.heattotosca.to.TranslateTo;
+
+public class FunctionTranslator {
+
+    private static final String UNSUPPORTED_RESOURCE_PREFIX = "UNSUPPORTED_RESOURCE_";
+    private static final String UNSUPPORTED_ATTRIBUTE_PREFIX = "UNSUPPORTED_ATTRIBUTE_";
+
+    private ServiceTemplate serviceTemplate;
+    private String resourceId;
+    private String propertyName;
+    private Object functionValue;
+    private String heatFileName;
+    private HeatOrchestrationTemplate heatOrchestrationTemplate;
+    private Template toscaTemplate;
+    private TranslationContext context;
+
+    public FunctionTranslator() {
+        //default constructor
+    }
+
+    public FunctionTranslator(TranslateTo functionTranslateTo, String propertyName, Object functionValue,
+                              Template toscaTemplate) {
+        this.serviceTemplate = functionTranslateTo.getServiceTemplate();
+        this.resourceId = functionTranslateTo.getResourceId();
+        this.propertyName = propertyName;
+        this.functionValue = functionValue;
+        this.heatFileName = functionTranslateTo.getHeatFileName();
+        this.heatOrchestrationTemplate = functionTranslateTo.getHeatOrchestrationTemplate();
+        this.toscaTemplate = toscaTemplate;
+        this.context = functionTranslateTo.getContext();
+    }
+
+    public static TranslateTo getFunctionTranslateTo(ServiceTemplate serviceTemplate, String resourceId,
+                                              String heatFileName, HeatOrchestrationTemplate heatOrchestrationTemplate,
+                                              TranslationContext context) {
+        return new TranslateTo(heatFileName, serviceTemplate, heatOrchestrationTemplate, null, resourceId, null,
+                context);
+    }
+
+    public ServiceTemplate getServiceTemplate() {
+        return serviceTemplate;
+    }
+
+    public String getResourceId() {
+        return resourceId;
+    }
+
+    public String getPropertyName() {
+        return propertyName;
+    }
+
+    Object getFunctionValue() {
+        return functionValue;
+    }
+
+    void setFunctionValue(Object functionValue) {
+        this.functionValue = functionValue;
+    }
+
+    public String getHeatFileName() {
+        return heatFileName;
+    }
+
+    public HeatOrchestrationTemplate getHeatOrchestrationTemplate() {
+        return heatOrchestrationTemplate;
+    }
+
+    Template getToscaTemplate() {
+        return toscaTemplate;
+    }
+
+    public TranslationContext getContext() {
+        return context;
+    }
+
+    String getUnsupportedResourcePrefix() {
+        return UNSUPPORTED_RESOURCE_PREFIX;
+    }
+
+    String getUnsupportedAttributePrefix() {
+        return UNSUPPORTED_ATTRIBUTE_PREFIX;
+    }
+
+    public boolean isResourceSupported(String translatedResourceId) {
+        return !translatedResourceId.startsWith(UNSUPPORTED_RESOURCE_PREFIX);
+    }
+
+    boolean isAttributeSupported(String translatedAttName) {
+        return !translatedAttName.startsWith(UNSUPPORTED_ATTRIBUTE_PREFIX);
+    }
+}
index da6677a..eb95ea9 100644 (file)
@@ -16,6 +16,8 @@
 
 package org.openecomp.sdc.translator.services.heattotosca.mapping;
 
+import static org.openecomp.sdc.translator.services.heattotosca.impl.functiontranslation.FunctionTranslator.getFunctionTranslateTo;
+
 import org.apache.commons.collections4.MapUtils;
 import org.onap.sdc.tosca.datatypes.model.Constraint;
 import org.onap.sdc.tosca.datatypes.model.EntrySchema;
@@ -33,6 +35,7 @@ import org.openecomp.sdc.tosca.services.ToscaConstants;
 import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
 import org.openecomp.sdc.translator.services.heattotosca.FunctionTranslationFactory;
 import org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil;
+import org.openecomp.sdc.translator.services.heattotosca.impl.functiontranslation.FunctionTranslator;
 
 import java.util.*;
 
@@ -252,10 +255,11 @@ public class TranslatorHeatToToscaParameterConverter {
       Map.Entry<String, Object> functionMapEntry =
           (Map.Entry<String, Object>) ((Map) paramValue).entrySet().iterator().next();
       if (FunctionTranslationFactory.getInstance(functionMapEntry.getKey()).isPresent()) {
+
+        FunctionTranslator functionTranslator = new FunctionTranslator(getFunctionTranslateTo(serviceTemplate, null,
+                heatFileName, heatOrchestrationTemplate, context), parameterName,  functionMapEntry.getValue(), null);
         return FunctionTranslationFactory.getInstance(functionMapEntry.getKey()).get()
-            .translateFunction(serviceTemplate, null, parameterName, functionMapEntry.getKey(),
-                functionMapEntry.getValue(),heatFileName,
-                heatOrchestrationTemplate, null, context);
+            .translateFunction(functionTranslator);
       }
     }
 
index 654e630..3643a26 100644 (file)
@@ -20,6 +20,8 @@
 
 package org.openecomp.sdc.translator.services.heattotosca.mapping;
 
+import static org.openecomp.sdc.translator.services.heattotosca.impl.functiontranslation.FunctionTranslator.getFunctionTranslateTo;
+
 import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
 import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
 import org.onap.sdc.tosca.datatypes.model.Template;
@@ -27,6 +29,7 @@ import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
 import org.openecomp.sdc.translator.services.heattotosca.ConfigConstants;
 import org.openecomp.sdc.translator.services.heattotosca.Constants;
 import org.openecomp.sdc.translator.services.heattotosca.FunctionTranslationFactory;
+import org.openecomp.sdc.translator.services.heattotosca.impl.functiontranslation.FunctionTranslator;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -129,10 +132,11 @@ public class TranslatorHeatToToscaPropertyConverter {
       Map.Entry<String, Object> functionMapEntry =
           (Map.Entry<String, Object>) ((Map) propertyValue).entrySet().iterator().next();
       if (FunctionTranslationFactory.getInstance(functionMapEntry.getKey()).isPresent()) {
+        FunctionTranslator functionTranslator = new FunctionTranslator(getFunctionTranslateTo(serviceTemplate,
+                resourceId, heatFileName, heatOrchestrationTemplate, context), propertyName,
+                functionMapEntry.getValue(), template);
         return FunctionTranslationFactory.getInstance(functionMapEntry.getKey()).get()
-            .translateFunction(serviceTemplate, resourceId, propertyName ,functionMapEntry
-                .getKey(), functionMapEntry
-                .getValue(),  heatFileName, heatOrchestrationTemplate, template, context);
+            .translateFunction(functionTranslator);
       }
       Map<String, Object> propertyValueMap = new HashMap<>();
       for (Map.Entry<String, Object> entry : ((Map<String, Object>) propertyValue).entrySet()) {
index 878183b..a7bcf04 100644 (file)
@@ -1,12 +1,28 @@
+/*
+ * 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.translator.services.heattotosca.impl.functiontranslation;
 
+import java.io.IOException;
+
 import org.junit.Before;
 import org.junit.Test;
 import org.openecomp.sdc.translator.services.heattotosca.buildconsolidationdata.TestConstants;
 import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest;
 
-import java.io.IOException;
-
 public class FunctionTranslationGetAttrImplTest extends BaseResourceTranslationTest {
 
   @Override
index 023c0f5..76f0c61 100644 (file)
@@ -1,43 +1,37 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
+/*
+ * 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.
- * ============LICENSE_END=========================================================
  */
 
 package org.openecomp.sdc.translator.services.heattotosca.impl.functiontranslation;
 
+import static org.openecomp.sdc.translator.services.heattotosca.impl.functiontranslation.FunctionTranslator.getFunctionTranslateTo;
+
+import java.util.HashMap;
+import java.util.List;
+
 import org.junit.Assert;
 import org.junit.Test;
+import org.onap.sdc.tosca.datatypes.model.NodeTemplate;
 import org.openecomp.core.utilities.file.FileUtils;
 import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
-import org.onap.sdc.tosca.datatypes.model.NodeTemplate;
 import org.openecomp.sdc.tosca.services.ToscaConstants;
 import org.openecomp.sdc.tosca.services.ToscaFileOutputService;
 import org.openecomp.sdc.tosca.services.impl.ToscaFileOutputServiceCsarImpl;
 import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
 import org.openecomp.sdc.translator.services.heattotosca.FunctionTranslationFactory;
 
-import java.util.HashMap;
-import java.util.List;
-
-/**
- * @author SHIRIA
- * @since December 18, 2016.
- */
 public class FunctionTranslationGetFileImplTest {
   @Test
   public void testGetFileWithExtensionFunction() {
@@ -71,18 +65,18 @@ public class FunctionTranslationGetFileImplTest {
                                               HeatOrchestrationTemplate heatOrchestrationTemplate,
                                               NodeTemplate nodeTemplate,
                                               TranslationContext context) {
-    Assert.assertEquals(true, FunctionTranslationFactory.getInstance(functionName).isPresent());
+    Assert.assertTrue(FunctionTranslationFactory.getInstance(functionName).isPresent());
     if(FunctionTranslationFactory.getInstance(functionName).isPresent()) {
+      FunctionTranslator functionTranslator = new FunctionTranslator(getFunctionTranslateTo(null, null, heatFileName,
+              heatOrchestrationTemplate, context), null, function, nodeTemplate);
       Object result = FunctionTranslationFactory.getInstance(functionName).get()
-          .translateFunction(null, null, null, functionName, function, heatFileName,
-              heatOrchestrationTemplate,
-              nodeTemplate, context);
+          .translateFunction(functionTranslator);
       Assert.assertNotNull(((HashMap) result).get("get_artifact"));
       List artifactParameters = (List) ((HashMap) result).get("get_artifact");
       Assert.assertNotNull(artifactParameters);
-      Assert.assertEquals(artifactParameters.size(), 2);
-      Assert.assertEquals(artifactParameters.get(0), ToscaConstants.MODELABLE_ENTITY_NAME_SELF);
-      Assert.assertEquals(artifactParameters.get(1), ((String) function).split("\\.")[0]);
+      Assert.assertEquals(2, artifactParameters.size());
+      Assert.assertEquals(ToscaConstants.MODELABLE_ENTITY_NAME_SELF, artifactParameters.get(0));
+      Assert.assertEquals(((String) function).split("\\.")[0], artifactParameters.get(1));
 
       Assert.assertNotNull(nodeTemplate.getArtifacts());
       Assert.assertNotNull(
index 860074b..d29e4af 100644 (file)
@@ -1,28 +1,25 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
+/*
+ * 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.
- * ============LICENSE_END=========================================================
  */
 
 package org.openecomp.sdc.translator.services.heattotosca.impl.functiontranslation;
 
-import org.junit.Before;
-import org.junit.Test;
-import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.openecomp.sdc.translator.services.heattotosca.impl.functiontranslation.FunctionTranslator.getFunctionTranslateTo;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -30,8 +27,9 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
+import org.junit.Before;
+import org.junit.Test;
+import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseResourceTranslationTest;
 
 public class FunctionTranslationGetParamImplTest extends BaseResourceTranslationTest {
 
@@ -42,150 +40,136 @@ public class FunctionTranslationGetParamImplTest extends BaseResourceTranslation
   }
 
   @Test
-  public void testStringGetParamFuncValue() throws Exception {
+  public void testStringGetParamFuncValue() {
     FunctionTranslationGetParamImpl translationImpl = new FunctionTranslationGetParamImpl();
     String functionValue = "parameter1";
 
-    Object translatedFunc = translationImpl.translateFunction(null, null, null, "get_param",
-        functionValue, "dummy", null, null, null);
+    FunctionTranslator functionTranslator = new FunctionTranslator(getFunctionTranslateTo(null, null, "dummy", null,
+            null), null, functionValue, null);
+    Object translatedFunc = translationImpl.translateFunction(functionTranslator);
 
-    assertEquals(true, translatedFunc instanceof Map);
-    if (translatedFunc instanceof Map) {
-      assertNotNull(((Map) translatedFunc).get("get_input"));
-      assertEquals(functionValue, ((Map) translatedFunc).get("get_input"));
-    }
+    assertTrue(translatedFunc instanceof Map);
+    assertNotNull(((Map) translatedFunc).get("get_input"));
+    assertEquals(functionValue, ((Map) translatedFunc).get("get_input"));
 
   }
 
   @Test
-  public void testListGetParamFuncValue() throws Exception {
+  public void testListGetParamFuncValue() {
     FunctionTranslationGetParamImpl translationImpl = new FunctionTranslationGetParamImpl();
-    List functionValue = new ArrayList();
+    List<Object> functionValue = new ArrayList<>();
     functionValue.add("parameter1");
     functionValue.add(0);
     functionValue.add("key1");
 
-    Object translatedFunc = translationImpl.translateFunction(null, null, null,"get_param",
-        functionValue, "dummy", null, null, null);
+    FunctionTranslator functionTranslator = new FunctionTranslator(getFunctionTranslateTo(null, null, "dummy", null,
+            null), null, functionValue, null);
+    Object translatedFunc = translationImpl.translateFunction(functionTranslator);
 
-    assertEquals(true, translatedFunc instanceof Map);
-    if (translatedFunc instanceof Map) {
-      assertNotNull(((Map) translatedFunc).get("get_input"));
-      Object translatedFunValue = ((Map) translatedFunc).get("get_input");
-      assertEquals(true, translatedFunValue instanceof List);
-      if (translatedFunValue instanceof List) {
+    assertTrue(translatedFunc instanceof Map);
+    assertNotNull(((Map) translatedFunc).get("get_input"));
+    Object translatedFunValue = ((Map) translatedFunc).get("get_input");
+    assertTrue(translatedFunValue instanceof List);
 
-        assertEquals(functionValue.get(0), ((List) translatedFunValue).get(0));
-        assertEquals(functionValue.get(1), ((List) translatedFunValue).get(1));
-        assertEquals(functionValue.get(2), ((List) translatedFunValue).get(2));
-      }
-    }
+    assertEquals(functionValue.get(0), ((List) translatedFunValue).get(0));
+    assertEquals(functionValue.get(1), ((List) translatedFunValue).get(1));
+    assertEquals(functionValue.get(2), ((List) translatedFunValue).get(2));
 
   }
 
   @Test
-  public void testMapGetParamFuncValue() throws Exception {
+  public void testMapGetParamFuncValue() {
     // input heat function expression
     //{get_param: [parameter1, {get_param:indexParam}, key1]}
     // output translated function expression
     //{get_input: [parameter1, {get_input:indexParam}, key1]}
 
     FunctionTranslationGetParamImpl translationImpl = new FunctionTranslationGetParamImpl();
-    List functionValue = new ArrayList();
+    List<Object> functionValue = new ArrayList<>();
     functionValue.add("parameter1");
-    Map innerParamMap = new HashMap();
+    Map<String, String> innerParamMap = new HashMap<>();
     innerParamMap.put("get_param", "indexParam");
     functionValue.add(innerParamMap);
     functionValue.add("key1");
 
-    Object translatedFunc = translationImpl.translateFunction(null, null, null, "get_param",
-        functionValue, "dummy", null, null, null);
-
-    assertEquals(true, translatedFunc instanceof Map);
-    if (translatedFunc instanceof Map) {
-      assertNotNull(((Map) translatedFunc).get("get_input"));
-      Object translatedFunValue = ((Map) translatedFunc).get("get_input");
-      assertEquals(true, translatedFunValue instanceof List);
-      if (translatedFunValue instanceof List) {
-        assertEquals(functionValue.get(0), ((List) translatedFunValue).get(0));
-        assertEquals(functionValue.get(2), ((List) translatedFunValue).get(2));
-        assertEquals(true, ((List) translatedFunValue).get(1) instanceof Map);
-        if (((List) translatedFunValue).get(1) instanceof Map) {
-          assertEquals(innerParamMap.get("get_param"), ((Map) ((List) translatedFunValue).get(1))
+    FunctionTranslator functionTranslator = new FunctionTranslator(getFunctionTranslateTo(null, null, "dummy", null,
+            null), null, functionValue, null);
+    Object translatedFunc = translationImpl.translateFunction(functionTranslator);
+
+    assertTrue(translatedFunc instanceof Map);
+    assertNotNull(((Map) translatedFunc).get("get_input"));
+    Object translatedFunValue = ((Map) translatedFunc).get("get_input");
+    assertTrue(translatedFunValue instanceof List);
+    assertEquals(functionValue.get(0), ((List) translatedFunValue).get(0));
+    assertEquals(functionValue.get(2), ((List) translatedFunValue).get(2));
+    assertTrue(((List) translatedFunValue).get(1) instanceof Map);
+    if (((List) translatedFunValue).get(1) instanceof Map) {
+      assertEquals(innerParamMap.get("get_param"), ((Map) ((List) translatedFunValue).get(1))
               .get("get_input"));
-        }
-      }
-
     }
+
   }
 
   @Test
-  public void testMapWithMapGetParamFuncValue() throws Exception {
+  public void testMapWithMapGetParamFuncValue() {
     // input heat function expression
     //{get_param: [parameter1, {get_param:[parameter2, {get_param:indexParam}]}, key1]}
     // output translated function expression
     //{get_input: [parameter1, {get_input:[parameter2, {get_input:indexParam}]}, key1]}
 
     FunctionTranslationGetParamImpl translationImpl = new FunctionTranslationGetParamImpl();
-    List functionValue = new ArrayList();
+    List<Object> functionValue = new ArrayList<>();
     functionValue.add("parameter1");
-    Map firstInnerParamMap = new HashMap();
-    Map secondInnerParamMap = new HashMap();
+    Map<String, Object> firstInnerParamMap = new HashMap<>();
+    Map<String, String> secondInnerParamMap = new HashMap<>();
     secondInnerParamMap.put("get_param", "indexParam");
-    List innerfunction = new ArrayList();
+    List<Object> innerfunction = new ArrayList<>();
     innerfunction.add("parameter2");
     innerfunction.add(secondInnerParamMap);
     firstInnerParamMap.put("get_param", innerfunction);
     functionValue.add(firstInnerParamMap);
     functionValue.add("key1");
 
-    Object translatedFunc = translationImpl.translateFunction(null, null, null, "get_param",
-        functionValue, "dummy", null, null, null);
-
-    assertEquals(true, translatedFunc instanceof Map);
-    if (translatedFunc instanceof Map) {
-      assertNotNull(((Map) translatedFunc).get("get_input"));
-      Object translatedFunValue = ((Map) translatedFunc).get("get_input");
-      assertEquals(true, translatedFunValue instanceof List);
-      if (translatedFunValue instanceof List) {
-        assertEquals(functionValue.get(0), ((List) translatedFunValue).get(0));
-        assertEquals(functionValue.get(2), ((List) translatedFunValue).get(2));
-        assertEquals(true, ((List) translatedFunValue).get(1) instanceof Map);
-        if (((List) translatedFunValue).get(1) instanceof Map) {
-          assertEquals(true, ((Map) ((List) translatedFunValue).get(1)).get("get_input")
-              instanceof List);
-          List innerTranslatedFunction =
-              (List) ((Map) ((List) translatedFunValue).get(1)).get("get_input");
-          assertEquals(innerfunction.get(0), innerTranslatedFunction.get(0));
-          assertEquals(true, innerTranslatedFunction.get(1) instanceof Map);
-          assertEquals(secondInnerParamMap.get("get_param"),
-              ((Map) innerTranslatedFunction.get(1)).get("get_input"));
-        }
-      }
-
+    FunctionTranslator functionTranslator = new FunctionTranslator(getFunctionTranslateTo(null, null, "dummy", null,
+            null), null, functionValue, null);
+    Object translatedFunc = translationImpl.translateFunction(functionTranslator);
+
+    assertTrue(translatedFunc instanceof Map);
+    assertNotNull(((Map) translatedFunc).get("get_input"));
+    Object translatedFunValue = ((Map) translatedFunc).get("get_input");
+    assertTrue(translatedFunValue instanceof List);
+    assertEquals(functionValue.get(0), ((List) translatedFunValue).get(0));
+    assertEquals(functionValue.get(2), ((List) translatedFunValue).get(2));
+    assertTrue(((List) translatedFunValue).get(1) instanceof Map);
+    if (((List) translatedFunValue).get(1) instanceof Map) {
+      assertTrue(((Map) ((List) translatedFunValue).get(1)).get("get_input") instanceof List);
+      List innerTranslatedFunction = (List) ((Map) ((List) translatedFunValue).get(1)).get("get_input");
+      assertEquals(innerfunction.get(0), innerTranslatedFunction.get(0));
+      assertTrue(innerTranslatedFunction.get(1) instanceof Map);
+      assertEquals(secondInnerParamMap.get("get_param"), ((Map) innerTranslatedFunction.get(1)).get("get_input"));
     }
   }
 
   @Test
-  public void testInnerNotSupportedFuncGetParamFuncValue() throws Exception {
+  public void testInnerNotSupportedFuncGetParamFuncValue() {
     // input heat function expression
     //{get_param: [parameter1, {str_replace: {template:$AAkgiru, AA:{get_param:prameter2}}}, key1]}
     // output translated function expression
     //{get_input: [parameter1, {str_replace: {template:$AAkgiru, AA:{get_input:parameter2}}}, key1]}
 
     FunctionTranslationGetParamImpl translationImpl = new FunctionTranslationGetParamImpl();
-    List functionValue = new ArrayList();
+    List<Object> functionValue = new ArrayList<>();
     functionValue.add("parameter1");
 
-    Map templateMap = new HashMap();
+    Map<String, Object> templateMap = new HashMap<>();
     templateMap.put("template", "$AAkgiru");
 
-    Map strReplaceFuncMap = new HashMap();
-    Map getParamMapInner = new HashMap();
+    Map<String, Object> strReplaceFuncMap = new HashMap<>();
+    Map<String, Object> getParamMapInner = new HashMap<>();
     getParamMapInner.put("get_param", "parameter2");
     templateMap.put("AA", getParamMapInner);
 
-    Map innerParamValue = new HashMap();
+    Map<String, Object> innerParamValue = new HashMap<>();
     innerParamValue.putAll(templateMap);
     innerParamValue.putAll(strReplaceFuncMap);
 
@@ -194,34 +178,31 @@ public class FunctionTranslationGetParamImplTest extends BaseResourceTranslation
 
     functionValue.add("key1");
 
-    Object translatedFunc = translationImpl.translateFunction(null, null, null, "get_param",
-        functionValue, "dummy", null, null, null);
-
-    assertEquals(true, translatedFunc instanceof Map);
-    if (translatedFunc instanceof Map) {
-      assertNotNull(((Map) translatedFunc).get("get_input"));
-      Object translatedFunValue = ((Map) translatedFunc).get("get_input");
-      assertEquals(true, translatedFunValue instanceof List);
-      if (translatedFunValue instanceof List) {
-        assertEquals(functionValue.get(0), ((List) translatedFunValue).get(0));
-        assertEquals(functionValue.get(2), ((List) translatedFunValue).get(2));
-        assertEquals(true, ((List) translatedFunValue).get(1) instanceof Map);
-        if (((List) translatedFunValue).get(1) instanceof Map) {
-          assertEquals(strReplaceFuncMap.get("get_param"),
+    FunctionTranslator functionTranslator = new FunctionTranslator(getFunctionTranslateTo(null, null, "dummy", null,
+            null), null, functionValue, null);
+    Object translatedFunc = translationImpl.translateFunction(functionTranslator);
+
+    assertTrue(translatedFunc instanceof Map);
+    assertNotNull(((Map) translatedFunc).get("get_input"));
+    Object translatedFunValue = ((Map) translatedFunc).get("get_input");
+    assertTrue(translatedFunValue instanceof List);
+    assertEquals(functionValue.get(0), ((List) translatedFunValue).get(0));
+    assertEquals(functionValue.get(2), ((List) translatedFunValue).get(2));
+    assertTrue(((List) translatedFunValue).get(1) instanceof Map);
+    if (((List) translatedFunValue).get(1) instanceof Map) {
+      assertEquals(strReplaceFuncMap.get("get_param"),
               ((Map) ((List) translatedFunValue).get(1))
-                  .get("get_input"));
-        }
-        assertEquals(true, ((List) translatedFunValue).get(1) instanceof Map);
-        if (((List) translatedFunValue).get(1) instanceof Map) {
-          assertEquals(true, ((Map) ((List) translatedFunValue).get(1)).get("str_replace") instanceof Map);
-          Map strReplacefunctionValue = (Map) ((Map) ((List) translatedFunValue).get(1)).get("str_replace");
-          assertEquals(templateMap.get("template"), strReplacefunctionValue.get("template"));
-          assertEquals(true, strReplacefunctionValue.get("AA") instanceof Map);
-          if (strReplacefunctionValue.get("AA") instanceof Map) {
-            assertEquals(getParamMapInner.get("get_param"), ((Map) strReplacefunctionValue.get
+                      .get("get_input"));
+    }
+    assertTrue(((List) translatedFunValue).get(1) instanceof Map);
+    if (((List) translatedFunValue).get(1) instanceof Map) {
+      assertTrue(((Map) ((List) translatedFunValue).get(1)).get("str_replace") instanceof Map);
+      Map strReplacefunctionValue = (Map) ((Map) ((List) translatedFunValue).get(1)).get("str_replace");
+      assertEquals(templateMap.get("template"), strReplacefunctionValue.get("template"));
+      assertTrue(strReplacefunctionValue.get("AA") instanceof Map);
+      if (strReplacefunctionValue.get("AA") instanceof Map) {
+        assertEquals(getParamMapInner.get("get_param"), ((Map) strReplacefunctionValue.get
                 ("AA")).get("get_input"));
-          }
-        }
       }
     }
   }
@@ -229,9 +210,9 @@ public class FunctionTranslationGetParamImplTest extends BaseResourceTranslation
   @Test
   public void testTranslateHeatPseudoParamUsedFromMainHeat() throws Exception {
     inputFilesPath =
-        "/mock/services/heattotosca/heatPseudoParameters/usedFromMainHeat/inputfiles";
+            "/mock/services/heattotosca/heatPseudoParameters/usedFromMainHeat/inputfiles";
     outputFilesPath =
-        "/mock/services/heattotosca/heatPseudoParameters/usedFromMainHeat/expectedoutputfiles";
+            "/mock/services/heattotosca/heatPseudoParameters/usedFromMainHeat/expectedoutputfiles";
     initTranslatorAndTranslate();
     testTranslation();
   }
@@ -239,9 +220,9 @@ public class FunctionTranslationGetParamImplTest extends BaseResourceTranslation
   @Test
   public void testTranslateHeatPseudoParamUsedFromNestedHeat() throws Exception {
     inputFilesPath =
-        "/mock/services/heattotosca/heatPseudoParameters/usedFromNestedHeat/inputfiles";
+            "/mock/services/heattotosca/heatPseudoParameters/usedFromNestedHeat/inputfiles";
     outputFilesPath =
-        "/mock/services/heattotosca/heatPseudoParameters/usedFromNestedHeat/expectedoutputfiles";
+            "/mock/services/heattotosca/heatPseudoParameters/usedFromNestedHeat/expectedoutputfiles";
     initTranslatorAndTranslate();
     testTranslation();
   }