Program: 121868
Project: 121868
Buggy source:
@Override public void execute(){
  node.setPropertyValue(propName,newPropValue);
  if (node.isExternalNode() && !node.isELTComponent()) {
    for (    IElementParameter parameter : node.getElementParameters()) {
      if (parameter.getFieldType() == EParameterFieldType.TABLE) {
        if (!node.getMetadataList().isEmpty() && !node.getMetadataList().get(0).sameMetadataAs(newOutputMetadata)) {
          parameter.setValue(new ArrayList<Map<String,Object>>());
        }
      }
    }
  }
  if (node.isELTComponent()) {
    IElementParameter schemaParam=node.getElementParameter("String_Node_Str");
    if (schemaParam != null && schemaParam.getValue() != null && newPropValue != null && connection.isContextMode() && ContextParameterUtils.isContainContextParam(schemaParam.getValue().toString())) {
      ConnectionItem connectionItem=MetadataToolHelper.getConnectionItemFromRepository(newPropValue.toString());
      ConnectionContextHelper.addContextForNodeParameter(node,connectionItem,false);
    }
  }
  node.getElementParameter(EParameterName.UPDATE_COMPONENTS.getName()).setValue(true);
  if (newOutputMetadata != null) {
    setDBTableFieldValue(node,newOutputMetadata.getTableName(),oldOutputMetadata.getTableName());
    IElementParameter parameter=node.getElementParameter("String_Node_Str");
    if (parameter != null) {
      setSAPFunctionName(node,parameter.getValue() == null ? null : (String)parameter.getValue());
    }
  }
  super.execute();
  String propertyType=(String)node.getPropertyValue(EParameterName.PROPERTY_TYPE.getName());
  if (propertyType != null) {
    if (propertyType.equals(EmfComponent.REPOSITORY)) {
      String propertyValue=(String)node.getPropertyValue(EParameterName.REPOSITORY_PROPERTY_TYPE.getName());
      IRepositoryViewObject lastVersion=UpdateRepositoryUtils.getRepositoryObjectById(propertyValue);
      if (lastVersion == null) {
        return;
      }
      Item item=lastVersion.getProperty().getItem();
      if (item instanceof ConnectionItem) {
        for (        IElementParameter param : node.getElementParameters()) {
          if (param.getRepositoryValue() != null && !param.getRepositoryValue().equals("String_Node_Str")) {
            boolean isCustomSfConn=false;
            if (item instanceof SalesforceSchemaConnectionItem) {
              SalesforceSchemaConnection sfConn=(SalesforceSchemaConnection)((SalesforceSchemaConnectionItem)item).getConnection();
              isCustomSfConn=sfConn.isUseCustomModuleName();
            }
            if (param.getRepositoryValue().equals("String_Node_Str") || (param.getRepositoryValue().equals("String_Node_Str") && item instanceof SalesforceSchemaConnectionItem && !isCustomSfConn)) {
              continue;
            }
            if (param.getFieldType().equals(EParameterFieldType.TABLE) && param.getRepositoryValue().equals("String_Node_Str")) {
              List<Map<String,Object>> table=(List<Map<String,Object>>)node.getPropertyValue(param.getName());
              IMetadataTable metaTable=node.getMetadataList().get(0);
              RepositoryToComponentProperty.getTableXmlFileValue(((ConnectionItem)item).getConnection(),"String_Node_Str",param,table,newOutputMetadata);
              param.setRepositoryValueUsed(true);
            }
 else {
              String componentName=node.getComponent().getName();
              if (connection != null && (xmlComponent[0].equals(componentName) || xmlComponent[1].equals(componentName) || xmlComponent[2].equals(componentName)) && connection instanceof XmlFileConnection && XmlUtil.isXSDFile(TalendQuoteUtils.removeQuotes(((XmlFileConnection)connection).getXmlFilePath())) && param.getRepositoryValue().equals("String_Node_Str")) {
              }
 else {
                Object value=RepositoryToComponentProperty.getValue(((ConnectionItem)item).getConnection(),param.getRepositoryValue(),newOutputMetadata);
                if (value != null) {
                  param.setValue(value);
                }
              }
            }
          }
        }
      }
    }
  }
  node.setPropertyValue(EParameterName.UPDATE_COMPONENTS.getName(),Boolean.TRUE);
}

