### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: model/org/eclipse/jdt/internal/core/JavaElement.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaElement.java,v retrieving revision 1.138 diff -u -r1.138 JavaElement.java --- model/org/eclipse/jdt/internal/core/JavaElement.java 30 Mar 2010 05:39:36 -0000 1.138 +++ model/org/eclipse/jdt/internal/core/JavaElement.java 6 May 2010 10:18:40 -0000 @@ -31,6 +31,7 @@ import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jdt.internal.compiler.lookup.Binding; +import org.eclipse.jdt.internal.core.search.BasicSearchEngine; import org.eclipse.jdt.internal.core.util.MementoTokenizer; import org.eclipse.jdt.internal.core.util.Util; @@ -154,9 +155,14 @@ try { getElementInfo(); + //if (BasicSearchEngine.VERBOSE) + //System.out.println("JavaElement#exists " + this); //$NON-NLS-1$ return true; } catch (JavaModelException e) { // element doesn't exist: return false + if (BasicSearchEngine.VERBOSE) + System.out.println("Logged an exception for " + this); //$NON-NLS-1$ + Util.log(e); } return false; } Index: search/org/eclipse/jdt/internal/core/search/BasicSearchEngine.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/BasicSearchEngine.java,v retrieving revision 1.64 diff -u -r1.64 BasicSearchEngine.java --- search/org/eclipse/jdt/internal/core/search/BasicSearchEngine.java 16 Mar 2010 13:39:54 -0000 1.64 +++ search/org/eclipse/jdt/internal/core/search/BasicSearchEngine.java 6 May 2010 10:18:41 -0000 @@ -62,7 +62,7 @@ /** * For tracing purpose. */ - public static boolean VERBOSE = false; + public static boolean VERBOSE = true; /* * Creates a new search basic engine. Index: search/org/eclipse/jdt/internal/core/search/JavaSearchScope.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/JavaSearchScope.java,v retrieving revision 1.79 diff -u -r1.79 JavaSearchScope.java --- search/org/eclipse/jdt/internal/core/search/JavaSearchScope.java 7 Jan 2010 20:18:50 -0000 1.79 +++ search/org/eclipse/jdt/internal/core/search/JavaSearchScope.java 6 May 2010 10:18:41 -0000 @@ -581,6 +581,8 @@ * @see AbstractJavaSearchScope#packageFragmentRoot(String, int, String) */ public IPackageFragmentRoot packageFragmentRoot(String resourcePathString, int jarSeparatorIndex, String jarPath) { + if (BasicSearchEngine.VERBOSE) + System.out.println("packageFragmentRoot: PackageFragmentRoot for " + resourcePathString); //$NON-NLS-1$ int index = -1; boolean isJarFile = jarSeparatorIndex != -1; if (isJarFile) { @@ -592,10 +594,18 @@ index = indexOf(resourcePathString); } if (index >= 0) { + if (BasicSearchEngine.VERBOSE) { + System.out.println("packageFragmentRoot: PackageFragmentRoot RelativePath " + this.relativePaths[index]); //$NON-NLS-1$ + System.out.println("packageFragmentRoot: PackageFragmentRoot ContainerPath " + this.containerPaths[index]); //$NON-NLS-1$ + } int idx = this.projectIndexes[index]; String projectPath = idx == -1 ? null : (String) this.projectPaths.get(idx); + if (BasicSearchEngine.VERBOSE) + System.out.println("packageFragmentRoot: projectPath is " + projectPath); //$NON-NLS-1$ if (projectPath != null) { IJavaProject project =JavaCore.create(ResourcesPlugin.getWorkspace().getRoot().getProject(projectPath)); + if (BasicSearchEngine.VERBOSE) + System.out.println("packageFragmentRoot: project is " + project.getElementName()); //$NON-NLS-1$ if (isJarFile) { IResource resource = JavaModel.getWorkspaceTarget(new Path(jarPath)); if (resource != null) @@ -605,8 +615,12 @@ Object target = JavaModel.getWorkspaceTarget(new Path(this.containerPaths[index]+'/'+this.relativePaths[index])); if (target != null) { if (target instanceof IProject) { + if (BasicSearchEngine.VERBOSE) + System.out.println("packageFragmentRoot: project's target is " + ((IProject)target).getName()); //$NON-NLS-1$ return project.getPackageFragmentRoot((IProject) target); } + if (BasicSearchEngine.VERBOSE) + System.out.println("packageFragmentRoot: target is " + ((IResource)target).getName()); //$NON-NLS-1$ IJavaElement element = JavaModelManager.create((IResource) target, project); return (IPackageFragmentRoot) element.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT); } Index: search/org/eclipse/jdt/internal/core/search/TypeNameMatchRequestorWrapper.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/TypeNameMatchRequestorWrapper.java,v retrieving revision 1.15 diff -u -r1.15 TypeNameMatchRequestorWrapper.java --- search/org/eclipse/jdt/internal/core/search/TypeNameMatchRequestorWrapper.java 4 Dec 2009 09:12:10 -0000 1.15 +++ search/org/eclipse/jdt/internal/core/search/TypeNameMatchRequestorWrapper.java 6 May 2010 10:18:42 -0000 @@ -63,7 +63,7 @@ * Cache package fragment root information to optimize speed performance. */ private String lastPkgFragmentRootPath; - private IPackageFragmentRoot lastPkgFragmentRoot; + private PackageFragmentRoot lastPkgFragmentRoot; /** * Cache package handles to optimize memory. @@ -151,7 +151,7 @@ IPackageFragmentRoot root= ((AbstractJavaSearchScope)this.scope).packageFragmentRoot(resourcePath, separatorIndex, jarPath); if (root == null) return null; this.lastPkgFragmentRootPath= jarPath; - this.lastPkgFragmentRoot= root; + this.lastPkgFragmentRoot= (PackageFragmentRoot)root; this.packageHandles= new HashtableOfArrayToObject(5); } // create handle @@ -167,7 +167,7 @@ } IPackageFragment pkgFragment= (IPackageFragment) this.packageHandles.get(pkgName); if (pkgFragment == null) { - pkgFragment= ((PackageFragmentRoot) this.lastPkgFragmentRoot).getPackageFragment(pkgName); + pkgFragment= this.lastPkgFragmentRoot.getPackageFragment(pkgName); this.packageHandles.put(pkgName, pkgFragment); } return pkgFragment.getClassFile(simpleNames[length]).getType(); @@ -178,12 +178,15 @@ int rootPathLength = -1; if (this.lastPkgFragmentRootPath == null || !(resourcePath.startsWith(this.lastPkgFragmentRootPath) + && !org.eclipse.jdt.internal.compiler.util.Util.isExcluded(resourcePath.toCharArray(), this.lastPkgFragmentRoot.fullInclusionPatternChars(), this.lastPkgFragmentRoot.fullExclusionPatternChars(), false) && (rootPathLength = this.lastPkgFragmentRootPath.length()) > 0 && resourcePath.charAt(rootPathLength) == '/')) { PackageFragmentRoot root = (PackageFragmentRoot) ((AbstractJavaSearchScope)this.scope).packageFragmentRoot(resourcePath, -1/*not a jar*/, null/*no jar path*/); if (root == null) return null; this.lastPkgFragmentRoot = root; this.lastPkgFragmentRootPath = root.internalPath().toString(); + if (BasicSearchEngine.VERBOSE) + System.out.println("CreateTypeFromPath: PackageFragmentRoot " + this.lastPkgFragmentRoot + " and PackageFragmentRootPath " + this.lastPkgFragmentRootPath); //$NON-NLS-1$ //$NON-NLS-2$ this.packageHandles = new HashtableOfArrayToObject(5); } // create handle @@ -199,9 +202,12 @@ } IPackageFragment pkgFragment= (IPackageFragment) this.packageHandles.get(pkgName); if (pkgFragment == null) { - pkgFragment= ((PackageFragmentRoot) this.lastPkgFragmentRoot).getPackageFragment(pkgName); + pkgFragment= this.lastPkgFragmentRoot.getPackageFragment(pkgName); this.packageHandles.put(pkgName, pkgFragment); + System.out.println("CreateTypeFromPath: package Fragment not cached"); //$NON-NLS-1$ } + if (BasicSearchEngine.VERBOSE) + System.out.println("CreateTypeFromPath: Package Fragment for " + resourcePath + " is " + pkgFragment); //$NON-NLS-1$ //$NON-NLS-2$ String simpleName= simpleNames[length]; if (org.eclipse.jdt.internal.core.util.Util.isJavaLikeFileName(simpleName)) { ICompilationUnit unit= pkgFragment.getCompilationUnit(simpleName);