Code cleanup forCompositeTreeLogger, AbstractTreeLogger

- Removes access to AbstractTreeLogger.indexWithinMyParent
- CompositeTreeLogger now extends TreeLogger directly and composes TreeLoggers, rather than AbstractTreeLogger

Suggested by: mmendez
Review by: jat



git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@6514 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/CompileTaskRunner.java b/dev/core/src/com/google/gwt/dev/CompileTaskRunner.java
index 4156ae4..60ba4ba 100644
--- a/dev/core/src/com/google/gwt/dev/CompileTaskRunner.java
+++ b/dev/core/src/com/google/gwt/dev/CompileTaskRunner.java
@@ -18,7 +18,6 @@
 import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.core.ext.UnableToCompleteException;
 import com.google.gwt.dev.shell.log.SwingLoggerPanel;
-import com.google.gwt.dev.util.log.AbstractTreeLogger;
 import com.google.gwt.dev.util.log.PrintWriterTreeLogger;
 
 /**
@@ -52,8 +51,7 @@
       // Eager AWT initialization for OS X to ensure safe coexistence with SWT.
       BootStrapPlatform.initGui();
 
-      final AbstractTreeLogger logger = loggerWindow.getLogger();
-      logger.setMaxDetail(options.getLogLevel());
+      final TreeLogger logger = loggerWindow.getLogger();
       final boolean[] success = new boolean[1];
 
       // Compiler will be spawned onto a second thread, UI thread for tree
diff --git a/dev/core/src/com/google/gwt/dev/ModulePanel.java b/dev/core/src/com/google/gwt/dev/ModulePanel.java
index 281dd76..a93957e 100644
--- a/dev/core/src/com/google/gwt/dev/ModulePanel.java
+++ b/dev/core/src/com/google/gwt/dev/ModulePanel.java
@@ -15,11 +15,11 @@
  */
 package com.google.gwt.dev;
 
+import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.core.ext.TreeLogger.Type;
 import com.google.gwt.dev.ModuleTabPanel.Session;
 import com.google.gwt.dev.shell.log.SwingLoggerPanel;
 import com.google.gwt.dev.shell.log.SwingLoggerPanel.CloseHandler;
-import com.google.gwt.dev.util.log.AbstractTreeLogger;
 
 import java.awt.BorderLayout;
 import java.awt.event.ActionEvent;
@@ -70,7 +70,7 @@
     setDisconnected();
   }
 
-  public AbstractTreeLogger getLogger() {
+  public TreeLogger getLogger() {
     return loggerPanel.getLogger();
   }
 
diff --git a/dev/core/src/com/google/gwt/dev/shell/ShellMainWindow.java b/dev/core/src/com/google/gwt/dev/shell/ShellMainWindow.java
index a58d5cf..6f0fbf0 100644
--- a/dev/core/src/com/google/gwt/dev/shell/ShellMainWindow.java
+++ b/dev/core/src/com/google/gwt/dev/shell/ShellMainWindow.java
@@ -17,7 +17,6 @@
 
 import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.dev.shell.log.SwingLoggerPanel;
-import com.google.gwt.dev.util.log.AbstractTreeLogger;
 
 import java.awt.BorderLayout;
 import java.awt.GridLayout;
@@ -57,7 +56,7 @@
   /**
    * @return TreeLogger instance
    */
-  public AbstractTreeLogger getLogger() {
+  public TreeLogger getLogger() {
     return logWindow.getLogger();
   }
 }
diff --git a/dev/core/src/com/google/gwt/dev/shell/log/SwingLoggerPanel.java b/dev/core/src/com/google/gwt/dev/shell/log/SwingLoggerPanel.java
index 08d40e4..5d29208 100644
--- a/dev/core/src/com/google/gwt/dev/shell/log/SwingLoggerPanel.java
+++ b/dev/core/src/com/google/gwt/dev/shell/log/SwingLoggerPanel.java
@@ -253,7 +253,7 @@
 
   private final JEditorPane details;
 
-  private final AbstractTreeLogger logger;
+  private final TreeLogger logger;
 
   private DefaultMutableTreeNode root;
 
@@ -380,19 +380,18 @@
     add(splitter);
     
     AbstractTreeLogger uiLogger = new SwingTreeLogger(this);
-    AbstractTreeLogger bestLogger = uiLogger;
+    uiLogger.setMaxDetail(maxLevel);
+    TreeLogger bestLogger = uiLogger;
     if (logFile != null) {
       try {
         PrintWriterTreeLogger fileLogger = new PrintWriterTreeLogger(logFile);
-        bestLogger = new CompositeTreeLogger(bestLogger, fileLogger);
         fileLogger.setMaxDetail(maxLevel);
-        uiLogger.setMaxDetail(maxLevel);
+        bestLogger = new CompositeTreeLogger(bestLogger, fileLogger);
       } catch (IOException ex) {
         bestLogger.log(TreeLogger.ERROR, "Can't log to file "
             + logFile.getAbsolutePath(), ex);
       }
     }
-    bestLogger.setMaxDetail(maxLevel);
     logger = bestLogger;
     KeyStroke key = KeyStroke.getKeyStroke(KeyEvent.VK_F,
         InputEvent.CTRL_DOWN_MASK);
@@ -460,7 +459,7 @@
     return autoScroll;
   }
 
