This is an automated email from the ASF dual-hosted git repository. cstamas pushed a commit to branch refactor-selector in repository https://gitbox.apache.org/repos/asf/maven-resolver.git
commit 07e628d02f120f4e0458e1df2ea8da84ed1b04e7 Author: Tamas Cservenak <[email protected]> AuthorDate: Sun Dec 12 22:44:34 2021 +0100 Refactor selector To make it more extensible --- ...r.java => NamedLockFactorySelectorSupport.java} | 52 +++--------- .../named/SimpleNamedLockFactorySelector.java | 98 ++-------------------- 2 files changed, 19 insertions(+), 131 deletions(-) diff --git a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/SimpleNamedLockFactorySelector.java b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/NamedLockFactorySelectorSupport.java similarity index 61% copy from maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/SimpleNamedLockFactorySelector.java copy to maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/NamedLockFactorySelectorSupport.java index 8c96173..488d29e 100644 --- a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/SimpleNamedLockFactorySelector.java +++ b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/NamedLockFactorySelectorSupport.java @@ -20,23 +20,14 @@ package org.eclipse.aether.internal.impl.synccontext.named; */ import org.eclipse.aether.named.NamedLockFactory; -import org.eclipse.aether.named.providers.FileLockNamedLockFactory; import org.eclipse.aether.named.providers.LocalReadWriteLockNamedLockFactory; -import org.eclipse.aether.named.providers.LocalSemaphoreNamedLockFactory; -import org.eclipse.aether.named.providers.NoopNamedLockFactory; -import javax.inject.Inject; -import javax.inject.Named; -import javax.inject.Singleton; -import java.util.HashMap; import java.util.Map; /** - * Simple selector implementation that uses Java system properties and sane default values. + * Selector implementation support class. */ -@Singleton -@Named -public final class SimpleNamedLockFactorySelector +public abstract class NamedLockFactorySelectorSupport implements NamedLockFactorySelector { public static final String FACTORY_KEY = "aether.syncContext.named.factory"; @@ -50,50 +41,31 @@ public final class SimpleNamedLockFactorySelector /** * Constructor used with DI, where factories are injected and selected based on key. */ - @Inject - public SimpleNamedLockFactorySelector( final Map<String, NamedLockFactory> factories, - final Map<String, NameMapper> nameMappers ) + public NamedLockFactorySelectorSupport( final Map<String, NamedLockFactory> factories, + final String defaultFactoryName, + final Map<String, NameMapper> nameMappers, + final String defaultNameMapperName ) { - this.namedLockFactory = selectNamedLockFactory( factories, getFactoryName() ); - this.nameMapper = selectNameMapper( nameMappers, getNameMapperName() ); + this.namedLockFactory = selectNamedLockFactory( factories, getFactoryName( defaultFactoryName ) ); + this.nameMapper = selectNameMapper( nameMappers, getNameMapperName( defaultNameMapperName ) ); } /** * Returns selected factory name (or sane default) using System property value of {@link #FACTORY_KEY} and defaults * to {@link LocalReadWriteLockNamedLockFactory#NAME}. */ - private String getFactoryName() + protected String getFactoryName( final String defaultFactoryName ) { - return System.getProperty( FACTORY_KEY, LocalReadWriteLockNamedLockFactory.NAME ); + return System.getProperty( FACTORY_KEY, defaultFactoryName ); } /** * Returns selected name mapper name (or sane default) using System property value of {@link #NAME_MAPPER_KEY} and * defaults to {@link GAVNameMapper#NAME}. */ - private String getNameMapperName() + protected String getNameMapperName( final String defaultNameMapperName ) { - return System.getProperty( NAME_MAPPER_KEY, GAVNameMapper.NAME ); - } - - /** - * Default constructor for ServiceLocator. - */ - public SimpleNamedLockFactorySelector() - { - Map<String, NamedLockFactory> factories = new HashMap<>(); - factories.put( NoopNamedLockFactory.NAME, new NoopNamedLockFactory() ); - factories.put( LocalReadWriteLockNamedLockFactory.NAME, new LocalReadWriteLockNamedLockFactory() ); - factories.put( LocalSemaphoreNamedLockFactory.NAME, new LocalSemaphoreNamedLockFactory() ); - factories.put( FileLockNamedLockFactory.NAME, new FileLockNamedLockFactory() ); - this.namedLockFactory = selectNamedLockFactory( factories, getFactoryName() ); - - Map<String, NameMapper> nameMappers = new HashMap<>(); - nameMappers.put( StaticNameMapper.NAME, new StaticNameMapper() ); - nameMappers.put( GAVNameMapper.NAME, new GAVNameMapper() ); - nameMappers.put( DiscriminatingNameMapper.NAME, new DiscriminatingNameMapper( new GAVNameMapper() ) ); - nameMappers.put( FileGAVNameMapper.NAME, new FileGAVNameMapper() ); - this.nameMapper = selectNameMapper( nameMappers, getNameMapperName() ); + return System.getProperty( NAME_MAPPER_KEY, defaultNameMapperName ); } /** diff --git a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/SimpleNamedLockFactorySelector.java b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/SimpleNamedLockFactorySelector.java index 8c96173..ff0778d 100644 --- a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/SimpleNamedLockFactorySelector.java +++ b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/SimpleNamedLockFactorySelector.java @@ -37,16 +37,8 @@ import java.util.Map; @Singleton @Named public final class SimpleNamedLockFactorySelector - implements NamedLockFactorySelector + extends NamedLockFactorySelectorSupport { - public static final String FACTORY_KEY = "aether.syncContext.named.factory"; - - public static final String NAME_MAPPER_KEY = "aether.syncContext.named.nameMapper"; - - private final NamedLockFactory namedLockFactory; - - private final NameMapper nameMapper; - /** * Constructor used with DI, where factories are injected and selected based on key. */ @@ -54,87 +46,11 @@ public final class SimpleNamedLockFactorySelector public SimpleNamedLockFactorySelector( final Map<String, NamedLockFactory> factories, final Map<String, NameMapper> nameMappers ) { - this.namedLockFactory = selectNamedLockFactory( factories, getFactoryName() ); - this.nameMapper = selectNameMapper( nameMappers, getNameMapperName() ); - } - - /** - * Returns selected factory name (or sane default) using System property value of {@link #FACTORY_KEY} and defaults - * to {@link LocalReadWriteLockNamedLockFactory#NAME}. - */ - private String getFactoryName() - { - return System.getProperty( FACTORY_KEY, LocalReadWriteLockNamedLockFactory.NAME ); - } - - /** - * Returns selected name mapper name (or sane default) using System property value of {@link #NAME_MAPPER_KEY} and - * defaults to {@link GAVNameMapper#NAME}. - */ - private String getNameMapperName() - { - return System.getProperty( NAME_MAPPER_KEY, GAVNameMapper.NAME ); - } - - /** - * Default constructor for ServiceLocator. - */ - public SimpleNamedLockFactorySelector() - { - Map<String, NamedLockFactory> factories = new HashMap<>(); - factories.put( NoopNamedLockFactory.NAME, new NoopNamedLockFactory() ); - factories.put( LocalReadWriteLockNamedLockFactory.NAME, new LocalReadWriteLockNamedLockFactory() ); - factories.put( LocalSemaphoreNamedLockFactory.NAME, new LocalSemaphoreNamedLockFactory() ); - factories.put( FileLockNamedLockFactory.NAME, new FileLockNamedLockFactory() ); - this.namedLockFactory = selectNamedLockFactory( factories, getFactoryName() ); - - Map<String, NameMapper> nameMappers = new HashMap<>(); - nameMappers.put( StaticNameMapper.NAME, new StaticNameMapper() ); - nameMappers.put( GAVNameMapper.NAME, new GAVNameMapper() ); - nameMappers.put( DiscriminatingNameMapper.NAME, new DiscriminatingNameMapper( new GAVNameMapper() ) ); - nameMappers.put( FileGAVNameMapper.NAME, new FileGAVNameMapper() ); - this.nameMapper = selectNameMapper( nameMappers, getNameMapperName() ); - } - - /** - * Returns the selected {@link NamedLockFactory}, never null. - */ - @Override - public NamedLockFactory getSelectedNamedLockFactory() - { - return namedLockFactory; - } - - /** - * Returns the selected {@link NameMapper}, never null. - */ - @Override - public NameMapper getSelectedNameMapper() - { - return nameMapper; - } - - private NamedLockFactory selectNamedLockFactory( final Map<String, NamedLockFactory> factories, - final String factoryName ) - { - NamedLockFactory factory = factories.get( factoryName ); - if ( factory == null ) - { - throw new IllegalArgumentException( "Unknown NamedLockFactory name: " + factoryName - + ", known ones: " + factories.keySet() ); - } - return factory; - } - - private NameMapper selectNameMapper( final Map<String, NameMapper> nameMappers, - final String mapperName ) - { - NameMapper nameMapper = nameMappers.get( mapperName ); - if ( nameMapper == null ) - { - throw new IllegalArgumentException( "Unknown NameMapper name: " + mapperName - + ", known ones: " + nameMappers.keySet() ); - } - return nameMapper; + super( + factories, + LocalReadWriteLockNamedLockFactory.NAME, + nameMappers, + GAVNameMapper.NAME + ); } }
