[MNG-5995] Remove dependency to maven-compat (#185)
authorSylwester Lachiewicz <slachiewicz@apache.org>
Sat, 13 Oct 2018 02:16:44 +0000 (04:16 +0200)
committerSylwester Lachiewicz <slachiewicz@apache.org>
Sat, 26 Jan 2019 13:37:51 +0000 (14:37 +0100)
No implementation for deprecated Maven 2.x RepositorySystem interface

maven-core/src/main/java/org/apache/maven/bridge/MavenRepositorySystem.java
maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java

index 84ad93c..8558ae4 100644 (file)
@@ -23,8 +23,10 @@ import java.io.File;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -606,8 +608,102 @@ public class MavenRepositorySystem
 
         return repoIds;
     }
-    
-    
+
+    /**
+     * Source from org.apache.maven.repository.legacy.LegacyRepositorySystem#getEffectiveRepositories
+     *
+     * @param repositories
+     * @return
+     * @since 3.6.1
+     */
+    public List<ArtifactRepository> getEffectiveRepositories( List<ArtifactRepository> repositories )
+    {
+        if ( repositories == null )
+        {
+            return null;
+        }
+
+        Map<String, List<ArtifactRepository>> reposByKey = new LinkedHashMap<>();
+
+        for ( ArtifactRepository repository : repositories )
+        {
+            String key = repository.getId();
+
+            List<ArtifactRepository> aliasedRepos = reposByKey.get( key );
+
+            if ( aliasedRepos == null )
+            {
+                aliasedRepos = new ArrayList<>();
+                reposByKey.put( key, aliasedRepos );
+            }
+
+            aliasedRepos.add( repository );
+        }
+
+        List<ArtifactRepository> effectiveRepositories = new ArrayList<>();
+
+        for ( List<ArtifactRepository> aliasedRepos : reposByKey.values() )
+        {
+            List<ArtifactRepository> mirroredRepos = new ArrayList<>();
+
+            List<ArtifactRepositoryPolicy> releasePolicies =
+                    new ArrayList<>( aliasedRepos.size() );
+
+            for ( ArtifactRepository aliasedRepo : aliasedRepos )
+            {
+                releasePolicies.add( aliasedRepo.getReleases() );
+                mirroredRepos.addAll( aliasedRepo.getMirroredRepositories() );
+            }
+
+            ArtifactRepositoryPolicy releasePolicy = getEffectivePolicy( releasePolicies );
+
+            List<ArtifactRepositoryPolicy> snapshotPolicies =
+                    new ArrayList<>( aliasedRepos.size() );
+
+            for ( ArtifactRepository aliasedRepo : aliasedRepos )
+            {
+                snapshotPolicies.add( aliasedRepo.getSnapshots() );
+            }
+
+            ArtifactRepositoryPolicy snapshotPolicy = getEffectivePolicy( snapshotPolicies );
+
+            ArtifactRepository aliasedRepo = aliasedRepos.get( 0 );
+
+            ArtifactRepository effectiveRepository =
+                    createArtifactRepository( aliasedRepo.getId(), aliasedRepo.getUrl(), aliasedRepo.getLayout(),
+                            snapshotPolicy, releasePolicy );
+
+            effectiveRepository.setAuthentication( aliasedRepo.getAuthentication() );
+
+            effectiveRepository.setProxy( aliasedRepo.getProxy() );
+
+            effectiveRepository.setMirroredRepositories( mirroredRepos );
+
+            effectiveRepositories.add( effectiveRepository );
+        }
+
+        return effectiveRepositories;
+    }
+
+    private ArtifactRepositoryPolicy getEffectivePolicy( Collection<ArtifactRepositoryPolicy> policies )
+    {
+        ArtifactRepositoryPolicy effectivePolicy = null;
+
+        for ( ArtifactRepositoryPolicy policy : policies )
+        {
+            if ( effectivePolicy == null )
+            {
+                effectivePolicy = new ArtifactRepositoryPolicy( policy );
+            }
+            else
+            {
+                effectivePolicy.merge( policy );
+            }
+        }
+
+        return effectivePolicy;
+    }
+
     public ArtifactRepository createLocalRepository( MavenExecutionRequest request, File localRepository )
         throws Exception
     {
index 3159fac..0bd94a8 100644 (file)
@@ -33,6 +33,7 @@ import org.apache.maven.RepositoryUtils;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.InvalidRepositoryException;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.bridge.MavenRepositorySystem;
 import org.apache.maven.classrealm.ClassRealmManager;
 import org.apache.maven.model.Build;
 import org.apache.maven.model.Extension;
@@ -44,7 +45,6 @@ import org.apache.maven.plugin.MavenPluginManager;
 import org.apache.maven.plugin.PluginManagerException;
 import org.apache.maven.plugin.PluginResolutionException;
 import org.apache.maven.plugin.version.PluginVersionResolutionException;
-import org.apache.maven.repository.RepositorySystem;
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.classworlds.realm.ClassRealm;
 import org.codehaus.plexus.component.annotations.Component;
@@ -78,7 +78,7 @@ public class DefaultProjectBuildingHelper
     private ProjectRealmCache projectRealmCache;
 
     @Requirement
-    private RepositorySystem repositorySystem;
+    private MavenRepositorySystem repositorySystem;
 
     @Requirement
     private MavenPluginManager pluginManager;
@@ -92,7 +92,7 @@ public class DefaultProjectBuildingHelper
 
         for ( Repository repository : pomRepositories )
         {
-            internalRepositories.add( repositorySystem.buildArtifactRepository( repository ) );
+            internalRepositories.add( MavenRepositorySystem.buildArtifactRepository( repository ) );
         }
 
         repositorySystem.injectMirror( request.getRepositorySession(), internalRepositories );