Refactor SCLs to live in the core.ext package. Review by: jgw (TBR) git-svn-id: https://google-web-toolkit.googlecode.com/svn/releases/1.6@4353 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/shell/ServletContainer.java b/dev/core/src/com/google/gwt/core/ext/ServletContainer.java similarity index 67% rename from dev/core/src/com/google/gwt/dev/shell/ServletContainer.java rename to dev/core/src/com/google/gwt/core/ext/ServletContainer.java index 732998a..acd2a25 100644 --- a/dev/core/src/com/google/gwt/dev/shell/ServletContainer.java +++ b/dev/core/src/com/google/gwt/core/ext/ServletContainer.java
@@ -13,23 +13,28 @@ * License for the specific language governing permissions and limitations under * the License. */ -package com.google.gwt.dev.shell; - -import com.google.gwt.core.ext.UnableToCompleteException; +package com.google.gwt.core.ext; /** * An instance of a servlet container that can be used by the shell. It is - * assumed that this servlet container serves a web app from the root directory - * specified by a call to - * {@link ServletContainerLauncher#setAppRootDir(java.io.File)}. + * assumed that this servlet container serves a web app from the directory + * specified when this servlet container was created. */ -public interface ServletContainer { +public abstract class ServletContainer { /** - * Provides the port on which the server is actually running, which can be - * useful when automatic port selection was requested. + * Returns the host on which the servlet container is running. Defaults to + * "localhost". Used to construct a URL to reach the servlet container. */ - int getPort(); + public String getHost() { + return "localhost"; + } + + /** + * Returns the port on which the server is running.Used to construct a URL to + * reach the servlet container. + */ + public abstract int getPort(); /** * Causes the web app to pick up changes made within the app root dir while @@ -42,12 +47,12 @@ * * @throws UnableToCompleteException */ - void refresh() throws UnableToCompleteException; + public abstract void refresh() throws UnableToCompleteException; /** * Stops the running servlet container. It cannot be restarted after this. * * @throws UnableToCompleteException */ - void stop() throws UnableToCompleteException; + public abstract void stop() throws UnableToCompleteException; }
diff --git a/dev/core/src/com/google/gwt/dev/shell/ServletContainerLauncher.java b/dev/core/src/com/google/gwt/core/ext/ServletContainerLauncher.java similarity index 68% rename from dev/core/src/com/google/gwt/dev/shell/ServletContainerLauncher.java rename to dev/core/src/com/google/gwt/core/ext/ServletContainerLauncher.java index ffec980..0785fb1 100644 --- a/dev/core/src/com/google/gwt/dev/shell/ServletContainerLauncher.java +++ b/dev/core/src/com/google/gwt/core/ext/ServletContainerLauncher.java
@@ -13,29 +13,28 @@ * License for the specific language governing permissions and limitations under * the License. */ -package com.google.gwt.dev.shell; - -import com.google.gwt.core.ext.TreeLogger; +package com.google.gwt.core.ext; import java.io.File; import java.net.BindException; /** * Defines the service provider interface for launching servlet containers that - * can be used by the shell. + * can be used by the GWT hosted mode. */ -public interface ServletContainerLauncher { +public abstract class ServletContainerLauncher { /** - * Start an embedded HTTP server. + * Start an embedded HTTP servlet container. * * @param logger the server logger - * @param port the TCP port to serve on + * @param port the TCP port to serve on; if 0 is requested, a port should be + * automatically selected * @param appRootDir the base WAR directory - * @return the launch servlet contained + * @return the launched servlet container * @throws BindException if the requested port is already in use * @throws Exception if the server fails to start for any other reason */ - ServletContainer start(TreeLogger logger, int port, File appRootDir) - throws BindException, Exception; + public abstract ServletContainer start(TreeLogger logger, int port, + File appRootDir) throws BindException, Exception; }
diff --git a/dev/core/src/com/google/gwt/dev/HostedMode.java b/dev/core/src/com/google/gwt/dev/HostedMode.java index ac4a599..cebda22 100644 --- a/dev/core/src/com/google/gwt/dev/HostedMode.java +++ b/dev/core/src/com/google/gwt/dev/HostedMode.java
@@ -15,6 +15,8 @@ */ package com.google.gwt.dev; +import com.google.gwt.core.ext.ServletContainer; +import com.google.gwt.core.ext.ServletContainerLauncher; import com.google.gwt.core.ext.TreeLogger; import com.google.gwt.core.ext.UnableToCompleteException; import com.google.gwt.core.ext.linker.ArtifactSet; @@ -22,8 +24,6 @@ import com.google.gwt.dev.Compiler.CompilerOptionsImpl; import com.google.gwt.dev.cfg.ModuleDef; import com.google.gwt.dev.shell.ArtifactAcceptor; -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.Util; import com.google.gwt.dev.util.arg.ArgHandlerExtraDir; @@ -376,6 +376,14 @@ } @Override + protected String getHost() { + if (server != null) { + return server.getHost(); + } + return super.getHost(); + } + + @Override protected boolean initModule(String moduleName) { ModuleDef module = modulesByName.get(moduleName); if (module == null) {
diff --git a/dev/core/src/com/google/gwt/dev/HostedModeBase.java b/dev/core/src/com/google/gwt/dev/HostedModeBase.java index 331297a..58bfe76 100644 --- a/dev/core/src/com/google/gwt/dev/HostedModeBase.java +++ b/dev/core/src/com/google/gwt/dev/HostedModeBase.java
@@ -445,19 +445,19 @@ } // Assume it's a trailing url path. - // if (unknownUrlText.length() > 0 && unknownUrlText.charAt(0) == '/') { unknownUrlText = unknownUrlText.substring(1); } - int prt = getPort(); - if (prt != 80 && prt != 0) { + int port = getPort(); + String host = getHost(); + if (port != 80) { // CHECKSTYLE_OFF: Not really an assembled error message, so no space // after ':'. - return "http://localhost:" + prt + "/" + unknownUrlText; + return "http://" + host + ":" + port + "/" + unknownUrlText; // CHECKSTYLE_ON } else { - return "http://localhost/" + unknownUrlText; + return "http://" + host + "/" + unknownUrlText; } } @@ -592,6 +592,10 @@ return browserHost; } + protected String getHost() { + return "localhost"; + } + protected void initializeLogger() { final AbstractTreeLogger logger = mainWnd.getLogger(); logger.setMaxDetail(options.getLogLevel());
diff --git a/dev/core/src/com/google/gwt/dev/shell/jetty/JettyLauncher.java b/dev/core/src/com/google/gwt/dev/shell/jetty/JettyLauncher.java index d88f483..58ed521 100644 --- a/dev/core/src/com/google/gwt/dev/shell/jetty/JettyLauncher.java +++ b/dev/core/src/com/google/gwt/dev/shell/jetty/JettyLauncher.java
@@ -15,11 +15,11 @@ */ package com.google.gwt.dev.shell.jetty; +import com.google.gwt.core.ext.ServletContainer; +import com.google.gwt.core.ext.ServletContainerLauncher; import com.google.gwt.core.ext.TreeLogger; import com.google.gwt.core.ext.UnableToCompleteException; import com.google.gwt.core.ext.TreeLogger.Type; -import com.google.gwt.dev.shell.ServletContainer; -import com.google.gwt.dev.shell.ServletContainerLauncher; import org.mortbay.jetty.Server; import org.mortbay.jetty.nio.SelectChannelConnector; @@ -32,7 +32,7 @@ /** * A launcher for an embedded Jetty server. */ -public class JettyLauncher implements ServletContainerLauncher { +public class JettyLauncher extends ServletContainerLauncher { /** * An adapter for the Jetty logging system to GWT's TreeLogger. This @@ -132,7 +132,7 @@ } } - private static class JettyServletContainer implements ServletContainer { + private static class JettyServletContainer extends ServletContainer { private final int actualPort; private final File appRootDir;
diff --git a/dev/core/test/com/google/gwt/dev/HostedModeTest.java b/dev/core/test/com/google/gwt/dev/HostedModeTest.java index 0258737..015e943 100644 --- a/dev/core/test/com/google/gwt/dev/HostedModeTest.java +++ b/dev/core/test/com/google/gwt/dev/HostedModeTest.java
@@ -1,11 +1,11 @@ package com.google.gwt.dev; +import com.google.gwt.core.ext.ServletContainer; +import com.google.gwt.core.ext.ServletContainerLauncher; import com.google.gwt.core.ext.TreeLogger; import com.google.gwt.dev.HostedMode.HostedModeOptionsImpl; import com.google.gwt.dev.jjs.JsOutputOption; import com.google.gwt.dev.shell.BrowserWidgetHostChecker; -import com.google.gwt.dev.shell.ServletContainer; -import com.google.gwt.dev.shell.ServletContainerLauncher; import java.io.File; import java.net.BindException; @@ -15,7 +15,7 @@ */ public class HostedModeTest extends ArgProcessorTestBase { - public static class MySCL implements ServletContainerLauncher { + public static class MySCL extends ServletContainerLauncher { public ServletContainer start(TreeLogger logger, int port, File appRootDir) throws BindException, Exception { throw new UnsupportedOperationException();