Program: 118255
Project: 118255
Buggy source:
public static boolean checkExportErrors(IStructuredSelection selection,boolean isJob){
  if (!selection.isEmpty()) {
    final ITalendSynchronizer synchronizer=CorePlugin.getDefault().getCodeGeneratorService().createRoutineSynchronizer();
    Set<String> jobIds=new HashSet<String>();
    List<RepositoryNode> nodes=selection.toList();
    if (nodes.size() > 1) {
      for (      RepositoryNode node : nodes) {
        Item item=node.getObject().getProperty().getItem();
        try {
          IFile sourceFile=synchronizer.getFile(item);
          if (sourceFile == null) {
            return false;
          }
          boolean ret=false;
          IMarker[] markers=sourceFile.findMarkers(IMarker.PROBLEM,true,IResource.DEPTH_ONE);
          for (          IMarker marker : markers) {
            Integer lineNr=(Integer)marker.getAttribute(IMarker.LINE_NUMBER);
            String message=(String)marker.getAttribute(IMarker.MESSAGE);
            Integer severity=(Integer)marker.getAttribute(IMarker.SEVERITY);
            Integer start=(Integer)marker.getAttribute(IMarker.CHAR_START);
            Integer end=(Integer)marker.getAttribute(IMarker.CHAR_END);
            if (lineNr != null && message != null && severity != null && start != null && end != null) {
switch (severity) {
case IMarker.SEVERITY_ERROR:
                ret=true;
              break;
default :
            break;
        }
      }
    }
    if (ret) {
      if (isJob) {
        throw new ProcessorException(Messages.getString("String_Node_Str") + '\n' + Messages.getString("String_Node_Str",item.getProperty().getLabel()));
      }
 else {
        throw new ProcessorException(Messages.getString("String_Node_Str") + '\n' + Messages.getString("String_Node_Str",item.getProperty().getLabel()));
      }
    }
    jobIds.add(item.getProperty().getId());
    Problems.addRoutineFile(sourceFile,ProblemType.JOB,item.getProperty().getLabel(),item.getProperty().getVersion(),true);
  }
 catch (  Exception e) {
    MessageBoxExceptionHandler.process(e);
    return true;
  }
}
}
 else {
try {
  checkLastGenerationHasCompilationError(true);
}
 catch (Exception e) {
  if (CommonsPlugin.isHeadless()) {
    CommonExceptionHandler.process(e);
    throw new RuntimeException(e);
  }
  MessageBoxExceptionHandler.process(e);
  return true;
}
}
for (RepositoryNode node : nodes) {
Item item=node.getObject().getProperty().getItem();
IDesignerCoreService service=CorePlugin.getDefault().getDesignerCoreService();
IProcess process=service.getProcessFromItem(item);
if (process instanceof IProcess2) {
  ((IProcess2)process).checkProcess();
}
}
Problems.refreshProblemTreeView();
List<Problem> errors=Problems.getProblemList().getProblemsBySeverity(ProblemStatus.ERROR);
ErrorDetailTreeBuilder builder=new ErrorDetailTreeBuilder();
List<JobErrorEntry> input=builder.createTreeInput(errors,jobIds);
try {
if (input.size() > 0) {
  String label=input.get(0).getLabel();
  if (isJob) {
    throw new ProcessorException(Messages.getString("String_Node_Str") + '\n' + Messages.getString("String_Node_Str",label));
  }
 else {
    throw new ProcessorException(Messages.getString("String_Node_Str") + '\n' + Messages.getString("String_Node_Str",label));
  }
}
}
 catch (Exception e) {
MessageBoxExceptionHandler.process(e);
return true;
}
}
return false;
}

Fixed version (ground truth):
public static boolean checkExportErrors(IStructuredSelection selection,boolean isJob){
  if (!selection.isEmpty()) {
    final ITalendSynchronizer synchronizer=CorePlugin.getDefault().getCodeGeneratorService().createRoutineSynchronizer();
    Set<String> jobIds=new HashSet<String>();
    List<RepositoryNode> nodes=selection.toList();
    if (nodes.size() > 1) {
      for (      RepositoryNode node : nodes) {
        Item item=node.getObject().getProperty().getItem();
        try {
          IFile sourceFile=synchronizer.getFile(item);
          if (sourceFile == null) {
            return false;
          }
          boolean ret=false;
          String message=null;
          IMarker[] markers=sourceFile.findMarkers(IMarker.PROBLEM,true,IResource.DEPTH_ONE);
          for (          IMarker marker : markers) {
            Integer lineNr=(Integer)marker.getAttribute(IMarker.LINE_NUMBER);
            message=(String)marker.getAttribute(IMarker.MESSAGE);
            Integer severity=(Integer)marker.getAttribute(IMarker.SEVERITY);
            Integer start=(Integer)marker.getAttribute(IMarker.CHAR_START);
            Integer end=(Integer)marker.getAttribute(IMarker.CHAR_END);
            if (lineNr != null && message != null && severity != null && start != null && end != null) {
switch (severity) {
case IMarker.SEVERITY_ERROR:
                ret=true;
              break;
default :
            break;
        }
      }
    }
    if (ret) {
      if (isJob) {
        throw new ProcessorException(Messages.getString("String_Node_Str") + '\n' + Messages.getString("String_Node_Str",item.getProperty().getLabel())+ '\n'+ message);
      }
 else {
        throw new ProcessorException(Messages.getString("String_Node_Str") + '\n' + Messages.getString("String_Node_Str",item.getProperty().getLabel())+ '\n'+ message);
      }
    }
    jobIds.add(item.getProperty().getId());
    Problems.addRoutineFile(sourceFile,ProblemType.JOB,item.getProperty().getLabel(),item.getProperty().getVersion(),true);
  }
 catch (  Exception e) {
    MessageBoxExceptionHandler.process(e);
    return true;
  }
}
}
 else {
try {
  checkLastGenerationHasCompilationError(true);
}
 catch (Exception e) {
  if (CommonsPlugin.isHeadless()) {
    CommonExceptionHandler.process(e);
    throw new RuntimeException(e);
  }
  MessageBoxExceptionHandler.process(e);
  return true;
}
}
for (RepositoryNode node : nodes) {
Item item=node.getObject().getProperty().getItem();
IDesignerCoreService service=CorePlugin.getDefault().getDesignerCoreService();
IProcess process=service.getProcessFromItem(item);
if (process instanceof IProcess2) {
  ((IProcess2)process).checkProcess();
}
}
Problems.refreshProblemTreeView();
List<Problem> errors=Problems.getProblemList().getProblemsBySeverity(ProblemStatus.ERROR);
ErrorDetailTreeBuilder builder=new ErrorDetailTreeBuilder();
List<JobErrorEntry> input=builder.createTreeInput(errors,jobIds);
try {
if (input.size() > 0) {
  String label=input.get(0).getLabel();
  if (isJob) {
    throw new ProcessorException(Messages.getString("String_Node_Str") + '\n' + Messages.getString("String_Node_Str",label));
  }
 else {
    throw new ProcessorException(Messages.getString("String_Node_Str") + '\n' + Messages.getString("String_Node_Str",label));
  }
}
}
 catch (Exception e) {
MessageBoxExceptionHandler.process(e);
return true;
}
}
return false;
}