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 ) {
