Revision: 7062 Author: sco...@google.com Date: Fri Nov 20 09:15:40 2009 Log: Unify DevMode's startupModules and alreadySeen modules to simplify code.
Review by: rice http://code.google.com/p/google-web-toolkit/source/detail?r=7062 Modified: /trunk/dev/core/src/com/google/gwt/dev/DevMode.java /trunk/dev/core/src/com/google/gwt/dev/DevModeBase.java ======================================= --- /trunk/dev/core/src/com/google/gwt/dev/DevMode.java Thu Nov 19 14:35:03 2009 +++ /trunk/dev/core/src/com/google/gwt/dev/DevMode.java Fri Nov 20 09:15:40 2009 @@ -38,6 +38,8 @@ import java.io.File; import java.io.IOException; import java.net.BindException; +import java.util.HashMap; +import java.util.Map; /** * The main executable class for the hosted mode shell. NOTE: the public API for @@ -254,6 +256,8 @@ */ private ServletContainer server; + private final Map<String, ModuleDef> startupModules = new HashMap<String, ModuleDef>(); + /** * Tracks whether we created a temp workdir that we need to destroy. */ @@ -386,6 +390,16 @@ protected String getWebServerName() { return options.getServletContainerLauncher().getName(); } + + @Override + protected ModuleDef loadModule(TreeLogger logger, String moduleName, + boolean refresh) throws UnableToCompleteException { + if (startupModules.containsKey(moduleName)) { + // First load of a startup module; remove from list, no need to refresh. + return startupModules.remove(moduleName); + } + return super.loadModule(logger, moduleName, refresh); + } @Override protected synchronized void produceOutput(TreeLogger logger, ======================================= --- /trunk/dev/core/src/com/google/gwt/dev/DevModeBase.java Thu Nov 19 19:49:52 2009 +++ /trunk/dev/core/src/com/google/gwt/dev/DevModeBase.java Fri Nov 20 09:15:40 2009 @@ -54,11 +54,9 @@ import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Random; -import java.util.Set; import java.util.concurrent.Semaphore; import java.util.concurrent.atomic.AtomicLong; @@ -97,8 +95,6 @@ // Try to find an existing loaded version of the module def. ModuleDef moduleDef = loadModule(logger, moduleName, true); assert (moduleDef != null); - // Release the hard reference to the module if it is present. - startupModules.remove(moduleDef.getName()); ShellModuleSpaceHost host = doCreateShellModuleSpaceHost(logger, moduleDef.getCompilationState(logger), moduleDef); @@ -574,8 +570,6 @@ registerHandler(new ArgHandlerRemoteUI(options)); } } - - protected static final Map<String, ModuleDef> startupModules = new HashMap<String, ModuleDef>(); private static final Random RNG = new Random(); @@ -656,14 +650,6 @@ protected DevModeUI ui = null; protected TreeLogger.Type baseLogLevelForUI = null; - /** - * Cheat on the first load's refresh by assuming the module loaded by - * {...@link com.google.gwt.dev.shell.GWTShellServlet} is still fresh. This - * prevents a double-refresh on startup. Subsequent refreshes will trigger a - * real refresh. - */ - private Set<String> alreadySeenModules = new HashSet<String>(); - private final Semaphore blockUntilDone = new Semaphore(0); private BrowserWidgetHost browserHost = new UiBrowserWidgetHostImpl(); @@ -903,10 +889,8 @@ */ protected ModuleDef loadModule(TreeLogger logger, String moduleName, boolean refresh) throws UnableToCompleteException { - refresh &= alreadySeenModules.contains(moduleName); ModuleDef moduleDef = ModuleDefLoader.loadFromClassPath(logger, moduleName, refresh); - alreadySeenModules.add(moduleName); assert (moduleDef != null) : "Required module state is absent"; return moduleDef; } -- http://groups.google.com/group/Google-Web-Toolkit-Contributors