You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kr...@apache.org on 2011/07/04 20:55:06 UTC

svn commit: r1142759 - /maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleOutputFileReporter.java

Author: krosenvold
Date: Mon Jul  4 18:55:06 2011
New Revision: 1142759

URL: http://svn.apache.org/viewvc?rev=1142759&view=rev
Log:
[SUREFIRE-754] Unbounded memory usage in log capture

Existing integration tests should cover the functionality

Modified:
    maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleOutputFileReporter.java

Modified: maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleOutputFileReporter.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleOutputFileReporter.java?rev=1142759&r1=1142758&r2=1142759&view=diff
==============================================================================
--- maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleOutputFileReporter.java (original)
+++ maven/surefire/trunk/surefire-api/src/main/java/org/apache/maven/surefire/report/ConsoleOutputFileReporter.java Mon Jul  4 18:55:06 2011
@@ -24,6 +24,7 @@ import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.io.PrintWriter;
+
 import org.apache.maven.surefire.util.NestedRuntimeException;
 
 /**
@@ -39,13 +40,13 @@ import org.apache.maven.surefire.util.Ne
 public class ConsoleOutputFileReporter
     implements Reporter
 {
-
     private static final String LINE_SEPARATOR = System.getProperty( "line.separator" );
 
     private final File reportsDirectory;
 
-    private final StringBuffer outputBuffer = new StringBuffer();
+    private PrintWriter printWriter = null;
 
+    private String reportEntryName;
 
     public ConsoleOutputFileReporter( File reportsDirectory )
     {
@@ -54,30 +55,36 @@ public class ConsoleOutputFileReporter
 
     public void testSetStarting( ReportEntry reportEntry )
     {
+        this.reportEntryName = reportEntry.getName();
     }
 
     public void testSetCompleted( ReportEntry report )
         throws ReporterException
     {
-        PrintWriter printWriter;
-
-        if ( !reportsDirectory.exists() )
+        if ( printWriter != null )
         {
-            //noinspection ResultOfMethodCallIgnored
-            reportsDirectory.mkdirs();
+            printWriter.close();
+            printWriter = null;
         }
+    }
 
+    public void writeMessage( byte[] b, int off, int len )
+    {
         try
         {
-            if ( outputBuffer.length() > 0 )
+            if ( printWriter == null )
             {
-                File file = new File( reportsDirectory, report.getName() + "-output.txt" );
+                if ( !reportsDirectory.exists() )
+                {
+                    //noinspection ResultOfMethodCallIgnored
+                    reportsDirectory.mkdirs();
+                }
+                File file = new File( reportsDirectory, reportEntryName + "-output.txt" );
                 printWriter = new PrintWriter( new BufferedWriter( new FileWriter( file ) ) );
-                printWriter.write( outputBuffer.toString() );
-                printWriter.write( LINE_SEPARATOR );
-                outputBuffer.setLength( 0 );
-                printWriter.close();
             }
+            printWriter.write( new String( b, off, len ) );
+            printWriter.write( LINE_SEPARATOR );
+
         }
         catch ( IOException e )
         {
@@ -85,6 +92,7 @@ public class ConsoleOutputFileReporter
         }
     }
 
+
     public void testStarting( ReportEntry report )
     {
     }
@@ -109,11 +117,6 @@ public class ConsoleOutputFileReporter
     {
     }
 
-    public void writeMessage( byte[] b, int off, int len )
-    {
-        String line = new String( b, off, len );
-        outputBuffer.append( line );
-    }
 
     public void reset()
     {