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 2023/01/12 10:16:26 UTC

[maven-resolver] branch master updated: [MRESOLVER-298] Make javax.inject optional again (#235)

This is an automated email from the ASF dual-hosted git repository.

cstamas pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-resolver.git


The following commit(s) were added to refs/heads/master by this push:
     new 1010f0f7 [MRESOLVER-298] Make javax.inject optional again (#235)
1010f0f7 is described below

commit 1010f0f7ce3381d99bc068f71606e967e61ae3c9
Author: Tamas Cservenak <ta...@cservenak.net>
AuthorDate: Thu Jan 12 11:16:21 2023 +0100

    [MRESOLVER-298] Make javax.inject optional again (#235)
    
    javax.inject is and should be optional (used only when Guice and/or Sisu is being used), but in case SL is being used no javax.inject should be needed.
    
    This rule was violated in 1.9.0 commit 5566bd5b3b0e59d124d820e6274da8e2da7804b0 where `javax.inject.Provider` was used in conjuction with SL as well.
    
    This fix introduces `NameMappers` helper static class that constructs name mappers, and javax.inject.Provider classes are used ONLY when in Guice/Sisu, are NOT used with conjunction of SL.
    
    ---
    
    https://issues.apache.org/jira/browse/MRESOLVER-298
---
 .../eclipse/aether/impl/guice/AetherModule.java    | 31 ++++++-----
 .../impl/synccontext/named/NameMappers.java        | 65 ++++++++++++++++++++++
 .../named/NamedLockFactoryAdapterFactoryImpl.java  | 17 ++----
 .../DiscriminatingNameMapperProvider.java          |  9 +--
 .../named/providers/FileGAVNameMapperProvider.java |  9 +--
 .../FileHashingGAVNameMapperProvider.java          | 10 +---
 .../named/providers/GAVNameMapperProvider.java     |  8 +--
 .../named/providers/StaticNameMapperProvider.java  |  8 +--
 .../synccontext/named/providers/package-info.java  |  4 +-
 9 files changed, 105 insertions(+), 56 deletions(-)

diff --git a/maven-resolver-impl/src/main/java/org/eclipse/aether/impl/guice/AetherModule.java b/maven-resolver-impl/src/main/java/org/eclipse/aether/impl/guice/AetherModule.java
index bf4fbc1e..fccf2e9e 100644
--- a/maven-resolver-impl/src/main/java/org/eclipse/aether/impl/guice/AetherModule.java
+++ b/maven-resolver-impl/src/main/java/org/eclipse/aether/impl/guice/AetherModule.java
@@ -65,6 +65,7 @@ import org.eclipse.aether.internal.impl.filter.GroupIdRemoteRepositoryFilterSour
 import org.eclipse.aether.internal.impl.filter.PrefixesRemoteRepositoryFilterSource;
 import org.eclipse.aether.internal.impl.resolution.TrustedChecksumsArtifactResolverPostProcessor;
 import org.eclipse.aether.internal.impl.synccontext.DefaultSyncContextFactory;
+import org.eclipse.aether.internal.impl.synccontext.named.NameMappers;
 import org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapterFactoryImpl;
 import org.eclipse.aether.internal.impl.synccontext.named.NameMapper;
 import org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapterFactory;
@@ -236,15 +237,15 @@ public class AetherModule
                 .to( org.eclipse.aether.internal.impl.synccontext.legacy.DefaultSyncContextFactory.class )
                 .in( Singleton.class );
 
-        bind( NameMapper.class ).annotatedWith( Names.named( StaticNameMapperProvider.NAME ) )
+        bind( NameMapper.class ).annotatedWith( Names.named( NameMappers.STATIC_NAME ) )
                 .toProvider( StaticNameMapperProvider.class ).in( Singleton.class );
-        bind( NameMapper.class ).annotatedWith( Names.named( GAVNameMapperProvider.NAME ) )
+        bind( NameMapper.class ).annotatedWith( Names.named( NameMappers.GAV_NAME ) )
                 .toProvider( GAVNameMapperProvider.class ).in( Singleton.class );
-        bind( NameMapper.class ).annotatedWith( Names.named( DiscriminatingNameMapperProvider.NAME ) )
+        bind( NameMapper.class ).annotatedWith( Names.named( NameMappers.DISCRIMINATING_NAME ) )
                 .toProvider( DiscriminatingNameMapperProvider.class ).in( Singleton.class );
-        bind( NameMapper.class ).annotatedWith( Names.named( FileGAVNameMapperProvider.NAME ) )
+        bind( NameMapper.class ).annotatedWith( Names.named( NameMappers.FILE_GAV_NAME ) )
                 .toProvider( FileGAVNameMapperProvider.class ).in( Singleton.class );
-        bind( NameMapper.class ).annotatedWith( Names.named( FileHashingGAVNameMapperProvider.NAME ) )
+        bind( NameMapper.class ).annotatedWith( Names.named( NameMappers.FILE_HGAV_NAME ) )
                 .toProvider( FileHashingGAVNameMapperProvider.class ).in( Singleton.class );
 
         bind( NamedLockFactory.class ).annotatedWith( Names.named( NoopNamedLockFactory.NAME ) )
@@ -349,18 +350,18 @@ public class AetherModule
     @Provides
     @Singleton
     Map<String, NameMapper> provideNameMappers(
-            @Named( StaticNameMapperProvider.NAME ) NameMapper staticNameMapper,
-            @Named( GAVNameMapperProvider.NAME ) NameMapper gavNameMapper,
-            @Named( DiscriminatingNameMapperProvider.NAME ) NameMapper discriminatingNameMapper,
-            @Named( FileGAVNameMapperProvider.NAME ) NameMapper fileGavNameMapper,
-            @Named( FileHashingGAVNameMapperProvider.NAME ) NameMapper fileHashingGavNameMapper )
+            @Named( NameMappers.STATIC_NAME ) NameMapper staticNameMapper,
+            @Named( NameMappers.GAV_NAME ) NameMapper gavNameMapper,
+            @Named( NameMappers.DISCRIMINATING_NAME ) NameMapper discriminatingNameMapper,
+            @Named( NameMappers.FILE_GAV_NAME ) NameMapper fileGavNameMapper,
+            @Named( NameMappers.FILE_HGAV_NAME ) NameMapper fileHashingGavNameMapper )
     {
         Map<String, NameMapper> result = new HashMap<>();
-        result.put( StaticNameMapperProvider.NAME, staticNameMapper );
-        result.put( GAVNameMapperProvider.NAME, gavNameMapper );
-        result.put( DiscriminatingNameMapperProvider.NAME, discriminatingNameMapper );
-        result.put( FileGAVNameMapperProvider.NAME, fileGavNameMapper );
-        result.put( FileHashingGAVNameMapperProvider.NAME, fileHashingGavNameMapper );
+        result.put( NameMappers.STATIC_NAME, staticNameMapper );
+        result.put( NameMappers.GAV_NAME, gavNameMapper );
+        result.put( NameMappers.DISCRIMINATING_NAME, discriminatingNameMapper );
+        result.put( NameMappers.FILE_GAV_NAME, fileGavNameMapper );
+        result.put( NameMappers.FILE_HGAV_NAME, fileHashingGavNameMapper );
         return Collections.unmodifiableMap( result );
     }
 
diff --git a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/NameMappers.java b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/NameMappers.java
new file mode 100644
index 00000000..0a5303e7
--- /dev/null
+++ b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/NameMappers.java
@@ -0,0 +1,65 @@
+package org.eclipse.aether.internal.impl.synccontext.named;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * As end-user "mappers" are actually configurations/compositions and are constructed from several NameMapper
+ * implementations, this helper class constructing them. This class also holds "names" used by service locator and
+ * Guice/Sisu as well.
+ *
+ * @since 1.9.4
+ */
+public final class NameMappers
+{
+    public static final String STATIC_NAME = "static";
+
+    public static final String GAV_NAME = "gav";
+
+    public static final String FILE_GAV_NAME = "file-gav";
+
+    public static final String FILE_HGAV_NAME = "file-hgav";
+
+    public static final String DISCRIMINATING_NAME = "discriminating";
+
+    public static NameMapper staticNameMapper()
+    {
+        return new StaticNameMapper();
+    }
+
+    public static NameMapper gavNameMapper()
+    {
+        return GAVNameMapper.gav();
+    }
+
+    public static NameMapper fileGavNameMapper()
+    {
+        return new BasedirNameMapper( GAVNameMapper.fileGav() );
+    }
+
+    public static NameMapper fileHashingGavNameMapper()
+    {
+        return new BasedirNameMapper( new HashingNameMapper( GAVNameMapper.gav() ) );
+    }
+
+    public static NameMapper discriminatingNameMapper()
+    {
+        return new DiscriminatingNameMapper( GAVNameMapper.gav() );
+    }
+}
diff --git a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/NamedLockFactoryAdapterFactoryImpl.java b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/NamedLockFactoryAdapterFactoryImpl.java
index e558db4d..0890c1b9 100644
--- a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/NamedLockFactoryAdapterFactoryImpl.java
+++ b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/NamedLockFactoryAdapterFactoryImpl.java
@@ -31,11 +31,6 @@ import java.util.Map;
 import org.eclipse.aether.MultiRuntimeException;
 import org.eclipse.aether.RepositorySystemSession;
 import org.eclipse.aether.impl.RepositorySystemLifecycle;
-import org.eclipse.aether.internal.impl.synccontext.named.providers.DiscriminatingNameMapperProvider;
-import org.eclipse.aether.internal.impl.synccontext.named.providers.FileGAVNameMapperProvider;
-import org.eclipse.aether.internal.impl.synccontext.named.providers.FileHashingGAVNameMapperProvider;
-import org.eclipse.aether.internal.impl.synccontext.named.providers.GAVNameMapperProvider;
-import org.eclipse.aether.internal.impl.synccontext.named.providers.StaticNameMapperProvider;
 import org.eclipse.aether.named.NamedLockFactory;
 import org.eclipse.aether.named.providers.FileLockNamedLockFactory;
 import org.eclipse.aether.named.providers.LocalReadWriteLockNamedLockFactory;
@@ -67,7 +62,7 @@ public class NamedLockFactoryAdapterFactoryImpl implements NamedLockFactoryAdapt
 {
     private static final String DEFAULT_FACTORY_NAME = LocalReadWriteLockNamedLockFactory.NAME;
 
-    private static final String DEFAULT_NAME_MAPPER_NAME = GAVNameMapperProvider.NAME;
+    private static final String DEFAULT_NAME_MAPPER_NAME = NameMappers.GAV_NAME;
 
     private static Map<String, NamedLockFactory> getManuallyCreatedFactories()
     {
@@ -82,11 +77,11 @@ public class NamedLockFactoryAdapterFactoryImpl implements NamedLockFactoryAdapt
     private static Map<String, NameMapper> getManuallyCreatedNameMappers()
     {
         HashMap<String, NameMapper> mappers = new HashMap<>();
-        mappers.put( StaticNameMapperProvider.NAME, new StaticNameMapperProvider().get() );
-        mappers.put( GAVNameMapperProvider.NAME, new GAVNameMapperProvider().get() );
-        mappers.put( DiscriminatingNameMapperProvider.NAME, new DiscriminatingNameMapperProvider().get() );
-        mappers.put( FileGAVNameMapperProvider.NAME, new FileGAVNameMapperProvider().get() );
-        mappers.put( FileHashingGAVNameMapperProvider.NAME, new FileHashingGAVNameMapperProvider().get() );
+        mappers.put( NameMappers.STATIC_NAME, NameMappers.staticNameMapper() );
+        mappers.put( NameMappers.GAV_NAME, NameMappers.gavNameMapper() );
+        mappers.put( NameMappers.DISCRIMINATING_NAME, NameMappers.discriminatingNameMapper() );
+        mappers.put( NameMappers.FILE_GAV_NAME, NameMappers.fileGavNameMapper() );
+        mappers.put( NameMappers.FILE_HGAV_NAME, NameMappers.fileHashingGavNameMapper() );
         return Collections.unmodifiableMap( mappers );
     }
 
diff --git a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/providers/DiscriminatingNameMapperProvider.java b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/providers/DiscriminatingNameMapperProvider.java
index 13a107f3..0107f18a 100644
--- a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/providers/DiscriminatingNameMapperProvider.java
+++ b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/providers/DiscriminatingNameMapperProvider.java
@@ -23,9 +23,8 @@ import javax.inject.Named;
 import javax.inject.Provider;
 import javax.inject.Singleton;
 
-import org.eclipse.aether.internal.impl.synccontext.named.DiscriminatingNameMapper;
-import org.eclipse.aether.internal.impl.synccontext.named.GAVNameMapper;
 import org.eclipse.aether.internal.impl.synccontext.named.NameMapper;
+import org.eclipse.aether.internal.impl.synccontext.named.NameMappers;
 
 /**
  * The "discriminating" name mapper provider.
@@ -33,16 +32,14 @@ import org.eclipse.aether.internal.impl.synccontext.named.NameMapper;
  * @since 1.9.0
  */
 @Singleton
-@Named( DiscriminatingNameMapperProvider.NAME )
+@Named( NameMappers.DISCRIMINATING_NAME )
 public class DiscriminatingNameMapperProvider implements Provider<NameMapper>
 {
-    public static final String NAME = "discriminating";
-
     private final NameMapper mapper;
 
     public DiscriminatingNameMapperProvider()
     {
-        this.mapper = new DiscriminatingNameMapper( GAVNameMapper.gav() );
+        this.mapper = NameMappers.discriminatingNameMapper();
     }
 
     @Override
diff --git a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/providers/FileGAVNameMapperProvider.java b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/providers/FileGAVNameMapperProvider.java
index b7c249c3..65c87018 100644
--- a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/providers/FileGAVNameMapperProvider.java
+++ b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/providers/FileGAVNameMapperProvider.java
@@ -23,9 +23,8 @@ import javax.inject.Named;
 import javax.inject.Provider;
 import javax.inject.Singleton;
 
-import org.eclipse.aether.internal.impl.synccontext.named.BasedirNameMapper;
-import org.eclipse.aether.internal.impl.synccontext.named.GAVNameMapper;
 import org.eclipse.aether.internal.impl.synccontext.named.NameMapper;
+import org.eclipse.aether.internal.impl.synccontext.named.NameMappers;
 
 /**
  * The "file-gav" name mapper provider.
@@ -33,16 +32,14 @@ import org.eclipse.aether.internal.impl.synccontext.named.NameMapper;
  * @since 1.9.0
  */
 @Singleton
-@Named( FileGAVNameMapperProvider.NAME )
+@Named( NameMappers.FILE_GAV_NAME )
 public class FileGAVNameMapperProvider implements Provider<NameMapper>
 {
-    public static final String NAME = "file-gav";
-
     private final NameMapper mapper;
 
     public FileGAVNameMapperProvider()
     {
-        this.mapper = new BasedirNameMapper( GAVNameMapper.fileGav() );
+        this.mapper = NameMappers.fileGavNameMapper();
     }
 
     @Override
diff --git a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/providers/FileHashingGAVNameMapperProvider.java b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/providers/FileHashingGAVNameMapperProvider.java
index aa259dec..80463a3e 100644
--- a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/providers/FileHashingGAVNameMapperProvider.java
+++ b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/providers/FileHashingGAVNameMapperProvider.java
@@ -23,10 +23,8 @@ import javax.inject.Named;
 import javax.inject.Provider;
 import javax.inject.Singleton;
 
-import org.eclipse.aether.internal.impl.synccontext.named.BasedirNameMapper;
-import org.eclipse.aether.internal.impl.synccontext.named.GAVNameMapper;
-import org.eclipse.aether.internal.impl.synccontext.named.HashingNameMapper;
 import org.eclipse.aether.internal.impl.synccontext.named.NameMapper;
+import org.eclipse.aether.internal.impl.synccontext.named.NameMappers;
 
 /**
  * The "file-hgav" name mapper provider.
@@ -34,16 +32,14 @@ import org.eclipse.aether.internal.impl.synccontext.named.NameMapper;
  * @since 1.9.0
  */
 @Singleton
-@Named( FileHashingGAVNameMapperProvider.NAME )
+@Named( NameMappers.FILE_HGAV_NAME )
 public class FileHashingGAVNameMapperProvider implements Provider<NameMapper>
 {
-    public static final String NAME = "file-hgav";
-
     private final NameMapper mapper;
 
     public FileHashingGAVNameMapperProvider()
     {
-        this.mapper = new BasedirNameMapper( new HashingNameMapper( GAVNameMapper.gav() ) );
+        this.mapper = NameMappers.fileHashingGavNameMapper();
     }
 
     @Override
diff --git a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/providers/GAVNameMapperProvider.java b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/providers/GAVNameMapperProvider.java
index ae7b093a..a84f3b8f 100644
--- a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/providers/GAVNameMapperProvider.java
+++ b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/providers/GAVNameMapperProvider.java
@@ -23,8 +23,8 @@ import javax.inject.Named;
 import javax.inject.Provider;
 import javax.inject.Singleton;
 
-import org.eclipse.aether.internal.impl.synccontext.named.GAVNameMapper;
 import org.eclipse.aether.internal.impl.synccontext.named.NameMapper;
+import org.eclipse.aether.internal.impl.synccontext.named.NameMappers;
 
 /**
  * The "gav" name mapper provider.
@@ -32,16 +32,14 @@ import org.eclipse.aether.internal.impl.synccontext.named.NameMapper;
  * @since 1.9.0
  */
 @Singleton
-@Named( GAVNameMapperProvider.NAME )
+@Named( NameMappers.GAV_NAME )
 public class GAVNameMapperProvider implements Provider<NameMapper>
 {
-    public static final String NAME = "gav";
-
     private final NameMapper mapper;
 
     public GAVNameMapperProvider()
     {
-        this.mapper = GAVNameMapper.gav();
+        this.mapper = NameMappers.gavNameMapper();
     }
 
     @Override
diff --git a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/providers/StaticNameMapperProvider.java b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/providers/StaticNameMapperProvider.java
index 2a11afa0..e9348c4e 100644
--- a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/providers/StaticNameMapperProvider.java
+++ b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/providers/StaticNameMapperProvider.java
@@ -24,7 +24,7 @@ import javax.inject.Provider;
 import javax.inject.Singleton;
 
 import org.eclipse.aether.internal.impl.synccontext.named.NameMapper;
-import org.eclipse.aether.internal.impl.synccontext.named.StaticNameMapper;
+import org.eclipse.aether.internal.impl.synccontext.named.NameMappers;
 
 /**
  * The "static" name mapper provider.
@@ -32,16 +32,14 @@ import org.eclipse.aether.internal.impl.synccontext.named.StaticNameMapper;
  * @since 1.9.0
  */
 @Singleton
-@Named( StaticNameMapperProvider.NAME )
+@Named( NameMappers.STATIC_NAME )
 public class StaticNameMapperProvider implements Provider<NameMapper>
 {
-    public static final String NAME = "static";
-
     private final NameMapper mapper;
 
     public StaticNameMapperProvider()
     {
-        this.mapper = new StaticNameMapper();
+        this.mapper = NameMappers.staticNameMapper();
     }
 
     @Override
diff --git a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/providers/package-info.java b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/providers/package-info.java
index fe86e2d3..a7b6dab5 100644
--- a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/providers/package-info.java
+++ b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/synccontext/named/providers/package-info.java
@@ -19,7 +19,9 @@
  */
 /**
  * As end-user "mappers" are actually configurations, constructed from several NameMapper implementations, this
- * package is holding providers that are constructing them, as no NameMapper is a component anymore.
+ * package have providers exposing name mappers constructed by
+ * {@link org.eclipse.aether.internal.impl.synccontext.named.NameMappers} helper class. These classes are used
+ * when Guice/Sisu is used, as they assume {@link javax.inject.Provider} class to be present.
  */
 package org.eclipse.aether.internal.impl.synccontext.named.providers;