IPath elementPath = element.getPath();
// first look at unresolved entries
int length = rawClasspath.length;
for (int i = 0; i < length; i++) {
IClasspathEntry entry = rawClasspath[i];
switch (entry.getEntryKind()) {
case IClasspathEntry.CPE_LIBRARY:
case IClasspathEntry.CPE_PROJECT:
case IClasspathEntry.CPE_SOURCE:
if (isOnClasspathEntry(elementPath, isFolderPath, isPackageFragmentRoot, entry))
return true;
break;
}
}
// no need to go further for compilation units and elements inside a compilation unit
// it can only be in a source folder, thus on the raw classpath
if (isSource)
return false;
// then look at resolved entries
for (int i = 0; i < length; i++) {
IClasspathEntry rawEntry = rawClasspath[i];
switch (rawEntry.getEntryKind()) {
case IClasspathEntry.CPE_CONTAINER:
IClasspathContainer container;
try {
container = JavaCore.getClasspathContainer(rawEntry.getPath(), this);
} catch (JavaModelException e) {
break;
}
if (container == null)
break;
IClasspathEntry[] containerEntries = container.getClasspathEntries();
if (containerEntries == null)
break;
// container was bound
for (int j = 0, containerLength = containerEntries.length; j < containerLength; j++){
IClasspathEntry resolvedEntry = containerEntries[j];
if (resolvedEntry == null) {
if (JavaModelManager.CP_RESOLVE_VERBOSE) {
JavaModelManager.getJavaModelManager().verbose_missbehaving_container(this, rawEntry.getPath(), containerEntries);
}
return false;
}
if (isOnClasspathEntry(elementPath, isFolderPath, isPackageFragmentRoot, resolvedEntry))
return true;
}
break;
case IClasspathEntry.CPE_VARIABLE:
IClasspathEntry resolvedEntry = JavaCore.getResolvedClasspathEntry(rawEntry);
if (resolvedEntry == null)
break;
if (isOnClasspathEntry(elementPath, isFolderPath, isPackageFragmentRoot, resolvedEntry))
return true;
break;