Program: 108689
Project: 108689
Buggy source:
@Override public void widgetSelected(final SelectionEvent arg0){
  if ((dataTypeCombo.getSelectionIndex() != -1) && (attribute != null)) {
    if ((model != null) && (model.getInputConfig().getInput() != null)) {
      String label=dataTypeCombo.getItem(dataTypeCombo.getSelectionIndex());
      DataTypeDescription<?> description=getDataType(label);
      DataType<?> type;
      if (description.getLabel().equals("String_Node_Str")) {
        final String text1=Resources.getMessage("String_Node_Str");
        final String text2=Resources.getMessage("String_Node_Str");
        String[] array=controller.actionShowOrderValuesDialog(text1,text2,DataType.STRING,getValuesAsArray());
        if (array == null) {
          type=DataType.STRING;
        }
 else {
          type=DataType.createOrderedString(array);
          if (!isValidDataType(type,getValuesAsList())) {
            type=DataType.STRING;
          }
        }
      }
 else       if (description.hasFormat()) {
        final String text1=Resources.getMessage("String_Node_Str");
        final String text2=Resources.getMessage("String_Node_Str");
        final String format=controller.actionShowFormatInputDialog(controller.getResources().getShell(),text1,text2,description,getValuesAsList());
        if (format == null) {
          type=DataType.STRING;
        }
 else {
          type=description.newInstance(format);
        }
      }
 else {
        type=description.newInstance();
        if (!isValidDataType(type,getValuesAsList())) {
          type=DataType.STRING;
        }
      }
      model.getInputConfig().getInput().getDefinition().setDataType(attribute,type);
      updateDataType();
      controller.update(new ModelEvent(outer,ModelPart.DATA_TYPE,attribute));
    }
  }
}

Fixed version (ground truth):
@Override public void widgetSelected(final SelectionEvent arg0){
  if ((dataTypeCombo.getSelectionIndex() != -1) && (attribute != null)) {
    if ((model != null) && (model.getInputConfig().getInput() != null)) {
      String label=dataTypeCombo.getItem(dataTypeCombo.getSelectionIndex());
      DataTypeDescription<?> description=getDataType(label);
      DataType<?> type;
      if (description.getLabel().equals("String_Node_Str")) {
        final String text1=Resources.getMessage("String_Node_Str");
        final String text2=Resources.getMessage("String_Node_Str");
        String[] array=controller.actionShowOrderValuesDialog(text1,text2,DataType.STRING,getValuesAsArray());
        if (array == null) {
          type=DataType.STRING;
        }
 else {
          try {
            type=DataType.createOrderedString(array);
            if (!isValidDataType(type,getValuesAsList())) {
              type=DataType.STRING;
            }
          }
 catch (          Exception e) {
            controller.actionShowInfoDialog("String_Node_Str","String_Node_Str" + e.getMessage());
            type=DataType.STRING;
          }
        }
      }
 else       if (description.hasFormat()) {
        final String text1=Resources.getMessage("String_Node_Str");
        final String text2=Resources.getMessage("String_Node_Str");
        final String format=controller.actionShowFormatInputDialog(controller.getResources().getShell(),text1,text2,description,getValuesAsList());
        if (format == null) {
          type=DataType.STRING;
        }
 else {
          type=description.newInstance(format);
        }
      }
 else {
        type=description.newInstance();
        if (!isValidDataType(type,getValuesAsList())) {
          type=DataType.STRING;
        }
      }
      model.getInputConfig().getInput().getDefinition().setDataType(attribute,type);
      updateDataType();
      controller.update(new ModelEvent(outer,ModelPart.DATA_TYPE,attribute));
    }
  }
}