Program: 118531
Project: 118531
Buggy source:
protected boolean updateComponentProperties(Connection oldConnection,ComponentProperties componentProperties,Properties props){
  boolean modified=false;
  if (props != null) {
    for (    Object element : props.keySet()) {
      boolean changed=false;
      String propsKey=(String)element;
      String propsValue=props.getProperty(propsKey);
      if (propsValue != null && !"String_Node_Str".equals(propsValue.trim())) {
        try {
          String methodName=propsValue.substring(0,1).toUpperCase() + propsValue.substring(1);
          Object value=ReflectionUtils.invokeMethod(oldConnection,"String_Node_Str" + methodName,new Object[0]);
          if (value != null) {
            NamedThing namedThing=componentProperties.getProperty(propsKey);
            if (namedThing != null && namedThing instanceof org.talend.daikon.properties.Property) {
              org.talend.daikon.properties.Property property=(org.talend.daikon.properties.Property)namedThing;
              if (org.talend.daikon.properties.Property.Type.ENUM.equals(property.getType())) {
                Object obj=props.get(propsKey + "String_Node_Str" + value);
                if (obj != null) {
                  componentProperties.setValue(propsKey,obj);
                  changed=true;
                }
              }
              if (property.isFlag(org.talend.daikon.properties.Property.Flags.ENCRYPT)) {
                componentProperties.setValue(propsKey,CryptoHelper.getDefault().decrypt(String.valueOf(value)));
                modified=true;
              }
            }
            if (!changed) {
              componentProperties.setValue(propsKey,value);
              modified=true;
            }
          }
        }
 catch (        Exception e) {
        }
      }
    }
  }
  return modified;
}

Fixed version (ground truth):
protected boolean updateComponentProperties(Connection oldConnection,ComponentProperties componentProperties,Properties props){
  boolean modified=false;
  if (props != null) {
    for (    Object element : props.keySet()) {
      boolean changed=false;
      String propsKey=(String)element;
      String propsValue=props.getProperty(propsKey);
      if (propsValue != null && !"String_Node_Str".equals(propsValue.trim())) {
        try {
          String methodName=propsValue.substring(0,1).toUpperCase() + propsValue.substring(1);
          Object value=ReflectionUtils.invokeMethod(oldConnection,"String_Node_Str" + methodName,new Object[0]);
          if (value != null) {
            NamedThing namedThing=componentProperties.getProperty(propsKey);
            if (namedThing != null && namedThing instanceof org.talend.daikon.properties.Property) {
              org.talend.daikon.properties.Property property=(org.talend.daikon.properties.Property)namedThing;
              if (org.talend.daikon.properties.Property.Type.ENUM.equals(property.getType())) {
                Object obj=props.get(propsKey + "String_Node_Str" + value);
                if (obj != null) {
                  componentProperties.setValue(propsKey,obj);
                  changed=true;
                }
              }
              if (property.isFlag(org.talend.daikon.properties.Property.Flags.ENCRYPT) && !oldConnection.isContextMode()) {
                componentProperties.setValue(propsKey,CryptoHelper.getDefault().decrypt(String.valueOf(value)));
                modified=true;
                changed=true;
              }
            }
            if (!changed) {
              componentProperties.setValue(propsKey,value);
              modified=true;
            }
            NamedThing tmp=componentProperties.getProperty(propsKey);
            if (tmp instanceof org.talend.daikon.properties.Property) {
              org.talend.daikon.properties.Property property=(org.talend.daikon.properties.Property)tmp;
              property.setTaggedValue(IGenericConstants.REPOSITORY_VALUE,property.getName());
            }
          }
        }
 catch (        Exception e) {
        }
      }
    }
  }
  return modified;
}