patches for legacy option and property support... these things should go away "soon," but we need to provide some grace period first.

TBR: jgw


git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@4519 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/ArgHandlerOutDirDeprecated.java b/dev/core/src/com/google/gwt/dev/ArgHandlerOutDirDeprecated.java
new file mode 100644
index 0000000..13549a8
--- /dev/null
+++ b/dev/core/src/com/google/gwt/dev/ArgHandlerOutDirDeprecated.java
@@ -0,0 +1,35 @@
+/**

+ * 

+ */

+package com.google.gwt.dev;

+

+import com.google.gwt.dev.util.arg.OptionOutDir;

+import com.google.gwt.util.tools.ArgHandlerOutDir;

+

+import java.io.File;

+

+/**

+ * Deprecated handler for -out options

+ */

+public class ArgHandlerOutDirDeprecated extends ArgHandlerOutDir {

+

+  OptionOutDir option;

+  

+  public ArgHandlerOutDirDeprecated(OptionOutDir option) {

+    this.option = option;

+  }

+  

+  public String getPurpose() {

+    return super.getPurpose() + " (deprecated)";

+  }

+

+  public boolean isUndocumented() {

+    return true;

+  }

+

+  @Override

+  public void setDir(File dir) {

+    option.setOutDir(dir);

+  }

+  

+}

diff --git a/dev/core/src/com/google/gwt/dev/Compiler.java b/dev/core/src/com/google/gwt/dev/Compiler.java
index 7acdcfb..d41debd 100644
--- a/dev/core/src/com/google/gwt/dev/Compiler.java
+++ b/dev/core/src/com/google/gwt/dev/Compiler.java
@@ -86,6 +86,11 @@
       return localWorkers;
     }
 
+    @Deprecated
+    public File getOutDir() {
+      return linkOptions.getOutDir();
+    }
+
     public File getWarDir() {
       return linkOptions.getWarDir();
     }
@@ -98,6 +103,11 @@
       this.localWorkers = localWorkers;
     }
 
+    @Deprecated
+    public void setOutDir(File outDir) {
+      linkOptions.setOutDir(outDir);
+    }
+    
     public void setWarDir(File outDir) {
       linkOptions.setWarDir(outDir);
     }
diff --git a/dev/core/src/com/google/gwt/dev/GWTShell.java b/dev/core/src/com/google/gwt/dev/GWTShell.java
index d623526..0344bdf 100644
--- a/dev/core/src/com/google/gwt/dev/GWTShell.java
+++ b/dev/core/src/com/google/gwt/dev/GWTShell.java
@@ -136,6 +136,13 @@
      */
     GWTShell gwtShell = new GWTShell();
     ArgProcessor argProcessor = new ArgProcessor(gwtShell.options, false, false);
+
+    // deprecated old property way to set outputs
+    if (System.getProperty("com.google.gwt.shell.outdir") != null) {
+      gwtShell.options.setOutDir(new File(System.getProperty("com.google.gwt.shell.outdir")));
+      gwtShell.options.setWorkDir(new File(System.getProperty("com.google.gwt.shell.outdir")));
+    }
+
     if (argProcessor.processArgs(args)) {
       gwtShell.run();
       // Exit w/ success code.
diff --git a/dev/core/src/com/google/gwt/dev/HostedMode.java b/dev/core/src/com/google/gwt/dev/HostedMode.java
index 1d47fc3..c5da1d8 100644
--- a/dev/core/src/com/google/gwt/dev/HostedMode.java
+++ b/dev/core/src/com/google/gwt/dev/HostedMode.java
@@ -175,6 +175,7 @@
       implements HostedModeOptions {
     private File extraDir;
     private int localWorkers;
+    private File outDir;
     private ServletContainerLauncher scl;
     private File warDir;
 
@@ -186,6 +187,11 @@
       return localWorkers;
     }
 
+    @Deprecated
+    public File getOutDir() {
+      return outDir;
+    }
+
     public ServletContainerLauncher getServletContainerLauncher() {
       return scl;
     }
@@ -210,6 +216,11 @@
       this.localWorkers = localWorkers;
     }
 
