class ClasspathDirectory extends ClasspathLocation {
-IContainer binaryFolder; // includes .class files for a single directory
-boolean isOutputFolder;
-String binaryLocation;
-SimpleLookupTable directoryCache;
-String[] missingPackageHolder = new String[1];
-
-ClasspathDirectory(IContainer binaryFolder, boolean isOutputFolder) {
- this.binaryFolder = binaryFolder;
- this.isOutputFolder = isOutputFolder;
-// IPath location = binaryFolder.getLocation();
-// this.binaryLocation = location != null ? location.addTrailingSeparator().toString() : ""; //$NON-NLS-1$
- this.binaryLocation = "";
- this.directoryCache = new SimpleLookupTable(5);
-}
+ IContainer binaryFolder; // includes .class files for a single directory
-public void cleanup() {
- this.directoryCache = null;
-}
+ boolean isOutputFolder;
-String[] directoryList(String qualifiedPackageName) {
- String[] dirList = (String[]) directoryCache.get(qualifiedPackageName);
- if (dirList == missingPackageHolder) return null; // package exists in another classpath directory or jar
- if (dirList != null) return dirList;
-
- try {
- IResource container = binaryFolder.findMember(qualifiedPackageName); // this is a case-sensitive check
- if (container instanceof IContainer) {
- IResource[] members = ((IContainer) container).members();
- dirList = new String[members.length];
- int index = 0;
- for (int i = 0, l = members.length; i < l; i++) {
- IResource m = members[i];
-// if (m.getType() == IResource.FILE && ProjectPrefUtil.isClassFileName(m.getName()))
-// // add exclusion pattern check here if we want to hide .class files
-// dirList[index++] = m.getName();
- }
- if (index < dirList.length)
- System.arraycopy(dirList, 0, dirList = new String[index], 0, index);
- directoryCache.put(qualifiedPackageName, dirList);
+ String binaryLocation;
+
+ SimpleLookupTable directoryCache;
+
+ String[] missingPackageHolder = new String[1];
+
+ ClasspathDirectory(IContainer binaryFolder, boolean isOutputFolder) {
+ this.binaryFolder = binaryFolder;
+ this.isOutputFolder = isOutputFolder;
+ // IPath location = binaryFolder.getLocation();
+ // this.binaryLocation = location != null ?
+ // location.addTrailingSeparator().toString() : ""; //$NON-NLS-1$
+ this.binaryLocation = "";
+ this.directoryCache = new SimpleLookupTable(5);
+ }
+
+ public void cleanup() {
+ this.directoryCache = null;
+ }
+
+ String[] directoryList(String qualifiedPackageName) {
+ String[] dirList = (String[]) directoryCache.get(qualifiedPackageName);
+ if (dirList == missingPackageHolder)
+ return null; // package exists in another classpath directory or
+ // jar
+ if (dirList != null)
return dirList;
+
+ try {
+ IResource container = binaryFolder.findMember(qualifiedPackageName); // this
+ // is a
+ // case-sensitive
+ // check
+ if (container instanceof IContainer) {
+ IResource[] members = ((IContainer) container).members();
+ dirList = new String[members.length];
+ int index = 0;
+ for (int i = 0, l = members.length; i < l; i++) {
+ //IResource m = members[i];
+ // if (m.getType() == IResource.FILE &&
+ // ProjectPrefUtil.isClassFileName(m.getName()))
+ // // add exclusion pattern check here if we want to hide
+ // .class files
+ // dirList[index++] = m.getName();
+ }
+ if (index < dirList.length)
+ System.arraycopy(dirList, 0, dirList = new String[index],
+ 0, index);
+ directoryCache.put(qualifiedPackageName, dirList);
+ return dirList;
+ }
+ } catch (CoreException ignored) {
}
- } catch(CoreException ignored) {
+ directoryCache.put(qualifiedPackageName, missingPackageHolder);
+ return null;
}
- directoryCache.put(qualifiedPackageName, missingPackageHolder);
- return null;
-}
-
-boolean doesFileExist(String fileName, String qualifiedPackageName, String qualifiedFullName) {
- String[] dirList = directoryList(qualifiedPackageName);
- if (dirList == null) return false; // most common case
- for (int i = dirList.length; --i >= 0;)
- if (fileName.equals(dirList[i]))
- return true;
- return false;
-}
+ boolean doesFileExist(String fileName, String qualifiedPackageName,
+ String qualifiedFullName) {
+ String[] dirList = directoryList(qualifiedPackageName);
+ if (dirList == null)
+ return false; // most common case
-public boolean equals(Object o) {
- if (this == o) return true;
- if (!(o instanceof ClasspathDirectory)) return false;
+ for (int i = dirList.length; --i >= 0;)
+ if (fileName.equals(dirList[i]))
+ return true;
+ return false;
+ }
- return binaryFolder.equals(((ClasspathDirectory) o).binaryFolder);
-}
+ public boolean equals(Object o) {
+ if (this == o)
+ return true;
+ if (!(o instanceof ClasspathDirectory))
+ return false;
-public NameEnvironmentAnswer findClass(String binaryFileName, String qualifiedPackageName, String qualifiedBinaryFileName) {
- if (!doesFileExist(binaryFileName, qualifiedPackageName, qualifiedBinaryFileName)) return null; // most common case
+ return binaryFolder.equals(((ClasspathDirectory) o).binaryFolder);
+ }
-// try {
-// ClassFileReader reader = ClassFileReader.read(binaryLocation + qualifiedBinaryFileName);
-// if (reader != null) return new NameEnvironmentAnswer(reader);
-// } catch (Exception e) {} // treat as if class file is missing
- return null;
-}
+ public NameEnvironmentAnswer findClass(String binaryFileName,
+ String qualifiedPackageName, String qualifiedBinaryFileName) {
+ if (!doesFileExist(binaryFileName, qualifiedPackageName,
+ qualifiedBinaryFileName))
+ return null; // most common case
+
+ // try {
+ // ClassFileReader reader = ClassFileReader.read(binaryLocation +
+ // qualifiedBinaryFileName);
+ // if (reader != null) return new NameEnvironmentAnswer(reader);
+ // } catch (Exception e) {} // treat as if class file is missing
+ return null;
+ }
-public IPath getProjectRelativePath() {
- return binaryFolder.getProjectRelativePath();
-}
+ public IPath getProjectRelativePath() {
+ return binaryFolder.getProjectRelativePath();
+ }
-public boolean isOutputFolder() {
- return isOutputFolder;
-}
+ public boolean isOutputFolder() {
+ return isOutputFolder;
+ }
-public boolean isPackage(String qualifiedPackageName) {
- return directoryList(qualifiedPackageName) != null;
-}
+ public boolean isPackage(String qualifiedPackageName) {
+ return directoryList(qualifiedPackageName) != null;
+ }
-public void reset() {
- this.directoryCache = new SimpleLookupTable(5);
-}
+ public void reset() {
+ this.directoryCache = new SimpleLookupTable(5);
+ }
-public String toString() {
- return "Binary classpath directory " + binaryFolder.getFullPath().toString(); //$NON-NLS-1$
-}
+ public String toString() {
+ return "Binary classpath directory " + binaryFolder.getFullPath().toString(); //$NON-NLS-1$
+ }
}