Program: 122021
Project: 122021
Buggy source:
@Override public void doSave(final IProgressMonitor monitor){
  IRepositoryService service=CorePlugin.getDefault().getRepositoryService();
  final IProxyRepositoryFactory repFactory=service.getProxyRepositoryFactory();
  try {
    repFactory.updateLockStatus();
    boolean locked=repFactory.getStatus(item) == ERepositoryStatus.LOCK_BY_USER;
    if (!locked) {
      repFactory.lock(item);
    }
  }
 catch (  Exception e) {
    ExceptionHandler.process(e);
  }
  ERepositoryStatus status=repFactory.getStatus(item);
  if (!status.equals(ERepositoryStatus.LOCK_BY_USER) && !repFactory.getRepositoryContext().isEditableAsReadOnly()) {
    MessageDialog.openWarning(getEditorSite().getShell(),Messages.getString("String_Node_Str"),Messages.getString("String_Node_Str"));
    return;
  }
  EList adapters=item.getProperty().eAdapters();
  adapters.remove(dirtyListener);
  super.doSave(monitor);
  try {
    ByteArray byteArray=item.getContent();
    byteArray.setInnerContentFromFile(((FileEditorInput)getEditorInput()).getFile());
    try {
      CorePlugin.getDefault().getRunProcessService().getJavaProject().getProject().build(IncrementalProjectBuilder.AUTO_BUILD,null);
    }
 catch (    CoreException e1) {
      ExceptionHandler.process(e1);
    }
    addProblems();
    String name="String_Node_Str";
    RepositoryWorkUnit<Object> repositoryWorkUnit=new RepositoryWorkUnit<Object>(name,this){
      @Override protected void run() throws LoginException, PersistenceException {
        refreshJobAndSave(repFactory);
      }
    }
;
    repFactory.executeRepositoryWorkUnit(repositoryWorkUnit);
  }
 catch (  Exception e) {
    ExceptionHandler.process(e);
  }
}

Fixed version (ground truth):
@Override public void doSave(final IProgressMonitor monitor){
  IRepositoryService service=CorePlugin.getDefault().getRepositoryService();
  final IProxyRepositoryFactory repFactory=service.getProxyRepositoryFactory();
  try {
    repFactory.updateLockStatus();
    boolean locked=repFactory.getStatus(item) == ERepositoryStatus.LOCK_BY_USER;
    if (!locked) {
      repFactory.lock(item);
    }
  }
 catch (  Exception e) {
    ExceptionHandler.process(e);
  }
  ERepositoryStatus status=repFactory.getStatus(item);
  if (!status.equals(ERepositoryStatus.LOCK_BY_USER)) {
    MessageDialog.openWarning(getEditorSite().getShell(),Messages.getString("String_Node_Str"),Messages.getString("String_Node_Str"));
    return;
  }
  EList adapters=item.getProperty().eAdapters();
  adapters.remove(dirtyListener);
  super.doSave(monitor);
  try {
    ByteArray byteArray=item.getContent();
    byteArray.setInnerContentFromFile(((FileEditorInput)getEditorInput()).getFile());
    try {
      CorePlugin.getDefault().getRunProcessService().getJavaProject().getProject().build(IncrementalProjectBuilder.AUTO_BUILD,null);
    }
 catch (    CoreException e1) {
      ExceptionHandler.process(e1);
    }
    addProblems();
    String name="String_Node_Str";
    RepositoryWorkUnit<Object> repositoryWorkUnit=new RepositoryWorkUnit<Object>(name,this){
      @Override protected void run() throws LoginException, PersistenceException {
        refreshJobAndSave(repFactory);
      }
    }
;
    repFactory.executeRepositoryWorkUnit(repositoryWorkUnit);
  }
 catch (  Exception e) {
    ExceptionHandler.process(e);
  }
}