Program: 118403
Project: 118403
Buggy source:
@Override public Object evaluate(Property property,Object storedValue){
  if (storedValue == null) {
    return storedValue;
  }
  List<?> possibleValues=property.getPossibleValues();
  if (possibleValues != null) {
    if (storedValue instanceof String && !ContextParameterUtils.isContainContextParam((String)storedValue)) {
      for (      Object possibleValue : possibleValues) {
        if (possibleValue.toString().equals(storedValue)) {
          return possibleValue;
        }
      }
    }
  }
  if (storedValue instanceof Schema || storedValue instanceof List || storedValue instanceof Enum|| storedValue instanceof Boolean) {
    return storedValue;
  }
  IContext context=null;
  if (node != null) {
    IProcess process=node.getProcess();
    if (process != null) {
      IContextManager cm=process.getContextManager();
      if (cm != null) {
        context=cm.getDefaultContext();
      }
    }
  }
  String stringStoredValue=String.valueOf(storedValue);
  if (context != null && ContextParameterUtils.isContainContextParam(stringStoredValue)) {
    String valueFromContext=ContextParameterUtils.parseScriptContextCode(stringStoredValue,context);
    if (GenericTypeUtils.isBooleanType(property)) {
      return new Boolean(valueFromContext);
    }
    if (GenericTypeUtils.isIntegerType(property) && !valueFromContext.isEmpty()) {
      try {
        return Integer.valueOf(valueFromContext);
      }
 catch (      Exception e) {
        return 0;
      }
    }
    if (GenericTypeUtils.isEnumType(property)) {
      List<?> propertyPossibleValues=((Property<?>)property).getPossibleValues();
      if (propertyPossibleValues != null) {
        for (        Object possibleValue : propertyPossibleValues) {
          if (possibleValue.toString().equals(valueFromContext)) {
            return possibleValue;
          }
        }
      }
    }
    if (valueFromContext != null) {
      return valueFromContext;
    }
  }
  if (GenericTypeUtils.isStringType(property)) {
    return TalendQuoteUtils.removeQuotes(String.valueOf(storedValue));
  }
  return storedValue;
}

Fixed version (ground truth):
@Override public Object evaluate(Property property,Object storedValue){
  if (storedValue == null) {
    return storedValue;
  }
  List<?> possibleValues=property.getPossibleValues();
  if (possibleValues != null) {
    if (storedValue instanceof String && !ContextParameterUtils.isContainContextParam((String)storedValue)) {
      for (      Object possibleValue : possibleValues) {
        if (possibleValue.toString().equals(storedValue)) {
          return possibleValue;
        }
      }
    }
  }
  if (storedValue instanceof Schema || storedValue instanceof List || storedValue instanceof Enum|| storedValue instanceof Boolean) {
    return storedValue;
  }
  IContext context=null;
  if (node != null) {
    IProcess process=node.getProcess();
    if (process != null) {
      IContextManager cm=process.getContextManager();
      if (cm != null) {
        context=cm.getDefaultContext();
      }
    }
  }
  String stringStoredValue=String.valueOf(storedValue);
  if (context != null && ContextParameterUtils.isContainContextParam(stringStoredValue)) {
    stringStoredValue=ContextParameterUtils.parseScriptContextCode(stringStoredValue,context);
  }
  return getTypedValue(property,stringStoredValue);
}