Program: 122008
Project: 122008
Buggy source:
public IHashConfiguration getHashConfiguration(String connectionName){
  IHashConfiguration hashConfigurationForMapper=null;
  XmlMapData externalData=(XmlMapData)getExternalEmfData();
  List<InputXmlTree> inputTables=externalData.getInputTrees();
  List<IHashableColumn> hashableColumns=new ArrayList<IHashableColumn>();
  for (  InputXmlTree inputTable : inputTables) {
    if (inputTable.getName().equals(connectionName)) {
      List<TreeNode> metadataTableEntries=inputTable.getNodes();
      if (metadataTableEntries != null) {
        int metadataTableEntriesListSize=metadataTableEntries.size();
        for (int i=0; i < metadataTableEntriesListSize; i++) {
          TreeNode entry=metadataTableEntries.get(i);
          if (entry.getExpression() != null && !entry.getExpression().trim().equals("String_Node_Str")) {
            hashableColumns.add(new HashableColumn(entry.getName(),i));
          }
        }
      }
      IMatchingMode matchingMode=MATCHING_MODE.parse(inputTable.getMatchingMode());
      if (matchingMode == null) {
        matchingMode=MATCHING_MODE.UNIQUE_MATCH;
      }
      ILookupMode lookupMode=org.talend.designer.xmlmap.model.tree.LOOKUP_MODE.parse(inputTable.getLookupMode());
      if (lookupMode == null) {
        lookupMode=org.talend.designer.xmlmap.model.tree.LOOKUP_MODE.LOAD_ONCE;
      }
      IElementParameter tempFolderElem=getElementParameter("String_Node_Str");
      String tempFolder=null;
      if (tempFolderElem != null) {
        tempFolder=(String)tempFolderElem.getValue();
      }
      if (("String_Node_Str").equals(tempFolder)) {
        tempFolder=(String)this.getProcess().getElementParameter("String_Node_Str").getValue() + "String_Node_Str";
        tempFolder=TalendTextUtils.addQuotes(tempFolder);
      }
      IElementParameter rowsBufferSizeElem=getElementParameter("String_Node_Str");
      String rowsBufferSize=null;
      if (rowsBufferSizeElem != null) {
        rowsBufferSize=(String)rowsBufferSizeElem.getValue();
      }
      hashConfigurationForMapper=new HashConfiguration(hashableColumns,matchingMode,inputTable.isPersistent(),tempFolder,rowsBufferSize);
      break;
    }
  }
  return hashConfigurationForMapper;
}

Fixed version (ground truth):
@Override public IHashConfiguration getHashConfiguration(String connectionName){
  IHashConfiguration hashConfigurationForMapper=null;
  XmlMapData externalData=(XmlMapData)getExternalEmfData();
  List<InputXmlTree> inputTables=externalData.getInputTrees();
  List<IHashableColumn> hashableColumns=new ArrayList<IHashableColumn>();
  for (  InputXmlTree inputTable : inputTables) {
    if (inputTable.getName().equals(connectionName)) {
      List<TreeNode> metadataTableEntries=inputTable.getNodes();
      if (metadataTableEntries != null) {
        int metadataTableEntriesListSize=metadataTableEntries.size();
        for (int i=0; i < metadataTableEntriesListSize; i++) {
          TreeNode entry=metadataTableEntries.get(i);
          if (entry.getExpression() != null && !entry.getExpression().trim().equals("String_Node_Str")) {
            hashableColumns.add(new HashableColumn(entry.getName(),i));
          }
        }
      }
      IMatchingMode matchingMode=MATCHING_MODE.parse(inputTable.getMatchingMode());
      if (matchingMode == null) {
        matchingMode=MATCHING_MODE.UNIQUE_MATCH;
      }
      ILookupMode lookupMode=org.talend.designer.xmlmap.model.tree.LOOKUP_MODE.parse(inputTable.getLookupMode());
      if (lookupMode == null) {
        lookupMode=org.talend.designer.xmlmap.model.tree.LOOKUP_MODE.LOAD_ONCE;
      }
      IElementParameter tempFolderElem=getElementParameter("String_Node_Str");
      String tempFolder=null;
      if (tempFolderElem != null) {
        tempFolder=(String)tempFolderElem.getValue();
      }
      if (("String_Node_Str").equals(tempFolder)) {
        tempFolder=(String)this.getProcess().getElementParameter("String_Node_Str").getValue() + "String_Node_Str";
        tempFolder=TalendTextUtils.addQuotes(tempFolder);
      }
      IElementParameter rowsBufferSizeElem=getElementParameter("String_Node_Str");
      String rowsBufferSize=null;
      if (rowsBufferSizeElem != null) {
        rowsBufferSize=(String)rowsBufferSizeElem.getValue();
      }
      hashConfigurationForMapper=new HashConfiguration(hashableColumns,matchingMode,inputTable.isPersistent(),tempFolder,rowsBufferSize);
      break;
    }
  }
  return hashConfigurationForMapper;
}