Community
Participate
Working Groups
Build 3.0M9 The following code for protecting reentering CP resolution should use a thread local to allow multiple thread to get an accurate value (and not an empty CP if calling at wrong time). IClasspathEntry[] infoPath = perProjectInfo.resolvedClasspath; if (infoPath != null && (returnResolutionInProgress || infoPath != RESOLUTION_IN_PROGRESS)) { if (JavaModelManager.CP_RESOLVE_VERBOSE) { if (infoPath == RESOLUTION_IN_PROGRESS) { Util.verbose ("CPResolution: Reentering Raw Classpath Resolution for project: "+ this.getElementName() + "\n will use empty classpath instead"); //$NON-NLS-1 $ //$NON-NLS-2$ new Exception("TRACE OF REENTERING CALL").printStackTrace(System.out); //$NON-NLS-1$ } } return infoPath; }
Changed JavaProject#getResolvedClasspath(boolean, boolean, boolean) to use a thread local HashSet (stored on the JavaModelManager). This set contains the Java projects whose classpath is being resolved.
Jerome, could you please verify this one? I don't know exactly what I am suppose to verify.
Verified