Reviewers: tbroyer, rdayal,
Please review this at http://gwt-code-reviews.appspot.com/1615806/
Affected files:
M user/src/com/google/gwt/resources/css/InterfaceGenerator.java
Index: user/src/com/google/gwt/resources/css/InterfaceGenerator.java
diff --git a/user/src/com/google/gwt/resources/css/InterfaceGenerator.java
b/user/src/com/google/gwt/resources/css/InterfaceGenerator.java
index
5f08dab6a547b7227237329db8b21ff92978196c..1a7e7e819282b5115cd9e54b4245d7b459183568
100644
--- a/user/src/com/google/gwt/resources/css/InterfaceGenerator.java
+++ b/user/src/com/google/gwt/resources/css/InterfaceGenerator.java
@@ -22,6 +22,7 @@ import com.google.gwt.dev.util.log.PrintWriterTreeLogger;
import com.google.gwt.resources.client.CssResource;
import com.google.gwt.resources.client.CssResource.ClassName;
import com.google.gwt.resources.css.ast.CssStylesheet;
+import com.google.gwt.thirdparty.guava.common.base.Function;
import com.google.gwt.user.rebind.SourceWriter;
import com.google.gwt.user.rebind.StringSourceWriter;
import com.google.gwt.util.tools.ArgHandlerFile;
@@ -30,6 +31,8 @@ import com.google.gwt.util.tools.ArgHandlerString;
import com.google.gwt.util.tools.ToolBase;
import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.net.MalformedURLException;
import java.util.Comparator;
@@ -59,6 +62,13 @@ public class InterfaceGenerator extends ToolBase {
private File inputFile;
private TreeLogger logger;
private boolean standaloneFile;
+ private Function<String, Void> outputFunction = new Function<String,
Void>() {
+ @Override
+ public Void apply(String output) {
+ System.out.println(output);
+ return null;
+ }
+ };
private InterfaceGenerator() {
// -standalone
@@ -153,6 +163,37 @@ public class InterfaceGenerator extends ToolBase {
}
}
});
+
+ // -out FilePath.java
+ registerHandler(new ArgHandlerFile() {
+
+ @Override
+ public String getPurpose() {
+ return "The optional path to the output file (otherwise goes to
System.out)";
+ }
+
+ @Override
+ public String getTag() {
+ return "-out";
+ }
+
+ @Override
+ public void setFile(final File file) {
+ outputFunction = new Function<String, Void>() {
+ @Override
+ public Void apply(String output) {
+ try {
+ PrintWriter out = new PrintWriter(new
FileOutputStream(file));
+ out.println(output);
+ out.close();
+ } catch (FileNotFoundException e) {
+ throw new RuntimeException(e);
+ }
+ return null;
+ }
+ };
+ }
+ });
}
@Override
@@ -173,13 +214,16 @@ public class InterfaceGenerator extends ToolBase {
boolean error = false;
try {
- System.out.println(process());
+ outputFunction.apply(process());
} catch (MalformedURLException e) {
logger.log(TreeLogger.ERROR, "Unable to load CSS", e);
error = true;
} catch (UnableToCompleteException e) {
logger.log(TreeLogger.ERROR, "Unable to process CSS", e);
error = true;
+ } catch (Exception e) {
+ logger.log(TreeLogger.ERROR, "Unable to process CSS", e);
+ error = true;
} finally {
// Make sure the logs are emitted
logWriter.flush();
@@ -242,9 +286,11 @@ public class InterfaceGenerator extends ToolBase {
sw.println("package " + interfaceName.substring(0, lastDot) + ";");
sw.println("import " + CssResource.class.getCanonicalName() + ";");
sw.println("import " + ClassName.class.getCanonicalName() + ";");
+ // In case some of these imports are unused
+ sw.println("@SuppressWarnings(\"unused\")");
}
- sw.println("interface " + interfaceName.substring(lastDot + 1)
+ sw.println("public interface " + interfaceName.substring(lastDot + 1)
+ " extends CssResource {");
sw.indent();
for (String className : names) {
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors