List of usage examples for org.eclipse.jdt.internal.core JavaModelManager setClasspathBeingResolved
public void setClasspathBeingResolved(IJavaProject project, boolean classpathIsResolved)
From source file:org.eclipse.jdt.internal.core.JavaProject.java
License:Open Source License
public void resolveClasspath(PerProjectInfo perProjectInfo, boolean usePreviousSession, boolean addClasspathChange) throws JavaModelException { if (CP_RESOLUTION_BP_LISTENERS != null) breakpoint(1, this); JavaModelManager manager = JavaModelManager.getJavaModelManager(); boolean isClasspathBeingResolved = manager.isClasspathBeingResolved(this); try {// www.ja v a 2 s .c o m if (!isClasspathBeingResolved) { manager.setClasspathBeingResolved(this, true); } // get raw info inside a synchronized block to ensure that it is consistent IClasspathEntry[][] classpath = new IClasspathEntry[2][]; int timeStamp; synchronized (perProjectInfo) { classpath[0] = perProjectInfo.rawClasspath; classpath[1] = perProjectInfo.referencedEntries; // Checking null only for rawClasspath enough if (classpath[0] == null) classpath = perProjectInfo.readAndCacheClasspath(this); timeStamp = perProjectInfo.rawTimeStamp; } ResolvedClasspath result = resolveClasspath(classpath[0], classpath[1], usePreviousSession, true/*resolve chained libraries*/); if (CP_RESOLUTION_BP_LISTENERS != null) breakpoint(2, this); // store resolved info along with the raw info to ensure consistency perProjectInfo.setResolvedClasspath(result.resolvedClasspath, result.referencedEntries, result.rawReverseMap, result.rootPathToResolvedEntries, usePreviousSession ? PerProjectInfo.NEED_RESOLUTION : result.unresolvedEntryStatus, timeStamp, addClasspathChange); } finally { if (!isClasspathBeingResolved) { manager.setClasspathBeingResolved(this, false); } if (CP_RESOLUTION_BP_LISTENERS != null) breakpoint(3, this); } }