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/27 17:20:04 UTC
[maven-surefire] branch master updated: [SUREFIRE-1987] Refactor ProviderDetector
This is an automated email from the ASF dual-hosted git repository.
sjaranowski pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-surefire.git
The following commit(s) were added to refs/heads/master by this push:
new 48f403e [SUREFIRE-1987] Refactor ProviderDetector
48f403e is described below
commit 48f403ead8b8433c746b3ce6e206d1353240c83f
Author: Slawomir Jaranowski <s....@gmail.com>
AuthorDate: Wed Jan 26 20:49:58 2022 +0100
[SUREFIRE-1987] Refactor ProviderDetector
---
.../surefire/providerapi/ProviderDetector.java | 66 ++++++++++++----------
1 file changed, 35 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..cc9b91d 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,8 +22,9 @@ package org.apache.maven.surefire.providerapi;
import javax.annotation.Nonnull;
import java.io.IOException;
-import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
+import java.util.Optional;
import java.util.Set;
import org.apache.maven.surefire.api.provider.SurefireProvider;
@@ -32,6 +33,9 @@ import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.logging.Logger;
import static java.lang.Thread.currentThread;
+import static java.util.Arrays.stream;
+import static java.util.Collections.emptyList;
+import static java.util.stream.Collectors.toList;
/**
* @author Kristian Rosenvold
@@ -48,33 +52,37 @@ 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, wellKnownProviders )
+ .orElseGet( () -> dynamicProvider.instantiate( name ) ) )
+ .collect( toList() );
+
+ providersToRun.forEach( p -> logger.info( "Using configured provider " + p.getProviderName() ) );
+
+ 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( emptyList() );
+ }
+ else
+ {
+ 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 = 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 +98,11 @@ public final class ProviderDetector
}
}
- private ProviderInfo findByName( String providerClassName, ProviderInfo... wellKnownProviders )
+ @Nonnull
+ private Optional<ProviderInfo> findByName( String providerClassName, ProviderInfo... wellKnownProviders )
{
- for ( ProviderInfo wellKnownProvider : wellKnownProviders )
- {
- if ( wellKnownProvider.getProviderName().equals( providerClassName ) )
- {
- return wellKnownProvider;
- }
- }
- return null;
+ return stream( wellKnownProviders )
+ .filter( p -> p.getProviderName().equals( providerClassName ) )
+ .findFirst();
}
}