+    @Deprecated
+    public void setOutDir(File outDir) {
+      this.outDir = outDir;     
+    }
+
     public void setServletContainerLauncher(ServletContainerLauncher scl) {
       this.scl = scl;
     }
diff --git a/dev/core/src/com/google/gwt/dev/Link.java b/dev/core/src/com/google/gwt/dev/Link.java
index e1a911e..a84e8cf 100644
--- a/dev/core/src/com/google/gwt/dev/Link.java
+++ b/dev/core/src/com/google/gwt/dev/Link.java
@@ -54,7 +54,7 @@
    * Options for Link.
    */
   public interface LinkOptions extends CompileTaskOptions, OptionExtraDir,
-      OptionWarDir {
+      OptionWarDir, OptionOutDir /*deprecated*/ {
   }
 
   static class ArgProcessor extends CompileArgProcessor {
@@ -62,6 +62,7 @@
       super(options);
       registerHandler(new ArgHandlerExtraDir(options));
       registerHandler(new ArgHandlerWarDir(options));
+      registerHandler(new ArgHandlerOutDirDeprecated(options));
     }
 
     @Override
@@ -78,6 +79,7 @@
 
     private File extraDir;
     private File warDir;
+    private File outDir;
 
     public LinkOptionsImpl() {
     }
@@ -90,6 +92,7 @@
       super.copyFrom(other);
       setExtraDir(other.getExtraDir());
       setWarDir(other.getWarDir());
+      setOutDir(other.getOutDir());
     }
 
     public File getExtraDir() {
@@ -107,6 +110,16 @@
     public void setWarDir(File warDir) {
       this.warDir = warDir;
     }
+
+    @Deprecated
+    public File getOutDir() {
+      return outDir;
+    }
+
+    @Deprecated
+    public void setOutDir(File outDir) {
+      this.outDir = outDir;
+    }
   }
 
   public static void legacyLink(TreeLogger logger, ModuleDef module,
@@ -148,6 +161,7 @@
      * still implementation-dependent.
      */
     final LinkOptions options = new LinkOptionsImpl();
+    
     if (new ArgProcessor(options).processArgs(args)) {
       CompileTask task = new CompileTask() {
         public boolean run(TreeLogger logger) throws UnableToCompleteException {
@@ -286,8 +300,13 @@
       ArtifactSet artifacts = doLink(branch, linkerContext, precompilation,
           resultFiles);
 
-      doProduceOutput(branch, artifacts, linkerContext, module,
-          options.getWarDir(), options.getExtraDir());
+      if (options.getOutDir() == null) {
+        doProduceOutput(branch, artifacts, linkerContext, module,
+            options.getWarDir(), options.getExtraDir());
+      } else {
+        doProduceLegacyOutput(branch, artifacts, linkerContext, module,
+            options.getOutDir());
+      }
     }
     return true;
   }
diff --git a/dev/core/src/com/google/gwt/dev/shell/tomcat/EmbeddedTomcatServer.java b/dev/core/src/com/google/gwt/dev/shell/tomcat/EmbeddedTomcatServer.java
index 0bccea5..ec764b3 100644
--- a/dev/core/src/com/google/gwt/dev/shell/tomcat/EmbeddedTomcatServer.java
+++ b/dev/core/src/com/google/gwt/dev/shell/tomcat/EmbeddedTomcatServer.java
@@ -175,7 +175,15 @@
     //
     String catBase = System.getProperty("catalina.base");
     if (catBase == null) {
-      catBase = generateDefaultCatalinaBase(logger, topWorkDir);
+      // we (briefly) supported catalina.base.create, so let's not cut support
+      // until the deprecated sunset
+      catBase = System.getProperty("catalina.base.create");
+      if (catBase != null) {
+        logger.log(TreeLogger.WARN, "catalina.base.create is deprecated.  " +
+            "Use catalina.base, and it will be created if necessary.");
+      } else {
+        catBase = generateDefaultCatalinaBase(logger, topWorkDir);
+      }
       System.setProperty("catalina.base", catBase);
     }