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

Reply via email to