You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2010/09/09 23:17:11 UTC

svn commit: r995578 - in /maven/maven-3/trunk: maven-compat/src/main/java/org/apache/maven/project/ maven-compat/src/main/java/org/apache/maven/repository/legacy/ maven-core/src/main/java/org/apache/maven/project/ maven-core/src/main/java/org/apache/ma...

Author: bentmann
Date: Thu Sep  9 21:17:09 2010
New Revision: 995578

URL: http://svn.apache.org/viewvc?rev=995578&view=rev
Log:
o Fixed missing delegation to new repo system

Modified:
    maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
    maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/legacy/LegacyRepositorySystem.java
    maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java
    maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
    maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/repository/RepositorySystem.java
    maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/repository/TestRepositorySystem.java

Modified: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=995578&r1=995577&r2=995578&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Thu Sep  9 21:17:09 2010
@@ -146,9 +146,9 @@ public class DefaultMavenProjectBuilder
                     try
                     {
                         ArtifactRepository repo = repositorySystem.buildArtifactRepository( (Repository) repository );
-                        repositorySystem.injectMirror( Arrays.asList( repo ), request.getMirrors() );
-                        repositorySystem.injectProxy( Arrays.asList( repo ), request.getProxies() );
-                        repositorySystem.injectAuthentication( Arrays.asList( repo ), request.getServers() );
+                        repositorySystem.injectMirror( request.getRepositorySession(), Arrays.asList( repo ) );
+                        repositorySystem.injectProxy( request.getRepositorySession(), Arrays.asList( repo ) );
+                        repositorySystem.injectAuthentication( request.getRepositorySession(), Arrays.asList( repo ) );
                         repos.add( repo );
                     }
                     catch ( InvalidRepositoryException e )

Modified: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/legacy/LegacyRepositorySystem.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/legacy/LegacyRepositorySystem.java?rev=995578&r1=995577&r2=995578&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/legacy/LegacyRepositorySystem.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/repository/legacy/LegacyRepositorySystem.java Thu Sep  9 21:17:09 2010
@@ -28,9 +28,11 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.maven.RepositoryUtils;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.InvalidRepositoryException;
 import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.metadata.ArtifactMetadata;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.repository.legacy.repository.ArtifactRepositoryFactory;
 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
@@ -50,8 +52,6 @@ import org.apache.maven.model.Repository
 import org.apache.maven.repository.DelegatingLocalArtifactRepository;
 import org.apache.maven.repository.LocalArtifactRepository;
 import org.apache.maven.repository.ArtifactTransferListener;
-import org.apache.maven.repository.MetadataResolutionRequest;
-import org.apache.maven.repository.MetadataResolutionResult;
 import org.apache.maven.repository.MirrorSelector;
 import org.apache.maven.repository.Proxy;
 import org.apache.maven.repository.RepositorySystem;
