Repository: maven-surefire
Updated Branches:
  refs/heads/master 65e062cb8 -> 319b3ec6e


[SUREFIRE-1121] NPE 
DefaultReporterFactory.mergeFromOtherFactories(DefaultReporterFactory.java:82)


Project: http://git-wip-us.apache.org/repos/asf/maven-surefire/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-surefire/commit/319b3ec6
Tree: http://git-wip-us.apache.org/repos/asf/maven-surefire/tree/319b3ec6
Diff: http://git-wip-us.apache.org/repos/asf/maven-surefire/diff/319b3ec6

Branch: refs/heads/master
Commit: 319b3ec6e2c44536bde521563654c5f7f4251255
Parents: 65e062c
Author: tibordigana <[email protected]>
Authored: Tue Dec 2 02:02:04 2014 +0100
Committer: tibordigana <[email protected]>
Committed: Tue Dec 2 02:02:04 2014 +0100

----------------------------------------------------------------------
 .../surefire/booterclient/ForkStarter.java      | 22 +++++++++++---------
 .../surefire/report/DefaultReporterFactory.java |  3 ++-
 2 files changed, 14 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/319b3ec6/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java
----------------------------------------------------------------------
diff --git 
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java
 
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java
index 919867a..acd8da9 100644
--- 
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java
+++ 
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java
@@ -23,6 +23,7 @@ import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Properties;
@@ -36,6 +37,7 @@ import java.util.concurrent.Future;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicReference;
 
 import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.plugin.surefire.AbstractSurefireMojo;
@@ -88,29 +90,29 @@ public class ForkStarter
     /**
      * Closes an InputStream
      */
-    private final class InputStreamCloser
+    private static class InputStreamCloser
         implements Runnable
     {
-        private InputStream testProvidingInputStream;
+        private final AtomicReference<InputStream> testProvidingInputStream;
 
         public InputStreamCloser( InputStream testProvidingInputStream )
         {
-            this.testProvidingInputStream = testProvidingInputStream;
+            this.testProvidingInputStream = new AtomicReference<InputStream>( 
testProvidingInputStream );
         }
 
-        public synchronized void run()
+        public void run()
         {
-            if ( testProvidingInputStream != null )
+            InputStream stream = testProvidingInputStream.getAndSet( null );
+            if ( stream != null )
             {
                 try
                 {
-                    testProvidingInputStream.close();
+                    stream.close();
                 }
                 catch ( IOException e )
                 {
                     // ignore
                 }
-                testProvidingInputStream = null;
             }
         }
     }
@@ -125,11 +127,11 @@ public class ForkStarter
 
     private final StartupReportConfiguration startupReportConfiguration;
 
-    private Log log;
+    private final Log log;
 
     private final DefaultReporterFactory defaultReporterFactory;
 
-    private final List<DefaultReporterFactory> defaultReporterFactoryList;
+    private final Collection<DefaultReporterFactory> 
defaultReporterFactoryList;
 
     private static volatile int systemPropertiesFileCounter = 0;
 
@@ -145,7 +147,7 @@ public class ForkStarter
         this.log = log;
         defaultReporterFactory = new DefaultReporterFactory( 
startupReportConfiguration );
         defaultReporterFactory.runStarting();
-        defaultReporterFactoryList = new ArrayList<DefaultReporterFactory>();
+        defaultReporterFactoryList = new 
ConcurrentLinkedQueue<DefaultReporterFactory>();
     }
 
     public RunResult run( SurefireProperties effectiveSystemProperties, 
DefaultScanResult scanResult )

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/319b3ec6/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactory.java
----------------------------------------------------------------------
diff --git 
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactory.java
 
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactory.java
index 35ef7e4..aeb3c22 100644
--- 
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactory.java
+++ 
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactory.java
@@ -29,6 +29,7 @@ import org.apache.maven.surefire.report.StackTraceWriter;
 import org.apache.maven.surefire.suite.RunResult;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
@@ -75,7 +76,7 @@ public class DefaultReporterFactory
         return createTestSetRunListener();
     }
 
-    public void mergeFromOtherFactories( List<DefaultReporterFactory> 
factories )
+    public void mergeFromOtherFactories( Collection<DefaultReporterFactory> 
factories )
     {
         for ( DefaultReporterFactory factory : factories )
         {

Reply via email to