Lines 66-72
Link Here
|
66 |
* Cache package fragment root information to optimize speed performance. |
66 |
* Cache package fragment root information to optimize speed performance. |
67 |
*/ |
67 |
*/ |
68 |
private String lastPkgFragmentRootPath; |
68 |
private String lastPkgFragmentRootPath; |
69 |
private IPackageFragmentRoot lastPkgFragmentRoot; |
69 |
private PackageFragmentRoot lastPkgFragmentRoot; |
70 |
|
70 |
|
71 |
/** |
71 |
/** |
72 |
* Cache package handles to optimize memory. |
72 |
* Cache package handles to optimize memory. |
Lines 156-162
Link Here
|
156 |
IPackageFragmentRoot root= ((AbstractJavaSearchScope)this.scope).packageFragmentRoot(resourcePath, separatorIndex, jarPath); |
156 |
IPackageFragmentRoot root= ((AbstractJavaSearchScope)this.scope).packageFragmentRoot(resourcePath, separatorIndex, jarPath); |
157 |
if (root == null) return null; |
157 |
if (root == null) return null; |
158 |
this.lastPkgFragmentRootPath= jarPath; |
158 |
this.lastPkgFragmentRootPath= jarPath; |
159 |
this.lastPkgFragmentRoot= root; |
159 |
this.lastPkgFragmentRoot= (PackageFragmentRoot)root; |
160 |
this.packageHandles= new HashtableOfArrayToObject(5); |
160 |
this.packageHandles= new HashtableOfArrayToObject(5); |
161 |
} |
161 |
} |
162 |
// create handle |
162 |
// create handle |
Lines 172-178
Link Here
|
172 |
} |
172 |
} |
173 |
IPackageFragment pkgFragment= (IPackageFragment) this.packageHandles.get(pkgName); |
173 |
IPackageFragment pkgFragment= (IPackageFragment) this.packageHandles.get(pkgName); |
174 |
if (pkgFragment == null) { |
174 |
if (pkgFragment == null) { |
175 |
pkgFragment= ((PackageFragmentRoot) this.lastPkgFragmentRoot).getPackageFragment(pkgName); |
175 |
pkgFragment= this.lastPkgFragmentRoot.getPackageFragment(pkgName); |
176 |
// filter org.apache.commons.lang.enum package for projects above 1.5 |
176 |
// filter org.apache.commons.lang.enum package for projects above 1.5 |
177 |
// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=317264 |
177 |
// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=317264 |
178 |
if (length == 5 && pkgName[4].equals("enum")) { //$NON-NLS-1$ |
178 |
if (length == 5 && pkgName[4].equals("enum")) { //$NON-NLS-1$ |
Lines 195-200
Link Here
|
195 |
int rootPathLength = -1; |
195 |
int rootPathLength = -1; |
196 |
if (this.lastPkgFragmentRootPath == null |
196 |
if (this.lastPkgFragmentRootPath == null |
197 |
|| !(resourcePath.startsWith(this.lastPkgFragmentRootPath) |
197 |
|| !(resourcePath.startsWith(this.lastPkgFragmentRootPath) |
|
|
198 |
&& !org.eclipse.jdt.internal.compiler.util.Util.isExcluded(resourcePath.toCharArray(), this.lastPkgFragmentRoot.fullInclusionPatternChars(), this.lastPkgFragmentRoot.fullExclusionPatternChars(), false) |
198 |
&& (rootPathLength = this.lastPkgFragmentRootPath.length()) > 0 |
199 |
&& (rootPathLength = this.lastPkgFragmentRootPath.length()) > 0 |
199 |
&& resourcePath.charAt(rootPathLength) == '/')) { |
200 |
&& resourcePath.charAt(rootPathLength) == '/')) { |
200 |
PackageFragmentRoot root = (PackageFragmentRoot) ((AbstractJavaSearchScope)this.scope).packageFragmentRoot(resourcePath, -1/*not a jar*/, null/*no jar path*/); |
201 |
PackageFragmentRoot root = (PackageFragmentRoot) ((AbstractJavaSearchScope)this.scope).packageFragmentRoot(resourcePath, -1/*not a jar*/, null/*no jar path*/); |
Lines 216-222
Link Here
|
216 |
} |
217 |
} |
217 |
IPackageFragment pkgFragment= (IPackageFragment) this.packageHandles.get(pkgName); |
218 |
IPackageFragment pkgFragment= (IPackageFragment) this.packageHandles.get(pkgName); |
218 |
if (pkgFragment == null) { |
219 |
if (pkgFragment == null) { |
219 |
pkgFragment= ((PackageFragmentRoot) this.lastPkgFragmentRoot).getPackageFragment(pkgName); |
220 |
pkgFragment= this.lastPkgFragmentRoot.getPackageFragment(pkgName); |
220 |
this.packageHandles.put(pkgName, pkgFragment); |
221 |
this.packageHandles.put(pkgName, pkgFragment); |
221 |
} |
222 |
} |
222 |
String simpleName= simpleNames[length]; |
223 |
String simpleName= simpleNames[length]; |