Fixed version (ground truth):
@Override public void execute(){
  node.setPropertyValue(propName,newPropValue);
  if (node.isExternalNode() && !node.isELTComponent()) {
    for (    IElementParameter parameter : node.getElementParameters()) {
      if (parameter.getFieldType() == EParameterFieldType.TABLE) {
        if (!node.getMetadataList().isEmpty() && !node.getMetadataList().get(0).sameMetadataAs(newOutputMetadata)) {
          parameter.setValue(new ArrayList<Map<String,Object>>());
        }
      }
    }
  }
  if (node.isELTComponent()) {
    IElementParameter schemaParam=node.getElementParameter("String_Node_Str");
    if (schemaParam != null && schemaParam.getValue() != null && newPropValue != null && connection != null && connection.isContextMode() && ContextParameterUtils.isContainContextParam(schemaParam.getValue().toString())) {
      ConnectionItem connectionItem=MetadataToolHelper.getConnectionItemFromRepository(newPropValue.toString());
      ConnectionContextHelper.addContextForNodeParameter(node,connectionItem,false);
    }
  }
  node.getElementParameter(EParameterName.UPDATE_COMPONENTS.getName()).setValue(true);
  if (newOutputMetadata != null) {
    setDBTableFieldValue(node,newOutputMetadata.getTableName(),oldOutputMetadata.getTableName());
    IElementParameter parameter=node.getElementParameter("String_Node_Str");
    if (parameter != null) {
      setSAPFunctionName(node,parameter.getValue() == null ? null : (String)parameter.getValue());
    }
  }
  super.execute();
  String propertyType=(String)node.getPropertyValue(EParameterName.PROPERTY_TYPE.getName());
  if (propertyType != null) {
    if (propertyType.equals(EmfComponent.REPOSITORY)) {
      String propertyValue=(String)node.getPropertyValue(EParameterName.REPOSITORY_PROPERTY_TYPE.getName());
      IRepositoryViewObject lastVersion=UpdateRepositoryUtils.getRepositoryObjectById(propertyValue);
      if (lastVersion == null) {
        return;
      }
      Item item=lastVersion.getProperty().getItem();
      if (item instanceof ConnectionItem) {
        for (        IElementParameter param : node.getElementParameters()) {
          if (param.getRepositoryValue() != null && !param.getRepositoryValue().equals("String_Node_Str")) {
            boolean isCustomSfConn=false;
            if (item instanceof SalesforceSchemaConnectionItem) {
              SalesforceSchemaConnection sfConn=(SalesforceSchemaConnection)((SalesforceSchemaConnectionItem)item).getConnection();
              isCustomSfConn=sfConn.isUseCustomModuleName();
            }
            if (param.getRepositoryValue().equals("String_Node_Str") || (param.getRepositoryValue().equals("String_Node_Str") && item instanceof SalesforceSchemaConnectionItem && !isCustomSfConn)) {
              continue;
            }
            if (param.getFieldType().equals(EParameterFieldType.TABLE) && param.getRepositoryValue().equals("String_Node_Str")) {
              List<Map<String,Object>> table=(List<Map<String,Object>>)node.getPropertyValue(param.getName());
              IMetadataTable metaTable=node.getMetadataList().get(0);
              RepositoryToComponentProperty.getTableXmlFileValue(((ConnectionItem)item).getConnection(),"String_Node_Str",param,table,newOutputMetadata);
              param.setRepositoryValueUsed(true);
            }
 else {
              String componentName=node.getComponent().getName();
              if (connection != null && (xmlComponent[0].equals(componentName) || xmlComponent[1].equals(componentName) || xmlComponent[2].equals(componentName)) && connection instanceof XmlFileConnection && XmlUtil.isXSDFile(TalendQuoteUtils.removeQuotes(((XmlFileConnection)connection).getXmlFilePath())) && param.getRepositoryValue().equals("String_Node_Str")) {
              }
 else {
                Object value=RepositoryToComponentProperty.getValue(((ConnectionItem)item).getConnection(),param.getRepositoryValue(),newOutputMetadata);
                if (value != null) {
                  param.setValue(value);
                }
              }
            }
          }
        }
      }
    }
  }
  node.setPropertyValue(EParameterName.UPDATE_COMPONENTS.getName(),Boolean.TRUE);
}