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

Reply via email to