Adds getLastModified() to CompilationUnit and its dependencies.
Review by: bobv (postmortem)
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@3597 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/javac/CompilationUnit.java b/dev/core/src/com/google/gwt/dev/javac/CompilationUnit.java
index b165935..826184d 100644
--- a/dev/core/src/com/google/gwt/dev/javac/CompilationUnit.java
+++ b/dev/core/src/com/google/gwt/dev/javac/CompilationUnit.java
@@ -149,6 +149,11 @@
public abstract String getDisplayLocation();
/**
+ * Returns the last modified time of the compilation unit.
+ */
+ public abstract long getLastModified();
+
+ /**
* Returns the source code for this unit.
*/
public abstract String getSource();
diff --git a/dev/core/src/com/google/gwt/dev/javac/JavaSourceFile.java b/dev/core/src/com/google/gwt/dev/javac/JavaSourceFile.java
index f73c2da..c1bf5f7 100644
--- a/dev/core/src/com/google/gwt/dev/javac/JavaSourceFile.java
+++ b/dev/core/src/com/google/gwt/dev/javac/JavaSourceFile.java
@@ -29,6 +29,11 @@
}
/**
+ * Returns the last modified time of the compilation unit.
+ */
+ public abstract long getLastModified();
+
+ /**
* Returns the user-relevant location of the source file. No programmatic
* assumptions should be made about the return value.
*/
diff --git a/dev/core/src/com/google/gwt/dev/javac/impl/FileCompilationUnit.java b/dev/core/src/com/google/gwt/dev/javac/impl/FileCompilationUnit.java
index 3194633..d2fee22 100644
--- a/dev/core/src/com/google/gwt/dev/javac/impl/FileCompilationUnit.java
+++ b/dev/core/src/com/google/gwt/dev/javac/impl/FileCompilationUnit.java
@@ -45,6 +45,11 @@
}
@Override
+ public long getLastModified() {
+ return file.lastModified();
+ }
+
+ @Override
public String getSource() {
return Util.readFileAsString(file);
}
diff --git a/dev/core/src/com/google/gwt/dev/javac/impl/JavaSourceOracleImpl.java b/dev/core/src/com/google/gwt/dev/javac/impl/JavaSourceOracleImpl.java
index 820c214..88e2406 100644
--- a/dev/core/src/com/google/gwt/dev/javac/impl/JavaSourceOracleImpl.java
+++ b/dev/core/src/com/google/gwt/dev/javac/impl/JavaSourceOracleImpl.java
@@ -60,6 +60,11 @@
}
@Override
+ public long getLastModified() {
+ return resource.getLastModified();
+ }
+
+ @Override
public String getLocation() {
return location;
}
diff --git a/dev/core/src/com/google/gwt/dev/javac/impl/SourceFileCompilationUnit.java b/dev/core/src/com/google/gwt/dev/javac/impl/SourceFileCompilationUnit.java
index 4ad2541..7f543af 100644
--- a/dev/core/src/com/google/gwt/dev/javac/impl/SourceFileCompilationUnit.java
+++ b/dev/core/src/com/google/gwt/dev/javac/impl/SourceFileCompilationUnit.java
@@ -36,6 +36,11 @@
}
@Override
+ public long getLastModified() {
+ return sourceFile.getLastModified();
+ }
+
+ @Override
public String getSource() {
if (sourceCode == null) {
sourceCode = sourceFile.readSource();
@@ -61,5 +66,5 @@
protected void dumpSource() {
sourceCode = null;
}
-
+
}
diff --git a/dev/core/src/com/google/gwt/dev/resource/Resource.java b/dev/core/src/com/google/gwt/dev/resource/Resource.java
index b5310df..6d61cce 100644
--- a/dev/core/src/com/google/gwt/dev/resource/Resource.java
+++ b/dev/core/src/com/google/gwt/dev/resource/Resource.java
@@ -32,6 +32,11 @@
}
/**
+ * Returns the last modified time of the compilation unit.
+ */
+ public abstract long getLastModified();
+
+ /**
* Returns the user-relevant location of the resource. No programmatic
* assumptions should be made about the return value.
*/
diff --git a/dev/core/src/com/google/gwt/dev/resource/impl/FileResource.java b/dev/core/src/com/google/gwt/dev/resource/impl/FileResource.java
index 74ba79f..dab8e71 100644
--- a/dev/core/src/com/google/gwt/dev/resource/impl/FileResource.java
+++ b/dev/core/src/com/google/gwt/dev/resource/impl/FileResource.java
@@ -47,6 +47,11 @@
}
@Override
+ public long getLastModified() {
+ return file.lastModified();
+ }
+
+ @Override
public String getLocation() {
return file.getAbsoluteFile().toURI().toString();
}
diff --git a/dev/core/src/com/google/gwt/dev/resource/impl/ResourceOracleImpl.java b/dev/core/src/com/google/gwt/dev/resource/impl/ResourceOracleImpl.java
index 814f9ac..b04fcf4 100644
--- a/dev/core/src/com/google/gwt/dev/resource/impl/ResourceOracleImpl.java
+++ b/dev/core/src/com/google/gwt/dev/resource/impl/ResourceOracleImpl.java
@@ -89,6 +89,11 @@
}
@Override
+ public long getLastModified() {
+ return resource.getLastModified();
+ }
+
+ @Override
public String getLocation() {
return resource.getLocation();
}
diff --git a/dev/core/src/com/google/gwt/dev/resource/impl/ZipFileResource.java b/dev/core/src/com/google/gwt/dev/resource/impl/ZipFileResource.java
index 87df4fd..1920e86 100644
--- a/dev/core/src/com/google/gwt/dev/resource/impl/ZipFileResource.java
+++ b/dev/core/src/com/google/gwt/dev/resource/impl/ZipFileResource.java
@@ -41,8 +41,16 @@
}
@Override
+ public long getLastModified() {
+ // Questionable: maybe we should do something with the jar's time instead.
+ return zipEntry.getTime();
+ }
+
+ @Override
public String getLocation() {
+ // CHECKSTYLE_OFF
String proto = zipEntry instanceof JarEntry ? "jar:" : "zip:";
+ // CHECKSTYLE_ON
return proto + classPathEntry.getLocation() + "!/" + getPath();
}
diff --git a/dev/core/src/com/google/gwt/dev/shell/StandardGeneratorContext.java b/dev/core/src/com/google/gwt/dev/shell/StandardGeneratorContext.java
index 1a3dfcc..332f7de 100644
--- a/dev/core/src/com/google/gwt/dev/shell/StandardGeneratorContext.java
+++ b/dev/core/src/com/google/gwt/dev/shell/StandardGeneratorContext.java
@@ -60,6 +60,8 @@
*/
private static class GeneratedUnitWithFile extends CompilationUnit {
+ private long creationTime;
+
private File file;
private PrintWriter pw;
@@ -83,6 +85,7 @@
source = sw.toString();
pw = null;
sw = null;
+ creationTime = System.currentTimeMillis();
}
@Override
@@ -95,6 +98,11 @@
}
@Override
+ public long getLastModified() {
+ return creationTime;
+ }
+
+ @Override
public String getSource() {
if (source == null && file == null) {
throw new IllegalStateException("source not committed");
diff --git a/dev/core/test/com/google/gwt/dev/javac/MockCompilationUnit.java b/dev/core/test/com/google/gwt/dev/javac/MockCompilationUnit.java
index 9f07db9..4014c8d 100644
--- a/dev/core/test/com/google/gwt/dev/javac/MockCompilationUnit.java
+++ b/dev/core/test/com/google/gwt/dev/javac/MockCompilationUnit.java
@@ -35,6 +35,11 @@
}
@Override
+ public long getLastModified() {
+ return 0;
+ }
+
+ @Override
public String getSource() {
assert source != null;
return source;
@@ -47,4 +52,4 @@
public boolean isGenerated() {
return true;
}
-}
\ No newline at end of file
+}
diff --git a/dev/core/test/com/google/gwt/dev/javac/impl/MockJavaSourceFile.java b/dev/core/test/com/google/gwt/dev/javac/impl/MockJavaSourceFile.java
index 1225e50..1018edb 100644
--- a/dev/core/test/com/google/gwt/dev/javac/impl/MockJavaSourceFile.java
+++ b/dev/core/test/com/google/gwt/dev/javac/impl/MockJavaSourceFile.java
@@ -45,6 +45,11 @@
}
@Override
+ public long getLastModified() {
+ return 0;
+ }
+
+ @Override
public String getLocation() {
return location;
}
diff --git a/dev/core/test/com/google/gwt/dev/javac/impl/MockResource.java b/dev/core/test/com/google/gwt/dev/javac/impl/MockResource.java
index a0fbc94..b35cfda 100644
--- a/dev/core/test/com/google/gwt/dev/javac/impl/MockResource.java
+++ b/dev/core/test/com/google/gwt/dev/javac/impl/MockResource.java
@@ -33,6 +33,11 @@
}
@Override
+ public long getLastModified() {
+ return 0;
+ }
+
+ @Override
public String getLocation() {
return "/mock/" + path;
}
diff --git a/dev/core/test/com/google/gwt/dev/resource/impl/MockAbstractResource.java b/dev/core/test/com/google/gwt/dev/resource/impl/MockAbstractResource.java
index 25de30f..992fdcb 100644
--- a/dev/core/test/com/google/gwt/dev/resource/impl/MockAbstractResource.java
+++ b/dev/core/test/com/google/gwt/dev/resource/impl/MockAbstractResource.java
@@ -36,6 +36,11 @@
}
@Override
+ public long getLastModified() {
+ return 0;
+ }
+
+ @Override
public String getLocation() {
return this.mockClassPathEntry.pathRoot + "/" + path;
}
diff --git a/dev/core/test/com/google/gwt/dev/shell/StandardGeneratorContextTest.java b/dev/core/test/com/google/gwt/dev/shell/StandardGeneratorContextTest.java
index 7b06e39..09c8f21 100644
--- a/dev/core/test/com/google/gwt/dev/shell/StandardGeneratorContextTest.java
+++ b/dev/core/test/com/google/gwt/dev/shell/StandardGeneratorContextTest.java
@@ -100,6 +100,11 @@
return new Resource() {
@Override
+ public long getLastModified() {
+ return 0;
+ }
+
+ @Override
public String getLocation() {
return "/mock/onPublicPath.txt";
}
diff --git a/tools/api-checker/test/com/google/gwt/tools/apichecker/ApiContainerTest.java b/tools/api-checker/test/com/google/gwt/tools/apichecker/ApiContainerTest.java
index b851a4b..76b50c3 100644
--- a/tools/api-checker/test/com/google/gwt/tools/apichecker/ApiContainerTest.java
+++ b/tools/api-checker/test/com/google/gwt/tools/apichecker/ApiContainerTest.java
@@ -50,6 +50,11 @@
}
@Override
+ public long getLastModified() {
+ return 0;
+ }
+
+ @Override
public String getSource() {
return String.valueOf(source);
}