Author: rfscholte Date: Mon Jul 6 19:01:48 2015 New Revision: 1689478 URL: http://svn.apache.org/r1689478 Log: Introduce ArtifactResult wrappers, dependency:purge-repository needs the extra info Using Iterable<T> for lazy transforming
Added: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/ArtifactResult.java maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/Maven30ArtifactResult.java maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/Maven31ArtifactResult.java Modified: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Maven30RepositoryManager.java maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/ArtifactResolver.java maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/DefaultArtifactResolver.java maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/Maven30ArtifactResolver.java maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/Maven31ArtifactResolver.java Modified: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Maven30RepositoryManager.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Maven30RepositoryManager.java?rev=1689478&r1=1689477&r2=1689478&view=diff ============================================================================== --- maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Maven30RepositoryManager.java (original) +++ maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/repository/internal/Maven30RepositoryManager.java Mon Jul 6 19:01:48 2015 @@ -115,7 +115,7 @@ public class Maven30RepositoryManager return newRequest; } - + /** * {@inheritDoc} */ @@ -130,7 +130,6 @@ public class Maven30RepositoryManager { throw new RuntimeException( e.getMessage(), e ); } - return session.getLocalRepository().getBasedir(); } @@ -138,4 +137,5 @@ public class Maven30RepositoryManager { return localRepository.getContentType(); } + } Modified: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/ArtifactResolver.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/ArtifactResolver.java?rev=1689478&r1=1689477&r2=1689478&view=diff ============================================================================== --- maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/ArtifactResolver.java (original) +++ maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/ArtifactResolver.java Mon Jul 6 19:01:48 2015 @@ -29,13 +29,13 @@ import org.apache.maven.shared.artifact. public interface ArtifactResolver { - Artifact resolveArtifact( ProjectBuildingRequest buildingRequest , Artifact mavenArtifact ) + ArtifactResult resolveArtifact( ProjectBuildingRequest buildingRequest , Artifact mavenArtifact ) throws ArtifactResolverException; - void resolveTransitively( ProjectBuildingRequest buildingRequest , Artifact mavenArtifact ) + Iterable<ArtifactResult> resolveTransitively( ProjectBuildingRequest buildingRequest , Artifact mavenArtifact ) throws ArtifactResolverException; - void resolveTransitively( ProjectBuildingRequest buildingRequest , Artifact mavenArtifact , + Iterable<ArtifactResult> resolveTransitively( ProjectBuildingRequest buildingRequest , Artifact mavenArtifact , TransformableFilter filter ) throws ArtifactResolverException; Added: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/ArtifactResult.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/ArtifactResult.java?rev=1689478&view=auto ============================================================================== --- maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/ArtifactResult.java (added) +++ maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/ArtifactResult.java Mon Jul 6 19:01:48 2015 @@ -0,0 +1,34 @@ +package org.apache.maven.shared.artifact.resolve; + +import org.apache.maven.artifact.Artifact; + +/* + * 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. + */ + +/** + * The Artifact Result + * + * @author Robert Scholte + * @since 3.0 + */ +public interface ArtifactResult +{ + + Artifact getArtifact(); +} Modified: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/DefaultArtifactResolver.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/DefaultArtifactResolver.java?rev=1689478&r1=1689477&r2=1689478&view=diff ============================================================================== --- maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/DefaultArtifactResolver.java (original) +++ maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/DefaultArtifactResolver.java Mon Jul 6 19:01:48 2015 @@ -24,6 +24,7 @@ import org.apache.maven.project.ProjectB import org.apache.maven.shared.artifact.filter.resolve.TransformableFilter; import org.apache.maven.shared.artifact.resolve.ArtifactResolver; import org.apache.maven.shared.artifact.resolve.ArtifactResolverException; +import org.apache.maven.shared.artifact.resolve.ArtifactResult; import org.codehaus.plexus.PlexusConstants; import org.codehaus.plexus.PlexusContainer; import org.codehaus.plexus.component.annotations.Component; @@ -41,7 +42,7 @@ public class DefaultArtifactResolver { private PlexusContainer container; - public Artifact resolveArtifact( ProjectBuildingRequest buildingRequest , Artifact mavenArtifact ) + public ArtifactResult resolveArtifact( ProjectBuildingRequest buildingRequest , Artifact mavenArtifact ) throws ArtifactResolverException { try @@ -58,7 +59,7 @@ public class DefaultArtifactResolver } } - public void resolveTransitively( ProjectBuildingRequest buildingRequest , Artifact mavenArtifact ) + public Iterable<ArtifactResult> resolveTransitively( ProjectBuildingRequest buildingRequest , Artifact mavenArtifact ) throws ArtifactResolverException { try @@ -67,7 +68,7 @@ public class DefaultArtifactResolver ArtifactResolver effectiveArtifactResolver = container.lookup( ArtifactResolver.class, hint ); - effectiveArtifactResolver.resolveTransitively( buildingRequest, mavenArtifact ); + return effectiveArtifactResolver.resolveTransitively( buildingRequest, mavenArtifact ); } catch ( ComponentLookupException e ) { @@ -75,7 +76,7 @@ public class DefaultArtifactResolver } } - public void resolveTransitively( ProjectBuildingRequest buildingRequest , Artifact mavenArtifact , + public Iterable<org.apache.maven.shared.artifact.resolve.ArtifactResult> resolveTransitively( ProjectBuildingRequest buildingRequest , Artifact mavenArtifact , TransformableFilter filter ) throws ArtifactResolverException { @@ -85,7 +86,7 @@ public class DefaultArtifactResolver ArtifactResolver effectiveArtifactResolver = container.lookup( ArtifactResolver.class, hint ); - effectiveArtifactResolver.resolveTransitively( buildingRequest, mavenArtifact, filter ); + return effectiveArtifactResolver.resolveTransitively( buildingRequest, mavenArtifact, filter ); } catch ( ComponentLookupException e ) { Modified: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/Maven30ArtifactResolver.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/Maven30ArtifactResolver.java?rev=1689478&r1=1689477&r2=1689478&view=diff ============================================================================== --- maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/Maven30ArtifactResolver.java (original) +++ maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/Maven30ArtifactResolver.java Mon Jul 6 19:01:48 2015 @@ -21,6 +21,7 @@ package org.apache.maven.shared.artifact import java.util.ArrayList; import java.util.Collection; +import java.util.Iterator; import java.util.List; import org.apache.maven.RepositoryUtils; @@ -55,7 +56,7 @@ public class Maven30ArtifactResolver @Requirement private RepositorySystem repositorySystem; - public org.apache.maven.artifact.Artifact resolveArtifact( ProjectBuildingRequest buildingRequest , + public org.apache.maven.shared.artifact.resolve.ArtifactResult resolveArtifact( ProjectBuildingRequest buildingRequest , org.apache.maven.artifact.Artifact mavenArtifact ) throws ArtifactResolverException { @@ -82,10 +83,7 @@ public class Maven30ArtifactResolver ArtifactRequest request = new ArtifactRequest( descriptorResult.getArtifact(), aetherRepositories, null ); - Artifact resolvedArtifact = repositorySystem.resolveArtifact( session, request ).getArtifact(); - - return (org.apache.maven.artifact.Artifact) Invoker.invoke( RepositoryUtils.class, "toArtifact", - Artifact.class, resolvedArtifact ); + return new Maven30ArtifactResult( repositorySystem.resolveArtifact( session, request ) ); } catch ( ArtifactDescriptorException e ) { @@ -97,14 +95,14 @@ public class Maven30ArtifactResolver } } - public void resolveTransitively( ProjectBuildingRequest buildingRequest , + public Iterable<org.apache.maven.shared.artifact.resolve.ArtifactResult> resolveTransitively( ProjectBuildingRequest buildingRequest , org.apache.maven.artifact.Artifact mavenArtifact ) throws ArtifactResolverException { - resolveTransitively( buildingRequest, mavenArtifact, null ); + return resolveTransitively( buildingRequest, mavenArtifact, null ); } - public void resolveTransitively( ProjectBuildingRequest buildingRequest , + public Iterable<org.apache.maven.shared.artifact.resolve.ArtifactResult> resolveTransitively( ProjectBuildingRequest buildingRequest , org.apache.maven.artifact.Artifact mavenArtifact , TransformableFilter dependencyFilter ) throws ArtifactResolverException @@ -140,18 +138,36 @@ public class Maven30ArtifactResolver depFilter = dependencyFilter.transform( new SonatypeAetherFilterTransformer() ); } - List<ArtifactResult> artifactResults = repositorySystem.resolveDependencies( session, request, depFilter ); + List<ArtifactResult> dependencyResults = repositorySystem.resolveDependencies( session, request, depFilter ); - Collection<ArtifactRequest> artifactRequests = new ArrayList<ArtifactRequest>( 1 + artifactResults.size() ); + Collection<ArtifactRequest> artifactRequests = new ArrayList<ArtifactRequest>( 1 + dependencyResults.size() ); artifactRequests.add( new ArtifactRequest( descriptorResult.getArtifact(), aetherRepositories, null ) ); - for ( ArtifactResult artifactResult : artifactResults ) + for ( ArtifactResult artifactResult : dependencyResults ) { artifactRequests.add( new ArtifactRequest( artifactResult.getArtifact(), aetherRepositories, null ) ); } - repositorySystem.resolveArtifacts( session, artifactRequests ); + final List<ArtifactResult> artifactResults = repositorySystem.resolveArtifacts( session, artifactRequests ); + + // Keep it lazy! Often artifactsResults aren't used, so transforming up front is too expensive + return new Iterable<org.apache.maven.shared.artifact.resolve.ArtifactResult>() + { + @Override + public Iterator<org.apache.maven.shared.artifact.resolve.ArtifactResult> iterator() + { + Collection<org.apache.maven.shared.artifact.resolve.ArtifactResult> artResults = + new ArrayList<org.apache.maven.shared.artifact.resolve.ArtifactResult>( artifactResults.size() ); + + for ( ArtifactResult artifactResult : artifactResults ) + { + artResults.add( new Maven30ArtifactResult( artifactResult ) ); + } + + return artResults.iterator(); + } + }; } catch ( ArtifactDescriptorException e ) { Added: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/Maven30ArtifactResult.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/Maven30ArtifactResult.java?rev=1689478&view=auto ============================================================================== --- maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/Maven30ArtifactResult.java (added) +++ maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/Maven30ArtifactResult.java Mon Jul 6 19:01:48 2015 @@ -0,0 +1,54 @@ +package org.apache.maven.shared.artifact.resolve.internal; + +/* + * 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. + */ + +import org.apache.maven.RepositoryUtils; +import org.apache.maven.shared.artifact.resolve.ArtifactResolverException; +import org.sonatype.aether.artifact.Artifact; +import org.sonatype.aether.resolution.ArtifactResult; + +/** + * + * @author Robert Scholte + * @since 3.0 + */ +public class Maven30ArtifactResult implements org.apache.maven.shared.artifact.resolve.ArtifactResult +{ + private final ArtifactResult artifactResult; + + public Maven30ArtifactResult( ArtifactResult artifactResult ) + { + this.artifactResult = artifactResult; + } + + @Override + public org.apache.maven.artifact.Artifact getArtifact() + { + try + { + return (org.apache.maven.artifact.Artifact) Invoker.invoke( RepositoryUtils.class, "toArtifact", Artifact.class, + artifactResult.getArtifact() ); + } + catch ( ArtifactResolverException e ) + { + throw new RuntimeException( e ); + } + } +} Modified: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/Maven31ArtifactResolver.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/Maven31ArtifactResolver.java?rev=1689478&r1=1689477&r2=1689478&view=diff ============================================================================== --- maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/Maven31ArtifactResolver.java (original) +++ maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/Maven31ArtifactResolver.java Mon Jul 6 19:01:48 2015 @@ -21,6 +21,7 @@ package org.apache.maven.shared.artifact import java.util.ArrayList; import java.util.Collection; +import java.util.Iterator; import java.util.List; import org.apache.maven.RepositoryUtils; @@ -56,7 +57,7 @@ public class Maven31ArtifactResolver @Requirement private RepositorySystem repositorySystem; - public org.apache.maven.artifact.Artifact resolveArtifact( ProjectBuildingRequest buildingRequest , + public org.apache.maven.shared.artifact.resolve.ArtifactResult resolveArtifact( ProjectBuildingRequest buildingRequest , org.apache.maven.artifact.Artifact mavenArtifact ) throws ArtifactResolverException { @@ -83,10 +84,7 @@ public class Maven31ArtifactResolver ArtifactRequest request = new ArtifactRequest( descriptorResult.getArtifact(), aetherRepositories, null ); - Artifact resolvedArtifact = repositorySystem.resolveArtifact( session, request ).getArtifact(); - - return (org.apache.maven.artifact.Artifact) Invoker.invoke( RepositoryUtils.class, "toArtifact", - Artifact.class, resolvedArtifact ); + return new Maven31ArtifactResult( repositorySystem.resolveArtifact( session, request ) ); } catch ( ArtifactResolutionException e ) { @@ -98,14 +96,14 @@ public class Maven31ArtifactResolver } } - public void resolveTransitively( ProjectBuildingRequest buildingRequest , + public Iterable<org.apache.maven.shared.artifact.resolve.ArtifactResult> resolveTransitively( ProjectBuildingRequest buildingRequest , org.apache.maven.artifact.Artifact mavenArtifact ) throws ArtifactResolverException { - resolveTransitively( buildingRequest, mavenArtifact, null ); + return resolveTransitively( buildingRequest, mavenArtifact, null ); } - public void resolveTransitively( ProjectBuildingRequest buildingRequest , + public Iterable<org.apache.maven.shared.artifact.resolve.ArtifactResult> resolveTransitively( ProjectBuildingRequest buildingRequest , org.apache.maven.artifact.Artifact mavenArtifact , TransformableFilter dependencyFilter ) throws ArtifactResolverException @@ -143,19 +141,37 @@ public class Maven31ArtifactResolver DependencyRequest depRequest = new DependencyRequest( request, depFilter ); - List<ArtifactResult> artifactResults = + List<ArtifactResult> dependencyResults = repositorySystem.resolveDependencies( session, depRequest ).getArtifactResults(); - Collection<ArtifactRequest> artifactRequests = new ArrayList<ArtifactRequest>( 1 + artifactResults.size() ); + Collection<ArtifactRequest> artifactRequests = new ArrayList<ArtifactRequest>( 1 + dependencyResults.size() ); artifactRequests.add( new ArtifactRequest( descriptorResult.getArtifact(), aetherRepositories, null ) ); - for ( ArtifactResult artifactResult : artifactResults ) + for ( ArtifactResult artifactResult : dependencyResults ) { artifactRequests.add( new ArtifactRequest( artifactResult.getArtifact(), aetherRepositories, null ) ); } - repositorySystem.resolveArtifacts( session, artifactRequests ); + final List<ArtifactResult> artifactResults = repositorySystem.resolveArtifacts( session, artifactRequests ); + + // Keep it lazy! Often artifactsResults aren't used, so transforming up front is too expensive + return new Iterable<org.apache.maven.shared.artifact.resolve.ArtifactResult>() + { + @Override + public Iterator<org.apache.maven.shared.artifact.resolve.ArtifactResult> iterator() + { + Collection<org.apache.maven.shared.artifact.resolve.ArtifactResult> artResults = + new ArrayList<org.apache.maven.shared.artifact.resolve.ArtifactResult>( artifactResults.size() ); + + for ( ArtifactResult artifactResult : artifactResults ) + { + artResults.add( new Maven31ArtifactResult( artifactResult ) ); + } + + return artResults.iterator(); + } + }; } catch ( ArtifactDescriptorException e ) { Added: maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/Maven31ArtifactResult.java URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/Maven31ArtifactResult.java?rev=1689478&view=auto ============================================================================== --- maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/Maven31ArtifactResult.java (added) +++ maven/shared/trunk/maven-artifact-transfer/src/main/java/org/apache/maven/shared/artifact/resolve/internal/Maven31ArtifactResult.java Mon Jul 6 19:01:48 2015 @@ -0,0 +1,55 @@ +package org.apache.maven.shared.artifact.resolve.internal; + +/* + * 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. + */ + +import org.apache.maven.RepositoryUtils; +import org.apache.maven.shared.artifact.resolve.ArtifactResolverException; +import org.eclipse.aether.resolution.ArtifactResult; +import org.eclipse.aether.artifact.Artifact; + +/** + * + * + * @author Robert Scholte + * @since 3.0 + */ +public class Maven31ArtifactResult implements org.apache.maven.shared.artifact.resolve.ArtifactResult +{ + private final ArtifactResult artifactResult; + + public Maven31ArtifactResult( ArtifactResult artifactResult ) + { + this.artifactResult = artifactResult; + } + + @Override + public org.apache.maven.artifact.Artifact getArtifact() + { + try + { + return (org.apache.maven.artifact.Artifact) Invoker.invoke( RepositoryUtils.class, "toArtifact", Artifact.class, + artifactResult.getArtifact() ); + } + catch ( ArtifactResolverException e ) + { + throw new RuntimeException( e ); + } + } +}