Flush the PrintWriter passed to  PrintWriterTreeLogger if we are logging reachable types to an OutputStream.

Review by: spoon (TBR)

git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@2870 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilder.java b/user/src/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilder.java
index 93ac23a..7198abd 100644
--- a/user/src/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilder.java
+++ b/user/src/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilder.java
@@ -617,15 +617,7 @@
 
     pruneUnreachableTypes();
 
-    TreeLogger reachableTypesLogger = logger;
-    if (logOutputStream != null) {
-      PrintWriterTreeLogger printWriterTreeLogger = new PrintWriterTreeLogger(
-          new PrintWriter(logOutputStream));
-      printWriterTreeLogger.setMaxDetail(TreeLogger.ALL);
-      reachableTypesLogger = printWriterTreeLogger;
-    }
-
-    logReachableTypes(reachableTypesLogger);
+    logReachableTypes(logger);
 
     Set<JClassType> possiblyInstantiatedTypes = new TreeSet<JClassType>(
         JTYPE_COMPARATOR);
@@ -1155,6 +1147,16 @@
   }
 
   private void logReachableTypes(TreeLogger logger) {
+    PrintWriter printWriter = null;
+    if (logOutputStream != null) {
+      // Route the TreeLogger output to an output stream.
+      printWriter = new PrintWriter(logOutputStream);
+      PrintWriterTreeLogger printWriterTreeLogger = new PrintWriterTreeLogger(
+          printWriter);
+      printWriterTreeLogger.setMaxDetail(TreeLogger.ALL);
+      logger = printWriterTreeLogger;
+    }
+
     logger.log(TreeLogger.INFO, "Reachable types computed on: "
         + new Date().toString());
     Set<JType> keySet = typeToTypeInfoComputed.keySet();
@@ -1182,6 +1184,11 @@
       TreeLogger pathLogger = typeLogger.branch(TreeLogger.INFO, "Path");
 
       logPath(pathLogger, tic.getPath());
+      logger.log(TreeLogger.INFO, "");
+    }
+
+    if (printWriter != null) {
+      printWriter.flush();
     }
   }