public ASTReader( IJavaProject iJavaProject, SystemObject existingSystemObject, IProgressMonitor monitor) { Set<ICompilationUnit> changedCompilationUnits = new LinkedHashSet<ICompilationUnit>(); Set<ICompilationUnit> addedCompilationUnits = new LinkedHashSet<ICompilationUnit>(); Set<ICompilationUnit> removedCompilationUnits = new LinkedHashSet<ICompilationUnit>(); CompilationUnitCache instance = CompilationUnitCache.getInstance(); for (ICompilationUnit changedCompilationUnit : instance.getChangedCompilationUnits()) { if (changedCompilationUnit.getJavaProject().equals(iJavaProject)) changedCompilationUnits.add(changedCompilationUnit); } for (ICompilationUnit addedCompilationUnit : instance.getAddedCompilationUnits()) { if (addedCompilationUnit.getJavaProject().equals(iJavaProject)) addedCompilationUnits.add(addedCompilationUnit); } for (ICompilationUnit removedCompilationUnit : instance.getRemovedCompilationUnits()) { if (removedCompilationUnit.getJavaProject().equals(iJavaProject)) removedCompilationUnits.add(removedCompilationUnit); } if (monitor != null) monitor.beginTask( "Parsing changed/added Compilation Units", changedCompilationUnits.size() + addedCompilationUnits.size()); systemObject = existingSystemObject; examinedProject = iJavaProject; for (ICompilationUnit removedCompilationUnit : removedCompilationUnits) { IFile removedCompilationUnitFile = (IFile) removedCompilationUnit.getResource(); systemObject.removeClasses(removedCompilationUnitFile); } for (ICompilationUnit changedCompilationUnit : changedCompilationUnits) { List<ClassObject> changedClassObjects = parseAST(changedCompilationUnit); for (ClassObject changedClassObject : changedClassObjects) { systemObject.replaceClass(changedClassObject); } if (monitor != null) monitor.worked(1); } for (ICompilationUnit addedCompilationUnit : addedCompilationUnits) { List<ClassObject> addedClassObjects = parseAST(addedCompilationUnit); for (ClassObject addedClassObject : addedClassObjects) { systemObject.addClass(addedClassObject); } if (monitor != null) monitor.worked(1); } instance.clearAffectedCompilationUnits(); if (monitor != null) monitor.done(); }