test_class.file: alien4cloud-core/src/test/java/org/alien4cloud/tosca/utils/FunctionEvaluatorTest.java
test_class.identifier: FunctionEvaluatorTest
test_case.body: @Test
      public void concatOfAnGetSecretShouldFailed() {
          FunctionEvaluatorContext context = getEvaluationContext();
          NodeTemplate template = context.getTopology().getNodeTemplates().get("my_node");
  
          AbstractPropertyValue resolved = FunctionEvaluator.tryResolveValue(context, template, template.getProperties(), template.getProperties().get("concat_prop_and_get_secret"));
          Assert.assertNotNull(resolved);
          Assert.assertEquals(ConcatPropertyValue.class, resolved.getClass());
          ConcatPropertyValue resolvedConcat = (ConcatPropertyValue) resolved;
          Assert.assertEquals(ScalarPropertyValue.class, resolvedConcat.getParameters().get(0).getClass());
          Assert.assertEquals(FunctionPropertyValue.class, resolvedConcat.getParameters().get(1).getClass());
      }
test_case.class_method_signature: FunctionEvaluatorTest.concatOfAnGetSecretShouldFailed()
test_case.full_signature: @Test public void concatOfAnGetSecretShouldFailed()
test_case.identifier: concatOfAnGetSecretShouldFailed
test_case.invocations: getEvaluationContext get getNodeTemplates getTopology tryResolveValue getProperties get getProperties assertNotNull assertEquals getClass assertEquals getClass get getParameters assertEquals getClass get getParameters
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void concatOfAnGetSecretShouldFailed()
focal_class.file: alien4cloud-core/src/main/java/org/alien4cloud/tosca/utils/FunctionEvaluator.java
focal_class.identifier: FunctionEvaluator
focal_class.class_method_signature: FunctionEvaluator.tryResolveValue(FunctionEvaluatorContext evaluatorContext, AbstractInstantiableTemplate template,
              Map<String, AbstractPropertyValue> properties, AbstractPropertyValue evaluatedProperty)
focal_class.full_signature: public static AbstractPropertyValue tryResolveValue(FunctionEvaluatorContext evaluatorContext, AbstractInstantiableTemplate template,
              Map<String, AbstractPropertyValue> properties, AbstractPropertyValue evaluatedProperty)
focal_class.identifier: tryResolveValue
focal_class.modifiers: public static
focal_class.parameters: (FunctionEvaluatorContext evaluatorContext, AbstractInstantiableTemplate template,
              Map<String, AbstractPropertyValue> properties, AbstractPropertyValue evaluatedProperty)
focal_class.return: AbstractPropertyValue
focal_class.signature: AbstractPropertyValue tryResolveValue(FunctionEvaluatorContext evaluatorContext, AbstractInstantiableTemplate template,
              Map<String, AbstractPropertyValue> properties, AbstractPropertyValue evaluatedProperty)
focal_class.class_method_signature: FunctionEvaluator.getProperty(FunctionEvaluatorContext evaluatorContext, AbstractInstantiableTemplate template,
              Map<String, AbstractPropertyValue> properties, FunctionPropertyValue function)
focal_class.full_signature: private static AbstractPropertyValue getProperty(FunctionEvaluatorContext evaluatorContext, AbstractInstantiableTemplate template,
              Map<String, AbstractPropertyValue> properties, FunctionPropertyValue function)
focal_class.identifier: getProperty
focal_class.modifiers: private static
focal_class.parameters: (FunctionEvaluatorContext evaluatorContext, AbstractInstantiableTemplate template,
              Map<String, AbstractPropertyValue> properties, FunctionPropertyValue function)
focal_class.return: AbstractPropertyValue
focal_class.signature: AbstractPropertyValue getProperty(FunctionEvaluatorContext evaluatorContext, AbstractInstantiableTemplate template,
              Map<String, AbstractPropertyValue> properties, FunctionPropertyValue function)
focal_class.class_method_signature: FunctionEvaluator.doGetProperty(FunctionEvaluatorContext evaluatorContext, AbstractInstantiableTemplate targetTemplate,
              FunctionPropertyValue function)
focal_class.full_signature: private static AbstractPropertyValue doGetProperty(FunctionEvaluatorContext evaluatorContext, AbstractInstantiableTemplate targetTemplate,
              FunctionPropertyValue function)
focal_class.identifier: doGetProperty
focal_class.modifiers: private static
focal_class.parameters: (FunctionEvaluatorContext evaluatorContext, AbstractInstantiableTemplate targetTemplate,
              FunctionPropertyValue function)
focal_class.return: AbstractPropertyValue
focal_class.signature: AbstractPropertyValue doGetProperty(FunctionEvaluatorContext evaluatorContext, AbstractInstantiableTemplate targetTemplate,
              FunctionPropertyValue function)
focal_class.class_method_signature: FunctionEvaluator.getFromPath(FunctionEvaluatorContext evaluatorContext, AbstractInstantiableTemplate targetTemplate,
              Map<String, AbstractPropertyValue> properties, String propertyPath)
focal_class.full_signature: private static AbstractPropertyValue getFromPath(FunctionEvaluatorContext evaluatorContext, AbstractInstantiableTemplate targetTemplate,
              Map<String, AbstractPropertyValue> properties, String propertyPath)
