Program: 138229
Project: 138229
Buggy source:
/** 
 * DOC mzhao Comment method "updateLineForJava".
 * @param combo
 */
private void updateLineForJava(final CCombo combo){
  Composite detailComp=widgetMap.get(combo);
  if (detailComp != null) {
    detailComp.dispose();
  }
  detailComp=new Composite(combo.getParent(),SWT.NONE);
  detailComp.setLayout(new GridLayout(4,false));
  final Text classNameText=new Text(detailComp,SWT.BORDER);
  classNameText.setLayoutData(new GridData(GridData.FILL_BOTH));
  classNameText.addModifyListener(new NeedToSetDirtyListener());
  ((GridData)classNameText.getLayoutData()).widthHint=250;
  final Text jarPathText=new Text(detailComp,SWT.BORDER);
  jarPathText.setLayoutData(new GridData(GridData.FILL_BOTH));
  jarPathText.addModifyListener(new NeedToSetDirtyListener());
  ((GridData)jarPathText.getLayoutData()).widthHint=350;
  Button button=new Button(detailComp,SWT.PUSH);
  button.setText("String_Node_Str");
  button.addSelectionListener(new SelectionAdapter(){
    public void widgetSelected(    SelectionEvent e){
      JavaUdiJarSelectDialog selectDialog=UDIUtils.createUdiJarCheckedTreeSelectionDialog(ResourceManager.getUDIJarFolder(),jarPathText.getText().split("String_Node_Str"));
      if (selectDialog.open() == Window.OK) {
        String path="String_Node_Str";
        for (        Object obj : selectDialog.getResult()) {
          if (obj instanceof File) {
            IFile file=ResourceManager.getRoot().getFile(new org.eclipse.core.runtime.Path(((File)obj).getPath()));
            if (!"String_Node_Str".equalsIgnoreCase(path)) {
              path+="String_Node_Str";
            }
            path+=file.getName();
            setDirty(true);
          }
        }
        jarPathText.setText(path);
        validateJavaUDI(classNameText,jarPathText);
        ProxyRepositoryManager.getInstance().save(Boolean.TRUE);
      }
    }
  }
);
  classNameText.addListener(SWT.Modify,new Listener(){
    public void handleEvent(    Event event){
      setClassNameForSave(classNameText.getText().toString());
      setJarPathForSave(jarPathText.getText().toString());
    }
  }
);
  combo.setData(PluginConstant.CLASS_NAME_TEXT,classNameText);
  combo.setData(PluginConstant.JAR_FILE_PATH,jarPathText);
  createExpressionDelButton(detailComp,combo);
  GridDataFactory.fillDefaults().align(SWT.FILL,SWT.FILL).grab(true,false).applyTo(detailComp);
  detailComp.getParent().layout();
  widgetMap.put(combo,detailComp);
  definitionSection.setExpanded(false);
  definitionSection.setExpanded(true);
}

Fixed version (ground truth):
/** 
 * DOC mzhao Comment method "updateLineForJava".
 * @param combo
 */
private void updateLineForJava(final CCombo combo){
  Composite detailComp=widgetMap.get(combo);
  if (detailComp != null) {
    detailComp.dispose();
  }
  detailComp=new Composite(combo.getParent(),SWT.NONE);
  detailComp.setLayout(new GridLayout(4,false));
  final Text classNameText=new Text(detailComp,SWT.BORDER);
  classNameText.setLayoutData(new GridData(GridData.FILL_BOTH));
  classNameText.addModifyListener(new NeedToSetDirtyListener());
  ((GridData)classNameText.getLayoutData()).widthHint=250;
  classNameText.addModifyListener(new ExpressTextModListener(combo));
  final Text jarPathText=new Text(detailComp,SWT.BORDER);
  jarPathText.setLayoutData(new GridData(GridData.FILL_BOTH));
  jarPathText.addModifyListener(new NeedToSetDirtyListener());
  ((GridData)jarPathText.getLayoutData()).widthHint=350;
  Button button=new Button(detailComp,SWT.PUSH);
  button.setText("String_Node_Str");
  button.addSelectionListener(new SelectionAdapter(){
    public void widgetSelected(    SelectionEvent e){
      JavaUdiJarSelectDialog selectDialog=UDIUtils.createUdiJarCheckedTreeSelectionDialog(ResourceManager.getUDIJarFolder(),jarPathText.getText().split("String_Node_Str"));
      if (selectDialog.open() == Window.OK) {
        String path="String_Node_Str";
        for (        Object obj : selectDialog.getResult()) {
          if (obj instanceof File) {
            IFile file=ResourceManager.getRoot().getFile(new org.eclipse.core.runtime.Path(((File)obj).getPath()));
            if (!"String_Node_Str".equalsIgnoreCase(path)) {
              path+="String_Node_Str";
            }
            path+=file.getName();
            setDirty(true);
          }
        }
        jarPathText.setText(path);
        validateJavaUDI(classNameText,jarPathText);
        ProxyRepositoryManager.getInstance().save(Boolean.TRUE);
      }
    }
  }
);
  classNameText.addListener(SWT.Modify,new Listener(){
    public void handleEvent(    Event event){
      setClassNameForSave(classNameText.getText().toString());
      setJarPathForSave(jarPathText.getText().toString());
    }
  }
);
  combo.setData(PluginConstant.CLASS_NAME_TEXT,classNameText);
  combo.setData(PluginConstant.JAR_FILE_PATH,jarPathText);
  createExpressionDelButton(detailComp,combo);
  GridDataFactory.fillDefaults().align(SWT.FILL,SWT.FILL).grab(true,false).applyTo(detailComp);
  detailComp.getParent().layout();
  widgetMap.put(combo,detailComp);
  definitionSection.setExpanded(false);
  definitionSection.setExpanded(true);
}