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

Reply via email to