improved PHP parser
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / compiler / batch / ClasspathDirectory.java
index 18a7a1b..29069bc 100644 (file)
@@ -1,22 +1,22 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2001, 2002 International Business Machines Corp. and others.
+ * Copyright (c) 2000, 2004 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Common Public License v0.5 
+ * are made available under the terms of the Common Public License v1.0
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v05.html
+ * http://www.eclipse.org/legal/cpl-v10.html
  * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
- ******************************************************************************/
+ *******************************************************************************/
 package net.sourceforge.phpdt.internal.compiler.batch;
 
 import java.io.File;
 import java.util.Hashtable;
 
-import net.sourceforge.phpdt.internal.compiler.classfmt.ClassFileReader;
 import net.sourceforge.phpdt.internal.compiler.env.NameEnvironmentAnswer;
+import net.sourceforge.phpdt.internal.compiler.util.SuffixConstants;
 
-public class ClasspathDirectory implements FileSystem.Classpath {
+public class ClasspathDirectory implements FileSystem.Classpath, SuffixConstants {
 
 String path;
 Hashtable directoryCache;
@@ -30,7 +30,7 @@ public static final int BINARY = 2;
 ClasspathDirectory(File directory, String encoding, int mode) {
        this.mode = mode;
        this.path = directory.getAbsolutePath();
-       if (!path.endsWith(File.separator))
+       if (!this.path.endsWith(File.separator))
                this.path += File.separator;
        this.directoryCache = new Hashtable(11);
        this.encoding = encoding;
@@ -41,17 +41,17 @@ ClasspathDirectory(File directory, String encoding) {
 }
 
 String[] directoryList(String qualifiedPackageName) {
-       String[] dirList = (String[]) directoryCache.get(qualifiedPackageName);
-       if (dirList == missingPackageHolder) return null; // package exists in another classpath directory or jar
+       String[] dirList = (String[]) this.directoryCache.get(qualifiedPackageName);
+       if (dirList == this.missingPackageHolder) return null; // package exists in another classpath directory or jar
        if (dirList != null) return dirList;
 
-       File dir = new File(path + qualifiedPackageName);
+       File dir = new File(this.path + qualifiedPackageName);
        notFound : if (dir != null && dir.isDirectory()) {
                // must protect against a case insensitive File call
                // walk the qualifiedPackageName backwards looking for an uppercase character before the '/'
                int index = qualifiedPackageName.length();
                int last = qualifiedPackageName.lastIndexOf(File.separatorChar);
-               while (--index > last && !Character.isUpperCase(qualifiedPackageName.charAt(index))) {}
+               while (--index > last && !Character.isUpperCase(qualifiedPackageName.charAt(index))){/*empty*/}
                if (index > last) {
                        if (last == -1) {
                                if (!doesFileExist(qualifiedPackageName, ""))  //$NON-NLS-1$ 
@@ -65,10 +65,10 @@ String[] directoryList(String qualifiedPackageName) {
                }
                if ((dirList = dir.list()) == null)
                        dirList = new String[0];
-               directoryCache.put(qualifiedPackageName, dirList);
+               this.directoryCache.put(qualifiedPackageName, dirList);
                return dirList;
        }
-       directoryCache.put(qualifiedPackageName, missingPackageHolder);
+       this.directoryCache.put(qualifiedPackageName, this.missingPackageHolder);
        return null;
 }
 boolean doesFileExist(String fileName, String qualifiedPackageName) {
@@ -84,25 +84,27 @@ public NameEnvironmentAnswer findClass(char[] typeName, String qualifiedPackageN
        if (!isPackage(qualifiedPackageName)) return null; // most common case
 
        String fileName = new String(typeName);
-       boolean binaryExists = ((this.mode & BINARY) != 0) && doesFileExist(fileName + ".class", qualifiedPackageName); //$NON-NLS-1$
-       boolean sourceExists = ((this.mode & SOURCE) != 0) && doesFileExist(fileName + ".java", qualifiedPackageName); //$NON-NLS-1$
+//     boolean binaryExists = ((this.mode & BINARY) != 0) && doesFileExist(fileName + SUFFIX_STRING_class, qualifiedPackageName);
+       boolean sourceExists = ((this.mode & SOURCE) != 0) && doesFileExist(fileName + SUFFIX_STRING_php, qualifiedPackageName);
        if (sourceExists) {
-               String fullSourcePath = path + qualifiedBinaryFileName.substring(0, qualifiedBinaryFileName.length() - 6)  + ".java"; //$NON-NLS-1$
-               if (!binaryExists)
+               String fullSourcePath = this.path + qualifiedBinaryFileName.substring(0, qualifiedBinaryFileName.length() - 6)  + SUFFIX_STRING_php;
+//             if (!binaryExists)
                        return new NameEnvironmentAnswer(new CompilationUnit(null, fullSourcePath, this.encoding));
 
-               String fullBinaryPath = path + qualifiedBinaryFileName;
-               long binaryModified = new File(fullBinaryPath).lastModified();
-               long sourceModified = new File(fullSourcePath).lastModified();
-               if (sourceModified > binaryModified)
-                       return new NameEnvironmentAnswer(new CompilationUnit(null, fullSourcePath, this.encoding));
-       }
-       if (binaryExists) {
-               try {
-                       ClassFileReader reader = ClassFileReader.read(path + qualifiedBinaryFileName);
-                       if (reader != null) return new NameEnvironmentAnswer(reader);
-               } catch (Exception e) {} // treat as if file is missing
+//             String fullBinaryPath = this.path + qualifiedBinaryFileName;
+//             long binaryModified = new File(fullBinaryPath).lastModified();
+//             long sourceModified = new File(fullSourcePath).lastModified();
+//             if (sourceModified > binaryModified)
+//                     return new NameEnvironmentAnswer(new CompilationUnit(null, fullSourcePath, this.encoding));
        }
+//     if (binaryExists) {
+//             try {
+//                     ClassFileReader reader = ClassFileReader.read(this.path + qualifiedBinaryFileName);
+//                     if (reader != null) return new NameEnvironmentAnswer(reader);
+//             } catch (Exception e) { 
+//                     // treat as if file is missing
+//             }
+//     }
        return null;
 }
 public boolean isPackage(String qualifiedPackageName) {
@@ -112,6 +114,6 @@ public void reset() {
        this.directoryCache = new Hashtable(11);
 }
 public String toString() {
-       return "ClasspathDirectory " + path; //$NON-NLS-1$
+       return "ClasspathDirectory " + this.path; //$NON-NLS-1$
+}
 }
-}
\ No newline at end of file