You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by cs...@apache.org on 2021/12/13 07:49:51 UTC
[maven-resolver] branch refactor-selector updated (8f7ca7d -> c0819c8)
This is an automated email from the ASF dual-hosted git repository.
cstamas pushed a change to branch refactor-selector
in repository https://gitbox.apache.org/repos/asf/maven-resolver.git.
omit 8f7ca7d Return def ctor for SL
omit 58e3cac /javadoc
omit 07e628d Refactor selector
new c0819c8 Refactor selector
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (8f7ca7d)
\
N -- N -- N refs/heads/refactor-selector (c0819c8)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
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.
Summary of changes:
.../named/NamedLockFactorySelectorSupport.java | 36 +++++++++++-----------
.../named/SimpleNamedLockFactorySelector.java | 4 +--
2 files changed, 20 insertions(+), 20 deletions(-)
[maven-resolver] 01/01: Refactor selector
Posted by cs...@apache.org.
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 c0819c8ebc4ea75f112f8fd7c41f1bc199d64f78
Author: Tamas Cservenak <ta...@cservenak.net>
AuthorDate: Sun Dec 12 22:44:34 2021 +0100
Refactor selector
To make it extensible and main logic reusable.
Provide "simple" implementation to cover resolver
use case (both, SL and sisu).
---
...r.java => NamedLockFactorySelectorSupport.java} | 82 +++++----------
.../named/SimpleNamedLockFactorySelector.java | 115 ++++++---------------
2 files changed, 56 insertions(+), 141 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 59%
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..cc9d307 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,17 @@ 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: by extending this class one may override defaults, or provide completely
+ * alternative way of configuration. This implementation uses Java System properties to select factory and name mapper.
+ *
+ * @since TBD
*/
-@Singleton
-@Named
-public final class SimpleNamedLockFactorySelector
+public abstract class NamedLockFactorySelectorSupport
implements NamedLockFactorySelector
{
public static final String FACTORY_KEY = "aether.syncContext.named.factory";
@@ -47,71 +41,49 @@ public final class SimpleNamedLockFactorySelector
private final NameMapper nameMapper;
- /**
- * 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()
- {
- 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}.
+ * Returns the selected {@link NamedLockFactory}, never null.
*/
- private String getNameMapperName()
+ @Override
+ public NamedLockFactory getSelectedNamedLockFactory()
{
- return System.getProperty( NAME_MAPPER_KEY, GAVNameMapper.NAME );
+ return namedLockFactory;
}
/**
- * Default constructor for ServiceLocator.
+ * Returns the selected {@link NameMapper}, never null.
*/
- public SimpleNamedLockFactorySelector()
+ @Override
+ public NameMapper getSelectedNameMapper()
{
- 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 nameMapper;
}
/**
- * Returns the selected {@link NamedLockFactory}, never null.
+ * Returns selected factory name (or sane default) using System property value of {@link #FACTORY_KEY} and defaults
+ * to {@link LocalReadWriteLockNamedLockFactory#NAME}.
*/
- @Override
- public NamedLockFactory getSelectedNamedLockFactory()
+ protected String getFactoryName( final String defaultFactoryName )
{
- return namedLockFactory;
+ return System.getProperty( FACTORY_KEY, defaultFactoryName );
}
/**
- * Returns the selected {@link NameMapper}, never null.
+ * Returns selected name mapper name (or sane default) using System property value of {@link #NAME_MAPPER_KEY} and
+ * defaults to {@link GAVNameMapper#NAME}.
*/
- @Override
- public NameMapper getSelectedNameMapper()
+ protected String getNameMapperName( final String defaultNameMapperName )
{
- return nameMapper;
+ return System.getProperty( NAME_MAPPER_KEY, defaultNameMapperName );
}
private NamedLockFactory selectNamedLockFactory( final Map<String, NamedLockFactory> factories,
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..1b1508f 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
@@ -32,48 +32,33 @@ import java.util.HashMap;
import java.util.Map;
/**
- * Simple selector implementation that uses Java system properties and sane default values.
+ * Simple selector implementation that uses {@link LocalReadWriteLockNamedLockFactory} and {@link GAVNameMapper} as
+ * default name lock factory and name mapper.
+ *
+ * @since TBD
*/
@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.
- */
- @Inject
- public SimpleNamedLockFactorySelector( final Map<String, NamedLockFactory> factories,
- final Map<String, NameMapper> nameMappers )
- {
- this.namedLockFactory = selectNamedLockFactory( factories, getFactoryName() );
- this.nameMapper = selectNameMapper( nameMappers, getNameMapperName() );
- }
+ private static final Map<String, NamedLockFactory> FACTORIES;
- /**
- * 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 );
- }
+ private static final Map<String, NameMapper> NAME_MAPPERS;
- /**
- * 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()
+ static
{
- return System.getProperty( NAME_MAPPER_KEY, GAVNameMapper.NAME );
+ 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() );
+
+ NAME_MAPPERS = new HashMap<>();
+ NAME_MAPPERS.put( StaticNameMapper.NAME, new StaticNameMapper() );
+ NAME_MAPPERS.put( GAVNameMapper.NAME, new GAVNameMapper() );
+ NAME_MAPPERS.put( DiscriminatingNameMapper.NAME, new DiscriminatingNameMapper( new GAVNameMapper() ) );
+ NAME_MAPPERS.put( FileGAVNameMapper.NAME, new FileGAVNameMapper() );
}
/**
@@ -81,60 +66,18 @@ public final class SimpleNamedLockFactorySelector
*/
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() );
+ this( FACTORIES, NAME_MAPPERS );
}
- /**
- * 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 )
+ @Inject
+ public SimpleNamedLockFactorySelector( final Map<String, NamedLockFactory> factories,
+ final Map<String, NameMapper> nameMappers )
{
- 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
+ );
}
}