Skip to content

Commit

Permalink
[SUREFIRE-1987] Refactor ProviderDetector
Browse files Browse the repository at this point in the history
  • Loading branch information
slawekjaranowski committed Jan 27, 2022
1 parent 1b0b59d commit 48f403e
Showing 1 changed file with 35 additions and 31 deletions.
Expand Up @@ -22,8 +22,9 @@
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;
Expand All @@ -32,6 +33,9 @@
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
Expand All @@ -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()
Expand All @@ -90,15 +98,11 @@ private Set<String> getManuallyConfiguredProviders()
}
}

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();
}
}

0 comments on commit 48f403e

Please sign in to comment.