@@ -70,6 +70,10 @@ import org.codehaus.plexus.component.ann
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.util.StringUtils;
+import org.sonatype.aether.RepositorySystemSession;
+import org.sonatype.aether.repository.AuthenticationSelector;
+import org.sonatype.aether.repository.ProxySelector;
+import org.sonatype.aether.repository.RemoteRepository;
 
 /**
  * @author Jason van Zyl
@@ -458,10 +462,52 @@ public class LegacyRepositorySystem
                     repository.setId( mirror.getId() );
                     repository.setUrl( mirror.getUrl() );
 
-                    ArtifactRepositoryLayout layout = layouts.get( mirror.getLayout() );
-                    if ( layout != null )
+                    if ( StringUtils.isNotEmpty( mirror.getLayout() ) )
                     {
-                        repository.setLayout( layout );
+                        repository.setLayout( getLayout( mirror.getLayout() ) );
+                    }
+                }
+            }
+        }
+    }
+
+    private Mirror getMirror( RepositorySystemSession session, ArtifactRepository repository )
+    {
+        if ( session != null )
+        {
+            org.sonatype.aether.repository.MirrorSelector selector = session.getMirrorSelector();
+            if ( selector != null )
+            {
+                RemoteRepository repo = selector.getMirror( RepositoryUtils.toRepo( repository ) );
+                if ( repo != null )
+                {
+                    Mirror mirror = new Mirror();
+                    mirror.setId( repo.getId() );
+                    mirror.setUrl( repo.getUrl() );
+                    mirror.setLayout( repo.getContentType() );
+                    return mirror;
+                }
+            }
+        }
+        return null;
+    }
+
+    public void injectMirror( RepositorySystemSession session, List<ArtifactRepository> repositories )
+    {
+        if ( repositories != null && session != null )
+        {
+            for ( ArtifactRepository repository : repositories )
+            {
+                Mirror mirror = getMirror( session, repository );
+
+                if ( mirror != null )
+                {
+                    repository.setId( mirror.getId() );
+                    repository.setUrl( mirror.getUrl() );
+
+                    if ( StringUtils.isNotEmpty( mirror.getLayout() ) )
+                    {
+                        repository.setLayout( getLayout( mirror.getLayout() ) );
                     }
                 }
             }
@@ -515,6 +561,35 @@ public class LegacyRepositorySystem
         }
     }
 
+    private Authentication getAuthentication( RepositorySystemSession session, ArtifactRepository repository )
+    {
+        if ( session != null )
+        {
+            AuthenticationSelector selector = session.getAuthenticationSelector();
+            if ( selector != null )
+            {
+                org.sonatype.aether.repository.Authentication auth =
+                    selector.getAuthentication( RepositoryUtils.toRepo( repository ) );
+                if ( auth != null )
+                {
+                    return new Authentication( auth.getUsername(), auth.getPassword() );
+                }
+            }
+        }
+        return null;
+    }
+
+    public void injectAuthentication( RepositorySystemSession session, List<ArtifactRepository> repositories )
+    {
+        if ( repositories != null && session != null )
+        {
+            for ( ArtifactRepository repository : repositories )
+            {
+                repository.setAuthentication( getAuthentication( session, repository ) );
+            }
+        }
+    }
+
     private org.apache.maven.settings.Proxy getProxy( ArtifactRepository repository,
                                                       List<org.apache.maven.settings.Proxy> proxies )
     {
@@ -572,23 +647,43 @@ public class LegacyRepositorySystem
         }
     }
 
-    public MetadataResolutionResult resolveMetadata( MetadataResolutionRequest request )
+    private Proxy getProxy( RepositorySystemSession session, ArtifactRepository repository )
     {
-
-        //      ArtifactResolutionResult collect( Set<Artifact> artifacts,
-        //      Artifact originatingArtifact,
-        //      Map managedVersions,
-        //      ArtifactRepository localRepository,
-        //      List<ArtifactRepository> remoteRepositories,
-        //      ArtifactMetadataSource source,
-        //      ArtifactFilter filter,
-        //      List<ResolutionListener> listeners,
-        //      List<ConflictResolver> conflictResolvers )
-        //      ArtifactResolutionResult result = artifactCollector.
-
+        if ( session != null )
+        {
+            ProxySelector selector = session.getProxySelector();
+            if ( selector != null )
+            {
+                org.sonatype.aether.repository.Proxy proxy = selector.getProxy( RepositoryUtils.toRepo( repository ) );
+                if ( proxy != null )
+                {
+                    Proxy p = new Proxy();
+                    p.setHost( proxy.getHost() );
+                    p.setProtocol( proxy.getType() );
+                    p.setPort( proxy.getPort() );
+                    if ( proxy.getAuthentication() != null )
+                    {
+                        p.setUserName( proxy.getAuthentication().getUsername() );
+                        p.setPassword( proxy.getAuthentication().getPassword() );
+                    }
+                    return p;
+                }
+            }
+        }
         return null;
     }
 
+    public void injectProxy( RepositorySystemSession session, List<ArtifactRepository> repositories )
+    {
+        if ( repositories != null && session != null )
+        {
+            for ( ArtifactRepository repository : repositories )
+            {
+                repository.setProxy( getProxy( session, repository ) );
+            }
+        }
+    }
+
     public void retrieve( ArtifactRepository repository, File destination, String remotePath,
                           ArtifactTransferListener transferListener )
         throws ArtifactTransferFailedException, ArtifactDoesNotExistException
@@ -650,7 +745,7 @@ public class LegacyRepositorySystem
 
             ArtifactRepositoryPolicy releases = buildArtifactRepositoryPolicy( repo.getReleases() );
 
-            return createArtifactRepository( id, url, layouts.get( repo.getLayout() ), snapshots, releases );
+            return createArtifactRepository( id, url, getLayout( repo.getLayout() ), snapshots, releases );
         }
         else
         {
@@ -702,4 +797,58 @@ public class LegacyRepositorySystem
         return getMessage( error.getCause(), def );
     }
 
+    private ArtifactRepositoryLayout getLayout( String id )
+    {
+        ArtifactRepositoryLayout layout = layouts.get( id );
+
+        if ( layout == null )
+        {
+            layout = new UnknownRepositoryLayout( id, layouts.get( "default" ) );
+        }
+
+        return layout;
+    }
+
+    /**
+     * In the future, the legacy system might encounter repository types for which no layout components exists because
+     * the actual communication with the repository happens via a repository connector. As a minimum, the legacy system
+     * needs to retain the id of this layout so that the content type of the remote repository can still be accurately
+     * described.
+     */
+    static class UnknownRepositoryLayout
+        implements ArtifactRepositoryLayout
+    {
+
+        private final String id;
+
+        private final ArtifactRepositoryLayout fallback;
+
+        public UnknownRepositoryLayout( String id, ArtifactRepositoryLayout fallback )
+        {
+            this.id = id;
+            this.fallback = fallback;
+        }
+
+        public String getId()
+        {
+            return id;
+        }
+
+        public String pathOf( Artifact artifact )
+        {
+            return fallback.pathOf( artifact );
+        }
+
+        public String pathOfLocalRepositoryMetadata( ArtifactMetadata metadata, ArtifactRepository repository )
+        {
+            return fallback.pathOfLocalRepositoryMetadata( metadata, repository );
+        }
+
+        public String pathOfRemoteRepositoryMetadata( ArtifactMetadata metadata )
+        {
+            return fallback.pathOfRemoteRepositoryMetadata( metadata );
+        }
+
+    }
+
 }

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java?rev=995578&r1=995577&r2=995578&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java Thu Sep  9 21:17:09 2010
@@ -114,11 +114,11 @@ public class DefaultProjectBuildingHelpe
             repoIds.add( repository.getId() );
         }
 