-  public AbstractTreeLogger getLogger() {
+  public TreeLogger getLogger() {
     return logger;
   }
 
diff --git a/dev/core/src/com/google/gwt/dev/shell/log/SwingTreeLogger.java b/dev/core/src/com/google/gwt/dev/shell/log/SwingTreeLogger.java
index 0f95695..5efe4e8 100644
--- a/dev/core/src/com/google/gwt/dev/shell/log/SwingTreeLogger.java
+++ b/dev/core/src/com/google/gwt/dev/shell/log/SwingTreeLogger.java
@@ -277,7 +277,7 @@
           if (event.isBranchCommit) {
             SwingTreeLogger parentLogger = (SwingTreeLogger) logger.getParentLogger();
             parent = parentLogger.treeNode;
-            idx = logger.indexWithinMyParent;
+            idx = logger.getBranchedIndex();
             node = logger.treeNode;
           } else {
             parent = logger.treeNode;
diff --git a/dev/core/src/com/google/gwt/dev/util/log/AbstractTreeLogger.java b/dev/core/src/com/google/gwt/dev/util/log/AbstractTreeLogger.java
index f84d64b..e3b38b0 100644
--- a/dev/core/src/com/google/gwt/dev/util/log/AbstractTreeLogger.java
+++ b/dev/core/src/com/google/gwt/dev/util/log/AbstractTreeLogger.java
@@ -84,12 +84,12 @@
     return e.getClass().getSimpleName();
   }
 
-  public int indexWithinMyParent;
-  
   protected TreeLogger.Type logLevel = TreeLogger.ALL;
 
   protected AbstractTreeLogger parent;
 
+  private int indexWithinMyParent;
+
   private int nextChildIndex;
 
   private final Object nextChildIndexLock = new Object();
@@ -220,7 +220,7 @@
     }
     logLevel = type;
   }
