Program: 120885
Project: 120885
Buggy source:
@Override protected Object openDialogBox(Control cellEditorWindow){
  Shell shell=cellEditorWindow.getShell();
  if (type == CellValueType.BOOL) {
    ListStringValueDialog<String> dialog=new ListStringValueDialog<String>(shell,new String[]{"String_Node_Str","String_Node_Str"});
    if (dialog.open() == IDialogConstants.OK_ID) {
      return dialog.getSelectStr();
    }
  }
 else   if (type == CellValueType.SCHEMA_TYPE) {
    ListStringValueDialog<String> dialog=new ListStringValueDialog<String>(shell,new String[]{BUILT_IN,REPOSITORY});
    if (dialog.open() == IDialogConstants.OK_ID) {
      return dialog.getSelectStr();
    }
  }
 else   if (type == CellValueType.SCHEMA_ID) {
    RepositoryReviewDialog dialog=new RepositoryReviewDialog(shell,ERepositoryObjectType.METADATA_CON_TABLE);
    if (dialog.open() == IDialogConstants.OK_ID) {
      RepositoryNode node=dialog.getResult();
      while (node.getObject().getProperty().getItem() == null || (!(node.getObject().getProperty().getItem() instanceof ConnectionItem))) {
        node=node.getParent();
      }
      String id=dialog.getResult().getObject().getProperty().getId();
      String name=dialog.getResult().getObject().getLabel();
      String value=id + "String_Node_Str" + name;
      IMetadataTable repositoryMetadata=MetadataToolHelper.getMetadataFromRepository(value);
      List<IMetadataColumn> columns=repositoryMetadata.getListColumns();
      if (columns != null) {
        MetadataTableEditorView metadataEditorView=mapperManager.getUiManager().getMetadataEditorView(getZone());
        ExtendedTableModel<IMetadataColumn> extendedTableModel=metadataEditorView.getExtendedTableModel();
        List<IMetadataColumn> copyedAllList=new ArrayList<IMetadataColumn>(extendedTableModel.getBeansList());
        if (abstractDataMapTable instanceof OutputTable) {
          OutputTable outputTable=(OutputTable)abstractDataMapTable;
          List<IColumnEntry> oldOuputEntries=outputTable.getDataMapTableEntries();
          if (oldOuputEntries != null) {
            for (            IColumnEntry entry : oldOuputEntries) {
              if (entry instanceof OutputColumnTableEntry) {
                OutputColumnTableEntry outputEntry=(OutputColumnTableEntry)entry;
                String expression=outputEntry.getExpression();
                String columnname=outputEntry.getName();
                if (expression != null) {
                  oldMappingMap.put(columnname,expression);
                }
              }
            }
          }
        }
        extendedTableModel.removeAll(copyedAllList);
        for (        IMetadataColumn metaColumnToAdd : columns) {
          String label=metaColumnToAdd.getLabel();
          String expression=oldMappingMap.get(label);
          if (expression != null && !"String_Node_Str".equals(expression)) {
            metaColumnToAdd.setExpression(expression);
          }
        }
        extendedTableModel.addAll(columns);
        mapperManager.getUiManager().parseAllExpressionsForAllTables();
        oldMappingMap.clear();
        return value;
      }
    }
  }
  return null;
}

Fixed version (ground truth):
@Override protected Object openDialogBox(Control cellEditorWindow){
  Shell shell=cellEditorWindow.getShell();
  if (type == CellValueType.BOOL) {
    ListStringValueDialog<String> dialog=new ListStringValueDialog<String>(shell,new String[]{"String_Node_Str","String_Node_Str"});
    if (dialog.open() == IDialogConstants.OK_ID) {
      return dialog.getSelectStr();
    }
  }
 else   if (type == CellValueType.SCHEMA_TYPE) {
    ListStringValueDialog<String> dialog=new ListStringValueDialog<String>(shell,new String[]{BUILT_IN,REPOSITORY});
    if (dialog.open() == IDialogConstants.OK_ID) {
      return dialog.getSelectStr();
    }
  }
 else   if (type == CellValueType.SCHEMA_ID) {
    RepositoryReviewDialog dialog=new RepositoryReviewDialog(shell,ERepositoryObjectType.METADATA_CON_TABLE);
    if (dialog.open() == IDialogConstants.OK_ID) {
      RepositoryNode node=dialog.getResult();
      while (node.getObject().getProperty().getItem() == null || (!(node.getObject().getProperty().getItem() instanceof ConnectionItem))) {
        node=node.getParent();
      }
      String id=dialog.getResult().getObject().getProperty().getId();
      String name=dialog.getResult().getObject().getLabel();
      String value=id + "String_Node_Str" + name;
      IMetadataTable repositoryMetadata=MetadataToolHelper.getMetadataFromRepository(value);
      List<IMetadataColumn> columns=repositoryMetadata.getListColumns();
      if (columns != null) {
        MetadataTableEditorView metadataEditorView=mapperManager.getUiManager().getMetadataEditorView(getZone());
        ExtendedTableModel<IMetadataColumn> extendedTableModel=metadataEditorView.getExtendedTableModel();
        List<IMetadataColumn> copyedAllList=new ArrayList<IMetadataColumn>(extendedTableModel.getBeansList());
        if (abstractDataMapTable instanceof OutputTable) {
          OutputTable outputTable=(OutputTable)abstractDataMapTable;
          List<IColumnEntry> oldOuputEntries=outputTable.getDataMapTableEntries();
          if (oldOuputEntries != null) {
            for (            IColumnEntry entry : oldOuputEntries) {
              if (entry instanceof OutputColumnTableEntry) {
                OutputColumnTableEntry outputEntry=(OutputColumnTableEntry)entry;
                String expression=outputEntry.getExpression();
                String columnname=outputEntry.getName();
                if (expression != null) {
                  oldMappingMap.put(columnname,expression);
                }
              }
            }
          }
        }
        List<DataMapTableView> relatedOutputsTableView=mapperManager.getUiManager().getRelatedOutputsTableView(DataMapTableView.this);
        for (        IMetadataColumn metadataColumn : columns) {
          for (          DataMapTableView tableView : relatedOutputsTableView) {
            IDataMapTable retrieveAbstractDataMapTable=mapperManager.retrieveAbstractDataMapTable(tableView);
            String tableName=retrieveAbstractDataMapTable.getName();
            ITableEntry metadataTableEntry=mapperManager.retrieveTableEntry(new TableEntryLocation(tableName,metadataColumn.getLabel()));
            mapperManager.getUiManager().getOldMappingMap().put(tableName + "String_Node_Str" + metadataTableEntry.getName(),metadataTableEntry.getExpression());
          }
        }
        extendedTableModel.removeAll(copyedAllList);
        for (        IMetadataColumn metaColumnToAdd : columns) {
          String label=metaColumnToAdd.getLabel();
          String expression=oldMappingMap.get(label);
          if (expression != null && !"String_Node_Str".equals(expression)) {
            metaColumnToAdd.setExpression(expression);
          }
        }
        extendedTableModel.addAll(columns);
        mapperManager.getUiManager().parseAllExpressionsForAllTables();
        mapperManager.getUiManager().getOldMappingMap().clear();
        oldMappingMap.clear();
        return value;
      }
    }
  }
  return null;
}