focal_class.identifier: getFromPath
focal_class.modifiers: private static
focal_class.parameters: (FunctionEvaluatorContext evaluatorContext, AbstractInstantiableTemplate targetTemplate,
              Map<String, AbstractPropertyValue> properties, String propertyPath)
focal_class.return: AbstractPropertyValue
focal_class.signature: AbstractPropertyValue getFromPath(FunctionEvaluatorContext evaluatorContext, AbstractInstantiableTemplate targetTemplate,
              Map<String, AbstractPropertyValue> properties, String propertyPath)
focal_class.class_method_signature: FunctionEvaluator.concat(FunctionEvaluatorContext evaluatorContext, AbstractInstantiableTemplate template,
              Map<String, AbstractPropertyValue> properties, ConcatPropertyValue concatPropertyValue)
focal_class.full_signature: private static AbstractPropertyValue concat(FunctionEvaluatorContext evaluatorContext, AbstractInstantiableTemplate template,
              Map<String, AbstractPropertyValue> properties, ConcatPropertyValue concatPropertyValue)
focal_class.identifier: concat
focal_class.modifiers: private static
focal_class.parameters: (FunctionEvaluatorContext evaluatorContext, AbstractInstantiableTemplate template,
              Map<String, AbstractPropertyValue> properties, ConcatPropertyValue concatPropertyValue)
focal_class.return: AbstractPropertyValue
focal_class.signature: AbstractPropertyValue concat(FunctionEvaluatorContext evaluatorContext, AbstractInstantiableTemplate template,
              Map<String, AbstractPropertyValue> properties, ConcatPropertyValue concatPropertyValue)
focal_class.class_method_signature: FunctionEvaluator.containGetSecretFunction(AbstractPropertyValue propertyValue)
focal_class.full_signature: public static boolean containGetSecretFunction(AbstractPropertyValue propertyValue)
focal_class.identifier: containGetSecretFunction
focal_class.modifiers: public static
focal_class.parameters: (AbstractPropertyValue propertyValue)
focal_class.return: boolean
focal_class.signature: boolean containGetSecretFunction(AbstractPropertyValue propertyValue)
focal_method.body: public static AbstractPropertyValue tryResolveValue(FunctionEvaluatorContext evaluatorContext, AbstractInstantiableTemplate template,
              Map<String, AbstractPropertyValue> properties, AbstractPropertyValue evaluatedProperty) {
          if (evaluatedProperty == null) {
              // There is nothing to be evaluated.
              return null;
          }
          if (evaluatedProperty instanceof PropertyValue) {
              // This is a value already so just return it.
              return evaluatedProperty;
          }
          if (containGetSecretFunction(evaluatedProperty)) {
              return evaluatedProperty;
          }
          if (evaluatedProperty instanceof FunctionPropertyValue) {
              FunctionPropertyValue evaluatedFunction = (FunctionPropertyValue) evaluatedProperty;
              switch (evaluatedFunction.getFunction()) {
              case ToscaFunctionConstants.GET_INPUT:
                  String inputName = evaluatedFunction.getParameters().get(0);
                  return evaluatorContext.getInputs().get(inputName);
              case ToscaFunctionConstants.GET_PROPERTY:
                  // Perform the get property evaluation.
                  return getProperty(evaluatorContext, template, properties, evaluatedFunction);
              default:
                  throw new IllegalArgumentException("GET_ATTRIBUTE or GET_OPERATION_OUTPUT cannot be defined on a property.");
              }
          }
          if (evaluatedProperty instanceof ConcatPropertyValue) {
              // Perform the concat evaluation
              return concat(evaluatorContext, template, properties, (ConcatPropertyValue) evaluatedProperty);
          }
          throw new IllegalArgumentException("AbstractPropertyValue must be one of null, a secret, PropertyValue, FunctionPropertyValue or ConcatPropertyValue");
      }
focal_method.class_method_signature: FunctionEvaluator.tryResolveValue(FunctionEvaluatorContext evaluatorContext, AbstractInstantiableTemplate template,
              Map<String, AbstractPropertyValue> properties, AbstractPropertyValue evaluatedProperty)
focal_method.full_signature: public static AbstractPropertyValue tryResolveValue(FunctionEvaluatorContext evaluatorContext, AbstractInstantiableTemplate template,
              Map<String, AbstractPropertyValue> properties, AbstractPropertyValue evaluatedProperty)
focal_method.identifier: tryResolveValue
focal_method.invocations: containGetSecretFunction getFunction get getParameters get getInputs getProperty concat
focal_method.modifiers: public static
focal_method.parameters: (FunctionEvaluatorContext evaluatorContext, AbstractInstantiableTemplate template,
              Map<String, AbstractPropertyValue> properties, AbstractPropertyValue evaluatedProperty)
focal_method.return: AbstractPropertyValue
focal_method.signature: AbstractPropertyValue tryResolveValue(FunctionEvaluatorContext evaluatorContext, AbstractInstantiableTemplate template,
              Map<String, AbstractPropertyValue> properties, AbstractPropertyValue evaluatedProperty)