Author: [EMAIL PROTECTED]
Date: Fri Nov 7 11:13:01 2008
New Revision: 3988
Modified:
releases/1.6/dev/core/src/com/google/gwt/dev/GWTHosted.java
releases/1.6/dev/core/src/com/google/gwt/dev/GWTShell.java
Log:
Adds GWTHosted -server selection, which allows the server to be specified
on the command line.
Review by: bobv (TBR)
Modified: releases/1.6/dev/core/src/com/google/gwt/dev/GWTHosted.java
==============================================================================
--- releases/1.6/dev/core/src/com/google/gwt/dev/GWTHosted.java (original)
+++ releases/1.6/dev/core/src/com/google/gwt/dev/GWTHosted.java Fri Nov 7
11:13:01 2008
@@ -23,6 +23,7 @@
import com.google.gwt.dev.shell.ArtifactAcceptor;
import com.google.gwt.dev.shell.GWTShellServletFilter;
import com.google.gwt.dev.shell.ServletContainer;
+import com.google.gwt.dev.shell.ServletContainerLauncher;
import com.google.gwt.dev.shell.jetty.JettyLauncher;
import com.google.gwt.dev.util.PerfLogger;
import com.google.gwt.dev.util.log.PrintWriterTreeLogger;
@@ -44,12 +45,6 @@
*/
protected class ArgHandlerModulesExtra extends ArgHandlerExtra {
- private final PrintWriterTreeLogger console = new
PrintWriterTreeLogger(
- new PrintWriter(System.err));
- {
- console.setMaxDetail(TreeLogger.WARN);
- }
-
@Override
public boolean addExtraArg(String arg) {
return addModule(console, arg);
@@ -65,6 +60,32 @@
return new String[] {"module"};
}
}
+ /**
+ * Handles the -server command line flag.
+ */
+ protected class ArgHandlerServer extends ArgHandlerString {
+ @Override
+ public String getPurpose() {
+ return "Prevents the embedded Tomcat server from running, even if a
port is specified";
+ }
+
+ @Override
+ public String getTag() {
+ return "-server";
+ }
+
+ @Override
+ public String[] getTagArgs() {
+ return new String[] {"serverLauncherClass"};
+ }
+
+ @Override
+ public boolean setString(String arg) {
+ // Supercedes -noserver.
+ setRunTomcat(true);
+ return setServer(console, arg);
+ }
+ }
/**
* Handles a startup url that can be passed on the command line.
@@ -107,14 +128,37 @@
System.exit(0);
}
+ protected final PrintWriterTreeLogger console = new
PrintWriterTreeLogger(
+ new PrintWriter(System.err, true));
+
+ /**
+ * The servlet launcher to use (defaults to embedded Jetty).
+ */
+ private ServletContainerLauncher launcher = new JettyLauncher();
+
+ /**
+ * The set of modules this hosted mode instance can run.
+ */
private Set<ModuleDef> modules = new HashSet<ModuleDef>();
+ /**
+ * The server that was started.
+ */
private ServletContainer server;
+ /**
+ * Our servlet filter, embedded into the server, which autogenerates GWT
+ * modules when the selection script is requested.
+ */
private GWTShellServletFilter servletFilter;
+ {
+ console.setMaxDetail(TreeLogger.WARN);
+ }
+
public GWTHosted() {
super(false, true);
+ registerHandler(new ArgHandlerServer());
registerHandler(new ArgHandlerStartupURLs());
registerHandler(new ArgHandlerModulesExtra());
}
@@ -126,11 +170,33 @@
modules.add(moduleDef);
return true;
} catch (UnableToCompleteException e) {
- System.err.println("Unable to load module '" + moduleName + "'");
+ logger.log(TreeLogger.ERROR, "Unable to load module '" + moduleName
+ "'");
return false;
}
}
+ public boolean setServer(TreeLogger logger, String serverClassName) {
+ Throwable t;
+ try {
+ Class<?> clazz = Class.forName(serverClassName, true,
+ Thread.currentThread().getContextClassLoader());
+ Class<? extends ServletContainerLauncher> sclClass =
clazz.asSubclass(ServletContainerLauncher.class);
+ launcher = sclClass.newInstance();
+ return true;
+ } catch (ClassCastException e) {
+ t = e;
+ } catch (ClassNotFoundException e) {
+ t = e;
+ } catch (InstantiationException e) {
+ t = e;
+ } catch (IllegalAccessException e) {
+ t = e;
+ }
+ logger.log(TreeLogger.ERROR, "Unable to load server class '"
+ + serverClassName + "'", t);
+ return false;
+ }
+
@Override
protected ArtifactAcceptor doCreateArtifactAcceptor(final ModuleDef
module) {
return new ArtifactAcceptor() {
@@ -155,8 +221,7 @@
@Override
protected int startUpServer() {
- PerfLogger.start("GWTShell.startup (Jetty launch)");
- JettyLauncher launcher = new JettyLauncher();
+ PerfLogger.start("GWTHosted.startUpServer");
try {
TreeLogger serverLogger = getTopLogger().branch(TreeLogger.INFO,
"Starting HTTP on port " + getPort(), null);
Modified: releases/1.6/dev/core/src/com/google/gwt/dev/GWTShell.java
==============================================================================
--- releases/1.6/dev/core/src/com/google/gwt/dev/GWTShell.java (original)
+++ releases/1.6/dev/core/src/com/google/gwt/dev/GWTShell.java Fri Nov 7
11:13:01 2008
@@ -103,7 +103,7 @@
}
/**
- * handles the -noserver command line flag.
+ * Handles the -noserver command line flag.
*/
protected class ArgHandlerNoServerFlag extends ArgHandlerFlag {
@Override
--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~----------~----~----~----~------~----~------~--~---