-  
+
   @Override
   public String toString() {
     return getLoggerId();
@@ -245,12 +245,12 @@
         // Commit the parent first.
         //
         parent.commitMyBranchEntryInMyParentLogger();
-  
+
         // Let the subclass do its thing to commit this branch.
         //
         parent.doCommitBranch(this, uncommitted.type, uncommitted.message,
             uncommitted.caught, uncommitted.helpInfo);
-  
+
         // Release the uncommitted state.
         //
         uncommitted = null;
@@ -267,7 +267,7 @@
    * @deprecated This method has been deprecated; override
    *             {@link #doCommitBranch(AbstractTreeLogger, com.google.gwt.core.ext.TreeLogger.Type, String, Throwable, com.google.gwt.core.ext.TreeLogger.HelpInfo)}
    *             instead.
-   *
+   * 
    * @param childBeingCommitted
    * @param type
    * @param msg
@@ -290,7 +290,7 @@
    * @deprecated This method has been deprecated; override
    *             {@link #branch(com.google.gwt.core.ext.TreeLogger.Type, String, Throwable, com.google.gwt.core.ext.TreeLogger.HelpInfo)
    *             instead.
-   *
+   * 
    * @param indexOfLogEntryWithinParentLogger
    * @param type
    * @param msg
diff --git a/dev/core/src/com/google/gwt/dev/util/log/CompositeTreeLogger.java b/dev/core/src/com/google/gwt/dev/util/log/CompositeTreeLogger.java
index 7c70c01..ca67b84 100644
--- a/dev/core/src/com/google/gwt/dev/util/log/CompositeTreeLogger.java
+++ b/dev/core/src/com/google/gwt/dev/util/log/CompositeTreeLogger.java
@@ -15,46 +15,44 @@
  */
 package com.google.gwt.dev.util.log;
 
+import com.google.gwt.core.ext.TreeLogger;
+
 /**
- * Forks logging over two child loggers.  This provides the graphics + file
+ * Forks logging over two child loggers. This provides the graphics + file
  * logging of HostedModeBase's -logfile option.
  */
-public class CompositeTreeLogger extends AbstractTreeLogger {
+public class CompositeTreeLogger extends TreeLogger {
 
-  private AbstractTreeLogger[] loggers;
-  
-  public CompositeTreeLogger(AbstractTreeLogger... loggers) {
+  private TreeLogger[] loggers;
+
+  public CompositeTreeLogger(TreeLogger... loggers) {
     this.loggers = loggers;
   }
 
   @Override
-  protected AbstractTreeLogger doBranch() {
-    AbstractTreeLogger children[] = new AbstractTreeLogger[loggers.length];
+  public TreeLogger branch(Type type, String msg, Throwable caught,
+      HelpInfo helpInfo) {
+    TreeLogger children[] = new TreeLogger[loggers.length];
     for (int i = 0; i < loggers.length; i++) {
-      children[i] = loggers[i].doBranch();      
-      children[i].indexWithinMyParent = loggers[i].allocateNextChildIndex();
-      children[i].parent = loggers[i];
-      children[i].logLevel = loggers[i].logLevel;
+      children[i] = loggers[i].branch(type, msg, caught, helpInfo);
     }
     return new CompositeTreeLogger(children);
   }
 
   @Override
-  protected void doCommitBranch(AbstractTreeLogger childBeingCommitted,
-      Type type, String msg, Throwable caught, HelpInfo helpInfo) {
-    CompositeTreeLogger child = (CompositeTreeLogger) childBeingCommitted;
-    assert loggers.length == child.loggers.length;
-    for (int i = 0; i < loggers.length; i++) {
-      loggers[i].doCommitBranch(child.loggers[i], type, msg, caught, helpInfo);      
+  public boolean isLoggable(Type type) {
+    for (TreeLogger logger : loggers) {
+      if (logger.isLoggable(type)) {
+        return true;
+      }
     }
+    return false;
   }
 
   @Override
-  protected void doLog(int indexOfLogEntryWithinParentLogger, Type type,
-      String msg, Throwable caught, HelpInfo helpInfo) {
-    for (AbstractTreeLogger logger : loggers) {
-      logger.doLog(indexOfLogEntryWithinParentLogger, type, msg, caught,
-          helpInfo);
+  public void log(Type type, String msg, Throwable caught, HelpInfo helpInfo) {
+    for (TreeLogger logger : loggers) {
+      logger.log(type, msg, caught, helpInfo);
     }
   }
 }