java7: Fix usage of Process / ProcessBuilder.

The javadoc tool for Java7 is stricter than Java6, and when
invoked using ProcessBuilder / Process, the piped error stream
becomes full and the child process is blocked.

Work around this by redirecting the error stream to the
standard stream. Error output (javadoc errors due to missing
dependencies) will be filtered out anyway.

Also, replace a pointless use of Scanner with a BufferedReader.

Change-Id: Iac2cf804667f2223f182801d84446ab9f37124b0
diff --git a/tools/cts-java-scanner/src/com/android/cts/javascanner/DocletRunner.java b/tools/cts-java-scanner/src/com/android/cts/javascanner/DocletRunner.java
index 8c8dd4f..e56a7cf 100644
--- a/tools/cts-java-scanner/src/com/android/cts/javascanner/DocletRunner.java
+++ b/tools/cts-java-scanner/src/com/android/cts/javascanner/DocletRunner.java
@@ -15,12 +15,13 @@
  */
 package com.android.cts.javascanner;
 
+import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileFilter;
 import java.io.IOException;
+import java.io.InputStreamReader;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Scanner;
 
 class DocletRunner {
 
@@ -45,16 +46,21 @@
         args.add(getClassPath());
         args.addAll(getSourceFiles(mSourceDir));
 
-        Process process = new ProcessBuilder(args).start();
-        Scanner scanner = null;
+
+        // NOTE: We redirect the error stream to make sure the child process
+        // isn't blocked due to a full pipe. (The javadoc tool writes source errors
+        // to stderr.)
+        Process process = new ProcessBuilder(args).redirectErrorStream(true).start();
+        BufferedReader reader = new BufferedReader(
+                new InputStreamReader(process.getInputStream()));
         try {
-            scanner = new Scanner(process.getInputStream());
-            while (scanner.hasNextLine()) {
-                System.out.println(scanner.nextLine());
+            String line = null;
+            while ((line = reader.readLine()) != null) {
+                System.out.println(line);
             }
         } finally {
-            if (scanner != null) {
-                scanner.close();
+            if (reader != null) {
+                reader.close();
             }
         }