-        repositorySystem.injectMirror( artifactRepositories, request.getMirrors() );
+        repositorySystem.injectMirror( request.getRepositorySession(), artifactRepositories );
 
-        repositorySystem.injectProxy( artifactRepositories, request.getProxies() );
+        repositorySystem.injectProxy( request.getRepositorySession(), artifactRepositories );
 
-        repositorySystem.injectAuthentication( artifactRepositories, request.getServers() );
+        repositorySystem.injectAuthentication( request.getRepositorySession(), artifactRepositories );
 
         if ( externalRepositories != null )
         {

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProject.java?rev=995578&r1=995577&r2=995578&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProject.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProject.java Thu Sep  9 21:17:09 2010
@@ -1844,8 +1844,9 @@ public class MavenProject
             {
                 ArtifactRepository repo =
                     repositorySystem.buildArtifactRepository( getDistributionManagement().getRepository() );
-                repositorySystem.injectProxy( Arrays.asList( repo ), projectBuilderConfiguration.getProxies() );
-                repositorySystem.injectAuthentication( Arrays.asList( repo ), projectBuilderConfiguration.getServers() );
+                repositorySystem.injectProxy( projectBuilderConfiguration.getRepositorySession(), Arrays.asList( repo ) );
+                repositorySystem.injectAuthentication( projectBuilderConfiguration.getRepositorySession(),
+                                                       Arrays.asList( repo ) );
                 setReleaseArtifactRepository( repo );
             }
             catch ( InvalidRepositoryException e )
@@ -1864,8 +1865,9 @@ public class MavenProject
             {
                 ArtifactRepository repo =
                     repositorySystem.buildArtifactRepository( getDistributionManagement().getSnapshotRepository() );
-                repositorySystem.injectProxy( Arrays.asList( repo ), projectBuilderConfiguration.getProxies() );
-                repositorySystem.injectAuthentication( Arrays.asList( repo ), projectBuilderConfiguration.getServers() );
+                repositorySystem.injectProxy( projectBuilderConfiguration.getRepositorySession(), Arrays.asList( repo ) );
+                repositorySystem.injectAuthentication( projectBuilderConfiguration.getRepositorySession(),
+                                                       Arrays.asList( repo ) );
                 setSnapshotArtifactRepository( repo );
             }
             catch ( InvalidRepositoryException e )

Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/repository/RepositorySystem.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/repository/RepositorySystem.java?rev=995578&r1=995577&r2=995578&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/repository/RepositorySystem.java (original)
+++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/repository/RepositorySystem.java Thu Sep  9 21:17:09 2010
@@ -34,6 +34,7 @@ import org.apache.maven.model.Plugin;
 import org.apache.maven.model.Repository;
 import org.apache.maven.settings.Mirror;
 import org.apache.maven.settings.Server;
+import org.sonatype.aether.RepositorySystemSession;
 
 /**
  * @author Jason van Zyl
@@ -133,6 +134,12 @@ public interface RepositorySystem
      */
     void injectAuthentication( List<ArtifactRepository> repositories, List<Server> servers );
 
+    void injectMirror( RepositorySystemSession session, List<ArtifactRepository> repositories );
+
+    void injectProxy( RepositorySystemSession session, List<ArtifactRepository> repositories );
+
+    void injectAuthentication( RepositorySystemSession session, List<ArtifactRepository> repositories );
+    
     ArtifactResolutionResult resolve( ArtifactResolutionRequest request );
 
     // Install

Modified: maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/repository/TestRepositorySystem.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/repository/TestRepositorySystem.java?rev=995578&r1=995577&r2=995578&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/repository/TestRepositorySystem.java (original)
+++ maven/maven-3/trunk/maven-core/src/test/java/org/apache/maven/repository/TestRepositorySystem.java Thu Sep  9 21:17:09 2010
@@ -48,6 +48,7 @@ import org.apache.maven.settings.Server;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
 import org.codehaus.plexus.util.FileUtils;
+import org.sonatype.aether.RepositorySystemSession;
 
 /**
  * @author Benjamin Bentmann
@@ -292,4 +293,16 @@ public class TestRepositorySystem
 
     }
 
+    public void injectMirror( RepositorySystemSession session, List<ArtifactRepository> repositories )
+    {
+    }
+
+    public void injectProxy( RepositorySystemSession session, List<ArtifactRepository> repositories )
+    {
+    }
+
+    public void injectAuthentication( RepositorySystemSession session, List<ArtifactRepository> repositories )
+    {
+    }
+
 }