Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(41)

Unified Diff: third_party/jmake/src/org/pantsbuild/jmake/PCDEntry.java

Issue 1373723003: Fix javac --incremental by using jmake for dependency analysis (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@aidl
Patch Set: fix license check Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/jmake/src/org/pantsbuild/jmake/PCDEntry.java
diff --git a/third_party/jmake/src/org/pantsbuild/jmake/PCDEntry.java b/third_party/jmake/src/org/pantsbuild/jmake/PCDEntry.java
new file mode 100644
index 0000000000000000000000000000000000000000..72fb3a47f7762639687c95d332d82db9a7a59fb7
--- /dev/null
+++ b/third_party/jmake/src/org/pantsbuild/jmake/PCDEntry.java
@@ -0,0 +1,111 @@
+/* Copyright (c) 2002-2008 Sun Microsystems, Inc. All rights reserved
+ *
+ * This program is distributed under the terms of
+ * the GNU General Public License Version 2. See the LICENSE file
+ * at the top of the source tree.
+ */
+package org.pantsbuild.jmake;
+
+import java.io.File;
+
+/**
+ * An instance of this class represents an entry in the Project Class Directory.
+ *
+ * @author Misha Dmitriev
+ * 29 March 2002
+ */
+public class PCDEntry {
+ // Class versions compare results
+
+ static final int CV_UNCHECKED = 0;
+ static final int CV_COMPATIBLE = 1;
+ static final int CV_INCOMPATIBLE = 2;
+ static final int CV_DELETED = 3;
+ static final int CV_NEW = 4;
+ static final int CV_NEWER_FOUND_NEARER = 5;
+ String className; // Dots are replaced with slashes for convenience
+ transient String classFileFullPath;
+ String javaFileFullPath;
+ long oldClassFileLastModified;
+ transient long newClassFileLastModified;
+ long oldClassFileFingerprint;
+ transient long newClassFileFingerprint;
+ ClassInfo oldClassInfo;
+ transient ClassInfo newClassInfo;
+ transient int checkResult; // Reflects the result of class version comparison
+ transient boolean checked; // Mark entries for classes that have been checked and found existing.
+ // It helps to detect double entries for the same class in the project file list,
+ // and also not to confuse them with the case when a .java source for a class is moved.
+
+ /** This constructor is called to initialize a record for a class that has just been added to the project. */
+ public PCDEntry(String className,
+ String javaFileFullPath,
+ String classFileFullPath,
+ long classFileLastModified,
+ long classFileFingerprint,
+ ClassInfo classInfo) {
+ this.className = className;
+ this.classFileFullPath = classFileFullPath;
+ this.javaFileFullPath = javaFileFullPath;
+ this.oldClassFileLastModified = this.newClassFileLastModified =
+ classFileLastModified;
+ this.oldClassFileFingerprint = this.newClassFileFingerprint =
+ classFileFingerprint;
+ this.newClassInfo = classInfo;
+ checked = true;
+ }
+
+ /**
+ * This constructor is called to initialize a record for a class that
+ * exists at least in the previous version of the project.
+ */
+ public PCDEntry(String className,
+ String javaFileFullPath,
+ long classFileLastModified,
+ long classFileFingerprint,
+ ClassInfo classInfo) {
+ this.className = className;
+ this.javaFileFullPath = javaFileFullPath;
+ this.oldClassFileLastModified = classFileLastModified;
+ this.oldClassFileFingerprint = classFileFingerprint;
+ this.oldClassInfo = classInfo;
+ }
+
+ // Debugging
+ public String toString() {
+ return "className = " + className +
+ "; classFileFullPath = " + classFileFullPath +
+ "; javaFileFullPath = " + javaFileFullPath;
+ }
+
+ /**
+ * Returns the name of the class that corresponds to the file name, i.e. the public class
+ */
+ private String getExpectedClassName() {
+ File path = new File(javaFileFullPath);
+ int index = -1;
+ do {
+ index = className.indexOf('/', index + 1);
+ path = path.getParentFile();
+ } while (index != -1);
+ String pathString = path.toString();
+ if (!pathString.endsWith("/"))
+ pathString += "/";
+ // It is assumed that the javaFileFillPath ends with .java
+ int javaPathWithoutSuffix = javaFileFullPath.length() - 5;
+ return javaFileFullPath.substring(pathString.length(),
+ javaPathWithoutSuffix);
+ }
+
+ /**
+ * A class that neither has the same name as the java file, nor an inner class, is
+ * package-private.
+ */
+ public boolean isPackagePrivateClass() {
+ String expectedClassName = getExpectedClassName();
+
+ return !(className.equals(expectedClassName)
+ || (className.startsWith(expectedClassName)
+ && className.charAt(expectedClassName.length()) == '$'));
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698