See http://code.google.com/p/google-web-toolkit/issues/detail?id=6015
Log error instead of throwing when a generated unit cannot be transferred to a
file, so that filenames exceeding file system limits don't make the whole build
fail).
Patch from tbroyer
http://gwt-code-reviews.appspot.com/1382801/
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@10170 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/javac/StandardGeneratorContext.java b/dev/core/src/com/google/gwt/dev/javac/StandardGeneratorContext.java
index 86db13a..ef44adb 100644
--- a/dev/core/src/com/google/gwt/dev/javac/StandardGeneratorContext.java
+++ b/dev/core/src/com/google/gwt/dev/javac/StandardGeneratorContext.java
@@ -67,12 +67,12 @@
public class StandardGeneratorContext implements GeneratorContextExt {
/**
- * Extras added to {@link CompilationUnit}.
+ * Extras added to {@link GeneratedUnit}.
*/
- public static interface Generated extends GeneratedUnit {
+ private static interface Generated extends GeneratedUnit {
void abort();
- void commit();
+ void commit(TreeLogger logger);
/**
* Returns the strong hash of the source.
@@ -83,7 +83,7 @@
}
/**
- * This compilation unit acts as a normal compilation unit as well as a buffer
+ * This generated unit acts as a normal generated unit as well as a buffer
* into which generators can write their source. A controller should ensure
* that source isn't requested until the generator has finished writing it.
* This version is backed by {@link StandardGeneratorContext#diskCache}.
@@ -113,9 +113,9 @@
}
/**
- * Finalizes the source and adds this compilation unit to the host.
+ * Finalizes the source and adds this generated unit to the host.
*/
- public void commit() {
+ public void commit(TreeLogger logger) {
String source = sw.toString();
strongHash = Util.computeStrongName(Util.getBytes(source));
sourceToken = diskCache.writeString(source);
@@ -155,7 +155,7 @@
}
/**
- * This compilation unit acts as a normal compilation unit as well as a buffer
+ * This generated unit acts as a normal generated unit as well as a buffer
* into which generators can write their source. A controller should ensure
* that source isn't requested until the generator has finished writing it.
* This version is backed by an explicit generated file.
@@ -169,15 +169,15 @@
}
@Override
- public void commit() {
- super.commit();
+ public void commit(TreeLogger logger) {
+ super.commit(logger);
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
diskCache.transferToStream(sourceToken, fos);
} catch (IOException e) {
- throw new RuntimeException("Error writing out generated unit at '"
- + file.getAbsolutePath() + "'", e);
+ logger.log(TreeLogger.WARN, "Error writing out generated unit at '"
+ + file.getAbsolutePath() + "': " + e);
} finally {
Utility.close(fos);
}
@@ -185,7 +185,7 @@
@Override
public String optionalFileLocation() {
- return file.getAbsolutePath();
+ return file.exists() ? file.getAbsolutePath() : null;
}
}
@@ -382,7 +382,7 @@
public final void commit(TreeLogger logger, PrintWriter pw) {
Generated gcup = uncommittedGeneratedCupsByPrintWriter.get(pw);
if (gcup != null) {
- gcup.commit();
+ gcup.commit(logger);
uncommittedGeneratedCupsByPrintWriter.remove(pw);
committedGeneratedCups.put(gcup.getTypeName(), gcup);
} else {