You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sj...@apache.org on 2022/01/26 19:50:31 UTC

[maven-surefire] branch SUREFIRE-1987 created (now 678c407)

This is an automated email from the ASF dual-hosted git repository.

sjaranowski pushed a change to branch SUREFIRE-1987
in repository https://gitbox.apache.org/repos/asf/maven-surefire.git.


      at 678c407  [SUREFIRE-1987] Refactor ProviderDetector

This branch includes the following new commits:

     new 678c407  [SUREFIRE-1987] Refactor ProviderDetector

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


[maven-surefire] 01/01: [SUREFIRE-1987] Refactor ProviderDetector

Posted by sj...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sjaranowski pushed a commit to branch SUREFIRE-1987
in repository https://gitbox.apache.org/repos/asf/maven-surefire.git

commit 678c4071590fe1aabd1294a15dc1b1dfcc9e70aa
Author: Slawomir Jaranowski <s....@gmail.com>
AuthorDate: Wed Jan 26 20:49:58 2022 +0100

    [SUREFIRE-1987] Refactor ProviderDetector
---
 .../surefire/providerapi/ProviderDetector.java     | 65 +++++++++++-----------
 1 file changed, 34 insertions(+), 31 deletions(-)

diff --git a/maven-surefire-common/src/main/java/org/apache/maven/surefire/providerapi/ProviderDetector.java b/maven-surefire-common/src/main/java/org/apache/maven/surefire/providerapi/ProviderDetector.java
index caaaa9d..ec45398 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/surefire/providerapi/ProviderDetector.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/surefire/providerapi/ProviderDetector.java
@@ -22,9 +22,12 @@ package org.apache.maven.surefire.providerapi;
 import javax.annotation.Nonnull;
 
 import java.io.IOException;
-import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
+import java.util.Optional;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 import org.apache.maven.surefire.api.provider.SurefireProvider;
 import org.codehaus.plexus.component.annotations.Component;
@@ -48,33 +51,35 @@ public final class ProviderDetector
     @Nonnull
     public List<ProviderInfo> resolve( ConfigurableProviderInfo dynamicProvider, ProviderInfo... wellKnownProviders )
     {
-        List<ProviderInfo> providersToRun = new ArrayList<>();
         Set<String> manuallyConfiguredProviders = getManuallyConfiguredProviders();
-        for ( String name : manuallyConfiguredProviders )
+
+        List<ProviderInfo> providersToRun = manuallyConfiguredProviders.stream()
+            .map( name -> findByName( name, dynamicProvider, wellKnownProviders ) )
+            .collect( Collectors.toList() );
+
+
+        if ( providersToRun.isEmpty() )
         {
-            ProviderInfo wellKnown = findByName( name, wellKnownProviders );
-            ProviderInfo providerToAdd = wellKnown != null ? wellKnown : dynamicProvider.instantiate( name );
-            logger.info( "Using configured provider " + providerToAdd.getProviderName() );
-            providersToRun.add( providerToAdd );
+            return autoDetectOneWellKnownProvider( wellKnownProviders )
+                .map( Collections::singletonList )
+                .orElse( Collections.emptyList() );
+        }
+        else
+        {
+            providersToRun.forEach( p -> logger.info( "Using configured provider " + p.getProviderName() ) );
+            return Collections.unmodifiableList( providersToRun );
         }
-        return manuallyConfiguredProviders.isEmpty() ? autoDetectOneWellKnownProvider( wellKnownProviders )
-            : providersToRun;
     }
 
-    @Nonnull
-    private List<ProviderInfo> autoDetectOneWellKnownProvider( ProviderInfo... wellKnownProviders )
+    private Optional<ProviderInfo> autoDetectOneWellKnownProvider( ProviderInfo... wellKnownProviders )
     {
-        List<ProviderInfo> providersToRun = new ArrayList<>();
-        for ( ProviderInfo wellKnownProvider : wellKnownProviders )
-        {
-            if ( wellKnownProvider.isApplicable() )
-            {
-                logger.info( "Using auto detected provider " + wellKnownProvider.getProviderName() );
-                providersToRun.add( wellKnownProvider );
-                return providersToRun;
-            }
-        }
-        return providersToRun;
+        Optional<ProviderInfo> providerInfo = Arrays.stream( wellKnownProviders )
+            .filter( ProviderInfo::isApplicable )
+            .findFirst();
+
+        providerInfo.ifPresent( p -> logger.info( "Using auto detected provider " + p.getProviderName() ) );
+
+        return providerInfo;
     }
 
     private Set<String> getManuallyConfiguredProviders()
@@ -90,15 +95,13 @@ public final class ProviderDetector
         }
     }
 
-    private ProviderInfo findByName( String providerClassName, ProviderInfo... wellKnownProviders )
+    @Nonnull
+    private ProviderInfo findByName( String providerClassName,
+                                     ConfigurableProviderInfo dynamicProvider, ProviderInfo... wellKnownProviders )
     {
-        for ( ProviderInfo wellKnownProvider : wellKnownProviders )
-        {
-            if ( wellKnownProvider.getProviderName().equals( providerClassName ) )
-            {
-                return wellKnownProvider;
-            }
-        }
-        return null;
+        return Arrays.stream( wellKnownProviders )
+            .filter( p -> p.getProviderName().equals( providerClassName ) )
+            .findFirst()
+            .orElseGet( () -> dynamicProvider.instantiate( providerClassName ) );
     }
 }