From 3db476f1a2b6826d0aee4e9937cb73ae14cd7fae Mon Sep 17 00:00:00 2001 From: No Author Date: Mon, 1 Sep 2003 16:05:50 +0000 Subject: [PATCH 001/224] New repository initialized by cvs2svn. git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@162490 13f79535-47bb-0310-9956-ffa450edef68 From 9bc37bcc4993d7096dbc4efbea0c3e0d80feffb2 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Tue, 24 Aug 2010 22:46:07 +0000 Subject: [PATCH 002/224] [MNG-4756] Aether integration git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@988749 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 76 +++ .../DefaultArtifactDescriptorReader.java | 449 ++++++++++++++++ .../internal/DefaultModelCache.java | 119 +++++ .../internal/DefaultModelResolver.java | 128 +++++ .../internal/DefaultServiceLocator.java | 51 ++ .../internal/DefaultVersionRangeResolver.java | 269 ++++++++++ .../internal/DefaultVersionResolver.java | 487 ++++++++++++++++++ .../internal/LocalSnapshotMetadata.java | 102 ++++ .../LocalSnapshotMetadataGenerator.java | 76 +++ .../repository/internal/MavenMetadata.java | 171 ++++++ .../MavenRepositorySystemSession.java | 104 ++++ .../internal/RelocatedArtifact.java | 126 +++++ .../internal/RemoteSnapshotMetadata.java | 196 +++++++ .../RemoteSnapshotMetadataGenerator.java | 102 ++++ .../SnapshotMetadataGeneratorFactory.java | 52 ++ .../repository/internal/VersionsMetadata.java | 102 ++++ .../internal/VersionsMetadataGenerator.java | 99 ++++ .../VersionsMetadataGeneratorFactory.java | 52 ++ 18 files changed, 2761 insertions(+) create mode 100644 maven-aether-provider/pom.xml create mode 100644 maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java create mode 100644 maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelCache.java create mode 100644 maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java create mode 100644 maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultServiceLocator.java create mode 100644 maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java create mode 100644 maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java create mode 100644 maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java create mode 100644 maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java create mode 100644 maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java create mode 100644 maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemSession.java create mode 100644 maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RelocatedArtifact.java create mode 100644 maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java create mode 100644 maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java create mode 100644 maven-aether-provider/src/main/java/org/apache/maven/repository/internal/SnapshotMetadataGeneratorFactory.java create mode 100644 maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java create mode 100644 maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java create mode 100644 maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGeneratorFactory.java diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml new file mode 100644 index 000000000..222495bb5 --- /dev/null +++ b/maven-aether-provider/pom.xml @@ -0,0 +1,76 @@ + + + + + + 4.0.0 + + + org.apache.maven + maven + 3.0-SNAPSHOT + + + maven-aether-provider + + Maven Aether Provider + + This module provides extensions to Aether for utilizing the Maven POM and Maven metadata. + + + + + org.apache.maven + maven-model-builder + + + org.apache.maven + maven-repository-metadata + + + org.sonatype.aether + aether-api + + + org.sonatype.aether + aether-util + + + org.sonatype.aether + aether-impl + + + org.codehaus.plexus + plexus-component-annotations + + + + + + + org.codehaus.plexus + plexus-component-metadata + + + + + diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java new file mode 100644 index 000000000..bb73846ca --- /dev/null +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java @@ -0,0 +1,449 @@ +package org.apache.maven.repository.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 java.io.File; +import java.util.ArrayList; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.Set; + +import org.apache.maven.model.DependencyManagement; +import org.apache.maven.model.DistributionManagement; +import org.apache.maven.model.License; +import org.apache.maven.model.Model; +import org.apache.maven.model.Relocation; +import org.apache.maven.model.Repository; +import org.apache.maven.model.building.DefaultModelBuilderFactory; +import org.apache.maven.model.building.DefaultModelBuildingRequest; +import org.apache.maven.model.building.FileModelSource; +import org.apache.maven.model.building.ModelBuilder; +import org.apache.maven.model.building.ModelBuildingException; +import org.apache.maven.model.building.ModelBuildingRequest; +import org.apache.maven.model.building.ModelProblem; +import org.apache.maven.model.resolution.UnresolvableModelException; +import org.codehaus.plexus.component.annotations.Component; +import org.codehaus.plexus.component.annotations.Requirement; +import org.sonatype.aether.RepositoryException; +import org.sonatype.aether.RepositoryListener; +import org.sonatype.aether.RepositorySystemSession; +import org.sonatype.aether.artifact.Artifact; +import org.sonatype.aether.artifact.ArtifactType; +import org.sonatype.aether.artifact.ArtifactTypeRegistry; +import org.sonatype.aether.graph.Dependency; +import org.sonatype.aether.graph.Exclusion; +import org.sonatype.aether.impl.ArtifactDescriptorReader; +import org.sonatype.aether.impl.ArtifactResolver; +import org.sonatype.aether.impl.RemoteRepositoryManager; +import org.sonatype.aether.impl.VersionResolver; +import org.sonatype.aether.transfer.ArtifactNotFoundException; +import org.sonatype.aether.util.artifact.ArtifactProperties; +import org.sonatype.aether.util.artifact.DefaultArtifact; +import org.sonatype.aether.util.artifact.DefaultArtifactType; +import org.sonatype.aether.util.artifact.SubArtifact; +import org.sonatype.aether.util.listener.DefaultRepositoryEvent; +import org.sonatype.aether.repository.RemoteRepository; +import org.sonatype.aether.repository.RepositoryPolicy; +import org.sonatype.aether.repository.WorkspaceRepository; +import org.sonatype.aether.resolution.ArtifactDescriptorException; +import org.sonatype.aether.resolution.ArtifactDescriptorRequest; +import org.sonatype.aether.resolution.ArtifactDescriptorResult; +import org.sonatype.aether.resolution.ArtifactRequest; +import org.sonatype.aether.resolution.ArtifactResolutionException; +import org.sonatype.aether.resolution.ArtifactResult; +import org.sonatype.aether.resolution.VersionRequest; +import org.sonatype.aether.resolution.VersionResolutionException; +import org.sonatype.aether.spi.locator.Service; +import org.sonatype.aether.spi.locator.ServiceLocator; +import org.sonatype.aether.spi.log.Logger; +import org.sonatype.aether.spi.log.NullLogger; + +/** + * @author Benjamin Bentmann + */ +@Component( role = ArtifactDescriptorReader.class ) +public class DefaultArtifactDescriptorReader + implements ArtifactDescriptorReader, Service +{ + + @Requirement + private Logger logger = NullLogger.INSTANCE; + + @Requirement + private RemoteRepositoryManager remoteRepositoryManager; + + @Requirement + private VersionResolver versionResolver; + + @Requirement + private ArtifactResolver artifactResolver; + + @Requirement + private ModelBuilder modelBuilder; + + public void initService( ServiceLocator locator ) + { + setLogger( locator.getService( Logger.class ) ); + setRemoteRepositoryManager( locator.getService( RemoteRepositoryManager.class ) ); + setVersionResolver( locator.getService( VersionResolver.class ) ); + setArtifactResolver( locator.getService( ArtifactResolver.class ) ); + modelBuilder = locator.getService( ModelBuilder.class ); + if ( modelBuilder == null ) + { + setModelBuilder( new DefaultModelBuilderFactory().newInstance() ); + } + } + + public DefaultArtifactDescriptorReader setLogger( Logger logger ) + { + this.logger = ( logger != null ) ? logger : NullLogger.INSTANCE; + return this; + } + + public DefaultArtifactDescriptorReader setRemoteRepositoryManager( RemoteRepositoryManager remoteRepositoryManager ) + { + if ( remoteRepositoryManager == null ) + { + throw new IllegalArgumentException( "remote repository manager has not been specified" ); + } + this.remoteRepositoryManager = remoteRepositoryManager; + return this; + } + + public DefaultArtifactDescriptorReader setVersionResolver( VersionResolver versionResolver ) + { + if ( versionResolver == null ) + { + throw new IllegalArgumentException( "version resolver has not been specified" ); + } + this.versionResolver = versionResolver; + return this; + } + + public DefaultArtifactDescriptorReader setArtifactResolver( ArtifactResolver artifactResolver ) + { + if ( artifactResolver == null ) + { + throw new IllegalArgumentException( "artifact resolver has not been specified" ); + } + this.artifactResolver = artifactResolver; + return this; + } + + public DefaultArtifactDescriptorReader setModelBuilder( ModelBuilder modelBuilder ) + { + if ( modelBuilder == null ) + { + throw new IllegalArgumentException( "model builder has not been specified" ); + } + this.modelBuilder = modelBuilder; + return this; + } + + public ArtifactDescriptorResult readArtifactDescriptor( RepositorySystemSession session, + ArtifactDescriptorRequest request ) + throws ArtifactDescriptorException + { + ArtifactDescriptorResult result = new ArtifactDescriptorResult( request ); + + Model model = loadPom( session, request, result ); + + if ( model != null ) + { + ArtifactTypeRegistry stereotypes = session.getArtifactTypeRegistry(); + + for ( Repository r : model.getRepositories() ) + { + result.addRepository( convert( r ) ); + } + + for ( org.apache.maven.model.Dependency dependency : model.getDependencies() ) + { + result.addDependency( convert( dependency, stereotypes ) ); + } + + DependencyManagement mngt = model.getDependencyManagement(); + if ( mngt != null ) + { + for ( org.apache.maven.model.Dependency dependency : mngt.getDependencies() ) + { + result.addManagedDependency( convert( dependency, stereotypes ) ); + } + } + + Map properties = new LinkedHashMap(); + + List licenses = model.getLicenses(); + properties.put( "license.count", Integer.valueOf( licenses.size() ) ); + for ( int i = 0; i < licenses.size(); i++ ) + { + License license = licenses.get( i ); + properties.put( "license." + i + ".name", license.getName() ); + properties.put( "license." + i + ".url", license.getUrl() ); + properties.put( "license." + i + ".comments", license.getComments() ); + properties.put( "license." + i + ".distribution", license.getDistribution() ); + } + + result.setProperties( properties ); + } + + return result; + } + + private Model loadPom( RepositorySystemSession session, ArtifactDescriptorRequest request, + ArtifactDescriptorResult result ) + throws ArtifactDescriptorException + { + Set visited = new LinkedHashSet(); + for ( Artifact artifact = request.getArtifact();; ) + { + try + { + VersionRequest versionRequest = + new VersionRequest( artifact, request.getRepositories(), request.getRequestContext() ); + versionResolver.resolveVersion( session, versionRequest ); + } + catch ( VersionResolutionException e ) + { + result.addException( e ); + throw new ArtifactDescriptorException( result ); + } + + if ( !visited.add( artifact.getGroupId() + ':' + artifact.getArtifactId() + ':' + artifact.getBaseVersion() ) ) + { + RepositoryException exception = + new RepositoryException( "Artifact relocations form a cycle: " + visited ); + invalidDescriptor( session, artifact, exception ); + if ( session.isIgnoreInvalidArtifactDescriptor() ) + { + return null; + } + result.addException( exception ); + throw new ArtifactDescriptorException( result ); + } + + Artifact pomArtifact = artifact; + if ( pomArtifact.getClassifier().length() > 0 || !"pom".equals( pomArtifact.getExtension() ) ) + { + pomArtifact = new SubArtifact( artifact, "", "pom" ); + } + + ArtifactResult resolveResult; + try + { + ArtifactRequest resolveRequest = + new ArtifactRequest( pomArtifact, request.getRepositories(), request.getRequestContext() ); + resolveResult = artifactResolver.resolveArtifact( session, resolveRequest ); + pomArtifact = resolveResult.getArtifact(); + result.setRepository( resolveResult.getRepository() ); + } + catch ( ArtifactResolutionException e ) + { + if ( e.getCause() instanceof ArtifactNotFoundException ) + { + missingDescriptor( session, artifact ); + if ( session.isIgnoreMissingArtifactDescriptor() ) + { + return null; + } + } + result.addException( e ); + throw new ArtifactDescriptorException( result ); + } + + Model model; + try + { + ModelBuildingRequest modelRequest = new DefaultModelBuildingRequest(); + modelRequest.setValidationLevel( ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL ); + modelRequest.setProcessPlugins( false ); + modelRequest.setTwoPhaseBuilding( false ); + modelRequest.setSystemProperties( toProperties( session.getSystemProperties() ) ); + modelRequest.setUserProperties( toProperties( session.getUserProperties() ) ); + modelRequest.setModelCache( DefaultModelCache.newInstance( session ) ); + modelRequest.setModelResolver( new DefaultModelResolver( session, request.getRequestContext(), + artifactResolver, remoteRepositoryManager, + request.getRepositories() ) ); + if ( resolveResult.getRepository() instanceof WorkspaceRepository ) + { + modelRequest.setPomFile( pomArtifact.getFile() ); + } + else + { + modelRequest.setModelSource( new FileModelSource( pomArtifact.getFile() ) ); + } + + model = modelBuilder.build( modelRequest ).getEffectiveModel(); + } + catch ( ModelBuildingException e ) + { + for ( ModelProblem problem : e.getProblems() ) + { + if ( problem.getException() instanceof UnresolvableModelException ) + { + result.addException( problem.getException() ); + throw new ArtifactDescriptorException( result ); + } + } + invalidDescriptor( session, artifact, e ); + if ( session.isIgnoreInvalidArtifactDescriptor() ) + { + return null; + } + result.addException( e ); + throw new ArtifactDescriptorException( result ); + } + + Relocation relocation = getRelocation( model ); + + if ( relocation != null ) + { + result.addRelocation( artifact ); + artifact = + new RelocatedArtifact( artifact, relocation.getGroupId(), relocation.getArtifactId(), + relocation.getVersion() ); + result.setArtifact( artifact ); + } + else + { + return model; + } + } + } + + private Properties toProperties( Map map ) + { + Properties props = new Properties(); + if ( map != null ) + { + props.putAll( map ); + } + return props; + } + + private Relocation getRelocation( Model model ) + { + Relocation relocation = null; + DistributionManagement distMngt = model.getDistributionManagement(); + if ( distMngt != null ) + { + relocation = distMngt.getRelocation(); + } + return relocation; + } + + private Dependency convert( org.apache.maven.model.Dependency dependency, ArtifactTypeRegistry stereotypes ) + { + ArtifactType stereotype = stereotypes.get( dependency.getType() ); + if ( stereotype == null ) + { + stereotype = new DefaultArtifactType( dependency.getType() ); + } + + boolean system = dependency.getSystemPath() != null && dependency.getSystemPath().length() > 0; + + Map props = null; + if ( system ) + { + props = Collections.singletonMap( ArtifactProperties.LACKS_DESCRIPTOR, Boolean.TRUE.toString() ); + } + + Artifact artifact = + new DefaultArtifact( dependency.getGroupId(), dependency.getArtifactId(), dependency.getClassifier(), null, + dependency.getVersion(), props, stereotype ); + + if ( system ) + { + artifact = artifact.setFile( new File( dependency.getSystemPath() ) ); + } + + List exclusions = new ArrayList( dependency.getExclusions().size() ); + for ( org.apache.maven.model.Exclusion exclusion : dependency.getExclusions() ) + { + exclusions.add( convert( exclusion ) ); + } + + Dependency result = new Dependency( artifact, dependency.getScope(), dependency.isOptional(), exclusions ); + + return result; + } + + private Exclusion convert( org.apache.maven.model.Exclusion exclusion ) + { + return new Exclusion( exclusion.getGroupId(), exclusion.getArtifactId(), "*", "*" ); + } + + static RemoteRepository convert( Repository repository ) + { + RemoteRepository result = + new RemoteRepository( repository.getId(), repository.getLayout(), repository.getUrl() ); + result.setPolicy( true, convert( repository.getSnapshots() ) ); + result.setPolicy( false, convert( repository.getReleases() ) ); + return result; + } + + private static RepositoryPolicy convert( org.apache.maven.model.RepositoryPolicy policy ) + { + boolean enabled = true; + String checksums = RepositoryPolicy.CHECKSUM_POLICY_WARN; + String updates = RepositoryPolicy.UPDATE_POLICY_DAILY; + + if ( policy != null ) + { + enabled = policy.isEnabled(); + if ( policy.getUpdatePolicy() != null ) + { + updates = policy.getUpdatePolicy(); + } + if ( policy.getChecksumPolicy() != null ) + { + checksums = policy.getChecksumPolicy(); + } + } + + return new RepositoryPolicy( enabled, updates, checksums ); + } + + private void missingDescriptor( RepositorySystemSession session, Artifact artifact ) + { + RepositoryListener listener = session.getRepositoryListener(); + if ( listener != null ) + { + DefaultRepositoryEvent event = new DefaultRepositoryEvent( session, artifact ); + listener.artifactDescriptorMissing( event ); + } + } + + private void invalidDescriptor( RepositorySystemSession session, Artifact artifact, Exception exception ) + { + RepositoryListener listener = session.getRepositoryListener(); + if ( listener != null ) + { + DefaultRepositoryEvent event = new DefaultRepositoryEvent( session, artifact ); + event.setException( exception ); + listener.artifactDescriptorInvalid( event ); + } + } + +} diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelCache.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelCache.java new file mode 100644 index 000000000..25b24c2c3 --- /dev/null +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelCache.java @@ -0,0 +1,119 @@ +package org.apache.maven.repository.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.model.building.ModelCache; +import org.sonatype.aether.RepositoryCache; +import org.sonatype.aether.RepositorySystemSession; + +/** + * A model builder cache backed by the repository system cache. + * + * @author Benjamin Bentmann + */ +class DefaultModelCache + implements ModelCache +{ + + private final RepositorySystemSession session; + + private final RepositoryCache cache; + + public static ModelCache newInstance( RepositorySystemSession session ) + { + if ( session.getCache() == null ) + { + return null; + } + else + { + return new DefaultModelCache( session ); + } + } + + private DefaultModelCache( RepositorySystemSession session ) + { + this.session = session; + this.cache = session.getCache(); + } + + public Object get( String groupId, String artifactId, String version, String tag ) + { + return cache.get( session, new Key( groupId, artifactId, version, tag ) ); + } + + public void put( String groupId, String artifactId, String version, String tag, Object data ) + { + cache.put( session, new Key( groupId, artifactId, version, tag ), data ); + } + + static class Key + { + + private final String groupId; + + private final String artifactId; + + private final String version; + + private final String tag; + + private final int hash; + + public Key( String groupId, String artifactId, String version, String tag ) + { + this.groupId = groupId; + this.artifactId = artifactId; + this.version = version; + this.tag = tag; + + int h = 17; + h = h * 31 + this.groupId.hashCode(); + h = h * 31 + this.artifactId.hashCode(); + h = h * 31 + this.version.hashCode(); + h = h * 31 + this.tag.hashCode(); + hash = h; + } + + @Override + public boolean equals( Object obj ) + { + if ( this == obj ) + { + return true; + } + if ( null == obj || !getClass().equals( obj.getClass() ) ) + { + return false; + } + + Key that = (Key) obj; + return artifactId.equals( that.artifactId ) && groupId.equals( that.groupId ) + && version.equals( that.version ) && tag.equals( that.tag ); + } + + @Override + public int hashCode() + { + return hash; + } + + } +} diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java new file mode 100644 index 000000000..e9138bb93 --- /dev/null +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java @@ -0,0 +1,128 @@ +package org.apache.maven.repository.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 java.io.File; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import org.apache.maven.model.Repository; +import org.apache.maven.model.building.FileModelSource; +import org.apache.maven.model.building.ModelSource; +import org.apache.maven.model.resolution.InvalidRepositoryException; +import org.apache.maven.model.resolution.ModelResolver; +import org.apache.maven.model.resolution.UnresolvableModelException; +import org.sonatype.aether.RepositorySystemSession; +import org.sonatype.aether.artifact.Artifact; +import org.sonatype.aether.impl.ArtifactResolver; +import org.sonatype.aether.impl.RemoteRepositoryManager; +import org.sonatype.aether.repository.RemoteRepository; +import org.sonatype.aether.resolution.ArtifactRequest; +import org.sonatype.aether.resolution.ArtifactResolutionException; +import org.sonatype.aether.util.artifact.DefaultArtifact; + +/** + * A model resolver to assist building of dependency POMs. This resolver gives priority to those repositories that have + * been initially specified and repositories discovered in dependency POMs are recessively merged into the search chain. + * + * @author Benjamin Bentmann + * @see DefaultArtifactDescriptorReader + */ +class DefaultModelResolver + implements ModelResolver +{ + + private final RepositorySystemSession session; + + private final String context; + + private List repositories; + + private final ArtifactResolver resolver; + + private final RemoteRepositoryManager remoteRepositoryManager; + + private final Set repositoryIds; + + public DefaultModelResolver( RepositorySystemSession session, String context, ArtifactResolver resolver, + RemoteRepositoryManager remoteRepositoryManager, List repositories ) + { + this.session = session; + this.context = context; + this.resolver = resolver; + this.remoteRepositoryManager = remoteRepositoryManager; + this.repositories = repositories; + this.repositoryIds = new HashSet(); + } + + private DefaultModelResolver( DefaultModelResolver original ) + { + this.session = original.session; + this.context = original.context; + this.resolver = original.resolver; + this.remoteRepositoryManager = original.remoteRepositoryManager; + this.repositories = original.repositories; + this.repositoryIds = new HashSet( original.repositoryIds ); + } + + public void addRepository( Repository repository ) + throws InvalidRepositoryException + { + if ( !repositoryIds.add( repository.getId() ) ) + { + return; + } + + List newRepositories = + Collections.singletonList( DefaultArtifactDescriptorReader.convert( repository ) ); + + this.repositories = + remoteRepositoryManager.aggregateRepositories( session, repositories, newRepositories, true ); + } + + public ModelResolver newCopy() + { + return new DefaultModelResolver( this ); + } + + public ModelSource resolveModel( String groupId, String artifactId, String version ) + throws UnresolvableModelException + { + Artifact pomArtifact = new DefaultArtifact( groupId, artifactId, "", "pom", version ); + + try + { + ArtifactRequest request = new ArtifactRequest( pomArtifact, repositories, context ); + pomArtifact = resolver.resolveArtifact( session, request ).getArtifact(); + } + catch ( ArtifactResolutionException e ) + { + throw new UnresolvableModelException( "Failed to resolve POM for " + groupId + ":" + artifactId + ":" + + version + " due to " + e.getMessage(), groupId, artifactId, version, e ); + } + + File pomFile = pomArtifact.getFile(); + + return new FileModelSource( pomFile ); + } + +} diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultServiceLocator.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultServiceLocator.java new file mode 100644 index 000000000..f59859056 --- /dev/null +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultServiceLocator.java @@ -0,0 +1,51 @@ +package org.apache.maven.repository.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.sonatype.aether.impl.ArtifactDescriptorReader; +import org.sonatype.aether.impl.MetadataGeneratorFactory; +import org.sonatype.aether.impl.VersionRangeResolver; +import org.sonatype.aether.impl.VersionResolver; + +/** + * A simple service locator that is already setup with all components from this library. To acquire a complete + * repository system, clients need to add some repository connectors for remote transfers. Note: This component + * is meant to assists those clients that employ the repository systems outside of an IoC container, Maven plugins + * should instead always use regular dependency injection to acquire the repository system. + * + * @author Benjamin Bentmann + */ +public class DefaultServiceLocator + extends org.sonatype.aether.impl.internal.DefaultServiceLocator +{ + + /** + * Creates a new service locator that already knows about all service implementations included this library. + */ + public DefaultServiceLocator() + { + addService( ArtifactDescriptorReader.class, DefaultArtifactDescriptorReader.class ); + addService( VersionResolver.class, DefaultVersionResolver.class ); + addService( VersionRangeResolver.class, DefaultVersionRangeResolver.class ); + addService( MetadataGeneratorFactory.class, SnapshotMetadataGeneratorFactory.class ); + addService( MetadataGeneratorFactory.class, VersionsMetadataGeneratorFactory.class ); + } + +} diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java new file mode 100644 index 000000000..a84bf7cc5 --- /dev/null +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java @@ -0,0 +1,269 @@ +package org.apache.maven.repository.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 java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.maven.artifact.repository.metadata.Versioning; +import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader; +import org.codehaus.plexus.component.annotations.Component; +import org.codehaus.plexus.component.annotations.Requirement; +import org.codehaus.plexus.util.IOUtil; +import org.sonatype.aether.RepositoryListener; +import org.sonatype.aether.RepositorySystemSession; +import org.sonatype.aether.util.listener.DefaultRepositoryEvent; +import org.sonatype.aether.util.metadata.DefaultMetadata; +import org.sonatype.aether.util.version.GenericVersionScheme; +import org.sonatype.aether.version.InvalidVersionSpecificationException; +import org.sonatype.aether.version.Version; +import org.sonatype.aether.version.VersionConstraint; +import org.sonatype.aether.version.VersionRange; +import org.sonatype.aether.version.VersionScheme; +import org.sonatype.aether.impl.MetadataResolver; +import org.sonatype.aether.impl.VersionRangeResolver; +import org.sonatype.aether.metadata.Metadata; +import org.sonatype.aether.repository.ArtifactRepository; +import org.sonatype.aether.repository.LocalRepositoryManager; +import org.sonatype.aether.repository.RemoteRepository; +import org.sonatype.aether.repository.WorkspaceReader; +import org.sonatype.aether.resolution.MetadataRequest; +import org.sonatype.aether.resolution.MetadataResult; +import org.sonatype.aether.resolution.VersionRangeRequest; +import org.sonatype.aether.resolution.VersionRangeResolutionException; +import org.sonatype.aether.resolution.VersionRangeResult; +import org.sonatype.aether.spi.locator.Service; +import org.sonatype.aether.spi.locator.ServiceLocator; +import org.sonatype.aether.spi.log.Logger; +import org.sonatype.aether.spi.log.NullLogger; + +/** + * @author Benjamin Bentmann + */ +@Component( role = VersionRangeResolver.class ) +public class DefaultVersionRangeResolver + implements VersionRangeResolver, Service +{ + + private static final String MAVEN_METADATA_XML = "maven-metadata.xml"; + + @Requirement + private Logger logger = NullLogger.INSTANCE; + + @Requirement + private MetadataResolver metadataResolver; + + public void initService( ServiceLocator locator ) + { + setLogger( locator.getService( Logger.class ) ); + setMetadataResolver( locator.getService( MetadataResolver.class ) ); + } + + public DefaultVersionRangeResolver setLogger( Logger logger ) + { + this.logger = ( logger != null ) ? logger : NullLogger.INSTANCE; + return this; + } + + public DefaultVersionRangeResolver setMetadataResolver( MetadataResolver metadataResolver ) + { + if ( metadataResolver == null ) + { + throw new IllegalArgumentException( "metadata resolver has not been specified" ); + } + this.metadataResolver = metadataResolver; + return this; + } + + public VersionRangeResult resolveVersionRange( RepositorySystemSession session, VersionRangeRequest request ) + throws VersionRangeResolutionException + { + VersionRangeResult result = new VersionRangeResult( request ); + + VersionScheme versionScheme = new GenericVersionScheme(); + + VersionConstraint versionConstraint; + try + { + versionConstraint = versionScheme.parseVersionConstraint( request.getArtifact().getVersion() ); + } + catch ( InvalidVersionSpecificationException e ) + { + result.addException( e ); + throw new VersionRangeResolutionException( result ); + } + + result.setVersionConstraint( versionConstraint ); + + if ( versionConstraint.getRanges().isEmpty() ) + { + result.addVersion( versionConstraint.getVersion() ); + } + else + { + Map versionIndex = + getVersions( session, result, request, getNature( session, versionConstraint.getRanges() ) ); + + List versions = new ArrayList(); + for ( Map.Entry v : versionIndex.entrySet() ) + { + try + { + Version ver = versionScheme.parseVersion( v.getKey() ); + if ( versionConstraint.containsVersion( ver ) ) + { + versions.add( ver ); + result.setRepository( ver, v.getValue() ); + } + } + catch ( InvalidVersionSpecificationException e ) + { + result.addException( e ); + } + } + + Collections.sort( versions ); + result.setVersions( versions ); + } + + return result; + } + + private Map getVersions( RepositorySystemSession session, VersionRangeResult result, + VersionRangeRequest request, Metadata.Nature nature ) + { + Map versionIndex = new HashMap(); + + Metadata metadata = + new DefaultMetadata( request.getArtifact().getGroupId(), request.getArtifact().getArtifactId(), + MAVEN_METADATA_XML, nature ); + + List metadataRequests = new ArrayList( request.getRepositories().size() ); + for ( RemoteRepository repository : request.getRepositories() ) + { + MetadataRequest metadataRequest = new MetadataRequest( metadata, repository, request.getRequestContext() ); + metadataRequest.setDeleteLocalCopyIfMissing( true ); + metadataRequests.add( metadataRequest ); + } + List metadataResults = metadataResolver.resolveMetadata( session, metadataRequests ); + + WorkspaceReader workspace = session.getWorkspaceReader(); + if ( workspace != null ) + { + List versions = workspace.findVersions( request.getArtifact() ); + for ( String version : versions ) + { + versionIndex.put( version, workspace.getRepository() ); + } + } + + LocalRepositoryManager lrm = session.getLocalRepositoryManager(); + File localMetadataFile = new File( lrm.getRepository().getBasedir(), lrm.getPathForLocalMetadata( metadata ) ); + if ( localMetadataFile.isFile() ) + { + metadata = metadata.setFile( localMetadataFile ); + Versioning versioning = readVersions( session, metadata, result ); + for ( String version : versioning.getVersions() ) + { + if ( !versionIndex.containsKey( version ) ) + { + versionIndex.put( version, lrm.getRepository() ); + } + } + } + + for ( MetadataResult metadataResult : metadataResults ) + { + result.addException( metadataResult.getException() ); + Versioning versioning = readVersions( session, metadataResult.getMetadata(), result ); + for ( String version : versioning.getVersions() ) + { + if ( !versionIndex.containsKey( version ) ) + { + versionIndex.put( version, metadataResult.getRequest().getRepository() ); + } + } + } + + return versionIndex; + } + + private Metadata.Nature getNature( RepositorySystemSession session, Collection ranges ) + { + for ( VersionRange range : ranges ) + { + if ( range.acceptsSnapshots() ) + { + return Metadata.Nature.RELEASE_OR_SNAPSHOT; + } + } + return Metadata.Nature.RELEASE; + } + + private Versioning readVersions( RepositorySystemSession session, Metadata metadata, VersionRangeResult result ) + { + Versioning versioning = null; + + FileInputStream fis = null; + try + { + if ( metadata != null && metadata.getFile() != null ) + { + fis = new FileInputStream( metadata.getFile() ); + org.apache.maven.artifact.repository.metadata.Metadata m = new MetadataXpp3Reader().read( fis, false ); + versioning = m.getVersioning(); + } + } + catch ( FileNotFoundException e ) + { + // tolerable + } + catch ( Exception e ) + { + invalidMetadata( session, metadata, e ); + result.addException( e ); + } + finally + { + IOUtil.close( fis ); + } + + return ( versioning != null ) ? versioning : new Versioning(); + } + + private void invalidMetadata( RepositorySystemSession session, Metadata metadata, Exception exception ) + { + RepositoryListener listener = session.getRepositoryListener(); + if ( listener != null ) + { + DefaultRepositoryEvent event = new DefaultRepositoryEvent( session, metadata ); + event.setException( exception ); + listener.metadataInvalid( event ); + } + } + +} diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java new file mode 100644 index 000000000..684306040 --- /dev/null +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -0,0 +1,487 @@ +package org.apache.maven.repository.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 java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.maven.artifact.repository.metadata.Snapshot; +import org.apache.maven.artifact.repository.metadata.SnapshotVersion; +import org.apache.maven.artifact.repository.metadata.Versioning; +import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader; +import org.codehaus.plexus.component.annotations.Component; +import org.codehaus.plexus.component.annotations.Requirement; +import org.codehaus.plexus.util.IOUtil; +import org.codehaus.plexus.util.StringUtils; +import org.sonatype.aether.RepositoryCache; +import org.sonatype.aether.RepositoryListener; +import org.sonatype.aether.RepositorySystemSession; +import org.sonatype.aether.util.listener.DefaultRepositoryEvent; +import org.sonatype.aether.util.metadata.DefaultMetadata; +import org.sonatype.aether.artifact.Artifact; +import org.sonatype.aether.impl.MetadataResolver; +import org.sonatype.aether.impl.VersionResolver; +import org.sonatype.aether.impl.internal.CacheUtils; +import org.sonatype.aether.metadata.Metadata; +import org.sonatype.aether.repository.ArtifactRepository; +import org.sonatype.aether.repository.LocalRepositoryManager; +import org.sonatype.aether.repository.RemoteRepository; +import org.sonatype.aether.repository.WorkspaceReader; +import org.sonatype.aether.repository.WorkspaceRepository; +import org.sonatype.aether.resolution.MetadataRequest; +import org.sonatype.aether.resolution.MetadataResult; +import org.sonatype.aether.resolution.VersionRequest; +import org.sonatype.aether.resolution.VersionResolutionException; +import org.sonatype.aether.resolution.VersionResult; +import org.sonatype.aether.spi.locator.Service; +import org.sonatype.aether.spi.locator.ServiceLocator; +import org.sonatype.aether.spi.log.Logger; +import org.sonatype.aether.spi.log.NullLogger; + +/** + * @author Benjamin Bentmann + */ +@Component( role = VersionResolver.class ) +public class DefaultVersionResolver + implements VersionResolver, Service +{ + + private static final String MAVEN_METADATA_XML = "maven-metadata.xml"; + + private static final String RELEASE = "RELEASE"; + + private static final String LATEST = "LATEST"; + + private static final String SNAPSHOT = "SNAPSHOT"; + + @Requirement + private Logger logger = NullLogger.INSTANCE; + + @Requirement + private MetadataResolver metadataResolver; + + public void initService( ServiceLocator locator ) + { + setLogger( locator.getService( Logger.class ) ); + setMetadataResolver( locator.getService( MetadataResolver.class ) ); + } + + public DefaultVersionResolver setLogger( Logger logger ) + { + this.logger = ( logger != null ) ? logger : NullLogger.INSTANCE; + return this; + } + + public DefaultVersionResolver setMetadataResolver( MetadataResolver metadataResolver ) + { + if ( metadataResolver == null ) + { + throw new IllegalArgumentException( "metadata resolver has not been specified" ); + } + this.metadataResolver = metadataResolver; + return this; + } + + public VersionResult resolveVersion( RepositorySystemSession session, VersionRequest request ) + throws VersionResolutionException + { + Artifact artifact = request.getArtifact(); + + String version = artifact.getVersion(); + + VersionResult result = new VersionResult( request ); + + Key cacheKey = null; + RepositoryCache cache = session.getCache(); + if ( cache != null ) + { + cacheKey = new Key( session, request ); + + Object obj = cache.get( session, cacheKey ); + if ( obj instanceof Record ) + { + Record record = (Record) obj; + result.setVersion( record.version ); + result.setRepository( CacheUtils.getRepository( session, request.getRepositories(), record.repoClass, + record.repoId ) ); + return result; + } + } + + Metadata metadata; + + if ( RELEASE.equals( version ) ) + { + metadata = + new DefaultMetadata( artifact.getGroupId(), artifact.getArtifactId(), MAVEN_METADATA_XML, + Metadata.Nature.RELEASE ); + } + else if ( LATEST.equals( version ) ) + { + metadata = + new DefaultMetadata( artifact.getGroupId(), artifact.getArtifactId(), MAVEN_METADATA_XML, + Metadata.Nature.RELEASE_OR_SNAPSHOT ); + } + else if ( version.endsWith( SNAPSHOT ) ) + { + WorkspaceReader workspace = session.getWorkspaceReader(); + if ( workspace != null && workspace.findVersions( artifact ).contains( version ) ) + { + metadata = null; + result.setRepository( workspace.getRepository() ); + } + else + { + metadata = + new DefaultMetadata( artifact.getGroupId(), artifact.getArtifactId(), version, MAVEN_METADATA_XML, + Metadata.Nature.SNAPSHOT ); + } + } + else + { + metadata = null; + } + + if ( metadata == null ) + { + result.setVersion( version ); + } + else + { + List metadataRequests = new ArrayList( request.getRepositories().size() ); + for ( RemoteRepository repository : request.getRepositories() ) + { + MetadataRequest metadataRequest = + new MetadataRequest( metadata, repository, request.getRequestContext() ); + metadataRequest.setDeleteLocalCopyIfMissing( true ); + metadataRequest.setFavorLocalRepository( true ); + metadataRequests.add( metadataRequest ); + } + List metadataResults = metadataResolver.resolveMetadata( session, metadataRequests ); + + LocalRepositoryManager lrm = session.getLocalRepositoryManager(); + File localMetadataFile = + new File( lrm.getRepository().getBasedir(), lrm.getPathForLocalMetadata( metadata ) ); + if ( localMetadataFile.isFile() ) + { + metadata = metadata.setFile( localMetadataFile ); + } + + Map infos = new HashMap(); + merge( artifact, infos, readVersions( session, metadata, result ), + session.getLocalRepositoryManager().getRepository() ); + + for ( MetadataResult metadataResult : metadataResults ) + { + result.addException( metadataResult.getException() ); + merge( artifact, infos, readVersions( session, metadataResult.getMetadata(), result ), + metadataResult.getRequest().getRepository() ); + } + + if ( RELEASE.equals( version ) ) + { + resolve( result, infos, RELEASE ); + } + else if ( LATEST.equals( version ) ) + { + if ( !resolve( result, infos, LATEST ) ) + { + resolve( result, infos, RELEASE ); + } + + if ( result.getVersion() != null && result.getVersion().endsWith( SNAPSHOT ) ) + { + VersionRequest subRequest = new VersionRequest(); + subRequest.setArtifact( artifact.setVersion( result.getVersion() ) ); + if ( result.getRepository() instanceof RemoteRepository ) + { + subRequest.setRepositories( Collections.singletonList( (RemoteRepository) result.getRepository() ) ); + } + else + { + subRequest.setRepositories( request.getRepositories() ); + } + VersionResult subResult = resolveVersion( session, subRequest ); + result.setVersion( subResult.getVersion() ); + result.setRepository( subResult.getRepository() ); + for ( Exception exception : subResult.getExceptions() ) + { + result.addException( exception ); + } + } + } + else + { + if ( !resolve( result, infos, SNAPSHOT + artifact.getClassifier() ) + && !resolve( result, infos, SNAPSHOT ) ) + { + result.setVersion( version ); + } + } + + if ( StringUtils.isEmpty( result.getVersion() ) ) + { + throw new VersionResolutionException( result ); + } + } + + if ( cacheKey != null && metadata != null ) + { + cache.put( session, cacheKey, new Record( result.getVersion(), result.getRepository() ) ); + } + + return result; + } + + private boolean resolve( VersionResult result, Map infos, String key ) + { + VersionInfo info = infos.get( key ); + if ( info != null ) + { + result.setVersion( info.version ); + result.setRepository( info.repository ); + } + return info != null; + } + + private Versioning readVersions( RepositorySystemSession session, Metadata metadata, VersionResult result ) + { + Versioning versioning = null; + + FileInputStream fis = null; + try + { + if ( metadata != null && metadata.getFile() != null ) + { + fis = new FileInputStream( metadata.getFile() ); + org.apache.maven.artifact.repository.metadata.Metadata m = new MetadataXpp3Reader().read( fis, false ); + versioning = m.getVersioning(); + } + } + catch ( FileNotFoundException e ) + { + // tolerable + } + catch ( Exception e ) + { + invalidMetadata( session, metadata, e ); + result.addException( e ); + } + finally + { + IOUtil.close( fis ); + } + + return ( versioning != null ) ? versioning : new Versioning(); + } + + private void invalidMetadata( RepositorySystemSession session, Metadata metadata, Exception exception ) + { + RepositoryListener listener = session.getRepositoryListener(); + if ( listener != null ) + { + DefaultRepositoryEvent event = new DefaultRepositoryEvent( session, metadata ); + event.setException( exception ); + listener.metadataInvalid( event ); + } + } + + private void merge( Artifact artifact, Map infos, Versioning versioning, + ArtifactRepository repository ) + { + if ( StringUtils.isNotEmpty( versioning.getRelease() ) ) + { + merge( RELEASE, infos, versioning.getLastUpdated(), versioning.getRelease(), repository ); + } + + if ( StringUtils.isNotEmpty( versioning.getLatest() ) ) + { + merge( LATEST, infos, versioning.getLastUpdated(), versioning.getLatest(), repository ); + } + + boolean mainSnapshot = false; + for ( SnapshotVersion sv : versioning.getSnapshotVersions() ) + { + if ( StringUtils.isNotEmpty( sv.getVersion() ) ) + { + mainSnapshot |= sv.getClassifier().length() <= 0; + merge( SNAPSHOT + sv.getClassifier(), infos, sv.getUpdated(), sv.getVersion(), repository ); + } + } + + Snapshot snapshot = versioning.getSnapshot(); + if ( !mainSnapshot && snapshot != null ) + { + String version = artifact.getVersion(); + if ( snapshot.getTimestamp() != null && snapshot.getBuildNumber() > 0 ) + { + String qualifier = snapshot.getTimestamp() + '-' + snapshot.getBuildNumber(); + version = version.substring( 0, version.length() - SNAPSHOT.length() ) + qualifier; + } + merge( SNAPSHOT, infos, versioning.getLastUpdated(), version, repository ); + } + } + + private void merge( String key, Map infos, String timestamp, String version, + ArtifactRepository repository ) + { + VersionInfo info = infos.get( key ); + if ( info == null ) + { + info = new VersionInfo( timestamp, version, repository ); + infos.put( key, info ); + } + else if ( info.isOutdated( timestamp ) ) + { + info.version = version; + info.repository = repository; + } + } + + private static class VersionInfo + { + + String timestamp; + + String version; + + ArtifactRepository repository; + + public VersionInfo( String timestamp, String version, ArtifactRepository repository ) + { + this.timestamp = ( timestamp != null ) ? timestamp : ""; + this.version = version; + this.repository = repository; + } + + public boolean isOutdated( String timestamp ) + { + return timestamp != null && timestamp.compareTo( this.timestamp ) > 0; + } + + } + + private static class Key + { + + private final String groupId; + + private final String artifactId; + + private final String version; + + private final String context; + + private final File localRepo; + + private final WorkspaceRepository workspace; + + private final List repositories; + + private final int hashCode; + + public Key( RepositorySystemSession session, VersionRequest request ) + { + groupId = request.getArtifact().getGroupId(); + artifactId = request.getArtifact().getArtifactId(); + version = request.getArtifact().getVersion(); + context = request.getRequestContext(); + localRepo = session.getLocalRepository().getBasedir(); + workspace = CacheUtils.getWorkspace( session ); + repositories = new ArrayList( request.getRepositories().size() ); + for ( RemoteRepository repository : request.getRepositories() ) + { + if ( repository.isRepositoryManager() ) + { + repositories.addAll( repository.getMirroredRepositories() ); + } + else + { + repositories.add( repository ); + } + } + + int hash = 17; + hash = hash * 31 + groupId.hashCode(); + hash = hash * 31 + artifactId.hashCode(); + hash = hash * 31 + version.hashCode(); + hash = hash * 31 + localRepo.hashCode(); + hash = hash * 31 + CacheUtils.repositoriesHashCode( repositories ); + hashCode = hash; + } + + @Override + public boolean equals( Object obj ) + { + if ( obj == this ) + { + return true; + } + else if ( obj == null || !getClass().equals( obj.getClass() ) ) + { + return false; + } + + Key that = (Key) obj; + return artifactId.equals( that.artifactId ) && groupId.equals( that.groupId ) + && version.equals( that.version ) && context.equals( that.context ) + && localRepo.equals( that.localRepo ) && CacheUtils.eq( workspace, that.workspace ) + && CacheUtils.repositoriesEquals( repositories, that.repositories ); + } + + @Override + public int hashCode() + { + return hashCode; + } + + } + + private static class Record + { + final String version; + + final String repoId; + + final Class repoClass; + + public Record( String version, ArtifactRepository repository ) + { + this.version = version; + if ( repository != null ) + { + repoId = repository.getId(); + repoClass = repository.getClass(); + } + else + { + repoId = null; + repoClass = null; + } + } + } + +} diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java new file mode 100644 index 000000000..7ad5ba241 --- /dev/null +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java @@ -0,0 +1,102 @@ +package org.apache.maven.repository.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 java.io.File; + +import org.apache.maven.artifact.repository.metadata.Metadata; +import org.apache.maven.artifact.repository.metadata.Snapshot; +import org.apache.maven.artifact.repository.metadata.Versioning; +import org.sonatype.aether.artifact.Artifact; + +/** + * @author Benjamin Bentmann + */ +final class LocalSnapshotMetadata + extends MavenMetadata +{ + + private final Artifact artifact; + + public LocalSnapshotMetadata( Artifact artifact ) + { + super( createMetadata( artifact ), null ); + this.artifact = artifact; + } + + public LocalSnapshotMetadata( Artifact artifact, File file ) + { + super( createMetadata( artifact ), file ); + this.artifact = artifact; + } + + private static Metadata createMetadata( Artifact artifact ) + { + Snapshot snapshot = new Snapshot(); + snapshot.setLocalCopy( true ); + Versioning versioning = new Versioning(); + versioning.setSnapshot( snapshot ); + + Metadata metadata = new Metadata(); + metadata.setModelVersion( "1.0.0" ); + metadata.setVersioning( versioning ); + metadata.setGroupId( artifact.getGroupId() ); + metadata.setArtifactId( artifact.getArtifactId() ); + metadata.setVersion( artifact.getBaseVersion() ); + + return metadata; + } + + public MavenMetadata setFile( File file ) + { + return new LocalSnapshotMetadata( artifact, file ); + } + + public Object getKey() + { + return getGroupId() + ':' + getArtifactId() + ':' + getVersion(); + } + + public static Object getKey( Artifact artifact ) + { + return artifact.getGroupId() + ':' + artifact.getArtifactId() + ':' + artifact.getBaseVersion(); + } + + public String getGroupId() + { + return artifact.getGroupId(); + } + + public String getArtifactId() + { + return artifact.getArtifactId(); + } + + public String getVersion() + { + return artifact.getBaseVersion(); + } + + public Nature getNature() + { + return Nature.SNAPSHOT; + } + +} diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java new file mode 100644 index 000000000..8b234dd16 --- /dev/null +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java @@ -0,0 +1,76 @@ +package org.apache.maven.repository.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 java.util.Collection; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.Map; + +import org.sonatype.aether.RepositorySystemSession; +import org.sonatype.aether.artifact.Artifact; +import org.sonatype.aether.impl.MetadataGenerator; +import org.sonatype.aether.installation.InstallRequest; +import org.sonatype.aether.metadata.Metadata; + +/** + * @author Benjamin Bentmann + */ +class LocalSnapshotMetadataGenerator + implements MetadataGenerator +{ + + private Map snapshots; + + public LocalSnapshotMetadataGenerator( RepositorySystemSession session, InstallRequest request ) + { + snapshots = new LinkedHashMap(); + } + + public Collection prepare( Collection artifacts ) + { + for ( Artifact artifact : artifacts ) + { + if ( artifact.isSnapshot() ) + { + Object key = LocalSnapshotMetadata.getKey( artifact ); + LocalSnapshotMetadata snapshotMetadata = snapshots.get( key ); + if ( snapshotMetadata == null ) + { + snapshotMetadata = new LocalSnapshotMetadata( artifact ); + snapshots.put( key, snapshotMetadata ); + } + } + } + + return Collections.emptyList(); + } + + public Artifact transformArtifact( Artifact artifact ) + { + return artifact; + } + + public Collection finish( Collection artifacts ) + { + return snapshots.values(); + } + +} diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java new file mode 100644 index 000000000..2f924d4d4 --- /dev/null +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java @@ -0,0 +1,171 @@ +package org.apache.maven.repository.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 java.io.File; +import java.io.IOException; +import java.io.Reader; +import java.io.Writer; + +import org.apache.maven.artifact.repository.metadata.Metadata; +import org.apache.maven.artifact.repository.metadata.Versioning; +import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader; +import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Writer; +import org.codehaus.plexus.util.IOUtil; +import org.codehaus.plexus.util.ReaderFactory; +import org.codehaus.plexus.util.WriterFactory; +import org.codehaus.plexus.util.xml.pull.XmlPullParserException; +import org.sonatype.aether.RepositoryException; +import org.sonatype.aether.metadata.MergeableMetadata; + +/** + * @author Benjamin Bentmann + */ +abstract class MavenMetadata + implements MergeableMetadata +{ + + private final File file; + + protected Metadata metadata; + + private boolean merged; + + protected MavenMetadata( Metadata metadata, File file ) + { + this.metadata = metadata; + this.file = file; + } + + public String getType() + { + return "maven-metadata.xml"; + } + + public File getFile() + { + return file; + } + + public void merge( File existing, File result ) + throws RepositoryException + { + Metadata recessive = read( existing ); + + merge( recessive ); + + write( result, metadata ); + + merged = true; + } + + public boolean isMerged() + { + return merged; + } + + protected void merge( Metadata recessive ) + { + Versioning versioning = recessive.getVersioning(); + if ( versioning != null ) + { + versioning.setLastUpdated( null ); + } + + Metadata dominant = metadata; + + versioning = dominant.getVersioning(); + if ( versioning != null ) + { + versioning.updateTimestamp(); + } + + dominant.merge( recessive ); + } + + private Metadata read( File metadataFile ) + throws RepositoryException + { + if ( metadataFile.length() <= 0 ) + { + return new Metadata(); + } + + Reader reader = null; + try + { + reader = ReaderFactory.newXmlReader( metadataFile ); + return new MetadataXpp3Reader().read( reader, false ); + } + catch ( IOException e ) + { + throw new RepositoryException( "Could not read metadata " + metadataFile + ": " + e.getMessage(), e ); + } + catch ( XmlPullParserException e ) + { + throw new RepositoryException( "Could not parse metadata " + metadataFile + ": " + e.getMessage(), e ); + } + finally + { + IOUtil.close( reader ); + } + } + + private void write( File metadataFile, Metadata metadata ) + throws RepositoryException + { + Writer writer = null; + try + { + metadataFile.getParentFile().mkdirs(); + writer = WriterFactory.newXmlWriter( metadataFile ); + new MetadataXpp3Writer().write( writer, metadata ); + } + catch ( IOException e ) + { + throw new RepositoryException( "Could not write metadata " + metadataFile + ": " + e.getMessage(), e ); + } + finally + { + IOUtil.close( writer ); + } + } + + @Override + public String toString() + { + StringBuilder buffer = new StringBuilder( 128 ); + if ( getGroupId().length() > 0 ) + { + buffer.append( getGroupId() ); + } + if ( getArtifactId().length() > 0 ) + { + buffer.append( ':' ).append( getArtifactId() ); + } + if ( getVersion().length() > 0 ) + { + buffer.append( ':' ).append( getVersion() ); + } + buffer.append( '/' ).append( getType() ); + return buffer.toString(); + } + +} diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemSession.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemSession.java new file mode 100644 index 000000000..a1fb8775c --- /dev/null +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemSession.java @@ -0,0 +1,104 @@ +package org.apache.maven.repository.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.sonatype.aether.collection.DependencyGraphTransformer; +import org.sonatype.aether.collection.DependencyManager; +import org.sonatype.aether.collection.DependencySelector; +import org.sonatype.aether.collection.DependencyTraverser; +import org.sonatype.aether.util.DefaultRepositorySystemSession; +import org.sonatype.aether.util.artifact.DefaultArtifactType; +import org.sonatype.aether.util.artifact.DefaultArtifactTypeRegistry; +import org.sonatype.aether.util.graph.manager.ClassicDependencyManager; +import org.sonatype.aether.util.graph.selector.AndDependencySelector; +import org.sonatype.aether.util.graph.selector.ExclusionDependencySelector; +import org.sonatype.aether.util.graph.selector.OptionalDependencySelector; +import org.sonatype.aether.util.graph.selector.ScopeDependencySelector; +import org.sonatype.aether.util.graph.transformer.ChainedDependencyGraphTransformer; +import org.sonatype.aether.util.graph.transformer.ConflictMarker; +import org.sonatype.aether.util.graph.transformer.JavaDependencyContextRefiner; +import org.sonatype.aether.util.graph.transformer.JavaEffectiveScopeCalculator; +import org.sonatype.aether.util.graph.transformer.NearestVersionConflictResolver; +import org.sonatype.aether.util.graph.traverser.FatArtifactTraverser; +import org.sonatype.aether.util.repository.DefaultAuthenticationSelector; +import org.sonatype.aether.util.repository.DefaultMirrorSelector; +import org.sonatype.aether.util.repository.DefaultProxySelector; + +/** + * A simplistic repository system session that mimics Maven's behavior to help third-party developers that want to embed + * Maven's dependency resolution into their own applications. Warning: This class is not intended for + * usage by Maven plugins, those should always acquire the current repository system session via parameter injection. + * + * @author Benjamin Bentmann + */ +public class MavenRepositorySystemSession + extends DefaultRepositorySystemSession +{ + + /** + * Creates a new Maven-like repository system session by initializing the session with values typical for + * Maven-based resolution. + */ + public MavenRepositorySystemSession() + { + setMirrorSelector( new DefaultMirrorSelector() ); + setAuthenticationSelector( new DefaultAuthenticationSelector() ); + setProxySelector( new DefaultProxySelector() ); + + DependencyTraverser depTraverser = new FatArtifactTraverser(); + setDependencyTraverser( depTraverser ); + + DependencyManager depManager = new ClassicDependencyManager(); + setDependencyManager( depManager ); + + DependencySelector depFilter = + new AndDependencySelector( new ScopeDependencySelector( "test", "provided" ), + new OptionalDependencySelector(), new ExclusionDependencySelector() ); + setDependencySelector( depFilter ); + + DependencyGraphTransformer transformer = + new ChainedDependencyGraphTransformer( new ConflictMarker(), new JavaEffectiveScopeCalculator(), + new NearestVersionConflictResolver(), + new JavaDependencyContextRefiner() ); + setDependencyGraphTransformer( transformer ); + + DefaultArtifactTypeRegistry stereotypes = new DefaultArtifactTypeRegistry(); + stereotypes.add( new DefaultArtifactType( "pom" ) ); + stereotypes.add( new DefaultArtifactType( "maven-plugin", "jar", "", "java" ) ); + stereotypes.add( new DefaultArtifactType( "jar", "jar", "", "java" ) ); + stereotypes.add( new DefaultArtifactType( "ejb", "jar", "", "java" ) ); + stereotypes.add( new DefaultArtifactType( "ejb-client", "jar", "client", "java" ) ); + stereotypes.add( new DefaultArtifactType( "test-jar", "jar", "tests", "java" ) ); + stereotypes.add( new DefaultArtifactType( "javadoc", "jar", "javadoc", "java" ) ); + stereotypes.add( new DefaultArtifactType( "java-source", "jar", "sources", "java", false, false ) ); + stereotypes.add( new DefaultArtifactType( "war", "war", "", "java", false, true ) ); + stereotypes.add( new DefaultArtifactType( "ear", "ear", "", "java", false, true ) ); + stereotypes.add( new DefaultArtifactType( "rar", "rar", "", "java", false, true ) ); + stereotypes.add( new DefaultArtifactType( "par", "par", "", "java", false, true ) ); + setArtifactTypeRegistry( stereotypes ); + + setIgnoreInvalidArtifactDescriptor( true ); + setIgnoreMissingArtifactDescriptor( true ); + + setSystemProps( System.getProperties() ); + setConfigProps( System.getProperties() ); + } + +} diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RelocatedArtifact.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RelocatedArtifact.java new file mode 100644 index 000000000..3acc3cb63 --- /dev/null +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RelocatedArtifact.java @@ -0,0 +1,126 @@ +package org.apache.maven.repository.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 java.io.File; +import java.util.Map; + +import org.sonatype.aether.artifact.Artifact; +import org.sonatype.aether.util.artifact.AbstractArtifact; + +/** + * @author Benjamin Bentmann + */ +final class RelocatedArtifact + extends AbstractArtifact +{ + + private final Artifact artifact; + + private final String groupId; + + private final String artifactId; + + private final String version; + + public RelocatedArtifact( Artifact artifact, String groupId, String artifactId, String version ) + { + if ( artifact == null ) + { + throw new IllegalArgumentException( "no artifact specified" ); + } + this.artifact = artifact; + this.groupId = ( groupId != null && groupId.length() > 0 ) ? groupId : null; + this.artifactId = ( artifactId != null && artifactId.length() > 0 ) ? artifactId : null; + this.version = ( version != null && version.length() > 0 ) ? version : null; + } + + public String getGroupId() + { + if ( groupId != null ) + { + return groupId; + } + else + { + return artifact.getGroupId(); + } + } + + public String getArtifactId() + { + if ( artifactId != null ) + { + return artifactId; + } + else + { + return artifact.getArtifactId(); + } + } + + public String getVersion() + { + if ( version != null ) + { + return version; + } + else + { + return artifact.getVersion(); + } + } + + public String getBaseVersion() + { + return toBaseVersion( getVersion() ); + } + + public boolean isSnapshot() + { + return isSnapshot( getVersion() ); + } + + public String getClassifier() + { + return artifact.getClassifier(); + } + + public String getExtension() + { + return artifact.getExtension(); + } + + public File getFile() + { + return artifact.getFile(); + } + + public String getProperty( String key, String defaultValue ) + { + return artifact.getProperty( key, defaultValue ); + } + + public Map getProperties() + { + return artifact.getProperties(); + } + +} diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java new file mode 100644 index 000000000..6f1f1b47a --- /dev/null +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java @@ -0,0 +1,196 @@ +package org.apache.maven.repository.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 java.io.File; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.TimeZone; + +import org.apache.maven.artifact.repository.metadata.Metadata; +import org.apache.maven.artifact.repository.metadata.Snapshot; +import org.apache.maven.artifact.repository.metadata.SnapshotVersion; +import org.apache.maven.artifact.repository.metadata.Versioning; +import org.sonatype.aether.artifact.Artifact; + +/** + * @author Benjamin Bentmann + */ +final class RemoteSnapshotMetadata + extends MavenMetadata +{ + + private static final String SNAPSHOT = "SNAPSHOT"; + + private final Collection artifacts = new ArrayList(); + + private final Map versions = new LinkedHashMap(); + + public RemoteSnapshotMetadata( Artifact artifact ) + { + super( createMetadata( artifact ), null ); + } + + private RemoteSnapshotMetadata( Metadata metadata, File file ) + { + super( metadata, file ); + } + + private static Metadata createMetadata( Artifact artifact ) + { + Metadata metadata = new Metadata(); + metadata.setModelVersion( "1.1.0" ); + metadata.setGroupId( artifact.getGroupId() ); + metadata.setArtifactId( artifact.getArtifactId() ); + metadata.setVersion( artifact.getBaseVersion() ); + + return metadata; + } + + public void bind( Artifact artifact ) + { + artifacts.add( artifact ); + } + + public MavenMetadata setFile( File file ) + { + return new RemoteSnapshotMetadata( metadata, file ); + } + + public Object getKey() + { + return getGroupId() + ':' + getArtifactId() + ':' + getVersion(); + } + + public static Object getKey( Artifact artifact ) + { + return artifact.getGroupId() + ':' + artifact.getArtifactId() + ':' + artifact.getBaseVersion(); + } + + public String getExpandedVersion( Artifact artifact ) + { + return versions.get( artifact.getClassifier() ).getVersion(); + } + + @Override + protected void merge( Metadata recessive ) + { + Snapshot snapshot; + String lastUpdated = ""; + + if ( metadata.getVersioning() == null ) + { + DateFormat utcDateFormatter = new SimpleDateFormat( "yyyyMMdd.HHmmss" ); + utcDateFormatter.setTimeZone( TimeZone.getTimeZone( "UTC" ) ); + + snapshot = new Snapshot(); + snapshot.setBuildNumber( getBuildNumber( recessive ) + 1 ); + snapshot.setTimestamp( utcDateFormatter.format( new Date() ) ); + + Versioning versioning = new Versioning(); + versioning.setSnapshot( snapshot ); + versioning.setLastUpdated( snapshot.getTimestamp().replace( ".", "" ) ); + lastUpdated = versioning.getLastUpdated(); + + metadata.setVersioning( versioning ); + } + else + { + snapshot = metadata.getVersioning().getSnapshot(); + lastUpdated = metadata.getVersioning().getLastUpdated(); + } + + for ( Artifact artifact : artifacts ) + { + String version = artifact.getVersion(); + + if ( version.endsWith( SNAPSHOT ) ) + { + String qualifier = snapshot.getTimestamp() + "-" + snapshot.getBuildNumber(); + version = version.substring( 0, version.length() - SNAPSHOT.length() ) + qualifier; + } + + SnapshotVersion sv = new SnapshotVersion(); + sv.setClassifier( artifact.getClassifier() ); + sv.setVersion( version ); + sv.setUpdated( lastUpdated ); + versions.put( sv.getClassifier(), sv ); + } + + artifacts.clear(); + + Versioning versioning = recessive.getVersioning(); + if ( versioning != null ) + { + for ( SnapshotVersion sv : versioning.getSnapshotVersions() ) + { + if ( !versions.containsKey( sv.getClassifier() ) ) + { + versions.put( sv.getClassifier(), sv ); + } + } + } + + metadata.getVersioning().setSnapshotVersions( new ArrayList( versions.values() ) ); + } + + private static int getBuildNumber( Metadata metadata ) + { + int number = 0; + + Versioning versioning = metadata.getVersioning(); + if ( versioning != null ) + { + Snapshot snapshot = versioning.getSnapshot(); + if ( snapshot != null && snapshot.getBuildNumber() > 0 ) + { + number = snapshot.getBuildNumber(); + } + } + + return number; + } + + public String getGroupId() + { + return metadata.getGroupId(); + } + + public String getArtifactId() + { + return metadata.getArtifactId(); + } + + public String getVersion() + { + return metadata.getVersion(); + } + + public Nature getNature() + { + return Nature.SNAPSHOT; + } + +} diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java new file mode 100644 index 000000000..d8a8525ed --- /dev/null +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java @@ -0,0 +1,102 @@ +package org.apache.maven.repository.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 java.util.Collection; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.Map; + +import org.sonatype.aether.RepositorySystemSession; +import org.sonatype.aether.artifact.Artifact; +import org.sonatype.aether.deployment.DeployRequest; +import org.sonatype.aether.impl.MetadataGenerator; +import org.sonatype.aether.metadata.Metadata; + +/** + * @author Benjamin Bentmann + */ +class RemoteSnapshotMetadataGenerator + implements MetadataGenerator +{ + + private Map snapshots; + + public RemoteSnapshotMetadataGenerator( RepositorySystemSession session, DeployRequest request ) + { + snapshots = new LinkedHashMap(); + + /* + * NOTE: This should be considered a quirk to support interop with Maven's legacy ArtifactDeployer which + * processes one artifact at a time and hence cannot associate the artifacts from the same project to use the + * same timestamp+buildno for the snapshot versions. Allowing the caller to pass in metadata from a previous + * deployment allows to re-establish the association between the artifacts of the same project. + */ + for ( Metadata metadata : request.getMetadata() ) + { + if ( metadata instanceof RemoteSnapshotMetadata ) + { + RemoteSnapshotMetadata snapshotMetadata = (RemoteSnapshotMetadata) metadata; + snapshots.put( snapshotMetadata.getKey(), snapshotMetadata ); + } + } + } + + public Collection prepare( Collection artifacts ) + { + for ( Artifact artifact : artifacts ) + { + if ( artifact.isSnapshot() ) + { + Object key = RemoteSnapshotMetadata.getKey( artifact ); + RemoteSnapshotMetadata snapshotMetadata = snapshots.get( key ); + if ( snapshotMetadata == null ) + { + snapshotMetadata = new RemoteSnapshotMetadata( artifact ); + snapshots.put( key, snapshotMetadata ); + } + snapshotMetadata.bind( artifact ); + } + } + + return snapshots.values(); + } + + public Artifact transformArtifact( Artifact artifact ) + { + if ( artifact.isSnapshot() && artifact.getVersion().equals( artifact.getBaseVersion() ) ) + { + Object key = RemoteSnapshotMetadata.getKey( artifact ); + RemoteSnapshotMetadata snapshotMetadata = snapshots.get( key ); + if ( snapshotMetadata != null ) + { + artifact = artifact.setVersion( snapshotMetadata.getExpandedVersion( artifact ) ); + } + } + + return artifact; + } + + public Collection finish( Collection artifacts ) + { + return Collections.emptyList(); + } + +} diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/SnapshotMetadataGeneratorFactory.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/SnapshotMetadataGeneratorFactory.java new file mode 100644 index 000000000..60e9c3e99 --- /dev/null +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/SnapshotMetadataGeneratorFactory.java @@ -0,0 +1,52 @@ +package org.apache.maven.repository.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.codehaus.plexus.component.annotations.Component; +import org.sonatype.aether.RepositorySystemSession; +import org.sonatype.aether.deployment.DeployRequest; +import org.sonatype.aether.impl.MetadataGenerator; +import org.sonatype.aether.impl.MetadataGeneratorFactory; +import org.sonatype.aether.installation.InstallRequest; + +/** + * @author Benjamin Bentmann + */ +@Component( role = MetadataGeneratorFactory.class, hint = "snapshot" ) +public class SnapshotMetadataGeneratorFactory + implements MetadataGeneratorFactory +{ + + public MetadataGenerator newInstance( RepositorySystemSession session, InstallRequest request ) + { + return new LocalSnapshotMetadataGenerator( session, request ); + } + + public MetadataGenerator newInstance( RepositorySystemSession session, DeployRequest request ) + { + return new RemoteSnapshotMetadataGenerator( session, request ); + } + + public int getPriority() + { + return 10; + } + +} diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java new file mode 100644 index 000000000..3008454c1 --- /dev/null +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java @@ -0,0 +1,102 @@ +package org.apache.maven.repository.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 java.io.File; + +import org.apache.maven.artifact.repository.metadata.Metadata; +import org.apache.maven.artifact.repository.metadata.Versioning; +import org.sonatype.aether.artifact.Artifact; + +/** + * @author Benjamin Bentmann + */ +final class VersionsMetadata + extends MavenMetadata +{ + + private final Artifact artifact; + + public VersionsMetadata( Artifact artifact ) + { + super( createMetadata( artifact ), null ); + this.artifact = artifact; + } + + public VersionsMetadata( Artifact artifact, File file ) + { + super( createMetadata( artifact ), file ); + this.artifact = artifact; + } + + private static Metadata createMetadata( Artifact artifact ) + { + Versioning versioning = new Versioning(); + versioning.addVersion( artifact.getBaseVersion() ); + if ( !artifact.isSnapshot() ) + { + versioning.setRelease( artifact.getVersion() ); + } + + Metadata metadata = new Metadata(); + metadata.setModelVersion( "1.0.0" ); + metadata.setVersioning( versioning ); + metadata.setGroupId( artifact.getGroupId() ); + metadata.setArtifactId( artifact.getArtifactId() ); + + return metadata; + } + + public Object getKey() + { + return getGroupId() + ':' + getArtifactId(); + } + + public static Object getKey( Artifact artifact ) + { + return artifact.getGroupId() + ':' + artifact.getArtifactId(); + } + + public MavenMetadata setFile( File file ) + { + return new VersionsMetadata( artifact, file ); + } + + public String getGroupId() + { + return artifact.getGroupId(); + } + + public String getArtifactId() + { + return artifact.getArtifactId(); + } + + public String getVersion() + { + return ""; + } + + public Nature getNature() + { + return artifact.isSnapshot() ? Nature.RELEASE_OR_SNAPSHOT : Nature.RELEASE; + } + +} diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java new file mode 100644 index 000000000..ed3d4c625 --- /dev/null +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java @@ -0,0 +1,99 @@ +package org.apache.maven.repository.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 java.util.Collection; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.Map; + +import org.sonatype.aether.RepositorySystemSession; +import org.sonatype.aether.artifact.Artifact; +import org.sonatype.aether.deployment.DeployRequest; +import org.sonatype.aether.impl.MetadataGenerator; +import org.sonatype.aether.installation.InstallRequest; +import org.sonatype.aether.metadata.Metadata; + +/** + * @author Benjamin Bentmann + */ +class VersionsMetadataGenerator + implements MetadataGenerator +{ + + private Map versions; + + public VersionsMetadataGenerator( RepositorySystemSession session, InstallRequest request ) + { + this( session, request.getMetadata() ); + } + + public VersionsMetadataGenerator( RepositorySystemSession session, DeployRequest request ) + { + this( session, request.getMetadata() ); + } + + private VersionsMetadataGenerator( RepositorySystemSession session, Collection metadatas ) + { + versions = new LinkedHashMap(); + + /* + * NOTE: This should be considered a quirk to support interop with Maven's legacy ArtifactDeployer which + * processes one artifact at a time and hence cannot associate the artifacts from the same project to use the + * same timestamp+buildno for the snapshot versions. Allowing the caller to pass in metadata from a previous + * deployment allows to re-establish the association between the artifacts of the same project. + */ + for ( Metadata metadata : metadatas ) + { + if ( metadata instanceof VersionsMetadata ) + { + VersionsMetadata versionsMetadata = (VersionsMetadata) metadata; + versions.put( versionsMetadata.getKey(), versionsMetadata ); + } + } + } + + public Collection prepare( Collection artifacts ) + { + return Collections.emptyList(); + } + + public Artifact transformArtifact( Artifact artifact ) + { + return artifact; + } + + public Collection finish( Collection artifacts ) + { + for ( Artifact artifact : artifacts ) + { + Object key = VersionsMetadata.getKey( artifact ); + VersionsMetadata versionsMetadata = versions.get( key ); + if ( versionsMetadata == null ) + { + versionsMetadata = new VersionsMetadata( artifact ); + versions.put( key, versionsMetadata ); + } + } + + return versions.values(); + } + +} diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGeneratorFactory.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGeneratorFactory.java new file mode 100644 index 000000000..a1e986f5b --- /dev/null +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGeneratorFactory.java @@ -0,0 +1,52 @@ +package org.apache.maven.repository.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.codehaus.plexus.component.annotations.Component; +import org.sonatype.aether.RepositorySystemSession; +import org.sonatype.aether.deployment.DeployRequest; +import org.sonatype.aether.impl.MetadataGenerator; +import org.sonatype.aether.impl.MetadataGeneratorFactory; +import org.sonatype.aether.installation.InstallRequest; + +/** + * @author Benjamin Bentmann + */ +@Component( role = MetadataGeneratorFactory.class, hint = "versions" ) +public class VersionsMetadataGeneratorFactory + implements MetadataGeneratorFactory +{ + + public MetadataGenerator newInstance( RepositorySystemSession session, InstallRequest request ) + { + return new VersionsMetadataGenerator( session, request ); + } + + public MetadataGenerator newInstance( RepositorySystemSession session, DeployRequest request ) + { + return new VersionsMetadataGenerator( session, request ); + } + + public int getPriority() + { + return 5; + } + +} From bda76f92c223d98e0c284ac2dfbdee10b75f95ad Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Wed, 25 Aug 2010 20:12:52 +0000 Subject: [PATCH 003/224] [maven-release-plugin] prepare release maven-3.0-beta-3 git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@989336 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 222495bb5..bfff6c73b 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -19,15 +19,13 @@ specific language governing permissions and limitations under the License. --> - + 4.0.0 org.apache.maven maven - 3.0-SNAPSHOT + 3.0-beta-3 maven-aether-provider From c36c61820be9214308b986b1dee4e9fa256af6b0 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Wed, 25 Aug 2010 20:14:23 +0000 Subject: [PATCH 004/224] [maven-release-plugin] prepare for next development iteration git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@989338 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index bfff6c73b..7c71b42c5 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0-beta-3 + 3.0-SNAPSHOT maven-aether-provider From 2c2e168ed42a769d5e16618dec30309548cbd8c9 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Wed, 25 Aug 2010 23:11:42 +0000 Subject: [PATCH 005/224] [maven-release-plugin] prepare release maven-3.0-beta-3 git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@989400 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 7c71b42c5..bfff6c73b 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0-SNAPSHOT + 3.0-beta-3 maven-aether-provider From 0dda9f6643eaf5f0b7b23c31a9187257b978f256 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Wed, 25 Aug 2010 23:13:09 +0000 Subject: [PATCH 006/224] [maven-release-plugin] prepare for next development iteration git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@989402 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index bfff6c73b..7c71b42c5 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0-beta-3 + 3.0-SNAPSHOT maven-aether-provider From 1c917dbfd9d32da3b606ae6f215dae97431d871e Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Mon, 30 Aug 2010 11:14:59 +0000 Subject: [PATCH 007/224] o Fixed duplicate processig of g:a-level metadata git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@990769 13f79535-47bb-0310-9956-ffa450edef68 --- .../internal/VersionsMetadataGenerator.java | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java index ed3d4c625..db1c41281 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java @@ -21,6 +21,7 @@ import java.util.Collection; import java.util.Collections; +import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; @@ -40,6 +41,8 @@ class VersionsMetadataGenerator private Map versions; + private Map processedVersions; + public VersionsMetadataGenerator( RepositorySystemSession session, InstallRequest request ) { this( session, request.getMetadata() ); @@ -53,19 +56,22 @@ public VersionsMetadataGenerator( RepositorySystemSession session, DeployRequest private VersionsMetadataGenerator( RepositorySystemSession session, Collection metadatas ) { versions = new LinkedHashMap(); + processedVersions = new LinkedHashMap(); /* * NOTE: This should be considered a quirk to support interop with Maven's legacy ArtifactDeployer which * processes one artifact at a time and hence cannot associate the artifacts from the same project to use the - * same timestamp+buildno for the snapshot versions. Allowing the caller to pass in metadata from a previous - * deployment allows to re-establish the association between the artifacts of the same project. + * same version index. Allowing the caller to pass in metadata from a previous deployment allows to re-establish + * the association between the artifacts of the same project. */ - for ( Metadata metadata : metadatas ) + for ( Iterator it = metadatas.iterator(); it.hasNext(); ) { + Metadata metadata = it.next(); if ( metadata instanceof VersionsMetadata ) { + it.remove(); VersionsMetadata versionsMetadata = (VersionsMetadata) metadata; - versions.put( versionsMetadata.getKey(), versionsMetadata ); + processedVersions.put( versionsMetadata.getKey(), versionsMetadata ); } } } @@ -85,11 +91,14 @@ public Collection finish( Collection art for ( Artifact artifact : artifacts ) { Object key = VersionsMetadata.getKey( artifact ); - VersionsMetadata versionsMetadata = versions.get( key ); - if ( versionsMetadata == null ) + if ( processedVersions.get( key ) == null ) { - versionsMetadata = new VersionsMetadata( artifact ); - versions.put( key, versionsMetadata ); + VersionsMetadata versionsMetadata = versions.get( key ); + if ( versionsMetadata == null ) + { + versionsMetadata = new VersionsMetadata( artifact ); + versions.put( key, versionsMetadata ); + } } } From 1c5c70939356f3068d320d4e1522d98fbadf76ba Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Mon, 30 Aug 2010 11:17:36 +0000 Subject: [PATCH 008/224] [MNG-4779] NullPointerException thrown during dependency resolution when dependency with range occurs more than once in the dirty tree [MNG-4781] Can't deploy to Nexus staging repository git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@990771 13f79535-47bb-0310-9956-ffa450edef68 --- .../internal/DefaultArtifactDescriptorReader.java | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java index bb73846ca..3a4b3e7f7 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java @@ -19,7 +19,6 @@ * under the License. */ -import java.io.File; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedHashMap; @@ -366,18 +365,13 @@ private Dependency convert( org.apache.maven.model.Dependency dependency, Artifa Map props = null; if ( system ) { - props = Collections.singletonMap( ArtifactProperties.LACKS_DESCRIPTOR, Boolean.TRUE.toString() ); + props = Collections.singletonMap( ArtifactProperties.LOCAL_PATH, dependency.getSystemPath() ); } Artifact artifact = new DefaultArtifact( dependency.getGroupId(), dependency.getArtifactId(), dependency.getClassifier(), null, dependency.getVersion(), props, stereotype ); - if ( system ) - { - artifact = artifact.setFile( new File( dependency.getSystemPath() ) ); - } - List exclusions = new ArrayList( dependency.getExclusions().size() ); for ( org.apache.maven.model.Exclusion exclusion : dependency.getExclusions() ) { From df8674dd5fbef65b1c695b23cd4e3f1bb4fd0613 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Mon, 30 Aug 2010 12:34:49 +0000 Subject: [PATCH 009/224] [maven-release-plugin] prepare release maven-3.0-beta-3 git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@990785 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 7c71b42c5..bfff6c73b 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0-SNAPSHOT + 3.0-beta-3 maven-aether-provider From 3a477a18b0612438e8a3c79c012e641a459d19bd Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Mon, 30 Aug 2010 12:36:40 +0000 Subject: [PATCH 010/224] [maven-release-plugin] prepare for next development iteration git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@990787 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index bfff6c73b..7c71b42c5 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0-beta-3 + 3.0-SNAPSHOT maven-aether-provider From a547bfb1f2443a51e58a531b4d967ae11a1471b2 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Wed, 8 Sep 2010 13:48:04 +0000 Subject: [PATCH 011/224] [MNG-4452] Metadata for snapshots should include classifier git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@995057 13f79535-47bb-0310-9956-ffa450edef68 --- .../internal/DefaultVersionResolver.java | 30 ++++++++++++++----- .../internal/RemoteSnapshotMetadata.java | 16 +++++++--- 2 files changed, 34 insertions(+), 12 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java index 684306040..b33728be2 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -235,7 +235,7 @@ else if ( LATEST.equals( version ) ) } else { - if ( !resolve( result, infos, SNAPSHOT + artifact.getClassifier() ) + if ( !resolve( result, infos, SNAPSHOT + getKey( artifact.getClassifier(), artifact.getExtension() ) ) && !resolve( result, infos, SNAPSHOT ) ) { result.setVersion( version ); @@ -322,18 +322,17 @@ private void merge( Artifact artifact, Map infos, Versionin merge( LATEST, infos, versioning.getLastUpdated(), versioning.getLatest(), repository ); } - boolean mainSnapshot = false; for ( SnapshotVersion sv : versioning.getSnapshotVersions() ) { if ( StringUtils.isNotEmpty( sv.getVersion() ) ) { - mainSnapshot |= sv.getClassifier().length() <= 0; - merge( SNAPSHOT + sv.getClassifier(), infos, sv.getUpdated(), sv.getVersion(), repository ); + String key = getKey( sv.getClassifier(), sv.getExtension() ); + merge( SNAPSHOT + key, infos, sv.getUpdated(), sv.getVersion(), repository ); } } Snapshot snapshot = versioning.getSnapshot(); - if ( !mainSnapshot && snapshot != null ) + if ( snapshot != null ) { String version = artifact.getVersion(); if ( snapshot.getTimestamp() != null && snapshot.getBuildNumber() > 0 ) @@ -361,6 +360,11 @@ else if ( info.isOutdated( timestamp ) ) } } + private String getKey( String classifier, String extension ) + { + return StringUtils.clean( classifier ) + ':' + StringUtils.clean( extension ); + } + private static class VersionInfo { @@ -391,6 +395,10 @@ private static class Key private final String artifactId; + private final String classifier; + + private final String extension; + private final String version; private final String context; @@ -405,9 +413,12 @@ private static class Key public Key( RepositorySystemSession session, VersionRequest request ) { - groupId = request.getArtifact().getGroupId(); - artifactId = request.getArtifact().getArtifactId(); - version = request.getArtifact().getVersion(); + Artifact artifact = request.getArtifact(); + groupId = artifact.getGroupId(); + artifactId = artifact.getArtifactId(); + classifier = artifact.getClassifier(); + extension = artifact.getExtension(); + version = artifact.getVersion(); context = request.getRequestContext(); localRepo = session.getLocalRepository().getBasedir(); workspace = CacheUtils.getWorkspace( session ); @@ -427,6 +438,8 @@ public Key( RepositorySystemSession session, VersionRequest request ) int hash = 17; hash = hash * 31 + groupId.hashCode(); hash = hash * 31 + artifactId.hashCode(); + hash = hash * 31 + classifier.hashCode(); + hash = hash * 31 + extension.hashCode(); hash = hash * 31 + version.hashCode(); hash = hash * 31 + localRepo.hashCode(); hash = hash * 31 + CacheUtils.repositoriesHashCode( repositories ); @@ -447,6 +460,7 @@ else if ( obj == null || !getClass().equals( obj.getClass() ) ) Key that = (Key) obj; return artifactId.equals( that.artifactId ) && groupId.equals( that.groupId ) + && classifier.equals( that.classifier ) && extension.equals( that.extension ) && version.equals( that.version ) && context.equals( that.context ) && localRepo.equals( that.localRepo ) && CacheUtils.eq( workspace, that.workspace ) && CacheUtils.repositoriesEquals( repositories, that.repositories ); diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java index 6f1f1b47a..352ae0f5f 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java @@ -91,7 +91,8 @@ public static Object getKey( Artifact artifact ) public String getExpandedVersion( Artifact artifact ) { - return versions.get( artifact.getClassifier() ).getVersion(); + String key = getKey( artifact.getClassifier(), artifact.getExtension() ); + return versions.get( key ).getVersion(); } @Override @@ -134,9 +135,10 @@ protected void merge( Metadata recessive ) SnapshotVersion sv = new SnapshotVersion(); sv.setClassifier( artifact.getClassifier() ); + sv.setExtension( artifact.getExtension() ); sv.setVersion( version ); sv.setUpdated( lastUpdated ); - versions.put( sv.getClassifier(), sv ); + versions.put( getKey( sv.getClassifier(), sv.getExtension() ), sv ); } artifacts.clear(); @@ -146,9 +148,10 @@ protected void merge( Metadata recessive ) { for ( SnapshotVersion sv : versioning.getSnapshotVersions() ) { - if ( !versions.containsKey( sv.getClassifier() ) ) + String key = getKey( sv.getClassifier(), sv.getExtension() ); + if ( !versions.containsKey( key ) ) { - versions.put( sv.getClassifier(), sv ); + versions.put( key, sv ); } } } @@ -156,6 +159,11 @@ protected void merge( Metadata recessive ) metadata.getVersioning().setSnapshotVersions( new ArrayList( versions.values() ) ); } + private String getKey( String classifier, String extension ) + { + return classifier + ':' + extension; + } + private static int getBuildNumber( Metadata metadata ) { int number = 0; From 279427157c3e99a40980139a31017e52531cc40d Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Wed, 8 Sep 2010 15:04:45 +0000 Subject: [PATCH 012/224] [MNG-4452] Metadata for snapshots should include classifier o Added boolean system/execution property maven.metadata.legacy to enable 1.0.0 format to allow for interop with existing repo mans that could choke on the new format when processing it on the server side git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@995081 13f79535-47bb-0310-9956-ffa450edef68 --- .../internal/LocalSnapshotMetadata.java | 1 - .../internal/RemoteSnapshotMetadata.java | 24 +++++++++++++------ .../RemoteSnapshotMetadataGenerator.java | 9 +++++-- .../repository/internal/VersionsMetadata.java | 1 - 4 files changed, 24 insertions(+), 11 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java index 7ad5ba241..535eb35a7 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java @@ -55,7 +55,6 @@ private static Metadata createMetadata( Artifact artifact ) versioning.setSnapshot( snapshot ); Metadata metadata = new Metadata(); - metadata.setModelVersion( "1.0.0" ); metadata.setVersioning( versioning ); metadata.setGroupId( artifact.getGroupId() ); metadata.setArtifactId( artifact.getArtifactId() ); diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java index 352ae0f5f..11f69f1ef 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java @@ -48,20 +48,27 @@ final class RemoteSnapshotMetadata private final Map versions = new LinkedHashMap(); - public RemoteSnapshotMetadata( Artifact artifact ) + private final boolean legacyFormat; + + public RemoteSnapshotMetadata( Artifact artifact, boolean legacyFormat ) { - super( createMetadata( artifact ), null ); + super( createMetadata( artifact, legacyFormat ), null ); + this.legacyFormat = legacyFormat; } - private RemoteSnapshotMetadata( Metadata metadata, File file ) + private RemoteSnapshotMetadata( Metadata metadata, File file, boolean legacyFormat ) { super( metadata, file ); + this.legacyFormat = legacyFormat; } - private static Metadata createMetadata( Artifact artifact ) + private static Metadata createMetadata( Artifact artifact, boolean legacy ) { Metadata metadata = new Metadata(); - metadata.setModelVersion( "1.1.0" ); + if ( !legacy ) + { + metadata.setModelVersion( "1.1.0" ); + } metadata.setGroupId( artifact.getGroupId() ); metadata.setArtifactId( artifact.getArtifactId() ); metadata.setVersion( artifact.getBaseVersion() ); @@ -76,7 +83,7 @@ public void bind( Artifact artifact ) public MavenMetadata setFile( File file ) { - return new RemoteSnapshotMetadata( metadata, file ); + return new RemoteSnapshotMetadata( metadata, file, legacyFormat ); } public Object getKey() @@ -156,7 +163,10 @@ protected void merge( Metadata recessive ) } } - metadata.getVersioning().setSnapshotVersions( new ArrayList( versions.values() ) ); + if ( !legacyFormat ) + { + metadata.getVersioning().setSnapshotVersions( new ArrayList( versions.values() ) ); + } } private String getKey( String classifier, String extension ) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java index d8a8525ed..d56eed8db 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java @@ -24,6 +24,7 @@ import java.util.LinkedHashMap; import java.util.Map; +import org.sonatype.aether.ConfigurationProperties; import org.sonatype.aether.RepositorySystemSession; import org.sonatype.aether.artifact.Artifact; import org.sonatype.aether.deployment.DeployRequest; @@ -37,10 +38,14 @@ class RemoteSnapshotMetadataGenerator implements MetadataGenerator { - private Map snapshots; + private final Map snapshots; + + private final boolean legacyFormat; public RemoteSnapshotMetadataGenerator( RepositorySystemSession session, DeployRequest request ) { + legacyFormat = ConfigurationProperties.get( session.getConfigProperties(), "maven.metadata.legacy", false ); + snapshots = new LinkedHashMap(); /* @@ -69,7 +74,7 @@ public Collection prepare( Collection ar RemoteSnapshotMetadata snapshotMetadata = snapshots.get( key ); if ( snapshotMetadata == null ) { - snapshotMetadata = new RemoteSnapshotMetadata( artifact ); + snapshotMetadata = new RemoteSnapshotMetadata( artifact, legacyFormat ); snapshots.put( key, snapshotMetadata ); } snapshotMetadata.bind( artifact ); diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java index 3008454c1..b85d8461f 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java @@ -56,7 +56,6 @@ private static Metadata createMetadata( Artifact artifact ) } Metadata metadata = new Metadata(); - metadata.setModelVersion( "1.0.0" ); metadata.setVersioning( versioning ); metadata.setGroupId( artifact.getGroupId() ); metadata.setArtifactId( artifact.getArtifactId() ); From c990e1245199427d6255fd6e0e5a794d65b65c5b Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Wed, 15 Sep 2010 16:08:51 +0000 Subject: [PATCH 013/224] [MNG-4751] Snapshot version not resolved for version range o Reverted fix for MNG-3092 until we have a more robust solution in place git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@997380 13f79535-47bb-0310-9956-ffa450edef68 --- .../internal/DefaultVersionRangeResolver.java | 21 +++---------------- 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java index a84bf7cc5..462df4a94 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java @@ -23,7 +23,6 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -42,7 +41,6 @@ import org.sonatype.aether.version.InvalidVersionSpecificationException; import org.sonatype.aether.version.Version; import org.sonatype.aether.version.VersionConstraint; -import org.sonatype.aether.version.VersionRange; import org.sonatype.aether.version.VersionScheme; import org.sonatype.aether.impl.MetadataResolver; import org.sonatype.aether.impl.VersionRangeResolver; @@ -125,8 +123,7 @@ public VersionRangeResult resolveVersionRange( RepositorySystemSession session, } else { - Map versionIndex = - getVersions( session, result, request, getNature( session, versionConstraint.getRanges() ) ); + Map versionIndex = getVersions( session, result, request ); List versions = new ArrayList(); for ( Map.Entry v : versionIndex.entrySet() ) @@ -154,13 +151,13 @@ public VersionRangeResult resolveVersionRange( RepositorySystemSession session, } private Map getVersions( RepositorySystemSession session, VersionRangeResult result, - VersionRangeRequest request, Metadata.Nature nature ) + VersionRangeRequest request ) { Map versionIndex = new HashMap(); Metadata metadata = new DefaultMetadata( request.getArtifact().getGroupId(), request.getArtifact().getArtifactId(), - MAVEN_METADATA_XML, nature ); + MAVEN_METADATA_XML, Metadata.Nature.RELEASE_OR_SNAPSHOT ); List metadataRequests = new ArrayList( request.getRepositories().size() ); for ( RemoteRepository repository : request.getRepositories() ) @@ -212,18 +209,6 @@ private Map getVersions( RepositorySystemSession ses return versionIndex; } - private Metadata.Nature getNature( RepositorySystemSession session, Collection ranges ) - { - for ( VersionRange range : ranges ) - { - if ( range.acceptsSnapshots() ) - { - return Metadata.Nature.RELEASE_OR_SNAPSHOT; - } - } - return Metadata.Nature.RELEASE; - } - private Versioning readVersions( RepositorySystemSession session, Metadata metadata, VersionRangeResult result ) { Versioning versioning = null; From 2f32f30b4cadaf1849895cf1bba701f1d950559f Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Wed, 15 Sep 2010 19:50:30 +0000 Subject: [PATCH 014/224] [maven-release-plugin] prepare release maven-3.0-RC1 git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@997476 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 7c71b42c5..33bea7eb7 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0-SNAPSHOT + 3.0-RC1 maven-aether-provider From d3d383c8baf17267174ecf95cffa287030279694 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Wed, 15 Sep 2010 19:53:16 +0000 Subject: [PATCH 015/224] [maven-release-plugin] prepare for next development iteration git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@997478 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 33bea7eb7..7c71b42c5 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0-RC1 + 3.0-SNAPSHOT maven-aether-provider From bbdd25f78fd36df90e722966a1c1463da397d67d Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Thu, 16 Sep 2010 22:19:04 +0000 Subject: [PATCH 016/224] [MNG-4814] Eary dependency resolution attempts for reactor projects prevent their later resolution from the reactor git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@997938 13f79535-47bb-0310-9956-ffa450edef68 --- .../internal/DefaultVersionResolver.java | 28 +++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java index b33728be2..d0058cb91 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -36,9 +36,11 @@ import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.util.IOUtil; import org.codehaus.plexus.util.StringUtils; +import org.sonatype.aether.ConfigurationProperties; import org.sonatype.aether.RepositoryCache; import org.sonatype.aether.RepositoryListener; import org.sonatype.aether.RepositorySystemSession; +import org.sonatype.aether.util.artifact.SubArtifact; import org.sonatype.aether.util.listener.DefaultRepositoryEvent; import org.sonatype.aether.util.metadata.DefaultMetadata; import org.sonatype.aether.artifact.Artifact; @@ -116,7 +118,7 @@ public VersionResult resolveVersion( RepositorySystemSession session, VersionReq Key cacheKey = null; RepositoryCache cache = session.getCache(); - if ( cache != null ) + if ( cache != null && !ConfigurationProperties.get( session, "aether.versionResolver.noCache", false ) ) { cacheKey = new Key( session, request ); @@ -248,7 +250,7 @@ else if ( LATEST.equals( version ) ) } } - if ( cacheKey != null && metadata != null ) + if ( cacheKey != null && metadata != null && isSafelyCacheable( session, artifact ) ) { cache.put( session, cacheKey, new Record( result.getVersion(), result.getRepository() ) ); } @@ -365,6 +367,28 @@ private String getKey( String classifier, String extension ) return StringUtils.clean( classifier ) + ':' + StringUtils.clean( extension ); } + private boolean isSafelyCacheable( RepositorySystemSession session, Artifact artifact ) + { + /* + * The workspace/reactor is in flux so we better not assume definitive information for any of its + * artifacts/projects. + */ + + WorkspaceReader workspace = session.getWorkspaceReader(); + if ( workspace == null ) + { + return true; + } + + Artifact pomArtifact = artifact; + if ( pomArtifact.getClassifier().length() > 0 || !"pom".equals( pomArtifact.getExtension() ) ) + { + pomArtifact = new SubArtifact( artifact, "", "pom" ); + } + + return workspace.findArtifact( pomArtifact ) == null; + } + private static class VersionInfo { From 69a3a5d1d9aeb483fa6a0a4b0523c9097e4e9920 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Sun, 19 Sep 2010 18:54:25 +0000 Subject: [PATCH 017/224] o Fixed repo logging to go consistently through listener git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@998715 13f79535-47bb-0310-9956-ffa450edef68 --- .../DefaultArtifactDescriptorReader.java | 5 ++- .../internal/DefaultVersionRangeResolver.java | 39 +++++++++---------- .../internal/DefaultVersionResolver.java | 35 +++++++++-------- 3 files changed, 41 insertions(+), 38 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java index 3a4b3e7f7..661e757f9 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java @@ -73,6 +73,7 @@ import org.sonatype.aether.resolution.ArtifactResult; import org.sonatype.aether.resolution.VersionRequest; import org.sonatype.aether.resolution.VersionResolutionException; +import org.sonatype.aether.resolution.VersionResult; import org.sonatype.aether.spi.locator.Service; import org.sonatype.aether.spi.locator.ServiceLocator; import org.sonatype.aether.spi.log.Logger; @@ -221,7 +222,9 @@ private Model loadPom( RepositorySystemSession session, ArtifactDescriptorReques { VersionRequest versionRequest = new VersionRequest( artifact, request.getRepositories(), request.getRequestContext() ); - versionResolver.resolveVersion( session, versionRequest ); + VersionResult versionResult = versionResolver.resolveVersion( session, versionRequest ); + + artifact = artifact.setVersion( versionResult.getVersion() ); } catch ( VersionResolutionException e ) { diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java index 462df4a94..82055b2d3 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java @@ -19,7 +19,6 @@ * under the License. */ -import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.ArrayList; @@ -46,7 +45,6 @@ import org.sonatype.aether.impl.VersionRangeResolver; import org.sonatype.aether.metadata.Metadata; import org.sonatype.aether.repository.ArtifactRepository; -import org.sonatype.aether.repository.LocalRepositoryManager; import org.sonatype.aether.repository.RemoteRepository; import org.sonatype.aether.repository.WorkspaceReader; import org.sonatype.aether.resolution.MetadataRequest; @@ -160,12 +158,16 @@ private Map getVersions( RepositorySystemSession ses MAVEN_METADATA_XML, Metadata.Nature.RELEASE_OR_SNAPSHOT ); List metadataRequests = new ArrayList( request.getRepositories().size() ); + + metadataRequests.add( new MetadataRequest( metadata, null, request.getRequestContext() ) ); + for ( RemoteRepository repository : request.getRepositories() ) { MetadataRequest metadataRequest = new MetadataRequest( metadata, repository, request.getRequestContext() ); metadataRequest.setDeleteLocalCopyIfMissing( true ); metadataRequests.add( metadataRequest ); } + List metadataResults = metadataResolver.resolveMetadata( session, metadataRequests ); WorkspaceReader workspace = session.getWorkspaceReader(); @@ -178,30 +180,22 @@ private Map getVersions( RepositorySystemSession ses } } - LocalRepositoryManager lrm = session.getLocalRepositoryManager(); - File localMetadataFile = new File( lrm.getRepository().getBasedir(), lrm.getPathForLocalMetadata( metadata ) ); - if ( localMetadataFile.isFile() ) + for ( MetadataResult metadataResult : metadataResults ) { - metadata = metadata.setFile( localMetadataFile ); - Versioning versioning = readVersions( session, metadata, result ); - for ( String version : versioning.getVersions() ) + result.addException( metadataResult.getException() ); + + ArtifactRepository repository = metadataResult.getRequest().getRepository(); + if ( repository == null ) { - if ( !versionIndex.containsKey( version ) ) - { - versionIndex.put( version, lrm.getRepository() ); - } + repository = session.getLocalRepository(); } - } - for ( MetadataResult metadataResult : metadataResults ) - { - result.addException( metadataResult.getException() ); - Versioning versioning = readVersions( session, metadataResult.getMetadata(), result ); + Versioning versioning = readVersions( session, metadataResult.getMetadata(), repository, result ); for ( String version : versioning.getVersions() ) { if ( !versionIndex.containsKey( version ) ) { - versionIndex.put( version, metadataResult.getRequest().getRepository() ); + versionIndex.put( version, repository ); } } } @@ -209,7 +203,8 @@ private Map getVersions( RepositorySystemSession ses return versionIndex; } - private Versioning readVersions( RepositorySystemSession session, Metadata metadata, VersionRangeResult result ) + private Versioning readVersions( RepositorySystemSession session, Metadata metadata, ArtifactRepository repository, + VersionRangeResult result ) { Versioning versioning = null; @@ -229,7 +224,7 @@ private Versioning readVersions( RepositorySystemSession session, Metadata metad } catch ( Exception e ) { - invalidMetadata( session, metadata, e ); + invalidMetadata( session, metadata, repository, e ); result.addException( e ); } finally @@ -240,13 +235,15 @@ private Versioning readVersions( RepositorySystemSession session, Metadata metad return ( versioning != null ) ? versioning : new Versioning(); } - private void invalidMetadata( RepositorySystemSession session, Metadata metadata, Exception exception ) + private void invalidMetadata( RepositorySystemSession session, Metadata metadata, ArtifactRepository repository, + Exception exception ) { RepositoryListener listener = session.getRepositoryListener(); if ( listener != null ) { DefaultRepositoryEvent event = new DefaultRepositoryEvent( session, metadata ); event.setException( exception ); + event.setRepository( repository ); listener.metadataInvalid( event ); } } diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java index d0058cb91..d39ca5069 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -49,7 +49,6 @@ import org.sonatype.aether.impl.internal.CacheUtils; import org.sonatype.aether.metadata.Metadata; import org.sonatype.aether.repository.ArtifactRepository; -import org.sonatype.aether.repository.LocalRepositoryManager; import org.sonatype.aether.repository.RemoteRepository; import org.sonatype.aether.repository.WorkspaceReader; import org.sonatype.aether.repository.WorkspaceRepository; @@ -174,6 +173,9 @@ else if ( version.endsWith( SNAPSHOT ) ) else { List metadataRequests = new ArrayList( request.getRepositories().size() ); + + metadataRequests.add( new MetadataRequest( metadata, null, request.getRequestContext() ) ); + for ( RemoteRepository repository : request.getRepositories() ) { MetadataRequest metadataRequest = @@ -182,25 +184,23 @@ else if ( version.endsWith( SNAPSHOT ) ) metadataRequest.setFavorLocalRepository( true ); metadataRequests.add( metadataRequest ); } - List metadataResults = metadataResolver.resolveMetadata( session, metadataRequests ); - LocalRepositoryManager lrm = session.getLocalRepositoryManager(); - File localMetadataFile = - new File( lrm.getRepository().getBasedir(), lrm.getPathForLocalMetadata( metadata ) ); - if ( localMetadataFile.isFile() ) - { - metadata = metadata.setFile( localMetadataFile ); - } + List metadataResults = metadataResolver.resolveMetadata( session, metadataRequests ); Map infos = new HashMap(); - merge( artifact, infos, readVersions( session, metadata, result ), - session.getLocalRepositoryManager().getRepository() ); for ( MetadataResult metadataResult : metadataResults ) { result.addException( metadataResult.getException() ); - merge( artifact, infos, readVersions( session, metadataResult.getMetadata(), result ), - metadataResult.getRequest().getRepository() ); + + ArtifactRepository repository = metadataResult.getRequest().getRepository(); + if ( repository == null ) + { + repository = session.getLocalRepository(); + } + + Versioning versioning = readVersions( session, metadataResult.getMetadata(), repository, result ); + merge( artifact, infos, versioning, repository ); } if ( RELEASE.equals( version ) ) @@ -269,7 +269,8 @@ private boolean resolve( VersionResult result, Map infos, S return info != null; } - private Versioning readVersions( RepositorySystemSession session, Metadata metadata, VersionResult result ) + private Versioning readVersions( RepositorySystemSession session, Metadata metadata, ArtifactRepository repository, + VersionResult result ) { Versioning versioning = null; @@ -289,7 +290,7 @@ private Versioning readVersions( RepositorySystemSession session, Metadata metad } catch ( Exception e ) { - invalidMetadata( session, metadata, e ); + invalidMetadata( session, metadata, repository, e ); result.addException( e ); } finally @@ -300,13 +301,15 @@ private Versioning readVersions( RepositorySystemSession session, Metadata metad return ( versioning != null ) ? versioning : new Versioning(); } - private void invalidMetadata( RepositorySystemSession session, Metadata metadata, Exception exception ) + private void invalidMetadata( RepositorySystemSession session, Metadata metadata, ArtifactRepository repository, + Exception exception ) { RepositoryListener listener = session.getRepositoryListener(); if ( listener != null ) { DefaultRepositoryEvent event = new DefaultRepositoryEvent( session, metadata ); event.setException( exception ); + event.setRepository( repository ); listener.metadataInvalid( event ); } } From 49ae78707c9537021b14e7118fc8b279a2ff587d Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Mon, 20 Sep 2010 09:40:51 +0000 Subject: [PATCH 018/224] [MNG-4825] Relative path errors could be more explicit git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@998850 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/maven/repository/internal/DefaultModelResolver.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java index e9138bb93..e053b9331 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java @@ -116,8 +116,7 @@ public ModelSource resolveModel( String groupId, String artifactId, String versi } catch ( ArtifactResolutionException e ) { - throw new UnresolvableModelException( "Failed to resolve POM for " + groupId + ":" + artifactId + ":" - + version + " due to " + e.getMessage(), groupId, artifactId, version, e ); + throw new UnresolvableModelException( e.getMessage(), groupId, artifactId, version, e ); } File pomFile = pomArtifact.getFile(); From 083e3ced29f7c8c6b857876cb1b6bd3ea76d53a7 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Wed, 22 Sep 2010 18:17:16 +0000 Subject: [PATCH 019/224] [maven-release-plugin] prepare release maven-3.0-RC2 git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1000115 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 7c71b42c5..bf5d1b2c2 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0-SNAPSHOT + 3.0-RC2 maven-aether-provider From f7f56c4f68f562186a18f67da23e388e1f4b61e4 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Wed, 22 Sep 2010 18:18:54 +0000 Subject: [PATCH 020/224] [maven-release-plugin] prepare for next development iteration git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1000118 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index bf5d1b2c2..7c71b42c5 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0-RC2 + 3.0-SNAPSHOT maven-aether-provider From a7f699ee0b850f160fe1e48dd26b0410e3322024 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Sun, 26 Sep 2010 16:07:40 +0000 Subject: [PATCH 021/224] [maven-release-plugin] prepare release maven-3.0-RC3 git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1001462 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 7c71b42c5..1bfdf4556 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0-SNAPSHOT + 3.0-RC3 maven-aether-provider From fee024ae7b098efb4a9477c95c02b6dc7e4f6612 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Sun, 26 Sep 2010 16:09:27 +0000 Subject: [PATCH 022/224] [maven-release-plugin] prepare for next development iteration git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1001464 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 1bfdf4556..7c71b42c5 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0-RC3 + 3.0-SNAPSHOT maven-aether-provider From d5eff7fd9625512335a28c39ea4dea701c55ce1f Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Mon, 4 Oct 2010 11:43:40 +0000 Subject: [PATCH 023/224] [maven-release-plugin] prepare release maven-3.0 git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1004204 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 7c71b42c5..d716152e3 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0-SNAPSHOT + 3.0 maven-aether-provider From 5f8f59a4bfb7d77d3f4e20e2b694f3c8129440a4 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Mon, 4 Oct 2010 11:45:32 +0000 Subject: [PATCH 024/224] [maven-release-plugin] prepare for next development iteration git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1004207 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index d716152e3..f7622ca61 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0 + 3.0.1-SNAPSHOT maven-aether-provider From 22aef72dfd62559b3e0a8385931085fed300df37 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Tue, 5 Oct 2010 10:25:25 +0000 Subject: [PATCH 025/224] o Improved effeciency of cache git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1004602 13f79535-47bb-0310-9956-ffa450edef68 --- .../maven/repository/internal/DefaultVersionResolver.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java index d39ca5069..cec1c63ee 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -446,14 +446,15 @@ public Key( RepositorySystemSession session, VersionRequest request ) classifier = artifact.getClassifier(); extension = artifact.getExtension(); version = artifact.getVersion(); - context = request.getRequestContext(); localRepo = session.getLocalRepository().getBasedir(); workspace = CacheUtils.getWorkspace( session ); repositories = new ArrayList( request.getRepositories().size() ); + boolean repoMan = false; for ( RemoteRepository repository : request.getRepositories() ) { if ( repository.isRepositoryManager() ) { + repoMan = true; repositories.addAll( repository.getMirroredRepositories() ); } else @@ -461,6 +462,7 @@ public Key( RepositorySystemSession session, VersionRequest request ) repositories.add( repository ); } } + context = repoMan ? request.getRequestContext() : ""; int hash = 17; hash = hash * 31 + groupId.hashCode(); From ae37d8c99b8a7413bc5ed060920c4f8f7ece59ab Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Sat, 30 Oct 2010 16:54:51 +0000 Subject: [PATCH 026/224] [MNG-4874] The value isn't updated for local installs git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1029117 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/maven/repository/internal/VersionsMetadata.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java index b85d8461f..16eafecab 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java @@ -24,6 +24,7 @@ import org.apache.maven.artifact.repository.metadata.Metadata; import org.apache.maven.artifact.repository.metadata.Versioning; import org.sonatype.aether.artifact.Artifact; +import org.sonatype.aether.util.artifact.ArtifactProperties; /** * @author Benjamin Bentmann @@ -52,7 +53,11 @@ private static Metadata createMetadata( Artifact artifact ) versioning.addVersion( artifact.getBaseVersion() ); if ( !artifact.isSnapshot() ) { - versioning.setRelease( artifact.getVersion() ); + versioning.setRelease( artifact.getBaseVersion() ); + } + if ( "maven-plugin".equals( artifact.getProperty( ArtifactProperties.TYPE, "" ) ) ) + { + versioning.setLatest( artifact.getBaseVersion() ); } Metadata metadata = new Metadata(); From 5f809c747bb8693e582c62f58c73794f78072350 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Tue, 2 Nov 2010 14:28:14 +0000 Subject: [PATCH 027/224] o Declared used dependencies git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1030060 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index f7622ca61..e714d3fb9 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -36,6 +36,10 @@ under the License. + + org.apache.maven + maven-model + org.apache.maven maven-model-builder @@ -48,6 +52,10 @@ under the License. org.sonatype.aether aether-api + + org.sonatype.aether + aether-spi + org.sonatype.aether aether-util @@ -60,6 +68,10 @@ under the License. org.codehaus.plexus plexus-component-annotations + + org.codehaus.plexus + plexus-utils + From 46c7e0af7f31b73d0be2bfb6c9c02c685931e10b Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Tue, 9 Nov 2010 12:30:57 +0000 Subject: [PATCH 028/224] [MNG-4891] Improve robustness of snapshot dependency resolution in case a remote repo accidently uses the id "local" git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1032964 13f79535-47bb-0310-9956-ffa450edef68 --- .../internal/DefaultVersionResolver.java | 24 +++++++++++++++++++ .../internal/LocalSnapshotMetadata.java | 6 +++++ 2 files changed, 30 insertions(+) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java index cec1c63ee..8e6a1bd46 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -22,6 +22,7 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; +import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -49,6 +50,7 @@ import org.sonatype.aether.impl.internal.CacheUtils; import org.sonatype.aether.metadata.Metadata; import org.sonatype.aether.repository.ArtifactRepository; +import org.sonatype.aether.repository.LocalRepository; import org.sonatype.aether.repository.RemoteRepository; import org.sonatype.aether.repository.WorkspaceReader; import org.sonatype.aether.repository.WorkspaceRepository; @@ -282,6 +284,28 @@ private Versioning readVersions( RepositorySystemSession session, Metadata metad fis = new FileInputStream( metadata.getFile() ); org.apache.maven.artifact.repository.metadata.Metadata m = new MetadataXpp3Reader().read( fis, false ); versioning = m.getVersioning(); + + /* + * NOTE: Users occasionally misuse the id "local" for remote repos which screws up the metadata of the + * local repository. This is especially troublesome during snapshot resolution so we try to handle that + * gracefully. + */ + if ( versioning != null && repository instanceof LocalRepository ) + { + if ( !versioning.getSnapshotVersions().isEmpty() + || ( versioning.getSnapshot() != null && versioning.getSnapshot().getBuildNumber() > 0 ) ) + { + Versioning repaired = new Versioning(); + repaired.setLastUpdated( versioning.getLastUpdated() ); + Snapshot snapshot = new Snapshot(); + snapshot.setLocalCopy( true ); + repaired.setSnapshot( snapshot ); + versioning = repaired; + + throw new IOException( "Snapshot information corrupted with remote repository data" + + ", please verify that no remote repository uses the id '" + repository.getId() + "'" ); + } + } } } catch ( FileNotFoundException e ) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java index 535eb35a7..47801c499 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java @@ -78,6 +78,12 @@ public static Object getKey( Artifact artifact ) return artifact.getGroupId() + ':' + artifact.getArtifactId() + ':' + artifact.getBaseVersion(); } + @Override + protected void merge( Metadata recessive ) + { + metadata.getVersioning().updateTimestamp(); + } + public String getGroupId() { return artifact.getGroupId(); From b7fda4849afb4348f3466e70105ec5c2b23a423e Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Thu, 18 Nov 2010 22:44:23 +0000 Subject: [PATCH 029/224] [MNG-4883] [regression] Dependency resolution does not fail for artifact with over-constrained version ranges git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1036663 13f79535-47bb-0310-9956-ffa450edef68 --- .../internal/DefaultArtifactDescriptorReader.java | 12 ++++++++---- .../internal/DefaultVersionRangeResolver.java | 4 +++- .../repository/internal/DefaultVersionResolver.java | 4 +++- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java index 661e757f9..5ceeafc74 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java @@ -44,6 +44,7 @@ import org.apache.maven.model.resolution.UnresolvableModelException; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; +import org.sonatype.aether.RepositoryEvent.EventType; import org.sonatype.aether.RepositoryException; import org.sonatype.aether.RepositoryListener; import org.sonatype.aether.RepositorySystemSession; @@ -264,7 +265,7 @@ private Model loadPom( RepositorySystemSession session, ArtifactDescriptorReques { if ( e.getCause() instanceof ArtifactNotFoundException ) { - missingDescriptor( session, artifact ); + missingDescriptor( session, artifact, (Exception) e.getCause() ); if ( session.isIgnoreMissingArtifactDescriptor() ) { return null; @@ -422,12 +423,14 @@ private static RepositoryPolicy convert( org.apache.maven.model.RepositoryPolicy return new RepositoryPolicy( enabled, updates, checksums ); } - private void missingDescriptor( RepositorySystemSession session, Artifact artifact ) + private void missingDescriptor( RepositorySystemSession session, Artifact artifact, Exception exception ) { RepositoryListener listener = session.getRepositoryListener(); if ( listener != null ) { - DefaultRepositoryEvent event = new DefaultRepositoryEvent( session, artifact ); + DefaultRepositoryEvent event = new DefaultRepositoryEvent( EventType.ARTIFACT_DESCRIPTOR_MISSING, session ); + event.setArtifact( artifact ); + event.setException( exception ); listener.artifactDescriptorMissing( event ); } } @@ -437,7 +440,8 @@ private void invalidDescriptor( RepositorySystemSession session, Artifact artifa RepositoryListener listener = session.getRepositoryListener(); if ( listener != null ) { - DefaultRepositoryEvent event = new DefaultRepositoryEvent( session, artifact ); + DefaultRepositoryEvent event = new DefaultRepositoryEvent( EventType.ARTIFACT_DESCRIPTOR_INVALID, session ); + event.setArtifact( artifact ); event.setException( exception ); listener.artifactDescriptorInvalid( event ); } diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java index 82055b2d3..6a7812afd 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java @@ -32,6 +32,7 @@ import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.util.IOUtil; +import org.sonatype.aether.RepositoryEvent.EventType; import org.sonatype.aether.RepositoryListener; import org.sonatype.aether.RepositorySystemSession; import org.sonatype.aether.util.listener.DefaultRepositoryEvent; @@ -241,7 +242,8 @@ private void invalidMetadata( RepositorySystemSession session, Metadata metadata RepositoryListener listener = session.getRepositoryListener(); if ( listener != null ) { - DefaultRepositoryEvent event = new DefaultRepositoryEvent( session, metadata ); + DefaultRepositoryEvent event = new DefaultRepositoryEvent( EventType.METADATA_INVALID, session ); + event.setMetadata( metadata ); event.setException( exception ); event.setRepository( repository ); listener.metadataInvalid( event ); diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java index 8e6a1bd46..163ba8557 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -39,6 +39,7 @@ import org.codehaus.plexus.util.StringUtils; import org.sonatype.aether.ConfigurationProperties; import org.sonatype.aether.RepositoryCache; +import org.sonatype.aether.RepositoryEvent.EventType; import org.sonatype.aether.RepositoryListener; import org.sonatype.aether.RepositorySystemSession; import org.sonatype.aether.util.artifact.SubArtifact; @@ -331,7 +332,8 @@ private void invalidMetadata( RepositorySystemSession session, Metadata metadata RepositoryListener listener = session.getRepositoryListener(); if ( listener != null ) { - DefaultRepositoryEvent event = new DefaultRepositoryEvent( session, metadata ); + DefaultRepositoryEvent event = new DefaultRepositoryEvent( EventType.METADATA_INVALID, session ); + event.setMetadata( metadata ); event.setException( exception ); event.setRepository( repository ); listener.metadataInvalid( event ); From 8adc43b910d2b3561bb61f3084cefac04604e23e Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Thu, 18 Nov 2010 23:50:08 +0000 Subject: [PATCH 030/224] [maven-release-plugin] prepare release maven-3.0.1-RC1 git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1036681 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index e714d3fb9..995fa3e06 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0.1-SNAPSHOT + 3.0.1-RC1 maven-aether-provider From 9451dafceb0aac219b20f4a77f0cb9f203fbf21a Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Thu, 18 Nov 2010 23:52:24 +0000 Subject: [PATCH 031/224] [maven-release-plugin] prepare for next development iteration git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1036683 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 995fa3e06..e714d3fb9 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0.1-RC1 + 3.0.1-SNAPSHOT maven-aether-provider From a25985c84dc94310e5a7798cfde3864d3bcd0d90 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Tue, 23 Nov 2010 10:44:18 +0000 Subject: [PATCH 032/224] [maven-release-plugin] prepare release maven-3.0.1 git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1038043 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index e714d3fb9..c6793b0f2 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0.1-SNAPSHOT + 3.0.1 maven-aether-provider From 71ca4a30a67082f0ceec6ac70f1fe93be766b233 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Tue, 23 Nov 2010 10:47:01 +0000 Subject: [PATCH 033/224] [maven-release-plugin] prepare for next development iteration git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1038046 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index c6793b0f2..93432f9e5 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0.1 + 3.0.2-SNAPSHOT maven-aether-provider From 8b7ece24f4d2063ad34359df56f3977ba614e4c3 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Wed, 24 Nov 2010 00:04:21 +0000 Subject: [PATCH 034/224] [MNG-4913] [regression] User properties override equally named POM properties of transitive dependencies git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1038391 13f79535-47bb-0310-9956-ffa450edef68 --- .../internal/DefaultArtifactDescriptorReader.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java index 5ceeafc74..5434f5022 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java @@ -282,8 +282,8 @@ private Model loadPom( RepositorySystemSession session, ArtifactDescriptorReques modelRequest.setValidationLevel( ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL ); modelRequest.setProcessPlugins( false ); modelRequest.setTwoPhaseBuilding( false ); - modelRequest.setSystemProperties( toProperties( session.getSystemProperties() ) ); - modelRequest.setUserProperties( toProperties( session.getUserProperties() ) ); + modelRequest.setSystemProperties( toProperties( session.getUserProperties(), + session.getSystemProperties() ) ); modelRequest.setModelCache( DefaultModelCache.newInstance( session ) ); modelRequest.setModelResolver( new DefaultModelResolver( session, request.getRequestContext(), artifactResolver, remoteRepositoryManager, @@ -335,12 +335,16 @@ private Model loadPom( RepositorySystemSession session, ArtifactDescriptorReques } } - private Properties toProperties( Map map ) + private Properties toProperties( Map dominant, Map recessive ) { Properties props = new Properties(); - if ( map != null ) + if ( recessive != null ) { - props.putAll( map ); + props.putAll( recessive ); + } + if ( dominant != null ) + { + props.putAll( dominant ); } return props; } From 8089230b37b573947159df84196d2823bffbd1ab Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Fri, 10 Dec 2010 18:02:52 +0000 Subject: [PATCH 035/224] o Added test to sanity check completeness of manually wired repo system git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1044459 13f79535-47bb-0310-9956-ffa450edef68 --- .../internal/DefaultServiceLocatorTest.java | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultServiceLocatorTest.java diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultServiceLocatorTest.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultServiceLocatorTest.java new file mode 100644 index 000000000..5226c5954 --- /dev/null +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultServiceLocatorTest.java @@ -0,0 +1,44 @@ +package org.apache.maven.repository.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.sonatype.aether.RepositorySystem; +import org.sonatype.aether.impl.MetadataGeneratorFactory; + +import junit.framework.TestCase; + +public class DefaultServiceLocatorTest + extends TestCase +{ + + public void testGetRepositorySystem() + { + DefaultServiceLocator locator = new DefaultServiceLocator(); + RepositorySystem repoSys = locator.getService( RepositorySystem.class ); + assertNotNull( repoSys ); + } + + public void testGetMetadataGeneratorFactories() + { + DefaultServiceLocator locator = new DefaultServiceLocator(); + assertEquals( 2, locator.getServices( MetadataGeneratorFactory.class ).size() ); + } + +} From 44e163b1f4800caea668998b079904f18c06f1e2 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Mon, 3 Jan 2011 14:53:30 +0000 Subject: [PATCH 036/224] o Polished code git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1054635 13f79535-47bb-0310-9956-ffa450edef68 --- .../maven/repository/internal/RemoteSnapshotMetadata.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java index 11f69f1ef..4ce43938a 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java @@ -62,10 +62,10 @@ private RemoteSnapshotMetadata( Metadata metadata, File file, boolean legacyForm this.legacyFormat = legacyFormat; } - private static Metadata createMetadata( Artifact artifact, boolean legacy ) + private static Metadata createMetadata( Artifact artifact, boolean legacyFormat ) { Metadata metadata = new Metadata(); - if ( !legacy ) + if ( !legacyFormat ) { metadata.setModelVersion( "1.1.0" ); } From 59b71fc50ef5582e0de9bc443dc004eace1e78f1 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Mon, 3 Jan 2011 15:30:55 +0000 Subject: [PATCH 037/224] [MNG-4955] [regression] Outdated remote snapshots are preferred over locally installed snapshots git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1054651 13f79535-47bb-0310-9956-ffa450edef68 --- .../internal/DefaultVersionResolver.java | 19 ++++- .../internal/LocalSnapshotMetadata.java | 80 ++++++++++++++++--- .../LocalSnapshotMetadataGenerator.java | 8 +- 3 files changed, 91 insertions(+), 16 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java index 163ba8557..3f9393564 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -240,8 +240,9 @@ else if ( LATEST.equals( version ) ) } else { - if ( !resolve( result, infos, SNAPSHOT + getKey( artifact.getClassifier(), artifact.getExtension() ) ) - && !resolve( result, infos, SNAPSHOT ) ) + String key = SNAPSHOT + getKey( artifact.getClassifier(), artifact.getExtension() ); + merge( infos, SNAPSHOT, key ); + if ( !resolve( result, infos, key ) ) { result.setVersion( version ); } @@ -363,7 +364,7 @@ private void merge( Artifact artifact, Map infos, Versionin } Snapshot snapshot = versioning.getSnapshot(); - if ( snapshot != null ) + if ( snapshot != null && versioning.getSnapshotVersions().isEmpty() ) { String version = artifact.getVersion(); if ( snapshot.getTimestamp() != null && snapshot.getBuildNumber() > 0 ) @@ -391,6 +392,18 @@ else if ( info.isOutdated( timestamp ) ) } } + private void merge( Map infos, String srcKey, String dstKey ) + { + VersionInfo srcInfo = infos.get( srcKey ); + VersionInfo dstInfo = infos.get( dstKey ); + + if ( dstInfo == null + || ( srcInfo != null && dstInfo.isOutdated( srcInfo.timestamp ) && srcInfo.repository != dstInfo.repository ) ) + { + infos.put( dstKey, srcInfo ); + } + } + private String getKey( String classifier, String extension ) { return StringUtils.clean( classifier ) + ':' + StringUtils.clean( extension ); diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java index 47801c499..a084977ab 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java @@ -20,9 +20,14 @@ */ import java.io.File; +import java.util.ArrayList; +import java.util.Collection; +import java.util.LinkedHashMap; +import java.util.Map; import org.apache.maven.artifact.repository.metadata.Metadata; import org.apache.maven.artifact.repository.metadata.Snapshot; +import org.apache.maven.artifact.repository.metadata.SnapshotVersion; import org.apache.maven.artifact.repository.metadata.Versioning; import org.sonatype.aether.artifact.Artifact; @@ -33,21 +38,23 @@ final class LocalSnapshotMetadata extends MavenMetadata { - private final Artifact artifact; + private final Collection artifacts = new ArrayList(); - public LocalSnapshotMetadata( Artifact artifact ) + private final boolean legacyFormat; + + public LocalSnapshotMetadata( Artifact artifact, boolean legacyFormat ) { - super( createMetadata( artifact ), null ); - this.artifact = artifact; + super( createMetadata( artifact, legacyFormat ), null ); + this.legacyFormat = legacyFormat; } - public LocalSnapshotMetadata( Artifact artifact, File file ) + public LocalSnapshotMetadata( Metadata metadata, File file, boolean legacyFormat ) { - super( createMetadata( artifact ), file ); - this.artifact = artifact; + super( metadata, file ); + this.legacyFormat = legacyFormat; } - private static Metadata createMetadata( Artifact artifact ) + private static Metadata createMetadata( Artifact artifact, boolean legacyFormat ) { Snapshot snapshot = new Snapshot(); snapshot.setLocalCopy( true ); @@ -60,12 +67,22 @@ private static Metadata createMetadata( Artifact artifact ) metadata.setArtifactId( artifact.getArtifactId() ); metadata.setVersion( artifact.getBaseVersion() ); + if ( !legacyFormat ) + { + metadata.setModelVersion( "1.1.0" ); + } + return metadata; } + public void bind( Artifact artifact ) + { + artifacts.add( artifact ); + } + public MavenMetadata setFile( File file ) { - return new LocalSnapshotMetadata( artifact, file ); + return new LocalSnapshotMetadata( metadata, file, legacyFormat ); } public Object getKey() @@ -82,21 +99,60 @@ public static Object getKey( Artifact artifact ) protected void merge( Metadata recessive ) { metadata.getVersioning().updateTimestamp(); + + if ( !legacyFormat ) + { + String lastUpdated = metadata.getVersioning().getLastUpdated(); + + Map versions = new LinkedHashMap(); + + for ( Artifact artifact : artifacts ) + { + SnapshotVersion sv = new SnapshotVersion(); + sv.setClassifier( artifact.getClassifier() ); + sv.setExtension( artifact.getExtension() ); + sv.setVersion( getVersion() ); + sv.setUpdated( lastUpdated ); + versions.put( getKey( sv.getClassifier(), sv.getExtension() ), sv ); + } + + Versioning versioning = recessive.getVersioning(); + if ( versioning != null ) + { + for ( SnapshotVersion sv : versioning.getSnapshotVersions() ) + { + String key = getKey( sv.getClassifier(), sv.getExtension() ); + if ( !versions.containsKey( key ) ) + { + versions.put( key, sv ); + } + } + } + + metadata.getVersioning().setSnapshotVersions( new ArrayList( versions.values() ) ); + } + + artifacts.clear(); + } + + private String getKey( String classifier, String extension ) + { + return classifier + ':' + extension; } public String getGroupId() { - return artifact.getGroupId(); + return metadata.getGroupId(); } public String getArtifactId() { - return artifact.getArtifactId(); + return metadata.getArtifactId(); } public String getVersion() { - return artifact.getBaseVersion(); + return metadata.getVersion(); } public Nature getNature() diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java index 8b234dd16..1d318cd4f 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java @@ -24,6 +24,7 @@ import java.util.LinkedHashMap; import java.util.Map; +import org.sonatype.aether.ConfigurationProperties; import org.sonatype.aether.RepositorySystemSession; import org.sonatype.aether.artifact.Artifact; import org.sonatype.aether.impl.MetadataGenerator; @@ -39,8 +40,12 @@ class LocalSnapshotMetadataGenerator private Map snapshots; + private final boolean legacyFormat; + public LocalSnapshotMetadataGenerator( RepositorySystemSession session, InstallRequest request ) { + legacyFormat = ConfigurationProperties.get( session.getConfigProperties(), "maven.metadata.legacy", false ); + snapshots = new LinkedHashMap(); } @@ -54,9 +59,10 @@ public Collection prepare( Collection ar LocalSnapshotMetadata snapshotMetadata = snapshots.get( key ); if ( snapshotMetadata == null ) { - snapshotMetadata = new LocalSnapshotMetadata( artifact ); + snapshotMetadata = new LocalSnapshotMetadata( artifact, legacyFormat ); snapshots.put( key, snapshotMetadata ); } + snapshotMetadata.bind( artifact ); } } From 9f545aa44e4612387418961cba5de1f4b7e9d0cf Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Mon, 3 Jan 2011 16:56:51 +0000 Subject: [PATCH 038/224] [MNG-4952] [regression] RELEASE field of repository metadata is not updated upon repeated deployments git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1054683 13f79535-47bb-0310-9956-ffa450edef68 --- .../repository/internal/MavenMetadata.java | 20 +------------- .../repository/internal/VersionsMetadata.java | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java index 2f924d4d4..3db90e94f 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java @@ -25,7 +25,6 @@ import java.io.Writer; import org.apache.maven.artifact.repository.metadata.Metadata; -import org.apache.maven.artifact.repository.metadata.Versioning; import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader; import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Writer; import org.codehaus.plexus.util.IOUtil; @@ -81,24 +80,7 @@ public boolean isMerged() return merged; } - protected void merge( Metadata recessive ) - { - Versioning versioning = recessive.getVersioning(); - if ( versioning != null ) - { - versioning.setLastUpdated( null ); - } - - Metadata dominant = metadata; - - versioning = dominant.getVersioning(); - if ( versioning != null ) - { - versioning.updateTimestamp(); - } - - dominant.merge( recessive ); - } + protected abstract void merge( Metadata recessive ); private Metadata read( File metadataFile ) throws RepositoryException diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java index 16eafecab..139e5f8c9 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java @@ -20,6 +20,9 @@ */ import java.io.File; +import java.util.ArrayList; +import java.util.Collection; +import java.util.LinkedHashSet; import org.apache.maven.artifact.repository.metadata.Metadata; import org.apache.maven.artifact.repository.metadata.Versioning; @@ -68,6 +71,29 @@ private static Metadata createMetadata( Artifact artifact ) return metadata; } + @Override + protected void merge( Metadata recessive ) + { + Versioning versioning = metadata.getVersioning(); + versioning.updateTimestamp(); + + if ( recessive.getVersioning() != null ) + { + if ( versioning.getLatest() == null ) + { + versioning.setLatest( recessive.getVersioning().getLatest() ); + } + if ( versioning.getRelease() == null ) + { + versioning.setRelease( recessive.getVersioning().getRelease() ); + } + + Collection versions = new LinkedHashSet( recessive.getVersioning().getVersions() ); + versions.addAll( versioning.getVersions() ); + versioning.setVersions( new ArrayList( versions ) ); + } + } + public Object getKey() { return getGroupId() + ':' + getArtifactId(); From 8d7ceb62b08d10bd4ce25840f53a382ec4d90d12 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Tue, 4 Jan 2011 20:32:41 +0000 Subject: [PATCH 039/224] [MNG-4840] Prerequisites is not working on m3 git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1055174 13f79535-47bb-0310-9956-ffa450edef68 --- .../internal/DefaultArtifactDescriptorReader.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java index 5434f5022..d47416ad7 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java @@ -32,6 +32,7 @@ import org.apache.maven.model.DistributionManagement; import org.apache.maven.model.License; import org.apache.maven.model.Model; +import org.apache.maven.model.Prerequisites; import org.apache.maven.model.Relocation; import org.apache.maven.model.Repository; import org.apache.maven.model.building.DefaultModelBuilderFactory; @@ -88,6 +89,7 @@ public class DefaultArtifactDescriptorReader implements ArtifactDescriptorReader, Service { + @SuppressWarnings( "unused" ) @Requirement private Logger logger = NullLogger.INSTANCE; @@ -195,6 +197,12 @@ public ArtifactDescriptorResult readArtifactDescriptor( RepositorySystemSession Map properties = new LinkedHashMap(); + Prerequisites prerequisites = model.getPrerequisites(); + if ( prerequisites != null ) + { + properties.put( "prerequisites.maven", prerequisites.getMaven() ); + } + List licenses = model.getLicenses(); properties.put( "license.count", Integer.valueOf( licenses.size() ) ); for ( int i = 0; i < licenses.size(); i++ ) From da79f61494dda888951ce654150b5bdd13e0f92e Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Wed, 5 Jan 2011 20:40:50 +0000 Subject: [PATCH 040/224] [maven-release-plugin] prepare release maven-3.0.2-RC1 git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1055631 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 93432f9e5..ff4c56c5d 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0.2-SNAPSHOT + 3.0.2-RC1 maven-aether-provider From 273da0c6ac41211b22a44390ace797a3f5c6b207 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Wed, 5 Jan 2011 20:42:41 +0000 Subject: [PATCH 041/224] [maven-release-plugin] prepare for next development iteration git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1055634 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index ff4c56c5d..93432f9e5 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0.2-RC1 + 3.0.2-SNAPSHOT maven-aether-provider From 4168c1be1e9a8ebc73af3c8c0e7fc5601044ed99 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Fri, 7 Jan 2011 13:18:33 +0000 Subject: [PATCH 042/224] o Fixed detection of local metadata corruption git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1056307 13f79535-47bb-0310-9956-ffa450edef68 --- .../maven/repository/internal/DefaultVersionResolver.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java index 3f9393564..bcaa9e93b 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -294,8 +294,7 @@ private Versioning readVersions( RepositorySystemSession session, Metadata metad */ if ( versioning != null && repository instanceof LocalRepository ) { - if ( !versioning.getSnapshotVersions().isEmpty() - || ( versioning.getSnapshot() != null && versioning.getSnapshot().getBuildNumber() > 0 ) ) + if ( versioning.getSnapshot() != null && versioning.getSnapshot().getBuildNumber() > 0 ) { Versioning repaired = new Versioning(); repaired.setLastUpdated( versioning.getLastUpdated() ); From 938647fc5e31c33024426fab9413a354b28bf03b Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Sun, 9 Jan 2011 00:48:15 +0000 Subject: [PATCH 043/224] [maven-release-plugin] prepare release maven-3.0.2 git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1056847 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 93432f9e5..238428d29 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0.2-SNAPSHOT + 3.0.2 maven-aether-provider From 4d9fea11fa596067f24b87e2784d0a78943ee08c Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Sun, 9 Jan 2011 00:49:39 +0000 Subject: [PATCH 044/224] [maven-release-plugin] prepare for next development iteration git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1056850 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 238428d29..7897d850c 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0.2 + 3.0.3-SNAPSHOT maven-aether-provider From ec0a08c607040c48e6849aef6ae044e94223feba Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Mon, 10 Jan 2011 14:14:28 +0000 Subject: [PATCH 045/224] o Fixed exception handling for repo metadata to properly report edge cases of inaccessible files git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1057209 13f79535-47bb-0310-9956-ffa450edef68 --- .../repository/internal/DefaultVersionRangeResolver.java | 7 +------ .../maven/repository/internal/DefaultVersionResolver.java | 7 +------ 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java index 6a7812afd..43f5d9dc8 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java @@ -20,7 +20,6 @@ */ import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -212,17 +211,13 @@ private Versioning readVersions( RepositorySystemSession session, Metadata metad FileInputStream fis = null; try { - if ( metadata != null && metadata.getFile() != null ) + if ( metadata != null && metadata.getFile() != null && metadata.getFile().exists() ) { fis = new FileInputStream( metadata.getFile() ); org.apache.maven.artifact.repository.metadata.Metadata m = new MetadataXpp3Reader().read( fis, false ); versioning = m.getVersioning(); } } - catch ( FileNotFoundException e ) - { - // tolerable - } catch ( Exception e ) { invalidMetadata( session, metadata, repository, e ); diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java index bcaa9e93b..5e7d5a6ae 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -21,7 +21,6 @@ import java.io.File; import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; @@ -281,7 +280,7 @@ private Versioning readVersions( RepositorySystemSession session, Metadata metad FileInputStream fis = null; try { - if ( metadata != null && metadata.getFile() != null ) + if ( metadata != null && metadata.getFile() != null && metadata.getFile().exists() ) { fis = new FileInputStream( metadata.getFile() ); org.apache.maven.artifact.repository.metadata.Metadata m = new MetadataXpp3Reader().read( fis, false ); @@ -309,10 +308,6 @@ private Versioning readVersions( RepositorySystemSession session, Metadata metad } } } - catch ( FileNotFoundException e ) - { - // tolerable - } catch ( Exception e ) { invalidMetadata( session, metadata, repository, e ); From fcbdcca0e47f6dc7f6fb2fa45ddb81a0e3ad19f3 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Wed, 23 Feb 2011 16:25:26 +0000 Subject: [PATCH 046/224] [MNG-4987] [regression] LATEST, RELEASE or SNAPSHOT version picked from wrong repository when resolution order does not match timestamp order git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1073807 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/maven/repository/internal/DefaultVersionResolver.java | 1 + 1 file changed, 1 insertion(+) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java index 5e7d5a6ae..60d2cc8f5 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -383,6 +383,7 @@ else if ( info.isOutdated( timestamp ) ) { info.version = version; info.repository = repository; + info.timestamp = timestamp; } } From 194aa60a458981fc241883c73941ae709ada98a4 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Thu, 24 Feb 2011 16:06:26 +0000 Subject: [PATCH 047/224] o Enabled request tracing for repository events to provide more context for event spies git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1074195 13f79535-47bb-0310-9956-ffa450edef68 --- .../DefaultArtifactDescriptorReader.java | 29 ++++-- .../internal/DefaultModelResolver.java | 11 ++- .../internal/DefaultVersionRangeResolver.java | 59 +++++++++--- .../internal/DefaultVersionResolver.java | 94 +++++++++++++------ 4 files changed, 143 insertions(+), 50 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java index d47416ad7..62bde969a 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java @@ -49,6 +49,7 @@ import org.sonatype.aether.RepositoryException; import org.sonatype.aether.RepositoryListener; import org.sonatype.aether.RepositorySystemSession; +import org.sonatype.aether.RequestTrace; import org.sonatype.aether.artifact.Artifact; import org.sonatype.aether.artifact.ArtifactType; import org.sonatype.aether.artifact.ArtifactTypeRegistry; @@ -59,6 +60,7 @@ import org.sonatype.aether.impl.RemoteRepositoryManager; import org.sonatype.aether.impl.VersionResolver; import org.sonatype.aether.transfer.ArtifactNotFoundException; +import org.sonatype.aether.util.DefaultRequestTrace; import org.sonatype.aether.util.artifact.ArtifactProperties; import org.sonatype.aether.util.artifact.DefaultArtifact; import org.sonatype.aether.util.artifact.DefaultArtifactType; @@ -224,6 +226,8 @@ private Model loadPom( RepositorySystemSession session, ArtifactDescriptorReques ArtifactDescriptorResult result ) throws ArtifactDescriptorException { + RequestTrace trace = DefaultRequestTrace.newChild( request.getTrace(), request ); + Set visited = new LinkedHashSet(); for ( Artifact artifact = request.getArtifact();; ) { @@ -231,6 +235,7 @@ private Model loadPom( RepositorySystemSession session, ArtifactDescriptorReques { VersionRequest versionRequest = new VersionRequest( artifact, request.getRepositories(), request.getRequestContext() ); + versionRequest.setTrace( trace ); VersionResult versionResult = versionResolver.resolveVersion( session, versionRequest ); artifact = artifact.setVersion( versionResult.getVersion() ); @@ -245,7 +250,7 @@ private Model loadPom( RepositorySystemSession session, ArtifactDescriptorReques { RepositoryException exception = new RepositoryException( "Artifact relocations form a cycle: " + visited ); - invalidDescriptor( session, artifact, exception ); + invalidDescriptor( session, trace, artifact, exception ); if ( session.isIgnoreInvalidArtifactDescriptor() ) { return null; @@ -265,6 +270,7 @@ private Model loadPom( RepositorySystemSession session, ArtifactDescriptorReques { ArtifactRequest resolveRequest = new ArtifactRequest( pomArtifact, request.getRepositories(), request.getRequestContext() ); + resolveRequest.setTrace( trace ); resolveResult = artifactResolver.resolveArtifact( session, resolveRequest ); pomArtifact = resolveResult.getArtifact(); result.setRepository( resolveResult.getRepository() ); @@ -273,7 +279,7 @@ private Model loadPom( RepositorySystemSession session, ArtifactDescriptorReques { if ( e.getCause() instanceof ArtifactNotFoundException ) { - missingDescriptor( session, artifact, (Exception) e.getCause() ); + missingDescriptor( session, trace, artifact, (Exception) e.getCause() ); if ( session.isIgnoreMissingArtifactDescriptor() ) { return null; @@ -293,8 +299,9 @@ private Model loadPom( RepositorySystemSession session, ArtifactDescriptorReques modelRequest.setSystemProperties( toProperties( session.getUserProperties(), session.getSystemProperties() ) ); modelRequest.setModelCache( DefaultModelCache.newInstance( session ) ); - modelRequest.setModelResolver( new DefaultModelResolver( session, request.getRequestContext(), - artifactResolver, remoteRepositoryManager, + modelRequest.setModelResolver( new DefaultModelResolver( session, trace.newChild( modelRequest ), + request.getRequestContext(), artifactResolver, + remoteRepositoryManager, request.getRepositories() ) ); if ( resolveResult.getRepository() instanceof WorkspaceRepository ) { @@ -317,7 +324,7 @@ private Model loadPom( RepositorySystemSession session, ArtifactDescriptorReques throw new ArtifactDescriptorException( result ); } } - invalidDescriptor( session, artifact, e ); + invalidDescriptor( session, trace, artifact, e ); if ( session.isIgnoreInvalidArtifactDescriptor() ) { return null; @@ -435,24 +442,28 @@ private static RepositoryPolicy convert( org.apache.maven.model.RepositoryPolicy return new RepositoryPolicy( enabled, updates, checksums ); } - private void missingDescriptor( RepositorySystemSession session, Artifact artifact, Exception exception ) + private void missingDescriptor( RepositorySystemSession session, RequestTrace trace, Artifact artifact, + Exception exception ) { RepositoryListener listener = session.getRepositoryListener(); if ( listener != null ) { - DefaultRepositoryEvent event = new DefaultRepositoryEvent( EventType.ARTIFACT_DESCRIPTOR_MISSING, session ); + DefaultRepositoryEvent event = + new DefaultRepositoryEvent( EventType.ARTIFACT_DESCRIPTOR_MISSING, session, trace ); event.setArtifact( artifact ); event.setException( exception ); listener.artifactDescriptorMissing( event ); } } - private void invalidDescriptor( RepositorySystemSession session, Artifact artifact, Exception exception ) + private void invalidDescriptor( RepositorySystemSession session, RequestTrace trace, Artifact artifact, + Exception exception ) { RepositoryListener listener = session.getRepositoryListener(); if ( listener != null ) { - DefaultRepositoryEvent event = new DefaultRepositoryEvent( EventType.ARTIFACT_DESCRIPTOR_INVALID, session ); + DefaultRepositoryEvent event = + new DefaultRepositoryEvent( EventType.ARTIFACT_DESCRIPTOR_INVALID, session, trace ); event.setArtifact( artifact ); event.setException( exception ); listener.artifactDescriptorInvalid( event ); diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java index e053b9331..a4de6a9ba 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java @@ -32,6 +32,7 @@ import org.apache.maven.model.resolution.ModelResolver; import org.apache.maven.model.resolution.UnresolvableModelException; import org.sonatype.aether.RepositorySystemSession; +import org.sonatype.aether.RequestTrace; import org.sonatype.aether.artifact.Artifact; import org.sonatype.aether.impl.ArtifactResolver; import org.sonatype.aether.impl.RemoteRepositoryManager; @@ -53,6 +54,8 @@ class DefaultModelResolver private final RepositorySystemSession session; + private final RequestTrace trace; + private final String context; private List repositories; @@ -63,10 +66,12 @@ class DefaultModelResolver private final Set repositoryIds; - public DefaultModelResolver( RepositorySystemSession session, String context, ArtifactResolver resolver, - RemoteRepositoryManager remoteRepositoryManager, List repositories ) + public DefaultModelResolver( RepositorySystemSession session, RequestTrace trace, String context, + ArtifactResolver resolver, RemoteRepositoryManager remoteRepositoryManager, + List repositories ) { this.session = session; + this.trace = trace; this.context = context; this.resolver = resolver; this.remoteRepositoryManager = remoteRepositoryManager; @@ -77,6 +82,7 @@ public DefaultModelResolver( RepositorySystemSession session, String context, Ar private DefaultModelResolver( DefaultModelResolver original ) { this.session = original.session; + this.trace = original.trace; this.context = original.context; this.resolver = original.resolver; this.remoteRepositoryManager = original.remoteRepositoryManager; @@ -112,6 +118,7 @@ public ModelSource resolveModel( String groupId, String artifactId, String versi try { ArtifactRequest request = new ArtifactRequest( pomArtifact, repositories, context ); + request.setTrace( trace ); pomArtifact = resolver.resolveArtifact( session, request ).getArtifact(); } catch ( ArtifactResolutionException e ) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java index 43f5d9dc8..d7ff1f885 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java @@ -34,6 +34,9 @@ import org.sonatype.aether.RepositoryEvent.EventType; import org.sonatype.aether.RepositoryListener; import org.sonatype.aether.RepositorySystemSession; +import org.sonatype.aether.RequestTrace; +import org.sonatype.aether.SyncContext; +import org.sonatype.aether.util.DefaultRequestTrace; import org.sonatype.aether.util.listener.DefaultRepositoryEvent; import org.sonatype.aether.util.metadata.DefaultMetadata; import org.sonatype.aether.util.version.GenericVersionScheme; @@ -42,6 +45,7 @@ import org.sonatype.aether.version.VersionConstraint; import org.sonatype.aether.version.VersionScheme; import org.sonatype.aether.impl.MetadataResolver; +import org.sonatype.aether.impl.SyncContextFactory; import org.sonatype.aether.impl.VersionRangeResolver; import org.sonatype.aether.metadata.Metadata; import org.sonatype.aether.repository.ArtifactRepository; @@ -67,16 +71,21 @@ public class DefaultVersionRangeResolver private static final String MAVEN_METADATA_XML = "maven-metadata.xml"; + @SuppressWarnings( "unused" ) @Requirement private Logger logger = NullLogger.INSTANCE; @Requirement private MetadataResolver metadataResolver; + @Requirement + private SyncContextFactory syncContextFactory; + public void initService( ServiceLocator locator ) { setLogger( locator.getService( Logger.class ) ); setMetadataResolver( locator.getService( MetadataResolver.class ) ); + setSyncContextFactory( locator.getService( SyncContextFactory.class ) ); } public DefaultVersionRangeResolver setLogger( Logger logger ) @@ -95,6 +104,16 @@ public DefaultVersionRangeResolver setMetadataResolver( MetadataResolver metadat return this; } + public DefaultVersionRangeResolver setSyncContextFactory( SyncContextFactory syncContextFactory ) + { + if ( syncContextFactory == null ) + { + throw new IllegalArgumentException( "sync context factory has not been specified" ); + } + this.syncContextFactory = syncContextFactory; + return this; + } + public VersionRangeResult resolveVersionRange( RepositorySystemSession session, VersionRangeRequest request ) throws VersionRangeResolutionException { @@ -151,6 +170,8 @@ public VersionRangeResult resolveVersionRange( RepositorySystemSession session, private Map getVersions( RepositorySystemSession session, VersionRangeResult result, VersionRangeRequest request ) { + RequestTrace trace = DefaultRequestTrace.newChild( request.getTrace(), request ); + Map versionIndex = new HashMap(); Metadata metadata = @@ -165,6 +186,7 @@ private Map getVersions( RepositorySystemSession ses { MetadataRequest metadataRequest = new MetadataRequest( metadata, repository, request.getRequestContext() ); metadataRequest.setDeleteLocalCopyIfMissing( true ); + metadataRequest.setTrace( trace ); metadataRequests.add( metadataRequest ); } @@ -190,7 +212,7 @@ private Map getVersions( RepositorySystemSession ses repository = session.getLocalRepository(); } - Versioning versioning = readVersions( session, metadataResult.getMetadata(), repository, result ); + Versioning versioning = readVersions( session, trace, metadataResult.getMetadata(), repository, result ); for ( String version : versioning.getVersions() ) { if ( !versionIndex.containsKey( version ) ) @@ -203,24 +225,39 @@ private Map getVersions( RepositorySystemSession ses return versionIndex; } - private Versioning readVersions( RepositorySystemSession session, Metadata metadata, ArtifactRepository repository, - VersionRangeResult result ) + private Versioning readVersions( RepositorySystemSession session, RequestTrace trace, Metadata metadata, + ArtifactRepository repository, VersionRangeResult result ) { Versioning versioning = null; FileInputStream fis = null; try { - if ( metadata != null && metadata.getFile() != null && metadata.getFile().exists() ) + if ( metadata != null ) { - fis = new FileInputStream( metadata.getFile() ); - org.apache.maven.artifact.repository.metadata.Metadata m = new MetadataXpp3Reader().read( fis, false ); - versioning = m.getVersioning(); + SyncContext syncContext = syncContextFactory.newInstance( session, true ); + + try + { + syncContext.acquire( null, Collections.singleton( metadata ) ); + + if ( metadata.getFile() != null && metadata.getFile().exists() ) + { + fis = new FileInputStream( metadata.getFile() ); + org.apache.maven.artifact.repository.metadata.Metadata m = + new MetadataXpp3Reader().read( fis, false ); + versioning = m.getVersioning(); + } + } + finally + { + syncContext.release(); + } } } catch ( Exception e ) { - invalidMetadata( session, metadata, repository, e ); + invalidMetadata( session, trace, metadata, repository, e ); result.addException( e ); } finally @@ -231,13 +268,13 @@ private Versioning readVersions( RepositorySystemSession session, Metadata metad return ( versioning != null ) ? versioning : new Versioning(); } - private void invalidMetadata( RepositorySystemSession session, Metadata metadata, ArtifactRepository repository, - Exception exception ) + private void invalidMetadata( RepositorySystemSession session, RequestTrace trace, Metadata metadata, + ArtifactRepository repository, Exception exception ) { RepositoryListener listener = session.getRepositoryListener(); if ( listener != null ) { - DefaultRepositoryEvent event = new DefaultRepositoryEvent( EventType.METADATA_INVALID, session ); + DefaultRepositoryEvent event = new DefaultRepositoryEvent( EventType.METADATA_INVALID, session, trace ); event.setMetadata( metadata ); event.setException( exception ); event.setRepository( repository ); diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java index 60d2cc8f5..aff556de6 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -38,14 +38,18 @@ import org.codehaus.plexus.util.StringUtils; import org.sonatype.aether.ConfigurationProperties; import org.sonatype.aether.RepositoryCache; +import org.sonatype.aether.RequestTrace; import org.sonatype.aether.RepositoryEvent.EventType; import org.sonatype.aether.RepositoryListener; import org.sonatype.aether.RepositorySystemSession; +import org.sonatype.aether.SyncContext; +import org.sonatype.aether.util.DefaultRequestTrace; import org.sonatype.aether.util.artifact.SubArtifact; import org.sonatype.aether.util.listener.DefaultRepositoryEvent; import org.sonatype.aether.util.metadata.DefaultMetadata; import org.sonatype.aether.artifact.Artifact; import org.sonatype.aether.impl.MetadataResolver; +import org.sonatype.aether.impl.SyncContextFactory; import org.sonatype.aether.impl.VersionResolver; import org.sonatype.aether.impl.internal.CacheUtils; import org.sonatype.aether.metadata.Metadata; @@ -80,16 +84,21 @@ public class DefaultVersionResolver private static final String SNAPSHOT = "SNAPSHOT"; + @SuppressWarnings( "unused" ) @Requirement private Logger logger = NullLogger.INSTANCE; @Requirement private MetadataResolver metadataResolver; + @Requirement + private SyncContextFactory syncContextFactory; + public void initService( ServiceLocator locator ) { setLogger( locator.getService( Logger.class ) ); setMetadataResolver( locator.getService( MetadataResolver.class ) ); + setSyncContextFactory( locator.getService( SyncContextFactory.class ) ); } public DefaultVersionResolver setLogger( Logger logger ) @@ -108,9 +117,21 @@ public DefaultVersionResolver setMetadataResolver( MetadataResolver metadataReso return this; } + public DefaultVersionResolver setSyncContextFactory( SyncContextFactory syncContextFactory ) + { + if ( syncContextFactory == null ) + { + throw new IllegalArgumentException( "sync context factory has not been specified" ); + } + this.syncContextFactory = syncContextFactory; + return this; + } + public VersionResult resolveVersion( RepositorySystemSession session, VersionRequest request ) throws VersionResolutionException { + RequestTrace trace = DefaultRequestTrace.newChild( request.getTrace(), request ); + Artifact artifact = request.getArtifact(); String version = artifact.getVersion(); @@ -184,6 +205,7 @@ else if ( version.endsWith( SNAPSHOT ) ) new MetadataRequest( metadata, repository, request.getRequestContext() ); metadataRequest.setDeleteLocalCopyIfMissing( true ); metadataRequest.setFavorLocalRepository( true ); + metadataRequest.setTrace( trace ); metadataRequests.add( metadataRequest ); } @@ -201,7 +223,7 @@ else if ( version.endsWith( SNAPSHOT ) ) repository = session.getLocalRepository(); } - Versioning versioning = readVersions( session, metadataResult.getMetadata(), repository, result ); + Versioning versioning = readVersions( session, trace, metadataResult.getMetadata(), repository, result ); merge( artifact, infos, versioning, repository ); } @@ -272,45 +294,61 @@ private boolean resolve( VersionResult result, Map infos, S return info != null; } - private Versioning readVersions( RepositorySystemSession session, Metadata metadata, ArtifactRepository repository, - VersionResult result ) + private Versioning readVersions( RepositorySystemSession session, RequestTrace trace, Metadata metadata, + ArtifactRepository repository, VersionResult result ) { Versioning versioning = null; FileInputStream fis = null; try { - if ( metadata != null && metadata.getFile() != null && metadata.getFile().exists() ) + if ( metadata != null ) { - fis = new FileInputStream( metadata.getFile() ); - org.apache.maven.artifact.repository.metadata.Metadata m = new MetadataXpp3Reader().read( fis, false ); - versioning = m.getVersioning(); - - /* - * NOTE: Users occasionally misuse the id "local" for remote repos which screws up the metadata of the - * local repository. This is especially troublesome during snapshot resolution so we try to handle that - * gracefully. - */ - if ( versioning != null && repository instanceof LocalRepository ) + SyncContext syncContext = syncContextFactory.newInstance( session, true ); + + try { - if ( versioning.getSnapshot() != null && versioning.getSnapshot().getBuildNumber() > 0 ) + syncContext.acquire( null, Collections.singleton( metadata ) ); + + if ( metadata.getFile() != null && metadata.getFile().exists() ) { - Versioning repaired = new Versioning(); - repaired.setLastUpdated( versioning.getLastUpdated() ); - Snapshot snapshot = new Snapshot(); - snapshot.setLocalCopy( true ); - repaired.setSnapshot( snapshot ); - versioning = repaired; - - throw new IOException( "Snapshot information corrupted with remote repository data" - + ", please verify that no remote repository uses the id '" + repository.getId() + "'" ); + fis = new FileInputStream( metadata.getFile() ); + org.apache.maven.artifact.repository.metadata.Metadata m = + new MetadataXpp3Reader().read( fis, false ); + versioning = m.getVersioning(); + + /* + * NOTE: Users occasionally misuse the id "local" for remote repos which screws up the metadata + * of the local repository. This is especially troublesome during snapshot resolution so we try + * to handle that gracefully. + */ + if ( versioning != null && repository instanceof LocalRepository ) + { + if ( versioning.getSnapshot() != null && versioning.getSnapshot().getBuildNumber() > 0 ) + { + Versioning repaired = new Versioning(); + repaired.setLastUpdated( versioning.getLastUpdated() ); + Snapshot snapshot = new Snapshot(); + snapshot.setLocalCopy( true ); + repaired.setSnapshot( snapshot ); + versioning = repaired; + + throw new IOException( "Snapshot information corrupted with remote repository data" + + ", please verify that no remote repository uses the id '" + repository.getId() + + "'" ); + } + } } } + finally + { + syncContext.release(); + } } } catch ( Exception e ) { - invalidMetadata( session, metadata, repository, e ); + invalidMetadata( session, trace, metadata, repository, e ); result.addException( e ); } finally @@ -321,13 +359,13 @@ private Versioning readVersions( RepositorySystemSession session, Metadata metad return ( versioning != null ) ? versioning : new Versioning(); } - private void invalidMetadata( RepositorySystemSession session, Metadata metadata, ArtifactRepository repository, - Exception exception ) + private void invalidMetadata( RepositorySystemSession session, RequestTrace trace, Metadata metadata, + ArtifactRepository repository, Exception exception ) { RepositoryListener listener = session.getRepositoryListener(); if ( listener != null ) { - DefaultRepositoryEvent event = new DefaultRepositoryEvent( EventType.METADATA_INVALID, session ); + DefaultRepositoryEvent event = new DefaultRepositoryEvent( EventType.METADATA_INVALID, session, trace ); event.setMetadata( metadata ); event.setException( exception ); event.setRepository( repository ); From 4028092ab607d1310142372d11351f00cd844401 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Thu, 24 Feb 2011 20:43:52 +0000 Subject: [PATCH 048/224] o Refactored code git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1074288 13f79535-47bb-0310-9956-ffa450edef68 --- .../internal/ArtifactDescriptorUtils.java | 81 +++++++++++++++++++ .../DefaultArtifactDescriptorReader.java | 42 +--------- .../internal/DefaultModelResolver.java | 2 +- .../internal/DefaultVersionResolver.java | 7 +- 4 files changed, 85 insertions(+), 47 deletions(-) create mode 100644 maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorUtils.java diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorUtils.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorUtils.java new file mode 100644 index 000000000..b7da0d1a6 --- /dev/null +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorUtils.java @@ -0,0 +1,81 @@ +package org.apache.maven.repository.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.model.Repository; +import org.sonatype.aether.artifact.Artifact; +import org.sonatype.aether.repository.RemoteRepository; +import org.sonatype.aether.repository.RepositoryPolicy; +import org.sonatype.aether.util.artifact.DefaultArtifact; + +/** + * Warning: This is an internal utility class that is only public for technical reasons, it is not part + * of the public API. In particular, this class can be changed or deleted without prior notice. + * + * @author Benjamin Bentmann + */ +public class ArtifactDescriptorUtils +{ + + public static Artifact toPomArtifact( Artifact artifact ) + { + Artifact pomArtifact = artifact; + + if ( pomArtifact.getClassifier().length() > 0 || !"pom".equals( pomArtifact.getExtension() ) ) + { + pomArtifact = + new DefaultArtifact( artifact.getGroupId(), artifact.getArtifactId(), "pom", artifact.getVersion() ); + } + + return pomArtifact; + } + + public static RemoteRepository toRemoteRepository( Repository repository ) + { + RemoteRepository result = + new RemoteRepository( repository.getId(), repository.getLayout(), repository.getUrl() ); + result.setPolicy( true, toRepositoryPolicy( repository.getSnapshots() ) ); + result.setPolicy( false, toRepositoryPolicy( repository.getReleases() ) ); + return result; + } + + public static RepositoryPolicy toRepositoryPolicy( org.apache.maven.model.RepositoryPolicy policy ) + { + boolean enabled = true; + String checksums = RepositoryPolicy.CHECKSUM_POLICY_WARN; + String updates = RepositoryPolicy.UPDATE_POLICY_DAILY; + + if ( policy != null ) + { + enabled = policy.isEnabled(); + if ( policy.getUpdatePolicy() != null ) + { + updates = policy.getUpdatePolicy(); + } + if ( policy.getChecksumPolicy() != null ) + { + checksums = policy.getChecksumPolicy(); + } + } + + return new RepositoryPolicy( enabled, updates, checksums ); + } + +} diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java index 62bde969a..2c8fdf8af 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java @@ -64,10 +64,7 @@ import org.sonatype.aether.util.artifact.ArtifactProperties; import org.sonatype.aether.util.artifact.DefaultArtifact; import org.sonatype.aether.util.artifact.DefaultArtifactType; -import org.sonatype.aether.util.artifact.SubArtifact; import org.sonatype.aether.util.listener.DefaultRepositoryEvent; -import org.sonatype.aether.repository.RemoteRepository; -import org.sonatype.aether.repository.RepositoryPolicy; import org.sonatype.aether.repository.WorkspaceRepository; import org.sonatype.aether.resolution.ArtifactDescriptorException; import org.sonatype.aether.resolution.ArtifactDescriptorRequest; @@ -180,7 +177,7 @@ public ArtifactDescriptorResult readArtifactDescriptor( RepositorySystemSession for ( Repository r : model.getRepositories() ) { - result.addRepository( convert( r ) ); + result.addRepository( ArtifactDescriptorUtils.toRemoteRepository( r ) ); } for ( org.apache.maven.model.Dependency dependency : model.getDependencies() ) @@ -259,11 +256,7 @@ private Model loadPom( RepositorySystemSession session, ArtifactDescriptorReques throw new ArtifactDescriptorException( result ); } - Artifact pomArtifact = artifact; - if ( pomArtifact.getClassifier().length() > 0 || !"pom".equals( pomArtifact.getExtension() ) ) - { - pomArtifact = new SubArtifact( artifact, "", "pom" ); - } + Artifact pomArtifact = ArtifactDescriptorUtils.toPomArtifact( artifact ); ArtifactResult resolveResult; try @@ -411,37 +404,6 @@ private Exclusion convert( org.apache.maven.model.Exclusion exclusion ) return new Exclusion( exclusion.getGroupId(), exclusion.getArtifactId(), "*", "*" ); } - static RemoteRepository convert( Repository repository ) - { - RemoteRepository result = - new RemoteRepository( repository.getId(), repository.getLayout(), repository.getUrl() ); - result.setPolicy( true, convert( repository.getSnapshots() ) ); - result.setPolicy( false, convert( repository.getReleases() ) ); - return result; - } - - private static RepositoryPolicy convert( org.apache.maven.model.RepositoryPolicy policy ) - { - boolean enabled = true; - String checksums = RepositoryPolicy.CHECKSUM_POLICY_WARN; - String updates = RepositoryPolicy.UPDATE_POLICY_DAILY; - - if ( policy != null ) - { - enabled = policy.isEnabled(); - if ( policy.getUpdatePolicy() != null ) - { - updates = policy.getUpdatePolicy(); - } - if ( policy.getChecksumPolicy() != null ) - { - checksums = policy.getChecksumPolicy(); - } - } - - return new RepositoryPolicy( enabled, updates, checksums ); - } - private void missingDescriptor( RepositorySystemSession session, RequestTrace trace, Artifact artifact, Exception exception ) { diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java index a4de6a9ba..96b9fc365 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java @@ -99,7 +99,7 @@ public void addRepository( Repository repository ) } List newRepositories = - Collections.singletonList( DefaultArtifactDescriptorReader.convert( repository ) ); + Collections.singletonList( ArtifactDescriptorUtils.toRemoteRepository( repository ) ); this.repositories = remoteRepositoryManager.aggregateRepositories( session, repositories, newRepositories, true ); diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java index aff556de6..f36d7f59d 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -44,7 +44,6 @@ import org.sonatype.aether.RepositorySystemSession; import org.sonatype.aether.SyncContext; import org.sonatype.aether.util.DefaultRequestTrace; -import org.sonatype.aether.util.artifact.SubArtifact; import org.sonatype.aether.util.listener.DefaultRepositoryEvent; import org.sonatype.aether.util.metadata.DefaultMetadata; import org.sonatype.aether.artifact.Artifact; @@ -455,11 +454,7 @@ private boolean isSafelyCacheable( RepositorySystemSession session, Artifact art return true; } - Artifact pomArtifact = artifact; - if ( pomArtifact.getClassifier().length() > 0 || !"pom".equals( pomArtifact.getExtension() ) ) - { - pomArtifact = new SubArtifact( artifact, "", "pom" ); - } + Artifact pomArtifact = ArtifactDescriptorUtils.toPomArtifact( artifact ); return workspace.findArtifact( pomArtifact ) == null; } From 5466c7d5c3bb99ab1654f7093bbbe26368f49f7d Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Thu, 24 Feb 2011 21:29:33 +0000 Subject: [PATCH 049/224] [maven-release-plugin] prepare release maven-3.0.3-RC1 git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1074303 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 7897d850c..410998406 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0.3-SNAPSHOT + 3.0.3-RC1 maven-aether-provider From 7750a43609b856038dc44ee7e31bf5d24c6d4ef5 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Thu, 24 Feb 2011 21:31:36 +0000 Subject: [PATCH 050/224] [maven-release-plugin] prepare for next development iteration git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1074306 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 410998406..7897d850c 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0.3-RC1 + 3.0.3-SNAPSHOT maven-aether-provider From ed0db5c8011820d46d74b410597cc07ee4b15493 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Mon, 28 Feb 2011 17:25:08 +0000 Subject: [PATCH 051/224] [maven-release-plugin] prepare release maven-3.0.3 git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1075436 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 7897d850c..ca327d0a0 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0.3-SNAPSHOT + 3.0.3 maven-aether-provider From 52d027da11494724394e508473aae70e7015585c Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Mon, 28 Feb 2011 17:26:44 +0000 Subject: [PATCH 052/224] [maven-release-plugin] prepare for next development iteration git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1075438 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index ca327d0a0..faa192051 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0.3 + 3.0.4-SNAPSHOT maven-aether-provider From 3836f34976e590706c516c445ae58113f8257986 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Wed, 30 Mar 2011 15:10:46 +0000 Subject: [PATCH 053/224] o Extended API docs git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1086984 13f79535-47bb-0310-9956-ffa450edef68 --- .../repository/internal/MavenRepositorySystemSession.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemSession.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemSession.java index a1fb8775c..ffd24158b 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemSession.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemSession.java @@ -54,7 +54,9 @@ public class MavenRepositorySystemSession /** * Creates a new Maven-like repository system session by initializing the session with values typical for - * Maven-based resolution. + * Maven-based resolution. In more detail, this constructor configures settings relevant for the processing of + * dependency graphs, most other settings remain at their generic default value. Use the various setters to further + * configure the session with authentication, mirror, proxy and other information required for your environment. */ public MavenRepositorySystemSession() { From 816fce2f71da8884faf241ef7ed431d198b283c4 Mon Sep 17 00:00:00 2001 From: Herve Boutemy Date: Sat, 18 Jun 2011 10:00:46 +0000 Subject: [PATCH 054/224] [MNG-5119] added Javadocs and JXR links in left menu for every module to give easy access to code git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1137154 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/src/site/site.xml | 36 +++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 maven-aether-provider/src/site/site.xml diff --git a/maven-aether-provider/src/site/site.xml b/maven-aether-provider/src/site/site.xml new file mode 100644 index 000000000..3a16bf98b --- /dev/null +++ b/maven-aether-provider/src/site/site.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file From d6a99a67478631392c331508525f96ed6f2fb7b9 Mon Sep 17 00:00:00 2001 From: Herve Boutemy Date: Sun, 26 Jun 2011 17:24:06 +0000 Subject: [PATCH 055/224] added link to Aether javadoc git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1139842 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index faa192051..05b1f429b 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -32,7 +32,7 @@ under the License. Maven Aether Provider - This module provides extensions to Aether for utilizing the Maven POM and Maven metadata. + This module provides extensions to Aether for utilizing the Maven POM and Maven repository metadata. From 5b033a1c3e154aa21838e776768e0462663fffc4 Mon Sep 17 00:00:00 2001 From: Herve Boutemy Date: Sun, 26 Jun 2011 22:59:05 +0000 Subject: [PATCH 056/224] improved javadoc git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1139965 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/maven/repository/internal/package.html | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 maven-aether-provider/src/main/java/org/apache/maven/repository/internal/package.html diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/package.html b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/package.html new file mode 100644 index 000000000..b36134bd5 --- /dev/null +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/package.html @@ -0,0 +1,3 @@ + +

Aether extensions for utilizing the Maven POM and Maven repository metadata.

+ \ No newline at end of file From 19478241fff4391683ce48bf4806da7d35fe88c7 Mon Sep 17 00:00:00 2001 From: Herve Boutemy Date: Sun, 26 Jun 2011 22:59:57 +0000 Subject: [PATCH 057/224] created MavenServiceLocator class to replace DefaultServiceLocator git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1139966 13f79535-47bb-0310-9956-ffa450edef68 --- .../internal/DefaultServiceLocator.java | 1 + .../internal/MavenServiceLocator.java | 52 +++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenServiceLocator.java diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultServiceLocator.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultServiceLocator.java index f59859056..032f5461c 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultServiceLocator.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultServiceLocator.java @@ -31,6 +31,7 @@ * should instead always use regular dependency injection to acquire the repository system. * * @author Benjamin Bentmann + * @deprecated use {@link MavenServiceLocator} instead, which is more explicit. */ public class DefaultServiceLocator extends org.sonatype.aether.impl.internal.DefaultServiceLocator diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenServiceLocator.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenServiceLocator.java new file mode 100644 index 000000000..db55665f2 --- /dev/null +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenServiceLocator.java @@ -0,0 +1,52 @@ +package org.apache.maven.repository.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.sonatype.aether.impl.ArtifactDescriptorReader; +import org.sonatype.aether.impl.internal.DefaultServiceLocator; +import org.sonatype.aether.impl.MetadataGeneratorFactory; +import org.sonatype.aether.impl.VersionRangeResolver; +import org.sonatype.aether.impl.VersionResolver; + +/** + * A simple service locator that is already setup with all components from this library. To acquire a complete + * repository system, clients need to add some repository connectors for remote transfers. Note: This component + * is meant to assist those clients that employ the repository systems outside of an IoC container, Maven plugins + * should instead always use regular dependency injection to acquire the repository system. + * + * @author Benjamin Bentmann + */ +public class MavenServiceLocator + extends DefaultServiceLocator +{ + + /** + * Creates a new service locator that already knows about all service implementations included in this library. + */ + public MavenServiceLocator() + { + addService( ArtifactDescriptorReader.class, DefaultArtifactDescriptorReader.class ); + addService( VersionResolver.class, DefaultVersionResolver.class ); + addService( VersionRangeResolver.class, DefaultVersionRangeResolver.class ); + addService( MetadataGeneratorFactory.class, SnapshotMetadataGeneratorFactory.class ); + addService( MetadataGeneratorFactory.class, VersionsMetadataGeneratorFactory.class ); + } + +} From 5e00c981c4d2b4f74b2bbb271d9934ab23e694e7 Mon Sep 17 00:00:00 2001 From: Herve Boutemy Date: Mon, 18 Jul 2011 20:08:51 +0000 Subject: [PATCH 058/224] use MavenServiceLocator instead of deprecated DefaultServiceLocator git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1148034 13f79535-47bb-0310-9956-ffa450edef68 --- .../maven/repository/internal/DefaultServiceLocatorTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultServiceLocatorTest.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultServiceLocatorTest.java index 5226c5954..064b6754d 100644 --- a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultServiceLocatorTest.java +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultServiceLocatorTest.java @@ -21,6 +21,7 @@ import org.sonatype.aether.RepositorySystem; import org.sonatype.aether.impl.MetadataGeneratorFactory; +import org.sonatype.aether.spi.locator.ServiceLocator; import junit.framework.TestCase; @@ -30,14 +31,14 @@ public class DefaultServiceLocatorTest public void testGetRepositorySystem() { - DefaultServiceLocator locator = new DefaultServiceLocator(); + ServiceLocator locator = new MavenServiceLocator(); RepositorySystem repoSys = locator.getService( RepositorySystem.class ); assertNotNull( repoSys ); } public void testGetMetadataGeneratorFactories() { - DefaultServiceLocator locator = new DefaultServiceLocator(); + ServiceLocator locator = new MavenServiceLocator(); assertEquals( 2, locator.getServices( MetadataGeneratorFactory.class ).size() ); } From 49a1350314a87a7036716c866b33ee2105d104d3 Mon Sep 17 00:00:00 2001 From: Herve Boutemy Date: Wed, 20 Jul 2011 22:10:09 +0000 Subject: [PATCH 059/224] added description for every module git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1148953 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 05b1f429b..aa08f2e11 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -32,7 +32,8 @@ under the License. Maven Aether Provider - This module provides extensions to Aether for utilizing the Maven POM and Maven repository metadata. + This module provides extensions to Aether for utilizing the Maven POM and Maven repository metadata for artifacts resolution + and download. From b2db6031fbad34fe6cccb606de642e4ad14f8395 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Sun, 9 Oct 2011 18:22:20 +0000 Subject: [PATCH 060/224] o Dispatched repository events via dedicated component git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1180679 13f79535-47bb-0310-9956-ffa450edef68 --- .../DefaultArtifactDescriptorReader.java | 46 +++++++++++-------- .../internal/DefaultVersionRangeResolver.java | 31 +++++++++---- .../internal/DefaultVersionResolver.java | 31 +++++++++---- 3 files changed, 69 insertions(+), 39 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java index 2c8fdf8af..1faee2975 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java @@ -47,7 +47,6 @@ import org.codehaus.plexus.component.annotations.Requirement; import org.sonatype.aether.RepositoryEvent.EventType; import org.sonatype.aether.RepositoryException; -import org.sonatype.aether.RepositoryListener; import org.sonatype.aether.RepositorySystemSession; import org.sonatype.aether.RequestTrace; import org.sonatype.aether.artifact.Artifact; @@ -58,6 +57,7 @@ import org.sonatype.aether.impl.ArtifactDescriptorReader; import org.sonatype.aether.impl.ArtifactResolver; import org.sonatype.aether.impl.RemoteRepositoryManager; +import org.sonatype.aether.impl.RepositoryEventDispatcher; import org.sonatype.aether.impl.VersionResolver; import org.sonatype.aether.transfer.ArtifactNotFoundException; import org.sonatype.aether.util.DefaultRequestTrace; @@ -101,6 +101,9 @@ public class DefaultArtifactDescriptorReader @Requirement private ArtifactResolver artifactResolver; + @Requirement + private RepositoryEventDispatcher repositoryEventDispatcher; + @Requirement private ModelBuilder modelBuilder; @@ -110,6 +113,7 @@ public void initService( ServiceLocator locator ) setRemoteRepositoryManager( locator.getService( RemoteRepositoryManager.class ) ); setVersionResolver( locator.getService( VersionResolver.class ) ); setArtifactResolver( locator.getService( ArtifactResolver.class ) ); + setRepositoryEventDispatcher( locator.getService( RepositoryEventDispatcher.class ) ); modelBuilder = locator.getService( ModelBuilder.class ); if ( modelBuilder == null ) { @@ -153,6 +157,16 @@ public DefaultArtifactDescriptorReader setArtifactResolver( ArtifactResolver art return this; } + public DefaultArtifactDescriptorReader setRepositoryEventDispatcher( RepositoryEventDispatcher repositoryEventDispatcher ) + { + if ( repositoryEventDispatcher == null ) + { + throw new IllegalArgumentException( "repository event dispatcher has not been specified" ); + } + this.repositoryEventDispatcher = repositoryEventDispatcher; + return this; + } + public DefaultArtifactDescriptorReader setModelBuilder( ModelBuilder modelBuilder ) { if ( modelBuilder == null ) @@ -407,29 +421,23 @@ private Exclusion convert( org.apache.maven.model.Exclusion exclusion ) private void missingDescriptor( RepositorySystemSession session, RequestTrace trace, Artifact artifact, Exception exception ) { - RepositoryListener listener = session.getRepositoryListener(); - if ( listener != null ) - { - DefaultRepositoryEvent event = - new DefaultRepositoryEvent( EventType.ARTIFACT_DESCRIPTOR_MISSING, session, trace ); - event.setArtifact( artifact ); - event.setException( exception ); - listener.artifactDescriptorMissing( event ); - } + DefaultRepositoryEvent event = + new DefaultRepositoryEvent( EventType.ARTIFACT_DESCRIPTOR_MISSING, session, trace ); + event.setArtifact( artifact ); + event.setException( exception ); + + repositoryEventDispatcher.dispatch( event ); } private void invalidDescriptor( RepositorySystemSession session, RequestTrace trace, Artifact artifact, Exception exception ) { - RepositoryListener listener = session.getRepositoryListener(); - if ( listener != null ) - { - DefaultRepositoryEvent event = - new DefaultRepositoryEvent( EventType.ARTIFACT_DESCRIPTOR_INVALID, session, trace ); - event.setArtifact( artifact ); - event.setException( exception ); - listener.artifactDescriptorInvalid( event ); - } + DefaultRepositoryEvent event = + new DefaultRepositoryEvent( EventType.ARTIFACT_DESCRIPTOR_INVALID, session, trace ); + event.setArtifact( artifact ); + event.setException( exception ); + + repositoryEventDispatcher.dispatch( event ); } } diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java index d7ff1f885..c5b85f709 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java @@ -32,7 +32,6 @@ import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.util.IOUtil; import org.sonatype.aether.RepositoryEvent.EventType; -import org.sonatype.aether.RepositoryListener; import org.sonatype.aether.RepositorySystemSession; import org.sonatype.aether.RequestTrace; import org.sonatype.aether.SyncContext; @@ -45,6 +44,7 @@ import org.sonatype.aether.version.VersionConstraint; import org.sonatype.aether.version.VersionScheme; import org.sonatype.aether.impl.MetadataResolver; +import org.sonatype.aether.impl.RepositoryEventDispatcher; import org.sonatype.aether.impl.SyncContextFactory; import org.sonatype.aether.impl.VersionRangeResolver; import org.sonatype.aether.metadata.Metadata; @@ -81,11 +81,15 @@ public class DefaultVersionRangeResolver @Requirement private SyncContextFactory syncContextFactory; + @Requirement + private RepositoryEventDispatcher repositoryEventDispatcher; + public void initService( ServiceLocator locator ) { setLogger( locator.getService( Logger.class ) ); setMetadataResolver( locator.getService( MetadataResolver.class ) ); setSyncContextFactory( locator.getService( SyncContextFactory.class ) ); + setRepositoryEventDispatcher( locator.getService( RepositoryEventDispatcher.class ) ); } public DefaultVersionRangeResolver setLogger( Logger logger ) @@ -114,6 +118,16 @@ public DefaultVersionRangeResolver setSyncContextFactory( SyncContextFactory syn return this; } + public DefaultVersionRangeResolver setRepositoryEventDispatcher( RepositoryEventDispatcher repositoryEventDispatcher ) + { + if ( repositoryEventDispatcher == null ) + { + throw new IllegalArgumentException( "repository event dispatcher has not been specified" ); + } + this.repositoryEventDispatcher = repositoryEventDispatcher; + return this; + } + public VersionRangeResult resolveVersionRange( RepositorySystemSession session, VersionRangeRequest request ) throws VersionRangeResolutionException { @@ -271,15 +285,12 @@ private Versioning readVersions( RepositorySystemSession session, RequestTrace t private void invalidMetadata( RepositorySystemSession session, RequestTrace trace, Metadata metadata, ArtifactRepository repository, Exception exception ) { - RepositoryListener listener = session.getRepositoryListener(); - if ( listener != null ) - { - DefaultRepositoryEvent event = new DefaultRepositoryEvent( EventType.METADATA_INVALID, session, trace ); - event.setMetadata( metadata ); - event.setException( exception ); - event.setRepository( repository ); - listener.metadataInvalid( event ); - } + DefaultRepositoryEvent event = new DefaultRepositoryEvent( EventType.METADATA_INVALID, session, trace ); + event.setMetadata( metadata ); + event.setException( exception ); + event.setRepository( repository ); + + repositoryEventDispatcher.dispatch( event ); } } diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java index f36d7f59d..7c0f85f42 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -40,7 +40,6 @@ import org.sonatype.aether.RepositoryCache; import org.sonatype.aether.RequestTrace; import org.sonatype.aether.RepositoryEvent.EventType; -import org.sonatype.aether.RepositoryListener; import org.sonatype.aether.RepositorySystemSession; import org.sonatype.aether.SyncContext; import org.sonatype.aether.util.DefaultRequestTrace; @@ -48,6 +47,7 @@ import org.sonatype.aether.util.metadata.DefaultMetadata; import org.sonatype.aether.artifact.Artifact; import org.sonatype.aether.impl.MetadataResolver; +import org.sonatype.aether.impl.RepositoryEventDispatcher; import org.sonatype.aether.impl.SyncContextFactory; import org.sonatype.aether.impl.VersionResolver; import org.sonatype.aether.impl.internal.CacheUtils; @@ -93,11 +93,15 @@ public class DefaultVersionResolver @Requirement private SyncContextFactory syncContextFactory; + @Requirement + private RepositoryEventDispatcher repositoryEventDispatcher; + public void initService( ServiceLocator locator ) { setLogger( locator.getService( Logger.class ) ); setMetadataResolver( locator.getService( MetadataResolver.class ) ); setSyncContextFactory( locator.getService( SyncContextFactory.class ) ); + setRepositoryEventDispatcher( locator.getService( RepositoryEventDispatcher.class ) ); } public DefaultVersionResolver setLogger( Logger logger ) @@ -126,6 +130,16 @@ public DefaultVersionResolver setSyncContextFactory( SyncContextFactory syncCont return this; } + public DefaultVersionResolver setRepositoryEventDispatcher( RepositoryEventDispatcher repositoryEventDispatcher ) + { + if ( repositoryEventDispatcher == null ) + { + throw new IllegalArgumentException( "repository event dispatcher has not been specified" ); + } + this.repositoryEventDispatcher = repositoryEventDispatcher; + return this; + } + public VersionResult resolveVersion( RepositorySystemSession session, VersionRequest request ) throws VersionResolutionException { @@ -361,15 +375,12 @@ private Versioning readVersions( RepositorySystemSession session, RequestTrace t private void invalidMetadata( RepositorySystemSession session, RequestTrace trace, Metadata metadata, ArtifactRepository repository, Exception exception ) { - RepositoryListener listener = session.getRepositoryListener(); - if ( listener != null ) - { - DefaultRepositoryEvent event = new DefaultRepositoryEvent( EventType.METADATA_INVALID, session, trace ); - event.setMetadata( metadata ); - event.setException( exception ); - event.setRepository( repository ); - listener.metadataInvalid( event ); - } + DefaultRepositoryEvent event = new DefaultRepositoryEvent( EventType.METADATA_INVALID, session, trace ); + event.setMetadata( metadata ); + event.setException( exception ); + event.setRepository( repository ); + + repositoryEventDispatcher.dispatch( event ); } private void merge( Artifact artifact, Map infos, Versioning versioning, From 1c56db71e30fd3319ed8fbce861bf9381dc95925 Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Fri, 25 Nov 2011 08:14:04 +0000 Subject: [PATCH 061/224] [maven-release-plugin] prepare release maven-3.0.4 git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1206073 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index aa08f2e11..a25b00bb1 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0.4-SNAPSHOT + 3.0.4 maven-aether-provider From 2d8e41563ace68e9df495c0acddf3b10ea7b2647 Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Fri, 25 Nov 2011 08:15:06 +0000 Subject: [PATCH 062/224] [maven-release-plugin] prepare for next development iteration git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1206076 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index a25b00bb1..249cd209c 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0.4 + 3.0.5-SNAPSHOT maven-aether-provider From 8a90351254326b239736f7fcd64b428b9aaa28b0 Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Tue, 29 Nov 2011 12:09:14 +0000 Subject: [PATCH 063/224] vote cancelled back to 3.0.4-SNAPSHOT git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1207843 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 249cd209c..aa08f2e11 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0.5-SNAPSHOT + 3.0.4-SNAPSHOT maven-aether-provider From a1c30d5d00febb86f8e1639d9ec39227a2170705 Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Thu, 1 Dec 2011 08:43:14 +0000 Subject: [PATCH 064/224] [maven-release-plugin] prepare release maven-3.0.4 git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1208998 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index aa08f2e11..a25b00bb1 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0.4-SNAPSHOT + 3.0.4 maven-aether-provider From 043dcf5c8ce529642b210a65835a4bc44b8b7df8 Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Thu, 1 Dec 2011 08:44:24 +0000 Subject: [PATCH 065/224] [maven-release-plugin] prepare for next development iteration git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1209001 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index a25b00bb1..249cd209c 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0.4 + 3.0.5-SNAPSHOT maven-aether-provider From 8db138cc210ac0b4b53273b580c3512872ea55a3 Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Sun, 4 Dec 2011 08:46:27 +0000 Subject: [PATCH 066/224] back to 3.0.4-SNAPSHOT git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1210076 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 249cd209c..aa08f2e11 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0.5-SNAPSHOT + 3.0.4-SNAPSHOT maven-aether-provider From 0fb69b7cd0ec69ef5dffe8772c9dacedaa10ead4 Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Mon, 5 Dec 2011 13:47:24 +0000 Subject: [PATCH 067/224] [maven-release-plugin] prepare release maven-3.0.4-RC3 git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1210460 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index aa08f2e11..f709c3fd6 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0.4-SNAPSHOT + 3.0.4-RC3 maven-aether-provider From 8e18a672b12561c467e9337cbcc16c7ab5d82507 Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Mon, 5 Dec 2011 13:48:51 +0000 Subject: [PATCH 068/224] [maven-release-plugin] prepare for next development iteration git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1210462 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index f709c3fd6..aa08f2e11 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0.4-RC3 + 3.0.4-SNAPSHOT maven-aether-provider From 161cfdc76f4cf28c9c43ef3f51d2455d25890009 Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Wed, 7 Dec 2011 16:22:49 +0000 Subject: [PATCH 069/224] bump version to 3.0.5-SNAPSHOT 3.0.4 is on release branch: feel free to hack :-) here git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1211509 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index aa08f2e11..249cd209c 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0.4-SNAPSHOT + 3.0.5-SNAPSHOT maven-aether-provider From 66de55018b8d3ca0447bf0d9b5a9bc742990b3fd Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Fri, 30 Dec 2011 21:43:28 +0100 Subject: [PATCH 070/224] o Migrated to Eclipse Aether --- maven-aether-provider/pom.xml | 21 ++- .../internal/ArtifactDescriptorUtils.java | 8 +- .../DefaultArtifactDescriptorReader.java | 127 ++++++++++++----- .../internal/DefaultModelCache.java | 4 +- .../internal/DefaultModelResolver.java | 20 +-- .../internal/DefaultServiceLocator.java | 52 ------- .../internal/DefaultVersionRangeResolver.java | 98 ++++++++----- .../internal/DefaultVersionResolver.java | 100 ++++++++----- .../internal/LocalSnapshotMetadata.java | 2 +- .../LocalSnapshotMetadataGenerator.java | 14 +- .../internal/MavenAetherModule.java | 55 +++++++ .../repository/internal/MavenMetadata.java | 4 +- .../MavenRepositorySystemSession.java | 106 -------------- .../internal/MavenRepositorySystemUtils.java | 134 ++++++++++++++++++ .../internal/MavenServiceLocator.java | 52 ------- .../internal/RelocatedArtifact.java | 4 +- .../internal/RemoteSnapshotMetadata.java | 2 +- .../RemoteSnapshotMetadataGenerator.java | 14 +- .../SnapshotMetadataGeneratorFactory.java | 12 +- .../repository/internal/VersionsMetadata.java | 4 +- .../internal/VersionsMetadataGenerator.java | 12 +- .../VersionsMetadataGeneratorFactory.java | 12 +- ...va => MavenRepositorySystemUtilsTest.java} | 12 +- 23 files changed, 481 insertions(+), 388 deletions(-) delete mode 100644 maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultServiceLocator.java create mode 100644 maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenAetherModule.java delete mode 100644 maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemSession.java create mode 100644 maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java delete mode 100644 maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenServiceLocator.java rename maven-aether-provider/src/test/java/org/apache/maven/repository/internal/{DefaultServiceLocatorTest.java => MavenRepositorySystemUtilsTest.java} (77%) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 249cd209c..4e2e01cd4 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -50,19 +50,19 @@ under the License. maven-repository-metadata - org.sonatype.aether + org.eclipse.aether aether-api - org.sonatype.aether + org.eclipse.aether aether-spi - org.sonatype.aether + org.eclipse.aether aether-util - org.sonatype.aether + org.eclipse.aether aether-impl @@ -73,6 +73,19 @@ under the License. org.codehaus.plexus plexus-utils + + com.google.inject + guice + 3.0 + no_aop + true + + + aopalliance + aopalliance + + + diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorUtils.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorUtils.java index b7da0d1a6..7f71dd913 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorUtils.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorUtils.java @@ -20,10 +20,10 @@ */ import org.apache.maven.model.Repository; -import org.sonatype.aether.artifact.Artifact; -import org.sonatype.aether.repository.RemoteRepository; -import org.sonatype.aether.repository.RepositoryPolicy; -import org.sonatype.aether.util.artifact.DefaultArtifact; +import org.eclipse.aether.artifact.Artifact; +import org.eclipse.aether.repository.RemoteRepository; +import org.eclipse.aether.repository.RepositoryPolicy; +import org.eclipse.aether.util.artifact.DefaultArtifact; /** * Warning: This is an internal utility class that is only public for technical reasons, it is not part diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java index 1faee2975..21daabfb3 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java @@ -21,6 +21,7 @@ import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; @@ -28,6 +29,9 @@ import java.util.Properties; import java.util.Set; +import javax.inject.Inject; +import javax.inject.Named; + import org.apache.maven.model.DependencyManagement; import org.apache.maven.model.DistributionManagement; import org.apache.maven.model.License; @@ -45,52 +49,54 @@ import org.apache.maven.model.resolution.UnresolvableModelException; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; -import org.sonatype.aether.RepositoryEvent.EventType; -import org.sonatype.aether.RepositoryException; -import org.sonatype.aether.RepositorySystemSession; -import org.sonatype.aether.RequestTrace; -import org.sonatype.aether.artifact.Artifact; -import org.sonatype.aether.artifact.ArtifactType; -import org.sonatype.aether.artifact.ArtifactTypeRegistry; -import org.sonatype.aether.graph.Dependency; -import org.sonatype.aether.graph.Exclusion; -import org.sonatype.aether.impl.ArtifactDescriptorReader; -import org.sonatype.aether.impl.ArtifactResolver; -import org.sonatype.aether.impl.RemoteRepositoryManager; -import org.sonatype.aether.impl.RepositoryEventDispatcher; -import org.sonatype.aether.impl.VersionResolver; -import org.sonatype.aether.transfer.ArtifactNotFoundException; -import org.sonatype.aether.util.DefaultRequestTrace; -import org.sonatype.aether.util.artifact.ArtifactProperties; -import org.sonatype.aether.util.artifact.DefaultArtifact; -import org.sonatype.aether.util.artifact.DefaultArtifactType; -import org.sonatype.aether.util.listener.DefaultRepositoryEvent; -import org.sonatype.aether.repository.WorkspaceRepository; -import org.sonatype.aether.resolution.ArtifactDescriptorException; -import org.sonatype.aether.resolution.ArtifactDescriptorRequest; -import org.sonatype.aether.resolution.ArtifactDescriptorResult; -import org.sonatype.aether.resolution.ArtifactRequest; -import org.sonatype.aether.resolution.ArtifactResolutionException; -import org.sonatype.aether.resolution.ArtifactResult; -import org.sonatype.aether.resolution.VersionRequest; -import org.sonatype.aether.resolution.VersionResolutionException; -import org.sonatype.aether.resolution.VersionResult; -import org.sonatype.aether.spi.locator.Service; -import org.sonatype.aether.spi.locator.ServiceLocator; -import org.sonatype.aether.spi.log.Logger; -import org.sonatype.aether.spi.log.NullLogger; +import org.eclipse.aether.RepositoryException; +import org.eclipse.aether.RepositoryEvent.EventType; +import org.eclipse.aether.RepositorySystemSession; +import org.eclipse.aether.RequestTrace; +import org.eclipse.aether.artifact.Artifact; +import org.eclipse.aether.artifact.ArtifactProperties; +import org.eclipse.aether.artifact.ArtifactType; +import org.eclipse.aether.artifact.ArtifactTypeRegistry; +import org.eclipse.aether.graph.Dependency; +import org.eclipse.aether.graph.Exclusion; +import org.eclipse.aether.impl.ArtifactDescriptorReader; +import org.eclipse.aether.impl.ArtifactResolver; +import org.eclipse.aether.impl.RemoteRepositoryManager; +import org.eclipse.aether.impl.RepositoryEventDispatcher; +import org.eclipse.aether.impl.VersionResolver; +import org.eclipse.aether.repository.WorkspaceRepository; +import org.eclipse.aether.resolution.ArtifactDescriptorException; +import org.eclipse.aether.resolution.ArtifactDescriptorRequest; +import org.eclipse.aether.resolution.ArtifactDescriptorResult; +import org.eclipse.aether.resolution.ArtifactRequest; +import org.eclipse.aether.resolution.ArtifactResolutionException; +import org.eclipse.aether.resolution.ArtifactResult; +import org.eclipse.aether.resolution.VersionRequest; +import org.eclipse.aether.resolution.VersionResolutionException; +import org.eclipse.aether.resolution.VersionResult; +import org.eclipse.aether.spi.locator.Service; +import org.eclipse.aether.spi.locator.ServiceLocator; +import org.eclipse.aether.spi.log.Logger; +import org.eclipse.aether.spi.log.LoggerFactory; +import org.eclipse.aether.spi.log.NullLoggerFactory; +import org.eclipse.aether.transfer.ArtifactNotFoundException; +import org.eclipse.aether.util.DefaultRequestTrace; +import org.eclipse.aether.util.artifact.DefaultArtifact; +import org.eclipse.aether.util.artifact.DefaultArtifactType; +import org.eclipse.aether.util.listener.DefaultRepositoryEvent; /** * @author Benjamin Bentmann */ +@Named @Component( role = ArtifactDescriptorReader.class ) public class DefaultArtifactDescriptorReader implements ArtifactDescriptorReader, Service { @SuppressWarnings( "unused" ) - @Requirement - private Logger logger = NullLogger.INSTANCE; + @Requirement( role = LoggerFactory.class ) + private Logger logger = NullLoggerFactory.LOGGER; @Requirement private RemoteRepositoryManager remoteRepositoryManager; @@ -107,9 +113,27 @@ public class DefaultArtifactDescriptorReader @Requirement private ModelBuilder modelBuilder; + public DefaultArtifactDescriptorReader() + { + // enable no-arg constructor + } + + @Inject + DefaultArtifactDescriptorReader( RemoteRepositoryManager remoteRepositoryManager, VersionResolver versionResolver, + ArtifactResolver artifactResolver, ModelBuilder modelBuilder, + RepositoryEventDispatcher repositoryEventDispatcher, LoggerFactory loggerFactory ) + { + setRemoteRepositoryManager( remoteRepositoryManager ); + setVersionResolver( versionResolver ); + setArtifactResolver( artifactResolver ); + setModelBuilder( modelBuilder ); + setLoggerFactory( loggerFactory ); + setRepositoryEventDispatcher( repositoryEventDispatcher ); + } + public void initService( ServiceLocator locator ) { - setLogger( locator.getService( Logger.class ) ); + setLoggerFactory( locator.getService( LoggerFactory.class ) ); setRemoteRepositoryManager( locator.getService( RemoteRepositoryManager.class ) ); setVersionResolver( locator.getService( VersionResolver.class ) ); setArtifactResolver( locator.getService( ArtifactResolver.class ) ); @@ -121,12 +145,18 @@ public void initService( ServiceLocator locator ) } } - public DefaultArtifactDescriptorReader setLogger( Logger logger ) + public DefaultArtifactDescriptorReader setLoggerFactory( LoggerFactory loggerFactory ) { - this.logger = ( logger != null ) ? logger : NullLogger.INSTANCE; + this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, getClass() ); return this; } + void setLogger( LoggerFactory loggerFactory ) + { + // plexus support + setLoggerFactory( loggerFactory ); + } + public DefaultArtifactDescriptorReader setRemoteRepositoryManager( RemoteRepositoryManager remoteRepositoryManager ) { if ( remoteRepositoryManager == null ) @@ -228,6 +258,8 @@ public ArtifactDescriptorResult readArtifactDescriptor( RepositorySystemSession } result.setProperties( properties ); + + setArtifactProperties( result, model ); } return result; @@ -382,6 +414,23 @@ private Relocation getRelocation( Model model ) return relocation; } + private void setArtifactProperties( ArtifactDescriptorResult result, Model model ) + { + String downloadUrl = null; + DistributionManagement distMngt = model.getDistributionManagement(); + if ( distMngt != null ) + { + downloadUrl = distMngt.getDownloadUrl(); + } + if ( downloadUrl != null && downloadUrl.length() > 0 ) + { + Artifact artifact = result.getArtifact(); + Map props = new HashMap( artifact.getProperties() ); + props.put( ArtifactProperties.DOWNLOAD_URL, downloadUrl ); + result.setArtifact( artifact.setProperties( props ) ); + } + } + private Dependency convert( org.apache.maven.model.Dependency dependency, ArtifactTypeRegistry stereotypes ) { ArtifactType stereotype = stereotypes.get( dependency.getType() ); diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelCache.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelCache.java index 25b24c2c3..2d4fa7d67 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelCache.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelCache.java @@ -20,8 +20,8 @@ */ import org.apache.maven.model.building.ModelCache; -import org.sonatype.aether.RepositoryCache; -import org.sonatype.aether.RepositorySystemSession; +import org.eclipse.aether.RepositoryCache; +import org.eclipse.aether.RepositorySystemSession; /** * A model builder cache backed by the repository system cache. diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java index 96b9fc365..387340ca6 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java @@ -31,15 +31,15 @@ import org.apache.maven.model.resolution.InvalidRepositoryException; import org.apache.maven.model.resolution.ModelResolver; import org.apache.maven.model.resolution.UnresolvableModelException; -import org.sonatype.aether.RepositorySystemSession; -import org.sonatype.aether.RequestTrace; -import org.sonatype.aether.artifact.Artifact; -import org.sonatype.aether.impl.ArtifactResolver; -import org.sonatype.aether.impl.RemoteRepositoryManager; -import org.sonatype.aether.repository.RemoteRepository; -import org.sonatype.aether.resolution.ArtifactRequest; -import org.sonatype.aether.resolution.ArtifactResolutionException; -import org.sonatype.aether.util.artifact.DefaultArtifact; +import org.eclipse.aether.RepositorySystemSession; +import org.eclipse.aether.RequestTrace; +import org.eclipse.aether.artifact.Artifact; +import org.eclipse.aether.impl.ArtifactResolver; +import org.eclipse.aether.impl.RemoteRepositoryManager; +import org.eclipse.aether.repository.RemoteRepository; +import org.eclipse.aether.resolution.ArtifactRequest; +import org.eclipse.aether.resolution.ArtifactResolutionException; +import org.eclipse.aether.util.artifact.DefaultArtifact; /** * A model resolver to assist building of dependency POMs. This resolver gives priority to those repositories that have @@ -93,7 +93,7 @@ private DefaultModelResolver( DefaultModelResolver original ) public void addRepository( Repository repository ) throws InvalidRepositoryException { - if ( !repositoryIds.add( repository.getId() ) ) + if ( session.isIgnoreArtifactDescriptorRepositories() || !repositoryIds.add( repository.getId() ) ) { return; } diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultServiceLocator.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultServiceLocator.java deleted file mode 100644 index 032f5461c..000000000 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultServiceLocator.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.apache.maven.repository.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.sonatype.aether.impl.ArtifactDescriptorReader; -import org.sonatype.aether.impl.MetadataGeneratorFactory; -import org.sonatype.aether.impl.VersionRangeResolver; -import org.sonatype.aether.impl.VersionResolver; - -/** - * A simple service locator that is already setup with all components from this library. To acquire a complete - * repository system, clients need to add some repository connectors for remote transfers. Note: This component - * is meant to assists those clients that employ the repository systems outside of an IoC container, Maven plugins - * should instead always use regular dependency injection to acquire the repository system. - * - * @author Benjamin Bentmann - * @deprecated use {@link MavenServiceLocator} instead, which is more explicit. - */ -public class DefaultServiceLocator - extends org.sonatype.aether.impl.internal.DefaultServiceLocator -{ - - /** - * Creates a new service locator that already knows about all service implementations included this library. - */ - public DefaultServiceLocator() - { - addService( ArtifactDescriptorReader.class, DefaultArtifactDescriptorReader.class ); - addService( VersionResolver.class, DefaultVersionResolver.class ); - addService( VersionRangeResolver.class, DefaultVersionRangeResolver.class ); - addService( MetadataGeneratorFactory.class, SnapshotMetadataGeneratorFactory.class ); - addService( MetadataGeneratorFactory.class, VersionsMetadataGeneratorFactory.class ); - } - -} diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java index c5b85f709..1362557b3 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java @@ -26,44 +26,49 @@ import java.util.List; import java.util.Map; +import javax.inject.Inject; +import javax.inject.Named; + import org.apache.maven.artifact.repository.metadata.Versioning; import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.util.IOUtil; -import org.sonatype.aether.RepositoryEvent.EventType; -import org.sonatype.aether.RepositorySystemSession; -import org.sonatype.aether.RequestTrace; -import org.sonatype.aether.SyncContext; -import org.sonatype.aether.util.DefaultRequestTrace; -import org.sonatype.aether.util.listener.DefaultRepositoryEvent; -import org.sonatype.aether.util.metadata.DefaultMetadata; -import org.sonatype.aether.util.version.GenericVersionScheme; -import org.sonatype.aether.version.InvalidVersionSpecificationException; -import org.sonatype.aether.version.Version; -import org.sonatype.aether.version.VersionConstraint; -import org.sonatype.aether.version.VersionScheme; -import org.sonatype.aether.impl.MetadataResolver; -import org.sonatype.aether.impl.RepositoryEventDispatcher; -import org.sonatype.aether.impl.SyncContextFactory; -import org.sonatype.aether.impl.VersionRangeResolver; -import org.sonatype.aether.metadata.Metadata; -import org.sonatype.aether.repository.ArtifactRepository; -import org.sonatype.aether.repository.RemoteRepository; -import org.sonatype.aether.repository.WorkspaceReader; -import org.sonatype.aether.resolution.MetadataRequest; -import org.sonatype.aether.resolution.MetadataResult; -import org.sonatype.aether.resolution.VersionRangeRequest; -import org.sonatype.aether.resolution.VersionRangeResolutionException; -import org.sonatype.aether.resolution.VersionRangeResult; -import org.sonatype.aether.spi.locator.Service; -import org.sonatype.aether.spi.locator.ServiceLocator; -import org.sonatype.aether.spi.log.Logger; -import org.sonatype.aether.spi.log.NullLogger; +import org.eclipse.aether.RepositoryEvent.EventType; +import org.eclipse.aether.RepositorySystemSession; +import org.eclipse.aether.RequestTrace; +import org.eclipse.aether.SyncContext; +import org.eclipse.aether.impl.MetadataResolver; +import org.eclipse.aether.impl.RepositoryEventDispatcher; +import org.eclipse.aether.impl.SyncContextFactory; +import org.eclipse.aether.impl.VersionRangeResolver; +import org.eclipse.aether.metadata.Metadata; +import org.eclipse.aether.repository.ArtifactRepository; +import org.eclipse.aether.repository.RemoteRepository; +import org.eclipse.aether.repository.WorkspaceReader; +import org.eclipse.aether.resolution.MetadataRequest; +import org.eclipse.aether.resolution.MetadataResult; +import org.eclipse.aether.resolution.VersionRangeRequest; +import org.eclipse.aether.resolution.VersionRangeResolutionException; +import org.eclipse.aether.resolution.VersionRangeResult; +import org.eclipse.aether.spi.locator.Service; +import org.eclipse.aether.spi.locator.ServiceLocator; +import org.eclipse.aether.spi.log.Logger; +import org.eclipse.aether.spi.log.LoggerFactory; +import org.eclipse.aether.spi.log.NullLoggerFactory; +import org.eclipse.aether.util.DefaultRequestTrace; +import org.eclipse.aether.util.listener.DefaultRepositoryEvent; +import org.eclipse.aether.util.metadata.DefaultMetadata; +import org.eclipse.aether.util.version.GenericVersionScheme; +import org.eclipse.aether.version.InvalidVersionSpecificationException; +import org.eclipse.aether.version.Version; +import org.eclipse.aether.version.VersionConstraint; +import org.eclipse.aether.version.VersionScheme; /** * @author Benjamin Bentmann */ +@Named @Component( role = VersionRangeResolver.class ) public class DefaultVersionRangeResolver implements VersionRangeResolver, Service @@ -72,8 +77,8 @@ public class DefaultVersionRangeResolver private static final String MAVEN_METADATA_XML = "maven-metadata.xml"; @SuppressWarnings( "unused" ) - @Requirement - private Logger logger = NullLogger.INSTANCE; + @Requirement( role = LoggerFactory.class ) + private Logger logger = NullLoggerFactory.LOGGER; @Requirement private MetadataResolver metadataResolver; @@ -84,20 +89,41 @@ public class DefaultVersionRangeResolver @Requirement private RepositoryEventDispatcher repositoryEventDispatcher; + public DefaultVersionRangeResolver() + { + // enable default constructor + } + + @Inject + DefaultVersionRangeResolver( MetadataResolver metadataResolver, SyncContextFactory syncContextFactory, + RepositoryEventDispatcher repositoryEventDispatcher, LoggerFactory loggerFactory ) + { + setMetadataResolver( metadataResolver ); + setSyncContextFactory( syncContextFactory ); + setLoggerFactory( loggerFactory ); + setRepositoryEventDispatcher( repositoryEventDispatcher ); + } + public void initService( ServiceLocator locator ) { - setLogger( locator.getService( Logger.class ) ); + setLoggerFactory( locator.getService( LoggerFactory.class ) ); setMetadataResolver( locator.getService( MetadataResolver.class ) ); setSyncContextFactory( locator.getService( SyncContextFactory.class ) ); setRepositoryEventDispatcher( locator.getService( RepositoryEventDispatcher.class ) ); } - public DefaultVersionRangeResolver setLogger( Logger logger ) + public DefaultVersionRangeResolver setLoggerFactory( LoggerFactory loggerFactory ) { - this.logger = ( logger != null ) ? logger : NullLogger.INSTANCE; + this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, getClass() ); return this; } + void setLogger( LoggerFactory loggerFactory ) + { + // plexus support + setLoggerFactory( loggerFactory ); + } + public DefaultVersionRangeResolver setMetadataResolver( MetadataResolver metadataResolver ) { if ( metadataResolver == null ) @@ -148,7 +174,7 @@ public VersionRangeResult resolveVersionRange( RepositorySystemSession session, result.setVersionConstraint( versionConstraint ); - if ( versionConstraint.getRanges().isEmpty() ) + if ( versionConstraint.getRange() == null ) { result.addVersion( versionConstraint.getVersion() ); } @@ -265,7 +291,7 @@ private Versioning readVersions( RepositorySystemSession session, RequestTrace t } finally { - syncContext.release(); + syncContext.close(); } } } diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java index 7c0f85f42..1e0e35365 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -28,6 +28,9 @@ import java.util.List; import java.util.Map; +import javax.inject.Inject; +import javax.inject.Named; + import org.apache.maven.artifact.repository.metadata.Snapshot; import org.apache.maven.artifact.repository.metadata.SnapshotVersion; import org.apache.maven.artifact.repository.metadata.Versioning; @@ -36,40 +39,42 @@ import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.util.IOUtil; import org.codehaus.plexus.util.StringUtils; -import org.sonatype.aether.ConfigurationProperties; -import org.sonatype.aether.RepositoryCache; -import org.sonatype.aether.RequestTrace; -import org.sonatype.aether.RepositoryEvent.EventType; -import org.sonatype.aether.RepositorySystemSession; -import org.sonatype.aether.SyncContext; -import org.sonatype.aether.util.DefaultRequestTrace; -import org.sonatype.aether.util.listener.DefaultRepositoryEvent; -import org.sonatype.aether.util.metadata.DefaultMetadata; -import org.sonatype.aether.artifact.Artifact; -import org.sonatype.aether.impl.MetadataResolver; -import org.sonatype.aether.impl.RepositoryEventDispatcher; -import org.sonatype.aether.impl.SyncContextFactory; -import org.sonatype.aether.impl.VersionResolver; -import org.sonatype.aether.impl.internal.CacheUtils; -import org.sonatype.aether.metadata.Metadata; -import org.sonatype.aether.repository.ArtifactRepository; -import org.sonatype.aether.repository.LocalRepository; -import org.sonatype.aether.repository.RemoteRepository; -import org.sonatype.aether.repository.WorkspaceReader; -import org.sonatype.aether.repository.WorkspaceRepository; -import org.sonatype.aether.resolution.MetadataRequest; -import org.sonatype.aether.resolution.MetadataResult; -import org.sonatype.aether.resolution.VersionRequest; -import org.sonatype.aether.resolution.VersionResolutionException; -import org.sonatype.aether.resolution.VersionResult; -import org.sonatype.aether.spi.locator.Service; -import org.sonatype.aether.spi.locator.ServiceLocator; -import org.sonatype.aether.spi.log.Logger; -import org.sonatype.aether.spi.log.NullLogger; +import org.eclipse.aether.RepositoryCache; +import org.eclipse.aether.RepositoryEvent.EventType; +import org.eclipse.aether.RepositorySystemSession; +import org.eclipse.aether.RequestTrace; +import org.eclipse.aether.SyncContext; +import org.eclipse.aether.artifact.Artifact; +import org.eclipse.aether.impl.MetadataResolver; +import org.eclipse.aether.impl.RepositoryEventDispatcher; +import org.eclipse.aether.impl.SyncContextFactory; +import org.eclipse.aether.impl.VersionResolver; +import org.eclipse.aether.internal.impl.CacheUtils; +import org.eclipse.aether.metadata.Metadata; +import org.eclipse.aether.repository.ArtifactRepository; +import org.eclipse.aether.repository.LocalRepository; +import org.eclipse.aether.repository.RemoteRepository; +import org.eclipse.aether.repository.WorkspaceReader; +import org.eclipse.aether.repository.WorkspaceRepository; +import org.eclipse.aether.resolution.MetadataRequest; +import org.eclipse.aether.resolution.MetadataResult; +import org.eclipse.aether.resolution.VersionRequest; +import org.eclipse.aether.resolution.VersionResolutionException; +import org.eclipse.aether.resolution.VersionResult; +import org.eclipse.aether.spi.locator.Service; +import org.eclipse.aether.spi.locator.ServiceLocator; +import org.eclipse.aether.spi.log.Logger; +import org.eclipse.aether.spi.log.LoggerFactory; +import org.eclipse.aether.spi.log.NullLoggerFactory; +import org.eclipse.aether.util.ConfigUtils; +import org.eclipse.aether.util.DefaultRequestTrace; +import org.eclipse.aether.util.listener.DefaultRepositoryEvent; +import org.eclipse.aether.util.metadata.DefaultMetadata; /** * @author Benjamin Bentmann */ +@Named @Component( role = VersionResolver.class ) public class DefaultVersionResolver implements VersionResolver, Service @@ -84,8 +89,8 @@ public class DefaultVersionResolver private static final String SNAPSHOT = "SNAPSHOT"; @SuppressWarnings( "unused" ) - @Requirement - private Logger logger = NullLogger.INSTANCE; + @Requirement( role = LoggerFactory.class ) + private Logger logger = NullLoggerFactory.LOGGER; @Requirement private MetadataResolver metadataResolver; @@ -96,20 +101,41 @@ public class DefaultVersionResolver @Requirement private RepositoryEventDispatcher repositoryEventDispatcher; + public DefaultVersionResolver() + { + // enable no-arg constructor + } + + @Inject + DefaultVersionResolver( MetadataResolver metadataResolver, SyncContextFactory syncContextFactory, + RepositoryEventDispatcher repositoryEventDispatcher, LoggerFactory loggerFactory ) + { + setMetadataResolver( metadataResolver ); + setSyncContextFactory( syncContextFactory ); + setLoggerFactory( loggerFactory ); + setRepositoryEventDispatcher( repositoryEventDispatcher ); + } + public void initService( ServiceLocator locator ) { - setLogger( locator.getService( Logger.class ) ); + setLoggerFactory( locator.getService( LoggerFactory.class ) ); setMetadataResolver( locator.getService( MetadataResolver.class ) ); setSyncContextFactory( locator.getService( SyncContextFactory.class ) ); setRepositoryEventDispatcher( locator.getService( RepositoryEventDispatcher.class ) ); } - public DefaultVersionResolver setLogger( Logger logger ) + public DefaultVersionResolver setLoggerFactory( LoggerFactory loggerFactory ) { - this.logger = ( logger != null ) ? logger : NullLogger.INSTANCE; + this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, getClass() ); return this; } + void setLogger( LoggerFactory loggerFactory ) + { + // plexus support + setLoggerFactory( loggerFactory ); + } + public DefaultVersionResolver setMetadataResolver( MetadataResolver metadataResolver ) { if ( metadataResolver == null ) @@ -153,7 +179,7 @@ public VersionResult resolveVersion( RepositorySystemSession session, VersionReq Key cacheKey = null; RepositoryCache cache = session.getCache(); - if ( cache != null && !ConfigurationProperties.get( session, "aether.versionResolver.noCache", false ) ) + if ( cache != null && !ConfigUtils.getBoolean( session, false, "aether.versionResolver.noCache" ) ) { cacheKey = new Key( session, request ); @@ -355,7 +381,7 @@ private Versioning readVersions( RepositorySystemSession session, RequestTrace t } finally { - syncContext.release(); + syncContext.close(); } } } diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java index a084977ab..944f2ed5a 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java @@ -29,7 +29,7 @@ import org.apache.maven.artifact.repository.metadata.Snapshot; import org.apache.maven.artifact.repository.metadata.SnapshotVersion; import org.apache.maven.artifact.repository.metadata.Versioning; -import org.sonatype.aether.artifact.Artifact; +import org.eclipse.aether.artifact.Artifact; /** * @author Benjamin Bentmann diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java index 1d318cd4f..ee7c10b0c 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java @@ -24,12 +24,12 @@ import java.util.LinkedHashMap; import java.util.Map; -import org.sonatype.aether.ConfigurationProperties; -import org.sonatype.aether.RepositorySystemSession; -import org.sonatype.aether.artifact.Artifact; -import org.sonatype.aether.impl.MetadataGenerator; -import org.sonatype.aether.installation.InstallRequest; -import org.sonatype.aether.metadata.Metadata; +import org.eclipse.aether.RepositorySystemSession; +import org.eclipse.aether.artifact.Artifact; +import org.eclipse.aether.impl.MetadataGenerator; +import org.eclipse.aether.installation.InstallRequest; +import org.eclipse.aether.metadata.Metadata; +import org.eclipse.aether.util.ConfigUtils; /** * @author Benjamin Bentmann @@ -44,7 +44,7 @@ class LocalSnapshotMetadataGenerator public LocalSnapshotMetadataGenerator( RepositorySystemSession session, InstallRequest request ) { - legacyFormat = ConfigurationProperties.get( session.getConfigProperties(), "maven.metadata.legacy", false ); + legacyFormat = ConfigUtils.getBoolean( session.getConfigProperties(), false, "maven.metadata.legacy" ); snapshots = new LinkedHashMap(); } diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenAetherModule.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenAetherModule.java new file mode 100644 index 000000000..0432cdb6d --- /dev/null +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenAetherModule.java @@ -0,0 +1,55 @@ +package org.apache.maven.repository.internal; + +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; + +import javax.inject.Named; +import javax.inject.Singleton; + +import org.apache.maven.model.building.DefaultModelBuilderFactory; +import org.apache.maven.model.building.ModelBuilder; +import org.eclipse.aether.impl.AetherModule; +import org.eclipse.aether.impl.ArtifactDescriptorReader; +import org.eclipse.aether.impl.MetadataGeneratorFactory; +import org.eclipse.aether.impl.VersionRangeResolver; +import org.eclipse.aether.impl.VersionResolver; + +import com.google.inject.AbstractModule; +import com.google.inject.Provides; +import com.google.inject.name.Names; + +public final class MavenAetherModule + extends AbstractModule +{ + + @Override + protected void configure() + { + install( new AetherModule() ); + bind( ArtifactDescriptorReader.class ) // + .to( DefaultArtifactDescriptorReader.class ).in( Singleton.class ); + bind( VersionResolver.class ) // + .to( DefaultVersionResolver.class ).in( Singleton.class ); + bind( VersionRangeResolver.class ) // + .to( DefaultVersionRangeResolver.class ).in( Singleton.class ); + bind( MetadataGeneratorFactory.class ).annotatedWith( Names.named( "snapshot" ) ) // + .to( SnapshotMetadataGeneratorFactory.class ).in( Singleton.class ); + bind( MetadataGeneratorFactory.class ).annotatedWith( Names.named( "versions" ) ) // + .to( VersionsMetadataGeneratorFactory.class ).in( Singleton.class ); + bind( ModelBuilder.class ) // + .toInstance( new DefaultModelBuilderFactory().newInstance() ); + } + + @Provides + @Singleton + Set provideMetadataGeneratorFactories( @Named( "snapshot" ) MetadataGeneratorFactory snapshot, + @Named( "versions" ) MetadataGeneratorFactory versions ) + { + Set factories = new HashSet(); + factories.add( snapshot ); + factories.add( versions ); + return Collections.unmodifiableSet( factories ); + } + +} diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java index 3db90e94f..63f7bc4f0 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java @@ -31,8 +31,8 @@ import org.codehaus.plexus.util.ReaderFactory; import org.codehaus.plexus.util.WriterFactory; import org.codehaus.plexus.util.xml.pull.XmlPullParserException; -import org.sonatype.aether.RepositoryException; -import org.sonatype.aether.metadata.MergeableMetadata; +import org.eclipse.aether.RepositoryException; +import org.eclipse.aether.metadata.MergeableMetadata; /** * @author Benjamin Bentmann diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemSession.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemSession.java deleted file mode 100644 index ffd24158b..000000000 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemSession.java +++ /dev/null @@ -1,106 +0,0 @@ -package org.apache.maven.repository.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.sonatype.aether.collection.DependencyGraphTransformer; -import org.sonatype.aether.collection.DependencyManager; -import org.sonatype.aether.collection.DependencySelector; -import org.sonatype.aether.collection.DependencyTraverser; -import org.sonatype.aether.util.DefaultRepositorySystemSession; -import org.sonatype.aether.util.artifact.DefaultArtifactType; -import org.sonatype.aether.util.artifact.DefaultArtifactTypeRegistry; -import org.sonatype.aether.util.graph.manager.ClassicDependencyManager; -import org.sonatype.aether.util.graph.selector.AndDependencySelector; -import org.sonatype.aether.util.graph.selector.ExclusionDependencySelector; -import org.sonatype.aether.util.graph.selector.OptionalDependencySelector; -import org.sonatype.aether.util.graph.selector.ScopeDependencySelector; -import org.sonatype.aether.util.graph.transformer.ChainedDependencyGraphTransformer; -import org.sonatype.aether.util.graph.transformer.ConflictMarker; -import org.sonatype.aether.util.graph.transformer.JavaDependencyContextRefiner; -import org.sonatype.aether.util.graph.transformer.JavaEffectiveScopeCalculator; -import org.sonatype.aether.util.graph.transformer.NearestVersionConflictResolver; -import org.sonatype.aether.util.graph.traverser.FatArtifactTraverser; -import org.sonatype.aether.util.repository.DefaultAuthenticationSelector; -import org.sonatype.aether.util.repository.DefaultMirrorSelector; -import org.sonatype.aether.util.repository.DefaultProxySelector; - -/** - * A simplistic repository system session that mimics Maven's behavior to help third-party developers that want to embed - * Maven's dependency resolution into their own applications. Warning: This class is not intended for - * usage by Maven plugins, those should always acquire the current repository system session via parameter injection. - * - * @author Benjamin Bentmann - */ -public class MavenRepositorySystemSession - extends DefaultRepositorySystemSession -{ - - /** - * Creates a new Maven-like repository system session by initializing the session with values typical for - * Maven-based resolution. In more detail, this constructor configures settings relevant for the processing of - * dependency graphs, most other settings remain at their generic default value. Use the various setters to further - * configure the session with authentication, mirror, proxy and other information required for your environment. - */ - public MavenRepositorySystemSession() - { - setMirrorSelector( new DefaultMirrorSelector() ); - setAuthenticationSelector( new DefaultAuthenticationSelector() ); - setProxySelector( new DefaultProxySelector() ); - - DependencyTraverser depTraverser = new FatArtifactTraverser(); - setDependencyTraverser( depTraverser ); - - DependencyManager depManager = new ClassicDependencyManager(); - setDependencyManager( depManager ); - - DependencySelector depFilter = - new AndDependencySelector( new ScopeDependencySelector( "test", "provided" ), - new OptionalDependencySelector(), new ExclusionDependencySelector() ); - setDependencySelector( depFilter ); - - DependencyGraphTransformer transformer = - new ChainedDependencyGraphTransformer( new ConflictMarker(), new JavaEffectiveScopeCalculator(), - new NearestVersionConflictResolver(), - new JavaDependencyContextRefiner() ); - setDependencyGraphTransformer( transformer ); - - DefaultArtifactTypeRegistry stereotypes = new DefaultArtifactTypeRegistry(); - stereotypes.add( new DefaultArtifactType( "pom" ) ); - stereotypes.add( new DefaultArtifactType( "maven-plugin", "jar", "", "java" ) ); - stereotypes.add( new DefaultArtifactType( "jar", "jar", "", "java" ) ); - stereotypes.add( new DefaultArtifactType( "ejb", "jar", "", "java" ) ); - stereotypes.add( new DefaultArtifactType( "ejb-client", "jar", "client", "java" ) ); - stereotypes.add( new DefaultArtifactType( "test-jar", "jar", "tests", "java" ) ); - stereotypes.add( new DefaultArtifactType( "javadoc", "jar", "javadoc", "java" ) ); - stereotypes.add( new DefaultArtifactType( "java-source", "jar", "sources", "java", false, false ) ); - stereotypes.add( new DefaultArtifactType( "war", "war", "", "java", false, true ) ); - stereotypes.add( new DefaultArtifactType( "ear", "ear", "", "java", false, true ) ); - stereotypes.add( new DefaultArtifactType( "rar", "rar", "", "java", false, true ) ); - stereotypes.add( new DefaultArtifactType( "par", "par", "", "java", false, true ) ); - setArtifactTypeRegistry( stereotypes ); - - setIgnoreInvalidArtifactDescriptor( true ); - setIgnoreMissingArtifactDescriptor( true ); - - setSystemProps( System.getProperties() ); - setConfigProps( System.getProperties() ); - } - -} diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java new file mode 100644 index 000000000..de21c2665 --- /dev/null +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java @@ -0,0 +1,134 @@ +package org.apache.maven.repository.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 java.util.Properties; + +import org.eclipse.aether.collection.DependencyGraphTransformer; +import org.eclipse.aether.collection.DependencyManager; +import org.eclipse.aether.collection.DependencySelector; +import org.eclipse.aether.collection.DependencyTraverser; +import org.eclipse.aether.impl.ArtifactDescriptorReader; +import org.eclipse.aether.impl.DefaultServiceLocator; +import org.eclipse.aether.impl.MetadataGeneratorFactory; +import org.eclipse.aether.impl.VersionRangeResolver; +import org.eclipse.aether.impl.VersionResolver; +import org.eclipse.aether.util.DefaultRepositorySystemSession; +import org.eclipse.aether.util.artifact.DefaultArtifactType; +import org.eclipse.aether.util.artifact.DefaultArtifactTypeRegistry; +import org.eclipse.aether.util.graph.manager.ClassicDependencyManager; +import org.eclipse.aether.util.graph.selector.AndDependencySelector; +import org.eclipse.aether.util.graph.selector.ExclusionDependencySelector; +import org.eclipse.aether.util.graph.selector.OptionalDependencySelector; +import org.eclipse.aether.util.graph.selector.ScopeDependencySelector; +import org.eclipse.aether.util.graph.transformer.ChainedDependencyGraphTransformer; +import org.eclipse.aether.util.graph.transformer.ConflictMarker; +import org.eclipse.aether.util.graph.transformer.JavaDependencyContextRefiner; +import org.eclipse.aether.util.graph.transformer.JavaEffectiveScopeCalculator; +import org.eclipse.aether.util.graph.transformer.NearestVersionConflictResolver; +import org.eclipse.aether.util.graph.traverser.FatArtifactTraverser; + +/** + * A utility class to assist in setting up a Maven-like repository system. Note: This component is meant to + * assist those clients that employ the repository system outside of an IoC container, Maven plugins should instead + * always use regular dependency injection to acquire the repository system. + * + * @author Benjamin Bentmann + */ +public final class MavenRepositorySystemUtils +{ + + private MavenRepositorySystemUtils() + { + // hide constructor + } + + /** + * Creates a new service locator that already knows about all service implementations included in this library. To + * acquire a complete repository system, clients need to add some repository connectors for remote transfers. + * + * @return The new service locator, never {@code null}. + */ + public static DefaultServiceLocator newServiceLocator() + { + DefaultServiceLocator locator = new DefaultServiceLocator(); + locator.addService( ArtifactDescriptorReader.class, DefaultArtifactDescriptorReader.class ); + locator.addService( VersionResolver.class, DefaultVersionResolver.class ); + locator.addService( VersionRangeResolver.class, DefaultVersionRangeResolver.class ); + locator.addService( MetadataGeneratorFactory.class, SnapshotMetadataGeneratorFactory.class ); + locator.addService( MetadataGeneratorFactory.class, VersionsMetadataGeneratorFactory.class ); + return locator; + } + + /** + * Creates a new Maven-like repository system session by initializing the session with values typical for + * Maven-based resolution. In more detail, this method configures settings relevant for the processing of dependency + * graphs, most other settings remain at their generic default value. Use the various setters to further configure + * the session with authentication, mirror, proxy and other information required for your environment. + * + * @return The new repository system session, never {@code null}. + */ + public static DefaultRepositorySystemSession newSession() + { + DefaultRepositorySystemSession session = new DefaultRepositorySystemSession(); + + DependencyTraverser depTraverser = new FatArtifactTraverser(); + session.setDependencyTraverser( depTraverser ); + + DependencyManager depManager = new ClassicDependencyManager(); + session.setDependencyManager( depManager ); + + DependencySelector depFilter = + new AndDependencySelector( new ScopeDependencySelector( "test", "provided" ), + new OptionalDependencySelector(), new ExclusionDependencySelector() ); + session.setDependencySelector( depFilter ); + + DependencyGraphTransformer transformer = + new ChainedDependencyGraphTransformer( new ConflictMarker(), new JavaEffectiveScopeCalculator(), + new NearestVersionConflictResolver(), + new JavaDependencyContextRefiner() ); + session.setDependencyGraphTransformer( transformer ); + + DefaultArtifactTypeRegistry stereotypes = new DefaultArtifactTypeRegistry(); + stereotypes.add( new DefaultArtifactType( "pom" ) ); + stereotypes.add( new DefaultArtifactType( "maven-plugin", "jar", "", "java" ) ); + stereotypes.add( new DefaultArtifactType( "jar", "jar", "", "java" ) ); + stereotypes.add( new DefaultArtifactType( "ejb", "jar", "", "java" ) ); + stereotypes.add( new DefaultArtifactType( "ejb-client", "jar", "client", "java" ) ); + stereotypes.add( new DefaultArtifactType( "test-jar", "jar", "tests", "java" ) ); + stereotypes.add( new DefaultArtifactType( "javadoc", "jar", "javadoc", "java" ) ); + stereotypes.add( new DefaultArtifactType( "java-source", "jar", "sources", "java", false, false ) ); + stereotypes.add( new DefaultArtifactType( "war", "war", "", "java", false, true ) ); + stereotypes.add( new DefaultArtifactType( "ear", "ear", "", "java", false, true ) ); + stereotypes.add( new DefaultArtifactType( "rar", "rar", "", "java", false, true ) ); + stereotypes.add( new DefaultArtifactType( "par", "par", "", "java", false, true ) ); + session.setArtifactTypeRegistry( stereotypes ); + + session.setIgnoreInvalidArtifactDescriptor( true ); + session.setIgnoreMissingArtifactDescriptor( true ); + + Properties sysProps = System.getProperties(); + session.setSystemProps( sysProps ); + session.setConfigProps( sysProps ); + + return session; + } + +} diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenServiceLocator.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenServiceLocator.java deleted file mode 100644 index db55665f2..000000000 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenServiceLocator.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.apache.maven.repository.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.sonatype.aether.impl.ArtifactDescriptorReader; -import org.sonatype.aether.impl.internal.DefaultServiceLocator; -import org.sonatype.aether.impl.MetadataGeneratorFactory; -import org.sonatype.aether.impl.VersionRangeResolver; -import org.sonatype.aether.impl.VersionResolver; - -/** - * A simple service locator that is already setup with all components from this library. To acquire a complete - * repository system, clients need to add some repository connectors for remote transfers. Note: This component - * is meant to assist those clients that employ the repository systems outside of an IoC container, Maven plugins - * should instead always use regular dependency injection to acquire the repository system. - * - * @author Benjamin Bentmann - */ -public class MavenServiceLocator - extends DefaultServiceLocator -{ - - /** - * Creates a new service locator that already knows about all service implementations included in this library. - */ - public MavenServiceLocator() - { - addService( ArtifactDescriptorReader.class, DefaultArtifactDescriptorReader.class ); - addService( VersionResolver.class, DefaultVersionResolver.class ); - addService( VersionRangeResolver.class, DefaultVersionRangeResolver.class ); - addService( MetadataGeneratorFactory.class, SnapshotMetadataGeneratorFactory.class ); - addService( MetadataGeneratorFactory.class, VersionsMetadataGeneratorFactory.class ); - } - -} diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RelocatedArtifact.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RelocatedArtifact.java index 3acc3cb63..b05c5235d 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RelocatedArtifact.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RelocatedArtifact.java @@ -22,8 +22,8 @@ import java.io.File; import java.util.Map; -import org.sonatype.aether.artifact.Artifact; -import org.sonatype.aether.util.artifact.AbstractArtifact; +import org.eclipse.aether.artifact.Artifact; +import org.eclipse.aether.util.artifact.AbstractArtifact; /** * @author Benjamin Bentmann diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java index 4ce43938a..c8c091ad3 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java @@ -33,7 +33,7 @@ import org.apache.maven.artifact.repository.metadata.Snapshot; import org.apache.maven.artifact.repository.metadata.SnapshotVersion; import org.apache.maven.artifact.repository.metadata.Versioning; -import org.sonatype.aether.artifact.Artifact; +import org.eclipse.aether.artifact.Artifact; /** * @author Benjamin Bentmann diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java index d56eed8db..6cbeec550 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java @@ -24,12 +24,12 @@ import java.util.LinkedHashMap; import java.util.Map; -import org.sonatype.aether.ConfigurationProperties; -import org.sonatype.aether.RepositorySystemSession; -import org.sonatype.aether.artifact.Artifact; -import org.sonatype.aether.deployment.DeployRequest; -import org.sonatype.aether.impl.MetadataGenerator; -import org.sonatype.aether.metadata.Metadata; +import org.eclipse.aether.RepositorySystemSession; +import org.eclipse.aether.artifact.Artifact; +import org.eclipse.aether.deployment.DeployRequest; +import org.eclipse.aether.impl.MetadataGenerator; +import org.eclipse.aether.metadata.Metadata; +import org.eclipse.aether.util.ConfigUtils; /** * @author Benjamin Bentmann @@ -44,7 +44,7 @@ class RemoteSnapshotMetadataGenerator public RemoteSnapshotMetadataGenerator( RepositorySystemSession session, DeployRequest request ) { - legacyFormat = ConfigurationProperties.get( session.getConfigProperties(), "maven.metadata.legacy", false ); + legacyFormat = ConfigUtils.getBoolean( session.getConfigProperties(), false, "maven.metadata.legacy" ); snapshots = new LinkedHashMap(); diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/SnapshotMetadataGeneratorFactory.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/SnapshotMetadataGeneratorFactory.java index 60e9c3e99..79ffaade7 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/SnapshotMetadataGeneratorFactory.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/SnapshotMetadataGeneratorFactory.java @@ -20,11 +20,11 @@ */ import org.codehaus.plexus.component.annotations.Component; -import org.sonatype.aether.RepositorySystemSession; -import org.sonatype.aether.deployment.DeployRequest; -import org.sonatype.aether.impl.MetadataGenerator; -import org.sonatype.aether.impl.MetadataGeneratorFactory; -import org.sonatype.aether.installation.InstallRequest; +import org.eclipse.aether.RepositorySystemSession; +import org.eclipse.aether.deployment.DeployRequest; +import org.eclipse.aether.impl.MetadataGenerator; +import org.eclipse.aether.impl.MetadataGeneratorFactory; +import org.eclipse.aether.installation.InstallRequest; /** * @author Benjamin Bentmann @@ -44,7 +44,7 @@ public MetadataGenerator newInstance( RepositorySystemSession session, DeployReq return new RemoteSnapshotMetadataGenerator( session, request ); } - public int getPriority() + public float getPriority() { return 10; } diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java index 139e5f8c9..e1be302d5 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java @@ -26,8 +26,8 @@ import org.apache.maven.artifact.repository.metadata.Metadata; import org.apache.maven.artifact.repository.metadata.Versioning; -import org.sonatype.aether.artifact.Artifact; -import org.sonatype.aether.util.artifact.ArtifactProperties; +import org.eclipse.aether.artifact.Artifact; +import org.eclipse.aether.artifact.ArtifactProperties; /** * @author Benjamin Bentmann diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java index db1c41281..e2f5e82d5 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java @@ -25,12 +25,12 @@ import java.util.LinkedHashMap; import java.util.Map; -import org.sonatype.aether.RepositorySystemSession; -import org.sonatype.aether.artifact.Artifact; -import org.sonatype.aether.deployment.DeployRequest; -import org.sonatype.aether.impl.MetadataGenerator; -import org.sonatype.aether.installation.InstallRequest; -import org.sonatype.aether.metadata.Metadata; +import org.eclipse.aether.RepositorySystemSession; +import org.eclipse.aether.artifact.Artifact; +import org.eclipse.aether.deployment.DeployRequest; +import org.eclipse.aether.impl.MetadataGenerator; +import org.eclipse.aether.installation.InstallRequest; +import org.eclipse.aether.metadata.Metadata; /** * @author Benjamin Bentmann diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGeneratorFactory.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGeneratorFactory.java index a1e986f5b..47ef36012 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGeneratorFactory.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGeneratorFactory.java @@ -20,11 +20,11 @@ */ import org.codehaus.plexus.component.annotations.Component; -import org.sonatype.aether.RepositorySystemSession; -import org.sonatype.aether.deployment.DeployRequest; -import org.sonatype.aether.impl.MetadataGenerator; -import org.sonatype.aether.impl.MetadataGeneratorFactory; -import org.sonatype.aether.installation.InstallRequest; +import org.eclipse.aether.RepositorySystemSession; +import org.eclipse.aether.deployment.DeployRequest; +import org.eclipse.aether.impl.MetadataGenerator; +import org.eclipse.aether.impl.MetadataGeneratorFactory; +import org.eclipse.aether.installation.InstallRequest; /** * @author Benjamin Bentmann @@ -44,7 +44,7 @@ public MetadataGenerator newInstance( RepositorySystemSession session, DeployReq return new VersionsMetadataGenerator( session, request ); } - public int getPriority() + public float getPriority() { return 5; } diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultServiceLocatorTest.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/MavenRepositorySystemUtilsTest.java similarity index 77% rename from maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultServiceLocatorTest.java rename to maven-aether-provider/src/test/java/org/apache/maven/repository/internal/MavenRepositorySystemUtilsTest.java index 064b6754d..768835a55 100644 --- a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultServiceLocatorTest.java +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/MavenRepositorySystemUtilsTest.java @@ -19,26 +19,26 @@ * under the License. */ -import org.sonatype.aether.RepositorySystem; -import org.sonatype.aether.impl.MetadataGeneratorFactory; -import org.sonatype.aether.spi.locator.ServiceLocator; +import org.eclipse.aether.RepositorySystem; +import org.eclipse.aether.impl.MetadataGeneratorFactory; +import org.eclipse.aether.spi.locator.ServiceLocator; import junit.framework.TestCase; -public class DefaultServiceLocatorTest +public class MavenRepositorySystemUtilsTest extends TestCase { public void testGetRepositorySystem() { - ServiceLocator locator = new MavenServiceLocator(); + ServiceLocator locator = MavenRepositorySystemUtils.newServiceLocator(); RepositorySystem repoSys = locator.getService( RepositorySystem.class ); assertNotNull( repoSys ); } public void testGetMetadataGeneratorFactories() { - ServiceLocator locator = new MavenServiceLocator(); + ServiceLocator locator = MavenRepositorySystemUtils.newServiceLocator(); assertEquals( 2, locator.getServices( MetadataGeneratorFactory.class ).size() ); } From 5b8ec576ed3f3267a00aba98089b216bd7309573 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Fri, 30 Dec 2011 22:16:02 +0100 Subject: [PATCH 071/224] o Accounted for API refactoring --- .../repository/internal/DefaultArtifactDescriptorReader.java | 3 +-- .../maven/repository/internal/DefaultVersionRangeResolver.java | 3 +-- .../maven/repository/internal/DefaultVersionResolver.java | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java index 21daabfb3..f6d6a45f0 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java @@ -80,7 +80,6 @@ import org.eclipse.aether.spi.log.LoggerFactory; import org.eclipse.aether.spi.log.NullLoggerFactory; import org.eclipse.aether.transfer.ArtifactNotFoundException; -import org.eclipse.aether.util.DefaultRequestTrace; import org.eclipse.aether.util.artifact.DefaultArtifact; import org.eclipse.aether.util.artifact.DefaultArtifactType; import org.eclipse.aether.util.listener.DefaultRepositoryEvent; @@ -269,7 +268,7 @@ private Model loadPom( RepositorySystemSession session, ArtifactDescriptorReques ArtifactDescriptorResult result ) throws ArtifactDescriptorException { - RequestTrace trace = DefaultRequestTrace.newChild( request.getTrace(), request ); + RequestTrace trace = RequestTrace.newChild( request.getTrace(), request ); Set visited = new LinkedHashSet(); for ( Artifact artifact = request.getArtifact();; ) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java index 1362557b3..6fbe2e4c7 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java @@ -56,7 +56,6 @@ import org.eclipse.aether.spi.log.Logger; import org.eclipse.aether.spi.log.LoggerFactory; import org.eclipse.aether.spi.log.NullLoggerFactory; -import org.eclipse.aether.util.DefaultRequestTrace; import org.eclipse.aether.util.listener.DefaultRepositoryEvent; import org.eclipse.aether.util.metadata.DefaultMetadata; import org.eclipse.aether.util.version.GenericVersionScheme; @@ -210,7 +209,7 @@ public VersionRangeResult resolveVersionRange( RepositorySystemSession session, private Map getVersions( RepositorySystemSession session, VersionRangeResult result, VersionRangeRequest request ) { - RequestTrace trace = DefaultRequestTrace.newChild( request.getTrace(), request ); + RequestTrace trace = RequestTrace.newChild( request.getTrace(), request ); Map versionIndex = new HashMap(); diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java index 1e0e35365..f8a5e301b 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -67,7 +67,6 @@ import org.eclipse.aether.spi.log.LoggerFactory; import org.eclipse.aether.spi.log.NullLoggerFactory; import org.eclipse.aether.util.ConfigUtils; -import org.eclipse.aether.util.DefaultRequestTrace; import org.eclipse.aether.util.listener.DefaultRepositoryEvent; import org.eclipse.aether.util.metadata.DefaultMetadata; @@ -169,7 +168,7 @@ public DefaultVersionResolver setRepositoryEventDispatcher( RepositoryEventDispa public VersionResult resolveVersion( RepositorySystemSession session, VersionRequest request ) throws VersionResolutionException { - RequestTrace trace = DefaultRequestTrace.newChild( request.getTrace(), request ); + RequestTrace trace = RequestTrace.newChild( request.getTrace(), request ); Artifact artifact = request.getArtifact(); From 1daf20c328ddce5631548b5860a979721cba7182 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Sat, 31 Dec 2011 21:46:14 +0100 Subject: [PATCH 072/224] o Accounted for API refactoring --- .../internal/DefaultArtifactDescriptorReader.java | 14 +++++++------- .../internal/DefaultVersionRangeResolver.java | 7 ++++--- .../internal/DefaultVersionResolver.java | 7 ++++--- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java index f6d6a45f0..0ab3f0c5d 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java @@ -51,6 +51,7 @@ import org.codehaus.plexus.component.annotations.Requirement; import org.eclipse.aether.RepositoryException; import org.eclipse.aether.RepositoryEvent.EventType; +import org.eclipse.aether.RepositoryEvent; import org.eclipse.aether.RepositorySystemSession; import org.eclipse.aether.RequestTrace; import org.eclipse.aether.artifact.Artifact; @@ -82,7 +83,6 @@ import org.eclipse.aether.transfer.ArtifactNotFoundException; import org.eclipse.aether.util.artifact.DefaultArtifact; import org.eclipse.aether.util.artifact.DefaultArtifactType; -import org.eclipse.aether.util.listener.DefaultRepositoryEvent; /** * @author Benjamin Bentmann @@ -469,23 +469,23 @@ private Exclusion convert( org.apache.maven.model.Exclusion exclusion ) private void missingDescriptor( RepositorySystemSession session, RequestTrace trace, Artifact artifact, Exception exception ) { - DefaultRepositoryEvent event = - new DefaultRepositoryEvent( EventType.ARTIFACT_DESCRIPTOR_MISSING, session, trace ); + RepositoryEvent.Builder event = new RepositoryEvent.Builder( session, EventType.ARTIFACT_DESCRIPTOR_MISSING ); + event.setTrace( trace ); event.setArtifact( artifact ); event.setException( exception ); - repositoryEventDispatcher.dispatch( event ); + repositoryEventDispatcher.dispatch( event.build() ); } private void invalidDescriptor( RepositorySystemSession session, RequestTrace trace, Artifact artifact, Exception exception ) { - DefaultRepositoryEvent event = - new DefaultRepositoryEvent( EventType.ARTIFACT_DESCRIPTOR_INVALID, session, trace ); + RepositoryEvent.Builder event = new RepositoryEvent.Builder( session, EventType.ARTIFACT_DESCRIPTOR_INVALID ); + event.setTrace( trace ); event.setArtifact( artifact ); event.setException( exception ); - repositoryEventDispatcher.dispatch( event ); + repositoryEventDispatcher.dispatch( event.build() ); } } diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java index 6fbe2e4c7..22fd8026b 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java @@ -35,6 +35,7 @@ import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.util.IOUtil; import org.eclipse.aether.RepositoryEvent.EventType; +import org.eclipse.aether.RepositoryEvent; import org.eclipse.aether.RepositorySystemSession; import org.eclipse.aether.RequestTrace; import org.eclipse.aether.SyncContext; @@ -56,7 +57,6 @@ import org.eclipse.aether.spi.log.Logger; import org.eclipse.aether.spi.log.LoggerFactory; import org.eclipse.aether.spi.log.NullLoggerFactory; -import org.eclipse.aether.util.listener.DefaultRepositoryEvent; import org.eclipse.aether.util.metadata.DefaultMetadata; import org.eclipse.aether.util.version.GenericVersionScheme; import org.eclipse.aether.version.InvalidVersionSpecificationException; @@ -310,12 +310,13 @@ private Versioning readVersions( RepositorySystemSession session, RequestTrace t private void invalidMetadata( RepositorySystemSession session, RequestTrace trace, Metadata metadata, ArtifactRepository repository, Exception exception ) { - DefaultRepositoryEvent event = new DefaultRepositoryEvent( EventType.METADATA_INVALID, session, trace ); + RepositoryEvent.Builder event = new RepositoryEvent.Builder( session, EventType.METADATA_INVALID ); + event.setTrace( trace ); event.setMetadata( metadata ); event.setException( exception ); event.setRepository( repository ); - repositoryEventDispatcher.dispatch( event ); + repositoryEventDispatcher.dispatch( event.build() ); } } diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java index f8a5e301b..7c4631139 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -41,6 +41,7 @@ import org.codehaus.plexus.util.StringUtils; import org.eclipse.aether.RepositoryCache; import org.eclipse.aether.RepositoryEvent.EventType; +import org.eclipse.aether.RepositoryEvent; import org.eclipse.aether.RepositorySystemSession; import org.eclipse.aether.RequestTrace; import org.eclipse.aether.SyncContext; @@ -67,7 +68,6 @@ import org.eclipse.aether.spi.log.LoggerFactory; import org.eclipse.aether.spi.log.NullLoggerFactory; import org.eclipse.aether.util.ConfigUtils; -import org.eclipse.aether.util.listener.DefaultRepositoryEvent; import org.eclipse.aether.util.metadata.DefaultMetadata; /** @@ -400,12 +400,13 @@ private Versioning readVersions( RepositorySystemSession session, RequestTrace t private void invalidMetadata( RepositorySystemSession session, RequestTrace trace, Metadata metadata, ArtifactRepository repository, Exception exception ) { - DefaultRepositoryEvent event = new DefaultRepositoryEvent( EventType.METADATA_INVALID, session, trace ); + RepositoryEvent.Builder event = new RepositoryEvent.Builder( session, EventType.METADATA_INVALID ); + event.setTrace( trace ); event.setMetadata( metadata ); event.setException( exception ); event.setRepository( repository ); - repositoryEventDispatcher.dispatch( event ); + repositoryEventDispatcher.dispatch( event.build() ); } private void merge( Artifact artifact, Map infos, Versioning versioning, From e9c83374eb90e410f98b7ed9e760286d91829fdd Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Sun, 1 Jan 2012 20:05:13 +0100 Subject: [PATCH 073/224] o Accounted for API refactoring --- .../maven/repository/internal/MavenRepositorySystemUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java index de21c2665..ff94d050e 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java @@ -21,6 +21,7 @@ import java.util.Properties; +import org.eclipse.aether.DefaultRepositorySystemSession; import org.eclipse.aether.collection.DependencyGraphTransformer; import org.eclipse.aether.collection.DependencyManager; import org.eclipse.aether.collection.DependencySelector; @@ -30,7 +31,6 @@ import org.eclipse.aether.impl.MetadataGeneratorFactory; import org.eclipse.aether.impl.VersionRangeResolver; import org.eclipse.aether.impl.VersionResolver; -import org.eclipse.aether.util.DefaultRepositorySystemSession; import org.eclipse.aether.util.artifact.DefaultArtifactType; import org.eclipse.aether.util.artifact.DefaultArtifactTypeRegistry; import org.eclipse.aether.util.graph.manager.ClassicDependencyManager; From 1d180513cf15caeb75b43a0dbda17759fd4fae62 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Sun, 8 Jan 2012 20:01:59 +0100 Subject: [PATCH 074/224] Accounted for refactoring of aether-api --- .../repository/internal/ArtifactDescriptorUtils.java | 2 +- .../internal/DefaultArtifactDescriptorReader.java | 4 ++-- .../repository/internal/DefaultModelResolver.java | 2 +- .../internal/DefaultVersionRangeResolver.java | 2 +- .../repository/internal/DefaultVersionResolver.java | 2 +- .../internal/MavenRepositorySystemUtils.java | 2 +- .../maven/repository/internal/RelocatedArtifact.java | 12 +----------- 7 files changed, 8 insertions(+), 18 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorUtils.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorUtils.java index 7f71dd913..c4def8a1a 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorUtils.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorUtils.java @@ -21,9 +21,9 @@ import org.apache.maven.model.Repository; import org.eclipse.aether.artifact.Artifact; +import org.eclipse.aether.artifact.DefaultArtifact; import org.eclipse.aether.repository.RemoteRepository; import org.eclipse.aether.repository.RepositoryPolicy; -import org.eclipse.aether.util.artifact.DefaultArtifact; /** * Warning: This is an internal utility class that is only public for technical reasons, it is not part diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java index 0ab3f0c5d..0b4e6d8cc 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java @@ -58,6 +58,8 @@ import org.eclipse.aether.artifact.ArtifactProperties; import org.eclipse.aether.artifact.ArtifactType; import org.eclipse.aether.artifact.ArtifactTypeRegistry; +import org.eclipse.aether.artifact.DefaultArtifact; +import org.eclipse.aether.artifact.DefaultArtifactType; import org.eclipse.aether.graph.Dependency; import org.eclipse.aether.graph.Exclusion; import org.eclipse.aether.impl.ArtifactDescriptorReader; @@ -81,8 +83,6 @@ import org.eclipse.aether.spi.log.LoggerFactory; import org.eclipse.aether.spi.log.NullLoggerFactory; import org.eclipse.aether.transfer.ArtifactNotFoundException; -import org.eclipse.aether.util.artifact.DefaultArtifact; -import org.eclipse.aether.util.artifact.DefaultArtifactType; /** * @author Benjamin Bentmann diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java index 387340ca6..08ad43227 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java @@ -34,12 +34,12 @@ import org.eclipse.aether.RepositorySystemSession; import org.eclipse.aether.RequestTrace; import org.eclipse.aether.artifact.Artifact; +import org.eclipse.aether.artifact.DefaultArtifact; import org.eclipse.aether.impl.ArtifactResolver; import org.eclipse.aether.impl.RemoteRepositoryManager; import org.eclipse.aether.repository.RemoteRepository; import org.eclipse.aether.resolution.ArtifactRequest; import org.eclipse.aether.resolution.ArtifactResolutionException; -import org.eclipse.aether.util.artifact.DefaultArtifact; /** * A model resolver to assist building of dependency POMs. This resolver gives priority to those repositories that have diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java index 22fd8026b..3e0475549 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java @@ -43,6 +43,7 @@ import org.eclipse.aether.impl.RepositoryEventDispatcher; import org.eclipse.aether.impl.SyncContextFactory; import org.eclipse.aether.impl.VersionRangeResolver; +import org.eclipse.aether.metadata.DefaultMetadata; import org.eclipse.aether.metadata.Metadata; import org.eclipse.aether.repository.ArtifactRepository; import org.eclipse.aether.repository.RemoteRepository; @@ -57,7 +58,6 @@ import org.eclipse.aether.spi.log.Logger; import org.eclipse.aether.spi.log.LoggerFactory; import org.eclipse.aether.spi.log.NullLoggerFactory; -import org.eclipse.aether.util.metadata.DefaultMetadata; import org.eclipse.aether.util.version.GenericVersionScheme; import org.eclipse.aether.version.InvalidVersionSpecificationException; import org.eclipse.aether.version.Version; diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java index 7c4631139..5af712190 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -51,6 +51,7 @@ import org.eclipse.aether.impl.SyncContextFactory; import org.eclipse.aether.impl.VersionResolver; import org.eclipse.aether.internal.impl.CacheUtils; +import org.eclipse.aether.metadata.DefaultMetadata; import org.eclipse.aether.metadata.Metadata; import org.eclipse.aether.repository.ArtifactRepository; import org.eclipse.aether.repository.LocalRepository; @@ -68,7 +69,6 @@ import org.eclipse.aether.spi.log.LoggerFactory; import org.eclipse.aether.spi.log.NullLoggerFactory; import org.eclipse.aether.util.ConfigUtils; -import org.eclipse.aether.util.metadata.DefaultMetadata; /** * @author Benjamin Bentmann diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java index ff94d050e..624e039e5 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java @@ -22,6 +22,7 @@ import java.util.Properties; import org.eclipse.aether.DefaultRepositorySystemSession; +import org.eclipse.aether.artifact.DefaultArtifactType; import org.eclipse.aether.collection.DependencyGraphTransformer; import org.eclipse.aether.collection.DependencyManager; import org.eclipse.aether.collection.DependencySelector; @@ -31,7 +32,6 @@ import org.eclipse.aether.impl.MetadataGeneratorFactory; import org.eclipse.aether.impl.VersionRangeResolver; import org.eclipse.aether.impl.VersionResolver; -import org.eclipse.aether.util.artifact.DefaultArtifactType; import org.eclipse.aether.util.artifact.DefaultArtifactTypeRegistry; import org.eclipse.aether.util.graph.manager.ClassicDependencyManager; import org.eclipse.aether.util.graph.selector.AndDependencySelector; diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RelocatedArtifact.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RelocatedArtifact.java index b05c5235d..958eb388c 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RelocatedArtifact.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RelocatedArtifact.java @@ -22,8 +22,8 @@ import java.io.File; import java.util.Map; +import org.eclipse.aether.artifact.AbstractArtifact; import org.eclipse.aether.artifact.Artifact; -import org.eclipse.aether.util.artifact.AbstractArtifact; /** * @author Benjamin Bentmann @@ -88,16 +88,6 @@ public String getVersion() } } - public String getBaseVersion() - { - return toBaseVersion( getVersion() ); - } - - public boolean isSnapshot() - { - return isSnapshot( getVersion() ); - } - public String getClassifier() { return artifact.getClassifier(); From 561b4382313aa5f5aff9b47317b2f2ca365c3c69 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Sun, 15 Jan 2012 18:36:21 +0100 Subject: [PATCH 075/224] o Accounted for refactoring of aether-api --- .../repository/internal/MavenMetadata.java | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java index 63f7bc4f0..329f99cb7 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java @@ -23,6 +23,8 @@ import java.io.IOException; import java.io.Reader; import java.io.Writer; +import java.util.Collections; +import java.util.Map; import org.apache.maven.artifact.repository.metadata.Metadata; import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader; @@ -32,12 +34,14 @@ import org.codehaus.plexus.util.WriterFactory; import org.codehaus.plexus.util.xml.pull.XmlPullParserException; import org.eclipse.aether.RepositoryException; +import org.eclipse.aether.metadata.AbstractMetadata; import org.eclipse.aether.metadata.MergeableMetadata; /** * @author Benjamin Bentmann */ abstract class MavenMetadata + extends AbstractMetadata implements MergeableMetadata { @@ -130,24 +134,15 @@ private void write( File metadataFile, Metadata metadata ) } } + public Map getProperties() + { + return Collections.emptyMap(); + } + @Override - public String toString() + public org.eclipse.aether.metadata.Metadata setProperties( Map properties ) { - StringBuilder buffer = new StringBuilder( 128 ); - if ( getGroupId().length() > 0 ) - { - buffer.append( getGroupId() ); - } - if ( getArtifactId().length() > 0 ) - { - buffer.append( ':' ).append( getArtifactId() ); - } - if ( getVersion().length() > 0 ) - { - buffer.append( ':' ).append( getVersion() ); - } - buffer.append( '/' ).append( getType() ); - return buffer.toString(); + return this; } } From cb4420a12a87c5fe2c2611ddcbbb7822ab762dcc Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Sun, 11 Mar 2012 23:18:43 +0100 Subject: [PATCH 076/224] o Accounted for refactoring of aether-api --- .../DefaultArtifactDescriptorReader.java | 18 +++++++++++++++--- .../internal/MavenRepositorySystemUtils.java | 4 ++-- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java index 0b4e6d8cc..60a183c49 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java @@ -69,6 +69,8 @@ import org.eclipse.aether.impl.VersionResolver; import org.eclipse.aether.repository.WorkspaceRepository; import org.eclipse.aether.resolution.ArtifactDescriptorException; +import org.eclipse.aether.resolution.ArtifactDescriptorPolicy; +import org.eclipse.aether.resolution.ArtifactDescriptorPolicyRequest; import org.eclipse.aether.resolution.ArtifactDescriptorRequest; import org.eclipse.aether.resolution.ArtifactDescriptorResult; import org.eclipse.aether.resolution.ArtifactRequest; @@ -293,7 +295,7 @@ private Model loadPom( RepositorySystemSession session, ArtifactDescriptorReques RepositoryException exception = new RepositoryException( "Artifact relocations form a cycle: " + visited ); invalidDescriptor( session, trace, artifact, exception ); - if ( session.isIgnoreInvalidArtifactDescriptor() ) + if ( ( getPolicy( session, artifact, request ) & ArtifactDescriptorPolicy.IGNORE_INVALID ) != 0 ) { return null; } @@ -318,7 +320,7 @@ private Model loadPom( RepositorySystemSession session, ArtifactDescriptorReques if ( e.getCause() instanceof ArtifactNotFoundException ) { missingDescriptor( session, trace, artifact, (Exception) e.getCause() ); - if ( session.isIgnoreMissingArtifactDescriptor() ) + if ( ( getPolicy( session, artifact, request ) & ArtifactDescriptorPolicy.IGNORE_MISSING ) != 0 ) { return null; } @@ -363,7 +365,7 @@ private Model loadPom( RepositorySystemSession session, ArtifactDescriptorReques } } invalidDescriptor( session, trace, artifact, e ); - if ( session.isIgnoreInvalidArtifactDescriptor() ) + if ( ( getPolicy( session, artifact, request ) & ArtifactDescriptorPolicy.IGNORE_INVALID ) != 0 ) { return null; } @@ -488,4 +490,14 @@ private void invalidDescriptor( RepositorySystemSession session, RequestTrace tr repositoryEventDispatcher.dispatch( event.build() ); } + private int getPolicy( RepositorySystemSession session, Artifact artifact, ArtifactDescriptorRequest request ) + { + ArtifactDescriptorPolicy policy = session.getArtifactDescriptorPolicy(); + if ( policy == null ) + { + return ArtifactDescriptorPolicy.STRICT; + } + return policy.getPolicy( session, new ArtifactDescriptorPolicyRequest( artifact, request.getRequestContext() ) ); + } + } diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java index 624e039e5..c88e341ff 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java @@ -44,6 +44,7 @@ import org.eclipse.aether.util.graph.transformer.JavaEffectiveScopeCalculator; import org.eclipse.aether.util.graph.transformer.NearestVersionConflictResolver; import org.eclipse.aether.util.graph.traverser.FatArtifactTraverser; +import org.eclipse.aether.util.repository.SimpleArtifactDescriptorPolicy; /** * A utility class to assist in setting up a Maven-like repository system. Note: This component is meant to @@ -121,8 +122,7 @@ public static DefaultRepositorySystemSession newSession() stereotypes.add( new DefaultArtifactType( "par", "par", "", "java", false, true ) ); session.setArtifactTypeRegistry( stereotypes ); - session.setIgnoreInvalidArtifactDescriptor( true ); - session.setIgnoreMissingArtifactDescriptor( true ); + session.setArtifactDescriptorPolicy( new SimpleArtifactDescriptorPolicy( true, true ) ); Properties sysProps = System.getProperties(); session.setSystemProps( sysProps ); From 42eda0edffb79aa34e7ffcbd3dd5331302ec479a Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Sun, 18 Mar 2012 16:52:54 +0100 Subject: [PATCH 077/224] o Accounted for refactoring of aether-api --- .../maven/repository/internal/MavenRepositorySystemUtils.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java index c88e341ff..d60363895 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java @@ -125,8 +125,8 @@ public static DefaultRepositorySystemSession newSession() session.setArtifactDescriptorPolicy( new SimpleArtifactDescriptorPolicy( true, true ) ); Properties sysProps = System.getProperties(); - session.setSystemProps( sysProps ); - session.setConfigProps( sysProps ); + session.setSystemProperties( sysProps ); + session.setConfigProperties( sysProps ); return session; } From 45ab3b14cd0c400e45d4834a0f8607a747497269 Mon Sep 17 00:00:00 2001 From: Herve Boutemy Date: Sat, 29 Sep 2012 11:58:53 +0000 Subject: [PATCH 078/224] Mojo don't get Plexus components injection but plugin parameter injection: added a link git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1391786 13f79535-47bb-0310-9956-ffa450edef68 --- .../maven/repository/internal/MavenServiceLocator.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenServiceLocator.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenServiceLocator.java index db55665f2..f0beaeb93 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenServiceLocator.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenServiceLocator.java @@ -27,9 +27,12 @@ /** * A simple service locator that is already setup with all components from this library. To acquire a complete - * repository system, clients need to add some repository connectors for remote transfers. Note: This component - * is meant to assist those clients that employ the repository systems outside of an IoC container, Maven plugins - * should instead always use regular dependency injection to acquire the repository system. + * repository system, clients need to add some repository connectors for remote transfers. + * + * Note: This component is meant to assist those clients that employ the repository systems outside of an IoC + * container, Maven plugins should instead always use + * regular + * plugin parameter injection to acquire the repository system. * * @author Benjamin Bentmann */ From 6a9b85785e03d50597011219241b4b348337aa44 Mon Sep 17 00:00:00 2001 From: Herve Boutemy Date: Sat, 29 Sep 2012 12:08:02 +0000 Subject: [PATCH 079/224] added a link to Maven core's way of creating repository system session git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1391790 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/maven/repository/internal/MavenServiceLocator.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenServiceLocator.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenServiceLocator.java index f0beaeb93..77d1adcf0 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenServiceLocator.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenServiceLocator.java @@ -32,7 +32,8 @@ * Note: This component is meant to assist those clients that employ the repository systems outside of an IoC * container, Maven plugins should instead always use * regular - * plugin parameter injection to acquire the repository system. + * plugin parameter injection to acquire the repository system (created by Maven in + * DefaultMaven.newRepositorySession(MavenExecutionRequest request)). * * @author Benjamin Bentmann */ From 3a705375fa0340eb06808f2bd03ef3f2d9ff91b1 Mon Sep 17 00:00:00 2001 From: Herve Boutemy Date: Sat, 29 Sep 2012 15:00:59 +0000 Subject: [PATCH 080/224] fixed wrong explanations: repository system is a Plexus component to use instead of MavenServiceLocator, repository system session can be injected as plugin parameter git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1391818 13f79535-47bb-0310-9956-ffa450edef68 --- .../internal/MavenRepositorySystemSession.java | 9 +++++++-- .../maven/repository/internal/MavenServiceLocator.java | 6 ++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemSession.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemSession.java index ffd24158b..5375dfd89 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemSession.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemSession.java @@ -43,8 +43,13 @@ /** * A simplistic repository system session that mimics Maven's behavior to help third-party developers that want to embed - * Maven's dependency resolution into their own applications. Warning: This class is not intended for - * usage by Maven plugins, those should always acquire the current repository system session via parameter injection. + * Maven's dependency resolution into their own applications. + * + *

Warning: This class is not intended for + * usage by Maven plugins, those should always acquire the current repository system session via + * plugin + * parameter injection, since the current repository system session is created by Maven in + * DefaultMaven.newRepositorySession(MavenExecutionRequest request).

* * @author Benjamin Bentmann */ diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenServiceLocator.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenServiceLocator.java index 77d1adcf0..135179c12 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenServiceLocator.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenServiceLocator.java @@ -30,10 +30,8 @@ * repository system, clients need to add some repository connectors for remote transfers. * * Note: This component is meant to assist those clients that employ the repository systems outside of an IoC - * container, Maven plugins should instead always use - * regular - * plugin parameter injection to acquire the repository system (created by Maven in - * DefaultMaven.newRepositorySession(MavenExecutionRequest request)). + * container, Maven plugins should instead always use regular dependency injection to acquire the repository system: + * it is defined as Plexus component in aether-impl with its dependencies. * * @author Benjamin Bentmann */ From ed093f9c3bbd43d0baf00fd614cb201ec0f8ed19 Mon Sep 17 00:00:00 2001 From: Herve Boutemy Date: Sat, 29 Sep 2012 15:03:58 +0000 Subject: [PATCH 081/224] formatting git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1391819 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/maven/repository/internal/MavenServiceLocator.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenServiceLocator.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenServiceLocator.java index 135179c12..f0a45f588 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenServiceLocator.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenServiceLocator.java @@ -29,9 +29,9 @@ * A simple service locator that is already setup with all components from this library. To acquire a complete * repository system, clients need to add some repository connectors for remote transfers. * - * Note: This component is meant to assist those clients that employ the repository systems outside of an IoC + *

Note: This component is meant to assist those clients that employ the repository systems outside of an IoC * container, Maven plugins should instead always use regular dependency injection to acquire the repository system: - * it is defined as Plexus component in aether-impl with its dependencies. + * it is defined as Plexus component in aether-impl with its dependencies.

* * @author Benjamin Bentmann */ From 6e49161fdd59172d8e12101d64a12bc8ce58664d Mon Sep 17 00:00:00 2001 From: Herve Boutemy Date: Sat, 29 Sep 2012 17:30:48 +0000 Subject: [PATCH 082/224] added an introduction with links to the 2 main components git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1391846 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/src/site/apt/index.apt | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 maven-aether-provider/src/site/apt/index.apt diff --git a/maven-aether-provider/src/site/apt/index.apt b/maven-aether-provider/src/site/apt/index.apt new file mode 100644 index 000000000..00c0b13f7 --- /dev/null +++ b/maven-aether-provider/src/site/apt/index.apt @@ -0,0 +1,19 @@ + ----- + Introduction + ----- + Hervé Boutemy + ----- + 2012-09-29 + ----- + +Maven Aether Provider + + Maven Aether Provider is an Aether extension to support Maven POMs and local+remote repositories. + + Main component is <<>> + ({{{./apidocs/org/apache/maven/repository/internal/MavenRepositorySystemSession.html}javadoc}}, + {{{./xref/org/apache/maven/repository/internal/MavenRepositorySystemSession.html}source}}). + + If used outside Maven runtime context, another useful entry point is <<>> + ({{{./apidocs/org/apache/maven/repository/internal/MavenServiceLocator.html}javadoc}}, + {{{./xref/org/apache/maven/repository/internal/MavenServiceLocator.html}source}}). From 286387229be32dd61b702c75367948f493dd4938 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Sun, 30 Sep 2012 17:37:09 +0200 Subject: [PATCH 083/224] Accounted for refactoring of aether-api --- .../repository/internal/ArtifactDescriptorUtils.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorUtils.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorUtils.java index c4def8a1a..85158037d 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorUtils.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorUtils.java @@ -49,11 +49,11 @@ public static Artifact toPomArtifact( Artifact artifact ) public static RemoteRepository toRemoteRepository( Repository repository ) { - RemoteRepository result = - new RemoteRepository( repository.getId(), repository.getLayout(), repository.getUrl() ); - result.setPolicy( true, toRepositoryPolicy( repository.getSnapshots() ) ); - result.setPolicy( false, toRepositoryPolicy( repository.getReleases() ) ); - return result; + RemoteRepository.Builder builder = + new RemoteRepository.Builder( repository.getId(), repository.getLayout(), repository.getUrl() ); + builder.setSnapshotPolicy( toRepositoryPolicy( repository.getSnapshots() ) ); + builder.setReleasePolicy( toRepositoryPolicy( repository.getReleases() ) ); + return builder.build(); } public static RepositoryPolicy toRepositoryPolicy( org.apache.maven.model.RepositoryPolicy policy ) From 80d5aaee565d35f521b429ec198af0c255ca372d Mon Sep 17 00:00:00 2001 From: Herve Boutemy Date: Sun, 7 Oct 2012 09:14:21 +0000 Subject: [PATCH 084/224] next version will be 3.1 (Jira updated accordingly: 3.1 renamed to 3.2) git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1395257 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 249cd209c..61fefbda6 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.0.5-SNAPSHOT + 3.1-SNAPSHOT maven-aether-provider From a708bf233b5d254f06a87a36b1c1737b31ffe82d Mon Sep 17 00:00:00 2001 From: Herve Boutemy Date: Sat, 20 Oct 2012 21:44:11 +0000 Subject: [PATCH 085/224] first step at component unit-tests git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1400523 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 14 ++ .../internal/RepositorySystemTest.java | 98 +++++++++ .../util/ConsoleRepositoryListener.java | 132 +++++++++++++ .../util/ConsoleTransferListener.java | 186 ++++++++++++++++++ .../ut/simple/artifact/1.0/artifact-1.0.jar | 0 .../ut/simple/artifact/1.0/artifact-1.0.pom | 42 ++++ .../ut/simple/artifact/maven-metadata.xml | 34 ++++ .../simple/dependency/1.0/dependency-1.0.jar | 0 .../simple/dependency/1.0/dependency-1.0.pom | 31 +++ .../ut/simple/dependency/maven-metadata.xml | 34 ++++ .../repo/ut/simple/parent/1.0/parent-1.0.pom | 43 ++++ .../repo/ut/simple/parent/maven-metadata.xml | 34 ++++ 12 files changed, 648 insertions(+) create mode 100644 maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java create mode 100644 maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleRepositoryListener.java create mode 100644 maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleTransferListener.java create mode 100644 maven-aether-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.jar create mode 100644 maven-aether-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.pom create mode 100644 maven-aether-provider/src/test/resources/repo/ut/simple/artifact/maven-metadata.xml create mode 100644 maven-aether-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0.jar create mode 100644 maven-aether-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0.pom create mode 100644 maven-aether-provider/src/test/resources/repo/ut/simple/dependency/maven-metadata.xml create mode 100644 maven-aether-provider/src/test/resources/repo/ut/simple/parent/1.0/parent-1.0.pom create mode 100644 maven-aether-provider/src/test/resources/repo/ut/simple/parent/maven-metadata.xml diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 61fefbda6..6c611771d 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -65,6 +65,20 @@ under the License. org.sonatype.aether aether-impl + + org.sonatype.aether + aether-connector-wagon + test + + + org.apache.maven.wagon + wagon-file + test + + + org.sonatype.sisu + sisu-inject-plexus + org.codehaus.plexus plexus-component-annotations diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java new file mode 100644 index 000000000..e41bb8ce6 --- /dev/null +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java @@ -0,0 +1,98 @@ +package org.apache.maven.repository.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 java.net.MalformedURLException; + +import org.apache.maven.repository.internal.util.ConsoleRepositoryListener; +import org.apache.maven.repository.internal.util.ConsoleTransferListener; +import org.codehaus.plexus.PlexusTestCase; +import org.sonatype.aether.artifact.Artifact; +import org.sonatype.aether.collection.CollectRequest; +import org.sonatype.aether.collection.CollectResult; +import org.sonatype.aether.graph.Dependency; +import org.sonatype.aether.repository.LocalRepository; +import org.sonatype.aether.repository.RemoteRepository; +import org.sonatype.aether.util.artifact.DefaultArtifact; +import org.sonatype.aether.RepositorySystem; +import org.sonatype.aether.RepositorySystemSession; + +public class RepositorySystemTest + extends PlexusTestCase +{ + protected RepositorySystem system; + + protected RepositorySystemSession session; + + @Override + protected void setUp() + throws Exception + { + system = lookup( RepositorySystem.class ); + session = newMavenRepositorySystemSession( system ); + } + + @Override + protected void tearDown() + throws Exception + { + session = null; + system = null; + super.tearDown(); + } + + public void testCollectDependencies() + throws Exception + { + String artifactCoords = "ut.simple:artifact:1.0"; // TODO test extension:classifier + Artifact artifact = new DefaultArtifact( artifactCoords ); + + CollectRequest collectRequest = new CollectRequest(); + collectRequest.setRoot( new Dependency( artifact, "" ) ); + collectRequest.addRepository( newTestRepository() ); + + CollectResult collectResult = system.collectDependencies( session, collectRequest ); + + assertEquals( 1, collectResult.getRoot().getChildren().size() ); + Artifact dep = collectResult.getRoot().getChildren().get( 0 ).getDependency().getArtifact(); + assertEquals( "ut.simple", dep.getGroupId() ); + assertEquals( "dependency", dep.getArtifactId() ); + assertEquals( "1.0", dep.getVersion() ); + } + + public static RepositorySystemSession newMavenRepositorySystemSession( RepositorySystem system ) + { + MavenRepositorySystemSession session = new MavenRepositorySystemSession(); + + LocalRepository localRepo = new LocalRepository( "target/local-repo" ); + session.setLocalRepositoryManager( system.newLocalRepositoryManager( localRepo ) ); + + session.setTransferListener( new ConsoleTransferListener() ); + session.setRepositoryListener( new ConsoleRepositoryListener() ); + + return session; + } + + public static RemoteRepository newTestRepository() + throws MalformedURLException + { + return new RemoteRepository( "repo", "default", getTestFile( "target/test-classes/repo" ).toURI().toURL().toString() ); + } +} diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleRepositoryListener.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleRepositoryListener.java new file mode 100644 index 000000000..2eec34894 --- /dev/null +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleRepositoryListener.java @@ -0,0 +1,132 @@ +package org.apache.maven.repository.internal.util; + +/* + * 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 java.io.PrintStream; + +import org.sonatype.aether.AbstractRepositoryListener; +import org.sonatype.aether.RepositoryEvent; + +public class ConsoleRepositoryListener + extends AbstractRepositoryListener +{ + + private PrintStream out; + + public ConsoleRepositoryListener() + { + this( null ); + } + + public ConsoleRepositoryListener( PrintStream out ) + { + this.out = ( out != null ) ? out : System.out; + } + + public void artifactDeployed( RepositoryEvent event ) + { + println( "artifactDeployed", event.getArtifact() + " to " + event.getRepository() ); + } + + public void artifactDeploying( RepositoryEvent event ) + { + println( "artifactDeploying", event.getArtifact() + " to " + event.getRepository() ); + } + + public void artifactDescriptorInvalid( RepositoryEvent event ) + { + println( "artifactDescriptorInvalid", "for " + event.getArtifact() + ": " + event.getException().getMessage() ); + } + + public void artifactDescriptorMissing( RepositoryEvent event ) + { + println( "artifactDescriptorMissing", "for " + event.getArtifact() ); + } + + public void artifactInstalled( RepositoryEvent event ) + { + println( "artifactInstalled", event.getArtifact() + " to " + event.getFile() ); + } + + public void artifactInstalling( RepositoryEvent event ) + { + println( "artifactInstalling", event.getArtifact() + " to " + event.getFile() ); + } + + public void artifactResolved( RepositoryEvent event ) + { + println( "artifactResolved", event.getArtifact() + " from " + event.getRepository() ); + } + + public void artifactDownloading( RepositoryEvent event ) + { + println( "artifactDownloading", event.getArtifact() + " from " + event.getRepository() ); + } + + public void artifactDownloaded( RepositoryEvent event ) + { + println( "artifactDownloaded", event.getArtifact() + " from " + event.getRepository() ); + } + + public void artifactResolving( RepositoryEvent event ) + { + println( "artifactResolving", event.getArtifact().toString() ); + } + + public void metadataDeployed( RepositoryEvent event ) + { + println( "metadataDeployed", event.getMetadata() + " to " + event.getRepository() ); + } + + public void metadataDeploying( RepositoryEvent event ) + { + println( "metadataDeploying", event.getMetadata() + " to " + event.getRepository() ); + } + + public void metadataInstalled( RepositoryEvent event ) + { + println( "metadataInstalled", event.getMetadata() + " to " + event.getFile() ); + } + + public void metadataInstalling( RepositoryEvent event ) + { + println( "metadataInstalling", event.getMetadata() + " to " + event.getFile() ); + } + + public void metadataInvalid( RepositoryEvent event ) + { + println( "metadataInvalid", event.getMetadata().toString() ); + } + + public void metadataResolved( RepositoryEvent event ) + { + println( "metadataResolved", event.getMetadata() + " from " + event.getRepository() ); + } + + public void metadataResolving( RepositoryEvent event ) + { + println( "metadataResolving", event.getMetadata() + " from " + event.getRepository() ); + } + + private void println( String event, String message ) + { + out.println( "Aether Repository - " + event + ": " + message ); + } +} diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleTransferListener.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleTransferListener.java new file mode 100644 index 000000000..920298a12 --- /dev/null +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleTransferListener.java @@ -0,0 +1,186 @@ +package org.apache.maven.repository.internal.util; + +/* + * 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 java.io.PrintStream; +import java.text.DecimalFormat; +import java.text.DecimalFormatSymbols; +import java.util.Locale; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +import org.sonatype.aether.transfer.AbstractTransferListener; +import org.sonatype.aether.transfer.TransferEvent; +import org.sonatype.aether.transfer.TransferResource; + +public class ConsoleTransferListener + extends AbstractTransferListener +{ + + private PrintStream out; + + private Map downloads = new ConcurrentHashMap(); + + private int lastLength; + + public ConsoleTransferListener() + { + this( null ); + } + + public ConsoleTransferListener( PrintStream out ) + { + this.out = ( out != null ) ? out : System.out; + } + + @Override + public void transferInitiated( TransferEvent event ) + { + String message = event.getRequestType() == TransferEvent.RequestType.PUT ? "Uploading" : "Downloading"; + + println( "transferInitiated", message + ": " + event.getResource().getRepositoryUrl() + event.getResource().getResourceName() ); + } + + @Override + public void transferProgressed( TransferEvent event ) + { + TransferResource resource = event.getResource(); + downloads.put( resource, Long.valueOf( event.getTransferredBytes() ) ); + + StringBuilder buffer = new StringBuilder( 64 ); + + for ( Map.Entry entry : downloads.entrySet() ) + { + long total = entry.getKey().getContentLength(); + long complete = entry.getValue().longValue(); + + buffer.append( getStatus( complete, total ) ).append( " " ); + } + + int pad = lastLength - buffer.length(); + lastLength = buffer.length(); + pad( buffer, pad ); + buffer.append( '\r' ); + + print( "transferProgressed", buffer.toString() ); + } + + private String getStatus( long complete, long total ) + { + if ( total >= 1024 ) + { + return toKB( complete ) + "/" + toKB( total ) + " KB "; + } + else if ( total >= 0 ) + { + return complete + "/" + total + " B "; + } + else if ( complete >= 1024 ) + { + return toKB( complete ) + " KB "; + } + else + { + return complete + " B "; + } + } + + private void pad( StringBuilder buffer, int spaces ) + { + String block = " "; + while ( spaces > 0 ) + { + int n = Math.min( spaces, block.length() ); + buffer.append( block, 0, n ); + spaces -= n; + } + } + + @Override + public void transferSucceeded( TransferEvent event ) + { + transferCompleted( event ); + + TransferResource resource = event.getResource(); + long contentLength = event.getTransferredBytes(); + if ( contentLength >= 0 ) + { + String type = ( event.getRequestType() == TransferEvent.RequestType.PUT ? "Uploaded" : "Downloaded" ); + String len = contentLength >= 1024 ? toKB( contentLength ) + " KB" : contentLength + " B"; + + String throughput = ""; + long duration = System.currentTimeMillis() - resource.getTransferStartTime(); + if ( duration > 0 ) + { + DecimalFormat format = new DecimalFormat( "0.0", new DecimalFormatSymbols( Locale.ENGLISH ) ); + double kbPerSec = ( contentLength / 1024.0 ) / ( duration / 1000.0 ); + throughput = " at " + format.format( kbPerSec ) + " KB/sec"; + } + + println( "transferSucceeded", type + ": " + resource.getRepositoryUrl() + resource.getResourceName() + " (" + + len + throughput + ")" ); + } + } + + @Override + public void transferFailed( TransferEvent event ) + { + transferCompleted( event ); + + println( "transferFailed", event.getException().getClass() + ": " + event.getException().getMessage() ); + } + + private void transferCompleted( TransferEvent event ) + { + downloads.remove( event.getResource() ); + + StringBuilder buffer = new StringBuilder( 64 ); + pad( buffer, lastLength ); + buffer.append( '\r' ); + out.println( buffer ); + } + + @Override + public void transferCorrupted( TransferEvent event ) + { + println( "transferCorrupted", event.getException().getClass() + ": " + event.getException().getMessage() ); + } + + protected long toKB( long bytes ) + { + return ( bytes + 1023 ) / 1024; + } + + private void println( String event, String message ) + { + print( event, message ); + out.println(); + } + + private void print( String event, String message ) + { + out.print( "Aether Transfer - " + event ); + if ( message != null ) + { + out.print( ": " ); + out.print( message ); + } + } +} diff --git a/maven-aether-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.jar b/maven-aether-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.jar new file mode 100644 index 000000000..e69de29bb diff --git a/maven-aether-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.pom b/maven-aether-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.pom new file mode 100644 index 000000000..72cba879d --- /dev/null +++ b/maven-aether-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.pom @@ -0,0 +1,42 @@ + + + + + + 4.0.0 + + + ut.simple + parent + 1.0 + + + artifact + + Simple Unit Test Artifact + + + + ut.simple + dependency + + + \ No newline at end of file diff --git a/maven-aether-provider/src/test/resources/repo/ut/simple/artifact/maven-metadata.xml b/maven-aether-provider/src/test/resources/repo/ut/simple/artifact/maven-metadata.xml new file mode 100644 index 000000000..2de7eccf4 --- /dev/null +++ b/maven-aether-provider/src/test/resources/repo/ut/simple/artifact/maven-metadata.xml @@ -0,0 +1,34 @@ + + + + + + ut.simple + artifact + + 1.0 + 1.0 + + 1.0 + + 20111123122038 + + \ No newline at end of file diff --git a/maven-aether-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0.jar b/maven-aether-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0.jar new file mode 100644 index 000000000..e69de29bb diff --git a/maven-aether-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0.pom b/maven-aether-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0.pom new file mode 100644 index 000000000..c021dfac1 --- /dev/null +++ b/maven-aether-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0.pom @@ -0,0 +1,31 @@ + + + + + + 4.0.0 + + ut.simple + dependency + 1.0 + + Simple Unit Test Dependency + \ No newline at end of file diff --git a/maven-aether-provider/src/test/resources/repo/ut/simple/dependency/maven-metadata.xml b/maven-aether-provider/src/test/resources/repo/ut/simple/dependency/maven-metadata.xml new file mode 100644 index 000000000..8a97c3411 --- /dev/null +++ b/maven-aether-provider/src/test/resources/repo/ut/simple/dependency/maven-metadata.xml @@ -0,0 +1,34 @@ + + + + + + ut.simple + dependency + + 1.0 + 1.0 + + 1.0 + + 20111123122038 + + \ No newline at end of file diff --git a/maven-aether-provider/src/test/resources/repo/ut/simple/parent/1.0/parent-1.0.pom b/maven-aether-provider/src/test/resources/repo/ut/simple/parent/1.0/parent-1.0.pom new file mode 100644 index 000000000..ed64c9e69 --- /dev/null +++ b/maven-aether-provider/src/test/resources/repo/ut/simple/parent/1.0/parent-1.0.pom @@ -0,0 +1,43 @@ + + + + + + 4.0.0 + + ut.simple + parent + 1.0 + pom + + Simple Unit Test Parent + + + + + ut.simple + dependency + 1.0 + + + + + \ No newline at end of file diff --git a/maven-aether-provider/src/test/resources/repo/ut/simple/parent/maven-metadata.xml b/maven-aether-provider/src/test/resources/repo/ut/simple/parent/maven-metadata.xml new file mode 100644 index 000000000..7199d52a3 --- /dev/null +++ b/maven-aether-provider/src/test/resources/repo/ut/simple/parent/maven-metadata.xml @@ -0,0 +1,34 @@ + + + + + + ut.simple + parent + + 1.0 + 1.0 + + 1.0 + + 20111123122038 + + \ No newline at end of file From fc240f161595efda2bf52a1bcbb5cd25e4d06d28 Mon Sep 17 00:00:00 2001 From: Herve Boutemy Date: Wed, 24 Oct 2012 22:39:12 +0000 Subject: [PATCH 086/224] check as much attributes as possible git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1401907 13f79535-47bb-0310-9956-ffa450edef68 --- .../internal/RepositorySystemTest.java | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java index e41bb8ce6..c2a679ed7 100644 --- a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java @@ -71,10 +71,24 @@ public void testCollectDependencies() CollectResult collectResult = system.collectDependencies( session, collectRequest ); assertEquals( 1, collectResult.getRoot().getChildren().size() ); - Artifact dep = collectResult.getRoot().getChildren().get( 0 ).getDependency().getArtifact(); - assertEquals( "ut.simple", dep.getGroupId() ); - assertEquals( "dependency", dep.getArtifactId() ); - assertEquals( "1.0", dep.getVersion() ); + Dependency dep = collectResult.getRoot().getChildren().get( 0 ).getDependency(); + assertEquals( "compile", dep.getScope() ); + assertFalse( dep.isOptional() ); + assertEquals( 0, dep.getExclusions().size() ); + Artifact depArtifact = dep.getArtifact(); + assertEquals( "ut.simple", depArtifact.getGroupId() ); + assertEquals( "dependency", depArtifact.getArtifactId() ); + assertEquals( "1.0", depArtifact.getVersion() ); + assertEquals( "1.0", depArtifact.getBaseVersion() ); + assertNull( depArtifact.getFile() ); + assertFalse( depArtifact.isSnapshot() ); + assertEquals( "", depArtifact.getClassifier() ); + assertEquals( "jar", depArtifact.getExtension() ); + assertEquals( "java", depArtifact.getProperty( "language", null ) ); + assertEquals( "jar", depArtifact.getProperty( "type", null ) ); + assertEquals( "true", depArtifact.getProperty( "constitutesBuildPath", null ) ); + assertEquals( "false", depArtifact.getProperty( "includesDependencies", null ) ); + assertEquals( 4, depArtifact.getProperties().size() ); } public static RepositorySystemSession newMavenRepositorySystemSession( RepositorySystem system ) From c509f60ebacf5bf4aa3b8e8244e6d38677939cf0 Mon Sep 17 00:00:00 2001 From: Robert Scholte Date: Fri, 26 Oct 2012 21:40:51 +0000 Subject: [PATCH 087/224] [MNG-5324] Incorrect parsing of metadata by Maven: Cannot find snapshot artifact with older timestamp Added junit-test, can't reproduce it yet. git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1402675 13f79535-47bb-0310-9956-ffa450edef68 --- .../internal/DefaultVersionResolverTest.java | 130 ++++++++++++++++++ .../07.20.3-SNAPSHOT/maven-metadata.xml | 26 ++++ 2 files changed, 156 insertions(+) create mode 100644 maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionResolverTest.java create mode 100644 maven-aether-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5324/07.20.3-SNAPSHOT/maven-metadata.xml diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionResolverTest.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionResolverTest.java new file mode 100644 index 000000000..e596cb426 --- /dev/null +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionResolverTest.java @@ -0,0 +1,130 @@ +package org.apache.maven.repository.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 java.net.MalformedURLException; + +import org.apache.maven.repository.internal.util.ConsoleRepositoryListener; +import org.apache.maven.repository.internal.util.ConsoleTransferListener; +import org.codehaus.plexus.PlexusTestCase; +import org.sonatype.aether.RepositorySystem; +import org.sonatype.aether.RepositorySystemSession; +import org.sonatype.aether.artifact.Artifact; +import org.sonatype.aether.impl.VersionResolver; +import org.sonatype.aether.repository.LocalRepository; +import org.sonatype.aether.repository.RemoteRepository; +import org.sonatype.aether.resolution.VersionRequest; +import org.sonatype.aether.resolution.VersionResult; +import org.sonatype.aether.util.artifact.DefaultArtifact; + +public class DefaultVersionResolverTest + extends PlexusTestCase +{ + private DefaultVersionResolver versionResolver; + + private RepositorySystem system; + + private RepositorySystemSession session; + + @Override + protected void setUp() + throws Exception + { + // be sure we're testing the right class, i.e. DefaultVersionResolver.class + versionResolver = (DefaultVersionResolver) lookup( VersionResolver.class, "default" ); + system = lookup( RepositorySystem.class ); + session = newMavenRepositorySystemSession( system ); + } + + @Override + protected void tearDown() + throws Exception + { + versionResolver = null; + super.tearDown(); + } + + public void testResolveSeparateInstalledClassifiedNonUniqueVersionedArtifacts() + throws Exception + { + VersionRequest requestB = new VersionRequest(); + requestB.addRepository( newTestRepository() ); + Artifact artifactB = + new DefaultArtifact( "org.apache.maven.its", "dep-mng5324", "classifierB", "jar", "07.20.3-SNAPSHOT" ); + requestB.setArtifact( artifactB ); + + VersionResult resultB = versionResolver.resolveVersion( session, requestB ); + assertEquals( "07.20.3-20120809.112920-97", resultB.getVersion() ); + + VersionRequest requestA = new VersionRequest(); + requestA.addRepository( newTestRepository() ); + + Artifact artifactA = + new DefaultArtifact( "org.apache.maven.its", "dep-mng5324", "classifierA", "jar", "07.20.3-SNAPSHOT" ); + requestA.setArtifact( artifactA ); + + VersionResult resultA = versionResolver.resolveVersion( session, requestA ); + assertEquals( "07.20.3-20120809.112124-88", resultA.getVersion() ); + } + + public void testResolveSeparateInstalledClassifiedNonVersionedArtifacts() + throws Exception + { + VersionRequest requestA = new VersionRequest(); + requestA.addRepository( newTestRepository() ); + String versionA = "07.20.3-20120809.112124-88"; + Artifact artifactA = + new DefaultArtifact( "org.apache.maven.its", "dep-mng5324", "classifierA", "jar", versionA ); + requestA.setArtifact( artifactA ); + + VersionResult resultA = versionResolver.resolveVersion( session, requestA ); + assertEquals( versionA, resultA.getVersion() ); + + VersionRequest requestB = new VersionRequest(); + requestB.addRepository( newTestRepository() ); + String versionB = "07.20.3-20120809.112920-97"; + Artifact artifactB = + new DefaultArtifact( "org.apache.maven.its", "dep-mng5324", "classifierB", "jar", versionB ); + requestB.setArtifact( artifactB ); + + VersionResult resultB = versionResolver.resolveVersion( session, requestB ); + assertEquals( versionB, resultB.getVersion() ); + } + + public static RepositorySystemSession newMavenRepositorySystemSession( RepositorySystem system ) + { + MavenRepositorySystemSession session = new MavenRepositorySystemSession(); + + LocalRepository localRepo = new LocalRepository( "target/local-repo" ); + session.setLocalRepositoryManager( system.newLocalRepositoryManager( localRepo ) ); + + session.setTransferListener( new ConsoleTransferListener() ); + session.setRepositoryListener( new ConsoleRepositoryListener() ); + + return session; + } + + public static RemoteRepository newTestRepository() + throws MalformedURLException + { + return new RemoteRepository( "repo", "default", + getTestFile( "target/test-classes/repo" ).toURI().toURL().toString() ); + } +} diff --git a/maven-aether-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5324/07.20.3-SNAPSHOT/maven-metadata.xml b/maven-aether-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5324/07.20.3-SNAPSHOT/maven-metadata.xml new file mode 100644 index 000000000..d8a802f76 --- /dev/null +++ b/maven-aether-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5324/07.20.3-SNAPSHOT/maven-metadata.xml @@ -0,0 +1,26 @@ + + org.apache.maven.its + dep-mng5324 + 07.20.3-SNAPSHOT + + + 20120809.112920 + 97 + + 20120809112920 + + + classifierA + jar + 07.20.3-20120809.112124-88 + 20120809112124 + + + classifierB + jar + 07.20.3-20120809.112920-97 + 20120809112920 + + + + \ No newline at end of file From d49980bc80c323343e13985aa12ab8690b3a4402 Mon Sep 17 00:00:00 2001 From: Robert Scholte Date: Fri, 26 Oct 2012 22:14:17 +0000 Subject: [PATCH 088/224] [MNG-5365] Replace Aether's deprecated ConfigurationProperties with ConfigUtils git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1402701 13f79535-47bb-0310-9956-ffa450edef68 --- .../repository/internal/DefaultVersionResolver.java | 13 +++++++------ .../internal/LocalSnapshotMetadataGenerator.java | 4 ++-- .../internal/RemoteSnapshotMetadataGenerator.java | 4 ++-- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java index 7c0f85f42..cdc025293 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -36,15 +36,11 @@ import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.util.IOUtil; import org.codehaus.plexus.util.StringUtils; -import org.sonatype.aether.ConfigurationProperties; import org.sonatype.aether.RepositoryCache; -import org.sonatype.aether.RequestTrace; import org.sonatype.aether.RepositoryEvent.EventType; import org.sonatype.aether.RepositorySystemSession; +import org.sonatype.aether.RequestTrace; import org.sonatype.aether.SyncContext; -import org.sonatype.aether.util.DefaultRequestTrace; -import org.sonatype.aether.util.listener.DefaultRepositoryEvent; -import org.sonatype.aether.util.metadata.DefaultMetadata; import org.sonatype.aether.artifact.Artifact; import org.sonatype.aether.impl.MetadataResolver; import org.sonatype.aether.impl.RepositoryEventDispatcher; @@ -66,6 +62,10 @@ import org.sonatype.aether.spi.locator.ServiceLocator; import org.sonatype.aether.spi.log.Logger; import org.sonatype.aether.spi.log.NullLogger; +import org.sonatype.aether.util.ConfigUtils; +import org.sonatype.aether.util.DefaultRequestTrace; +import org.sonatype.aether.util.listener.DefaultRepositoryEvent; +import org.sonatype.aether.util.metadata.DefaultMetadata; /** * @author Benjamin Bentmann @@ -153,7 +153,8 @@ public VersionResult resolveVersion( RepositorySystemSession session, VersionReq Key cacheKey = null; RepositoryCache cache = session.getCache(); - if ( cache != null && !ConfigurationProperties.get( session, "aether.versionResolver.noCache", false ) ) + + if ( cache != null && !ConfigUtils.getBoolean( session, false, "aether.versionResolver.noCache" ) ) { cacheKey = new Key( session, request ); diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java index 1d318cd4f..9476acc57 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java @@ -24,12 +24,12 @@ import java.util.LinkedHashMap; import java.util.Map; -import org.sonatype.aether.ConfigurationProperties; import org.sonatype.aether.RepositorySystemSession; import org.sonatype.aether.artifact.Artifact; import org.sonatype.aether.impl.MetadataGenerator; import org.sonatype.aether.installation.InstallRequest; import org.sonatype.aether.metadata.Metadata; +import org.sonatype.aether.util.ConfigUtils; /** * @author Benjamin Bentmann @@ -44,7 +44,7 @@ class LocalSnapshotMetadataGenerator public LocalSnapshotMetadataGenerator( RepositorySystemSession session, InstallRequest request ) { - legacyFormat = ConfigurationProperties.get( session.getConfigProperties(), "maven.metadata.legacy", false ); + legacyFormat = ConfigUtils.getBoolean( session.getConfigProperties(), false, "maven.metadata.legacy" ); snapshots = new LinkedHashMap(); } diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java index d56eed8db..9d3bdc6b2 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java @@ -24,12 +24,12 @@ import java.util.LinkedHashMap; import java.util.Map; -import org.sonatype.aether.ConfigurationProperties; import org.sonatype.aether.RepositorySystemSession; import org.sonatype.aether.artifact.Artifact; import org.sonatype.aether.deployment.DeployRequest; import org.sonatype.aether.impl.MetadataGenerator; import org.sonatype.aether.metadata.Metadata; +import org.sonatype.aether.util.ConfigUtils; /** * @author Benjamin Bentmann @@ -44,7 +44,7 @@ class RemoteSnapshotMetadataGenerator public RemoteSnapshotMetadataGenerator( RepositorySystemSession session, DeployRequest request ) { - legacyFormat = ConfigurationProperties.get( session.getConfigProperties(), "maven.metadata.legacy", false ); + legacyFormat = ConfigUtils.getBoolean( session.getConfigProperties(), false, "maven.metadata.legacy" ); snapshots = new LinkedHashMap(); From 36139ea1ba6ca9993df3185c7fe6b7c53b48d88f Mon Sep 17 00:00:00 2001 From: Herve Boutemy Date: Sat, 27 Oct 2012 12:20:37 +0000 Subject: [PATCH 089/224] added dependency with classifier test git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1402786 13f79535-47bb-0310-9956-ffa450edef68 --- .../internal/RepositorySystemTest.java | 23 +++++++++++++++++-- .../ut/simple/artifact/1.0/artifact-1.0.pom | 6 +++++ .../dependency/1.0/dependency-1.0-sources.jar | 0 3 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 maven-aether-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0-sources.jar diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java index c2a679ed7..dc2f18748 100644 --- a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java @@ -65,12 +65,12 @@ public void testCollectDependencies() Artifact artifact = new DefaultArtifact( artifactCoords ); CollectRequest collectRequest = new CollectRequest(); - collectRequest.setRoot( new Dependency( artifact, "" ) ); + collectRequest.setRoot( new Dependency( artifact, null ) ); collectRequest.addRepository( newTestRepository() ); CollectResult collectResult = system.collectDependencies( session, collectRequest ); - assertEquals( 1, collectResult.getRoot().getChildren().size() ); + assertEquals( 2, collectResult.getRoot().getChildren().size() ); Dependency dep = collectResult.getRoot().getChildren().get( 0 ).getDependency(); assertEquals( "compile", dep.getScope() ); assertFalse( dep.isOptional() ); @@ -89,6 +89,25 @@ public void testCollectDependencies() assertEquals( "true", depArtifact.getProperty( "constitutesBuildPath", null ) ); assertEquals( "false", depArtifact.getProperty( "includesDependencies", null ) ); assertEquals( 4, depArtifact.getProperties().size() ); + + dep = collectResult.getRoot().getChildren().get( 1 ).getDependency(); + assertEquals( "compile", dep.getScope() ); + assertFalse( dep.isOptional() ); + assertEquals( 0, dep.getExclusions().size() ); + depArtifact = dep.getArtifact(); + assertEquals( "ut.simple", depArtifact.getGroupId() ); + assertEquals( "dependency", depArtifact.getArtifactId() ); + assertEquals( "1.0", depArtifact.getVersion() ); + assertEquals( "1.0", depArtifact.getBaseVersion() ); + assertNull( depArtifact.getFile() ); + assertFalse( depArtifact.isSnapshot() ); + assertEquals( "sources", depArtifact.getClassifier() ); + assertEquals( "jar", depArtifact.getExtension() ); + assertEquals( "java", depArtifact.getProperty( "language", null ) ); + assertEquals( "jar", depArtifact.getProperty( "type", null ) ); // shouldn't it be java-sources given the classifier? + assertEquals( "true", depArtifact.getProperty( "constitutesBuildPath", null ) ); // shouldn't it be false given the classifier? + assertEquals( "false", depArtifact.getProperty( "includesDependencies", null ) ); + assertEquals( 4, depArtifact.getProperties().size() ); } public static RepositorySystemSession newMavenRepositorySystemSession( RepositorySystem system ) diff --git a/maven-aether-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.pom b/maven-aether-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.pom index 72cba879d..f8b72af51 100644 --- a/maven-aether-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.pom +++ b/maven-aether-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.pom @@ -38,5 +38,11 @@ ut.simple dependency + + ut.simple + dependency + 1.0 + sources +
\ No newline at end of file diff --git a/maven-aether-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0-sources.jar b/maven-aether-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0-sources.jar new file mode 100644 index 000000000..e69de29bb From 3954ffc13f7aab42881c88dea78a35cfa9bdf4ec Mon Sep 17 00:00:00 2001 From: Herve Boutemy Date: Sat, 27 Oct 2012 15:56:50 +0000 Subject: [PATCH 090/224] added comments git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1402814 13f79535-47bb-0310-9956-ffa450edef68 --- .../07.20.3-SNAPSHOT/maven-metadata.xml | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5324/07.20.3-SNAPSHOT/maven-metadata.xml b/maven-aether-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5324/07.20.3-SNAPSHOT/maven-metadata.xml index d8a802f76..db26c6eb3 100644 --- a/maven-aether-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5324/07.20.3-SNAPSHOT/maven-metadata.xml +++ b/maven-aether-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5324/07.20.3-SNAPSHOT/maven-metadata.xml @@ -1,7 +1,30 @@ - + + + + + org.apache.maven.its dep-mng5324 - 07.20.3-SNAPSHOT + 07.20.3-SNAPSHOT 20120809.112920 From a803cc7b81d863d41390dc50406ff2967a0bd845 Mon Sep 17 00:00:00 2001 From: Herve Boutemy Date: Sun, 28 Oct 2012 10:57:40 +0000 Subject: [PATCH 091/224] extracted common code into AbstractRepositoryTestCase git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1402969 13f79535-47bb-0310-9956-ffa450edef68 --- .../internal/AbstractRepositoryTestCase.java | 76 +++++++++++++++++++ .../internal/DefaultVersionResolverTest.java | 38 +--------- .../internal/RepositorySystemTest.java | 51 +------------ 3 files changed, 79 insertions(+), 86 deletions(-) create mode 100644 maven-aether-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java new file mode 100644 index 000000000..366ed9eb9 --- /dev/null +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java @@ -0,0 +1,76 @@ +package org.apache.maven.repository.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 java.net.MalformedURLException; + +import org.apache.maven.repository.internal.util.ConsoleRepositoryListener; +import org.apache.maven.repository.internal.util.ConsoleTransferListener; +import org.codehaus.plexus.PlexusTestCase; +import org.sonatype.aether.RepositorySystem; +import org.sonatype.aether.RepositorySystemSession; +import org.sonatype.aether.repository.LocalRepository; +import org.sonatype.aether.repository.RemoteRepository; + +public abstract class AbstractRepositoryTestCase + extends PlexusTestCase +{ + protected RepositorySystem system; + + protected RepositorySystemSession session; + + @Override + protected void setUp() + throws Exception + { + super.setUp(); + system = lookup( RepositorySystem.class ); + session = newMavenRepositorySystemSession( system ); + } + + @Override + protected void tearDown() + throws Exception + { + session = null; + system = null; + super.tearDown(); + } + + public static RepositorySystemSession newMavenRepositorySystemSession( RepositorySystem system ) + { + MavenRepositorySystemSession session = new MavenRepositorySystemSession(); + + LocalRepository localRepo = new LocalRepository( "target/local-repo" ); + session.setLocalRepositoryManager( system.newLocalRepositoryManager( localRepo ) ); + + session.setTransferListener( new ConsoleTransferListener() ); + session.setRepositoryListener( new ConsoleRepositoryListener() ); + + return session; + } + + public static RemoteRepository newTestRepository() + throws MalformedURLException + { + return new RemoteRepository( "repo", "default", + getTestFile( "target/test-classes/repo" ).toURI().toURL().toString() ); + } +} diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionResolverTest.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionResolverTest.java index e596cb426..39eaaf647 100644 --- a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionResolverTest.java +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionResolverTest.java @@ -19,38 +19,24 @@ * under the License. */ -import java.net.MalformedURLException; - -import org.apache.maven.repository.internal.util.ConsoleRepositoryListener; -import org.apache.maven.repository.internal.util.ConsoleTransferListener; -import org.codehaus.plexus.PlexusTestCase; -import org.sonatype.aether.RepositorySystem; -import org.sonatype.aether.RepositorySystemSession; import org.sonatype.aether.artifact.Artifact; import org.sonatype.aether.impl.VersionResolver; -import org.sonatype.aether.repository.LocalRepository; -import org.sonatype.aether.repository.RemoteRepository; import org.sonatype.aether.resolution.VersionRequest; import org.sonatype.aether.resolution.VersionResult; import org.sonatype.aether.util.artifact.DefaultArtifact; public class DefaultVersionResolverTest - extends PlexusTestCase + extends AbstractRepositoryTestCase { private DefaultVersionResolver versionResolver; - private RepositorySystem system; - - private RepositorySystemSession session; - @Override protected void setUp() throws Exception { + super.setUp(); // be sure we're testing the right class, i.e. DefaultVersionResolver.class versionResolver = (DefaultVersionResolver) lookup( VersionResolver.class, "default" ); - system = lookup( RepositorySystem.class ); - session = newMavenRepositorySystemSession( system ); } @Override @@ -107,24 +93,4 @@ public void testResolveSeparateInstalledClassifiedNonVersionedArtifacts() VersionResult resultB = versionResolver.resolveVersion( session, requestB ); assertEquals( versionB, resultB.getVersion() ); } - - public static RepositorySystemSession newMavenRepositorySystemSession( RepositorySystem system ) - { - MavenRepositorySystemSession session = new MavenRepositorySystemSession(); - - LocalRepository localRepo = new LocalRepository( "target/local-repo" ); - session.setLocalRepositoryManager( system.newLocalRepositoryManager( localRepo ) ); - - session.setTransferListener( new ConsoleTransferListener() ); - session.setRepositoryListener( new ConsoleRepositoryListener() ); - - return session; - } - - public static RemoteRepository newTestRepository() - throws MalformedURLException - { - return new RemoteRepository( "repo", "default", - getTestFile( "target/test-classes/repo" ).toURI().toURL().toString() ); - } } diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java index dc2f18748..7b9f62ede 100644 --- a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java @@ -19,45 +19,15 @@ * under the License. */ -import java.net.MalformedURLException; - -import org.apache.maven.repository.internal.util.ConsoleRepositoryListener; -import org.apache.maven.repository.internal.util.ConsoleTransferListener; -import org.codehaus.plexus.PlexusTestCase; import org.sonatype.aether.artifact.Artifact; import org.sonatype.aether.collection.CollectRequest; import org.sonatype.aether.collection.CollectResult; import org.sonatype.aether.graph.Dependency; -import org.sonatype.aether.repository.LocalRepository; -import org.sonatype.aether.repository.RemoteRepository; import org.sonatype.aether.util.artifact.DefaultArtifact; -import org.sonatype.aether.RepositorySystem; -import org.sonatype.aether.RepositorySystemSession; public class RepositorySystemTest - extends PlexusTestCase + extends AbstractRepositoryTestCase { - protected RepositorySystem system; - - protected RepositorySystemSession session; - - @Override - protected void setUp() - throws Exception - { - system = lookup( RepositorySystem.class ); - session = newMavenRepositorySystemSession( system ); - } - - @Override - protected void tearDown() - throws Exception - { - session = null; - system = null; - super.tearDown(); - } - public void testCollectDependencies() throws Exception { @@ -109,23 +79,4 @@ public void testCollectDependencies() assertEquals( "false", depArtifact.getProperty( "includesDependencies", null ) ); assertEquals( 4, depArtifact.getProperties().size() ); } - - public static RepositorySystemSession newMavenRepositorySystemSession( RepositorySystem system ) - { - MavenRepositorySystemSession session = new MavenRepositorySystemSession(); - - LocalRepository localRepo = new LocalRepository( "target/local-repo" ); - session.setLocalRepositoryManager( system.newLocalRepositoryManager( localRepo ) ); - - session.setTransferListener( new ConsoleTransferListener() ); - session.setRepositoryListener( new ConsoleRepositoryListener() ); - - return session; - } - - public static RemoteRepository newTestRepository() - throws MalformedURLException - { - return new RemoteRepository( "repo", "default", getTestFile( "target/test-classes/repo" ).toURI().toURL().toString() ); - } } From a198d9b1aaf5bae0aed117ea833d5cd16f34b9de Mon Sep 17 00:00:00 2001 From: Herve Boutemy Date: Mon, 29 Oct 2012 08:26:24 +0000 Subject: [PATCH 092/224] added resolveArtifact() API tests git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1403192 13f79535-47bb-0310-9956-ffa450edef68 --- .../internal/RepositorySystemTest.java | 41 ++++++++++++++++++- .../artifact/1.0/artifact-1.0-classifier.zip | 0 .../ut/simple/artifact/1.0/artifact-1.0.zip | 0 3 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 maven-aether-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0-classifier.zip create mode 100644 maven-aether-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.zip diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java index 7b9f62ede..7adb0fda4 100644 --- a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java @@ -23,6 +23,8 @@ import org.sonatype.aether.collection.CollectRequest; import org.sonatype.aether.collection.CollectResult; import org.sonatype.aether.graph.Dependency; +import org.sonatype.aether.resolution.ArtifactRequest; +import org.sonatype.aether.resolution.ArtifactResult; import org.sonatype.aether.util.artifact.DefaultArtifact; public class RepositorySystemTest @@ -31,8 +33,8 @@ public class RepositorySystemTest public void testCollectDependencies() throws Exception { - String artifactCoords = "ut.simple:artifact:1.0"; // TODO test extension:classifier - Artifact artifact = new DefaultArtifact( artifactCoords ); + Artifact artifact = new DefaultArtifact( "ut.simple:artifact:extension:classifier:1.0" ); + // notice: extension and classifier not really used in this test... CollectRequest collectRequest = new CollectRequest(); collectRequest.setRoot( new Dependency( artifact, null ) ); @@ -79,4 +81,39 @@ public void testCollectDependencies() assertEquals( "false", depArtifact.getProperty( "includesDependencies", null ) ); assertEquals( 4, depArtifact.getProperties().size() ); } + + public void testResolveArtifact() + throws Exception + { + Artifact artifact = new DefaultArtifact( "ut.simple:artifact:1.0" ); + + ArtifactRequest artifactRequest = new ArtifactRequest(); + artifactRequest.setArtifact( artifact ); + artifactRequest.addRepository( newTestRepository() ); + + ArtifactResult artifactResult = system.resolveArtifact( session, artifactRequest ); + assertFalse( artifactResult.isMissing() ); + assertTrue( artifactResult.isResolved() ); + artifact = artifactResult.getArtifact(); + assertNotNull( artifact.getFile() ); + assertEquals( "artifact-1.0.jar", artifact.getFile().getName() ); + + artifact = new DefaultArtifact( "ut.simple:artifact:zip:1.0" ); + artifactRequest.setArtifact( artifact ); + artifactResult = system.resolveArtifact( session, artifactRequest ); + assertFalse( artifactResult.isMissing() ); + assertTrue( artifactResult.isResolved() ); + artifact = artifactResult.getArtifact(); + assertNotNull( artifact.getFile() ); + assertEquals( "artifact-1.0.zip", artifact.getFile().getName() ); + + artifact = new DefaultArtifact( "ut.simple:artifact:zip:classifier:1.0" ); + artifactRequest.setArtifact( artifact ); + artifactResult = system.resolveArtifact( session, artifactRequest ); + assertFalse( artifactResult.isMissing() ); + assertTrue( artifactResult.isResolved() ); + artifact = artifactResult.getArtifact(); + assertNotNull( artifact.getFile() ); + assertEquals( "artifact-1.0-classifier.zip", artifact.getFile().getName() ); + } } diff --git a/maven-aether-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0-classifier.zip b/maven-aether-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0-classifier.zip new file mode 100644 index 000000000..e69de29bb diff --git a/maven-aether-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.zip b/maven-aether-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.zip new file mode 100644 index 000000000..e69de29bb From fdff34330772a54892171fd1fc8348d9268e72c4 Mon Sep 17 00:00:00 2001 From: Herve Boutemy Date: Sat, 10 Nov 2012 17:14:21 +0000 Subject: [PATCH 093/224] removed code duplication: maven-core can use base MavenRepositorySystemSession provided by maven-aether-provider as a basis before adding environment configuration git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1407851 13f79535-47bb-0310-9956-ffa450edef68 --- .../MavenRepositorySystemSession.java | 60 +++++++++++-------- .../internal/AbstractRepositoryTestCase.java | 2 +- 2 files changed, 35 insertions(+), 27 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemSession.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemSession.java index 5375dfd89..e6dad6ddf 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemSession.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemSession.java @@ -42,14 +42,15 @@ import org.sonatype.aether.util.repository.DefaultProxySelector; /** - * A simplistic repository system session that mimics Maven's behavior to help third-party developers that want to embed - * Maven's dependency resolution into their own applications. + * The base Maven repository system session, without environment configuration (authentication, mirror, + * proxy, ...). * *

Warning: This class is not intended for * usage by Maven plugins, those should always acquire the current repository system session via * plugin * parameter injection, since the current repository system session is created by Maven in - * DefaultMaven.newRepositorySession(MavenExecutionRequest request).

+ * + * DefaultMaven.newRepositorySession(MavenExecutionRequest request).

* * @author Benjamin Bentmann */ @@ -58,17 +59,17 @@ public class MavenRepositorySystemSession { /** - * Creates a new Maven-like repository system session by initializing the session with values typical for + * Creates a new Maven repository system session by initializing the session with values typical for * Maven-based resolution. In more detail, this constructor configures settings relevant for the processing of * dependency graphs, most other settings remain at their generic default value. Use the various setters to further * configure the session with authentication, mirror, proxy and other information required for your environment. + * + * @param standalone is this instance expected to be used inside Maven, with Plexus and Maven core components, or + * standalone? If standalone, System properties are used and classical Maven artifact handlers are pre-configured + * to mimic complete Maven repository system session. */ - public MavenRepositorySystemSession() + public MavenRepositorySystemSession( boolean standalone ) { - setMirrorSelector( new DefaultMirrorSelector() ); - setAuthenticationSelector( new DefaultAuthenticationSelector() ); - setProxySelector( new DefaultProxySelector() ); - DependencyTraverser depTraverser = new FatArtifactTraverser(); setDependencyTraverser( depTraverser ); @@ -86,26 +87,33 @@ public MavenRepositorySystemSession() new JavaDependencyContextRefiner() ); setDependencyGraphTransformer( transformer ); - DefaultArtifactTypeRegistry stereotypes = new DefaultArtifactTypeRegistry(); - stereotypes.add( new DefaultArtifactType( "pom" ) ); - stereotypes.add( new DefaultArtifactType( "maven-plugin", "jar", "", "java" ) ); - stereotypes.add( new DefaultArtifactType( "jar", "jar", "", "java" ) ); - stereotypes.add( new DefaultArtifactType( "ejb", "jar", "", "java" ) ); - stereotypes.add( new DefaultArtifactType( "ejb-client", "jar", "client", "java" ) ); - stereotypes.add( new DefaultArtifactType( "test-jar", "jar", "tests", "java" ) ); - stereotypes.add( new DefaultArtifactType( "javadoc", "jar", "javadoc", "java" ) ); - stereotypes.add( new DefaultArtifactType( "java-source", "jar", "sources", "java", false, false ) ); - stereotypes.add( new DefaultArtifactType( "war", "war", "", "java", false, true ) ); - stereotypes.add( new DefaultArtifactType( "ear", "ear", "", "java", false, true ) ); - stereotypes.add( new DefaultArtifactType( "rar", "rar", "", "java", false, true ) ); - stereotypes.add( new DefaultArtifactType( "par", "par", "", "java", false, true ) ); - setArtifactTypeRegistry( stereotypes ); - setIgnoreInvalidArtifactDescriptor( true ); setIgnoreMissingArtifactDescriptor( true ); - setSystemProps( System.getProperties() ); - setConfigProps( System.getProperties() ); + if ( standalone ) + { + setMirrorSelector( new DefaultMirrorSelector() ); + setAuthenticationSelector( new DefaultAuthenticationSelector() ); + setProxySelector( new DefaultProxySelector() ); + + DefaultArtifactTypeRegistry stereotypes = new DefaultArtifactTypeRegistry(); + stereotypes.add( new DefaultArtifactType( "pom" ) ); + stereotypes.add( new DefaultArtifactType( "maven-plugin", "jar", "", "java" ) ); + stereotypes.add( new DefaultArtifactType( "jar", "jar", "", "java" ) ); + stereotypes.add( new DefaultArtifactType( "ejb", "jar", "", "java" ) ); + stereotypes.add( new DefaultArtifactType( "ejb-client", "jar", "client", "java" ) ); + stereotypes.add( new DefaultArtifactType( "test-jar", "jar", "tests", "java" ) ); + stereotypes.add( new DefaultArtifactType( "javadoc", "jar", "javadoc", "java" ) ); + stereotypes.add( new DefaultArtifactType( "java-source", "jar", "sources", "java", false, false ) ); + stereotypes.add( new DefaultArtifactType( "war", "war", "", "java", false, true ) ); + stereotypes.add( new DefaultArtifactType( "ear", "ear", "", "java", false, true ) ); + stereotypes.add( new DefaultArtifactType( "rar", "rar", "", "java", false, true ) ); + stereotypes.add( new DefaultArtifactType( "par", "par", "", "java", false, true ) ); + setArtifactTypeRegistry( stereotypes ); + + setSystemProps( System.getProperties() ); + setConfigProps( System.getProperties() ); + } } } diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java index 366ed9eb9..2ad80f814 100644 --- a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java @@ -56,7 +56,7 @@ protected void tearDown() public static RepositorySystemSession newMavenRepositorySystemSession( RepositorySystem system ) { - MavenRepositorySystemSession session = new MavenRepositorySystemSession(); + MavenRepositorySystemSession session = new MavenRepositorySystemSession( true ); LocalRepository localRepo = new LocalRepository( "target/local-repo" ); session.setLocalRepositoryManager( system.newLocalRepositoryManager( localRepo ) ); From 08f25c3084fdc101f519d3fc4666fa08bb4560b9 Mon Sep 17 00:00:00 2001 From: Herve Boutemy Date: Sun, 11 Nov 2012 09:58:41 +0000 Subject: [PATCH 094/224] prepared unit tests to write git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1407933 13f79535-47bb-0310-9956-ffa450edef68 --- .../internal/RepositorySystemTest.java | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java index 7adb0fda4..896d393a2 100644 --- a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java @@ -30,6 +30,28 @@ public class RepositorySystemTest extends AbstractRepositoryTestCase { + public void testResolveVersionRange() + throws Exception + { + //VersionRangeResult resolveVersionRange( RepositorySystemSession session, VersionRangeRequest request ) + // throws VersionRangeResolutionException; + + } + + public void testResolveVersion() + throws Exception + { + //VersionResult resolveVersion( RepositorySystemSession session, VersionRequest request ) + // throws VersionResolutionException; + } + + public void testReadArtifactDescriptor() + throws Exception + { + //ArtifactDescriptorResult readArtifactDescriptor( RepositorySystemSession session, ArtifactDescriptorRequest request ) + // throws ArtifactDescriptorException; + } + public void testCollectDependencies() throws Exception { @@ -116,4 +138,46 @@ public void testResolveArtifact() assertNotNull( artifact.getFile() ); assertEquals( "artifact-1.0-classifier.zip", artifact.getFile().getName() ); } + + public void testResolveArtifacts() + throws Exception + { + //List resolveArtifacts( RepositorySystemSession session, + // Collection requests ) + // throws ArtifactResolutionException; + } + + public void testResolveMetadata() + throws Exception + { + //List resolveMetadata( RepositorySystemSession session, + // Collection requests ); + } + + public void testInstall() + throws Exception + { + //InstallResult install( RepositorySystemSession session, InstallRequest request ) + // throws InstallationException; + } + + public void testDeploy() + throws Exception + { + //DeployResult deploy( RepositorySystemSession session, DeployRequest request ) + // throws DeploymentException; + } + + public void testNewLocalRepositoryManager() + throws Exception + { + //LocalRepositoryManager newLocalRepositoryManager( LocalRepository localRepository ); + } + + public void testNewSyncContext() + throws Exception + { + //SyncContext newSyncContext( RepositorySystemSession session, boolean shared ); + } + } From 5b3837acfd87c4196410256b581004abfb827df0 Mon Sep 17 00:00:00 2001 From: Herve Boutemy Date: Sun, 11 Nov 2012 23:18:04 +0000 Subject: [PATCH 095/224] added readArtifactDescriptor() API test git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1408144 13f79535-47bb-0310-9956-ffa450edef68 --- .../internal/RepositorySystemTest.java | 66 ++++++++++++------- 1 file changed, 43 insertions(+), 23 deletions(-) diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java index 896d393a2..e1ac5898a 100644 --- a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java @@ -19,10 +19,15 @@ * under the License. */ +import java.util.List; + import org.sonatype.aether.artifact.Artifact; import org.sonatype.aether.collection.CollectRequest; import org.sonatype.aether.collection.CollectResult; import org.sonatype.aether.graph.Dependency; +import org.sonatype.aether.graph.DependencyNode; +import org.sonatype.aether.resolution.ArtifactDescriptorRequest; +import org.sonatype.aether.resolution.ArtifactDescriptorResult; import org.sonatype.aether.resolution.ArtifactRequest; import org.sonatype.aether.resolution.ArtifactResult; import org.sonatype.aether.util.artifact.DefaultArtifact; @@ -47,29 +52,29 @@ public void testResolveVersion() public void testReadArtifactDescriptor() throws Exception - { - //ArtifactDescriptorResult readArtifactDescriptor( RepositorySystemSession session, ArtifactDescriptorRequest request ) - // throws ArtifactDescriptorException; - } - - public void testCollectDependencies() - throws Exception { Artifact artifact = new DefaultArtifact( "ut.simple:artifact:extension:classifier:1.0" ); - // notice: extension and classifier not really used in this test... - CollectRequest collectRequest = new CollectRequest(); - collectRequest.setRoot( new Dependency( artifact, null ) ); - collectRequest.addRepository( newTestRepository() ); + ArtifactDescriptorRequest request = new ArtifactDescriptorRequest(); + request.setArtifact( artifact ); + request.addRepository( newTestRepository() ); + + ArtifactDescriptorResult result = system.readArtifactDescriptor( session, request ); - CollectResult collectResult = system.collectDependencies( session, collectRequest ); + List deps = result.getDependencies(); + assertEquals( 2, deps.size() ); + checkUtSimpleArtifactDependencies( deps.get( 0 ), deps.get( 1 ) ); + } - assertEquals( 2, collectResult.getRoot().getChildren().size() ); - Dependency dep = collectResult.getRoot().getChildren().get( 0 ).getDependency(); - assertEquals( "compile", dep.getScope() ); - assertFalse( dep.isOptional() ); - assertEquals( 0, dep.getExclusions().size() ); - Artifact depArtifact = dep.getArtifact(); + /** + * check ut.simple:artifact:1.0 dependencies + */ + private void checkUtSimpleArtifactDependencies( Dependency dep1, Dependency dep2 ) + { + assertEquals( "compile", dep1.getScope() ); + assertFalse( dep1.isOptional() ); + assertEquals( 0, dep1.getExclusions().size() ); + Artifact depArtifact = dep1.getArtifact(); assertEquals( "ut.simple", depArtifact.getGroupId() ); assertEquals( "dependency", depArtifact.getArtifactId() ); assertEquals( "1.0", depArtifact.getVersion() ); @@ -84,11 +89,10 @@ public void testCollectDependencies() assertEquals( "false", depArtifact.getProperty( "includesDependencies", null ) ); assertEquals( 4, depArtifact.getProperties().size() ); - dep = collectResult.getRoot().getChildren().get( 1 ).getDependency(); - assertEquals( "compile", dep.getScope() ); - assertFalse( dep.isOptional() ); - assertEquals( 0, dep.getExclusions().size() ); - depArtifact = dep.getArtifact(); + assertEquals( "compile", dep2.getScope() ); + assertFalse( dep2.isOptional() ); + assertEquals( 0, dep2.getExclusions().size() ); + depArtifact = dep2.getArtifact(); assertEquals( "ut.simple", depArtifact.getGroupId() ); assertEquals( "dependency", depArtifact.getArtifactId() ); assertEquals( "1.0", depArtifact.getVersion() ); @@ -103,6 +107,22 @@ public void testCollectDependencies() assertEquals( "false", depArtifact.getProperty( "includesDependencies", null ) ); assertEquals( 4, depArtifact.getProperties().size() ); } + public void testCollectDependencies() + throws Exception + { + Artifact artifact = new DefaultArtifact( "ut.simple:artifact:extension:classifier:1.0" ); + // notice: extension and classifier not really used in this test... + + CollectRequest collectRequest = new CollectRequest(); + collectRequest.setRoot( new Dependency( artifact, null ) ); + collectRequest.addRepository( newTestRepository() ); + + CollectResult collectResult = system.collectDependencies( session, collectRequest ); + + List nodes = collectResult.getRoot().getChildren(); + assertEquals( 2, nodes.size() ); + checkUtSimpleArtifactDependencies( nodes.get( 0 ).getDependency(), nodes.get( 1 ).getDependency() ); + } public void testResolveArtifact() throws Exception From d42cddd360d44af36f64964093ac75702fb91b47 Mon Sep 17 00:00:00 2001 From: Herve Boutemy Date: Tue, 13 Nov 2012 03:34:35 +0000 Subject: [PATCH 096/224] implemented testResolveArtifacts() git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1408572 13f79535-47bb-0310-9956-ffa450edef68 --- .../internal/RepositorySystemTest.java | 51 ++++++++++++------- 1 file changed, 34 insertions(+), 17 deletions(-) diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java index e1ac5898a..86e3c37f7 100644 --- a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java @@ -19,6 +19,7 @@ * under the License. */ +import java.util.Arrays; import java.util.List; import org.sonatype.aether.artifact.Artifact; @@ -107,6 +108,7 @@ private void checkUtSimpleArtifactDependencies( Dependency dep1, Dependency dep2 assertEquals( "false", depArtifact.getProperty( "includesDependencies", null ) ); assertEquals( 4, depArtifact.getProperties().size() ); } + public void testCollectDependencies() throws Exception { @@ -134,37 +136,51 @@ public void testResolveArtifact() artifactRequest.addRepository( newTestRepository() ); ArtifactResult artifactResult = system.resolveArtifact( session, artifactRequest ); - assertFalse( artifactResult.isMissing() ); - assertTrue( artifactResult.isResolved() ); - artifact = artifactResult.getArtifact(); - assertNotNull( artifact.getFile() ); - assertEquals( "artifact-1.0.jar", artifact.getFile().getName() ); + checkArtifactResult( artifactResult, "artifact-1.0.jar" ); artifact = new DefaultArtifact( "ut.simple:artifact:zip:1.0" ); artifactRequest.setArtifact( artifact ); artifactResult = system.resolveArtifact( session, artifactRequest ); - assertFalse( artifactResult.isMissing() ); - assertTrue( artifactResult.isResolved() ); - artifact = artifactResult.getArtifact(); - assertNotNull( artifact.getFile() ); - assertEquals( "artifact-1.0.zip", artifact.getFile().getName() ); + checkArtifactResult( artifactResult, "artifact-1.0.zip" ); artifact = new DefaultArtifact( "ut.simple:artifact:zip:classifier:1.0" ); artifactRequest.setArtifact( artifact ); artifactResult = system.resolveArtifact( session, artifactRequest ); - assertFalse( artifactResult.isMissing() ); - assertTrue( artifactResult.isResolved() ); - artifact = artifactResult.getArtifact(); + checkArtifactResult( artifactResult, "artifact-1.0-classifier.zip" ); + } + + private void checkArtifactResult( ArtifactResult result, String filename ) + { + assertFalse( result.isMissing() ); + assertTrue( result.isResolved() ); + Artifact artifact = result.getArtifact(); assertNotNull( artifact.getFile() ); - assertEquals( "artifact-1.0-classifier.zip", artifact.getFile().getName() ); + assertEquals( filename, artifact.getFile().getName() ); } public void testResolveArtifacts() throws Exception { - //List resolveArtifacts( RepositorySystemSession session, - // Collection requests ) - // throws ArtifactResolutionException; + ArtifactRequest req1 = new ArtifactRequest(); + req1.setArtifact( new DefaultArtifact( "ut.simple:artifact:1.0" ) ); + req1.addRepository( newTestRepository() ); + + ArtifactRequest req2 = new ArtifactRequest(); + req2.setArtifact( new DefaultArtifact( "ut.simple:artifact:zip:1.0" ) ); + req2.addRepository( newTestRepository() ); + + ArtifactRequest req3 = new ArtifactRequest(); + req3.setArtifact( new DefaultArtifact( "ut.simple:artifact:zip:classifier:1.0" ) ); + req3.addRepository( newTestRepository() ); + + List requests = Arrays.asList( new ArtifactRequest[] { req1, req2, req3 } ); + + List results = system.resolveArtifacts( session, requests ); + + assertEquals( 3, results.size() ); + checkArtifactResult( results.get( 0 ), "artifact-1.0.jar" ); + checkArtifactResult( results.get( 1 ), "artifact-1.0.zip" ); + checkArtifactResult( results.get( 2 ), "artifact-1.0-classifier.zip" ); } public void testResolveMetadata() @@ -179,6 +195,7 @@ public void testInstall() { //InstallResult install( RepositorySystemSession session, InstallRequest request ) // throws InstallationException; + // release, snapshot unique ou non unique, attachement } public void testDeploy() From f3c0459e6b9d05c22f12cdd23adbe2c9af00e925 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Sun, 25 Nov 2012 17:59:36 +0000 Subject: [PATCH 097/224] [maven-release-plugin] prepare release maven-3.1.0 git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1413379 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 6c611771d..720ebd4a2 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1-SNAPSHOT + 3.1.0 maven-aether-provider From b222c934c7ca956dc47cfc5d6cba6b6d375907ed Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Sun, 25 Nov 2012 17:59:53 +0000 Subject: [PATCH 098/224] [maven-release-plugin] prepare for next development iteration git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1413381 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 720ebd4a2..7d54bafea 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1.0 + 3.1.1-SNAPSHOT maven-aether-provider From 2391d3c5da7d6b98f3ab4ee965303ea033665f8f Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Sun, 25 Nov 2012 19:07:27 +0000 Subject: [PATCH 099/224] - revert the release as we're missing MNG-5381 git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1413389 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 7d54bafea..6c611771d 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1.1-SNAPSHOT + 3.1-SNAPSHOT maven-aether-provider From 14ddc9fcfac431c13ec80ef70fabae905e53d025 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Mon, 26 Nov 2012 05:07:15 +0000 Subject: [PATCH 100/224] [maven-release-plugin] prepare release maven-3.1.0 git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1413479 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 6c611771d..720ebd4a2 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1-SNAPSHOT + 3.1.0 maven-aether-provider From b667a2862c82110e2cb5e836081162ea37974bcd Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Mon, 26 Nov 2012 05:07:28 +0000 Subject: [PATCH 101/224] [maven-release-plugin] prepare for next development iteration git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@1413481 13f79535-47bb-0310-9956-ffa450edef68 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 720ebd4a2..6c611771d 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1.0 + 3.1-SNAPSHOT maven-aether-provider From dcac898bdfa1e7f9d7dcab0f86a340256d099571 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Mon, 3 Dec 2012 19:58:40 -0800 Subject: [PATCH 102/224] [maven-release-plugin] prepare release maven-3.1.0 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 6c611771d..720ebd4a2 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1-SNAPSHOT + 3.1.0 maven-aether-provider From 437823580bb4fca331470851b402183d23de4676 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Mon, 3 Dec 2012 19:58:46 -0800 Subject: [PATCH 103/224] [maven-release-plugin] prepare for next development iteration --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 720ebd4a2..6c611771d 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1.0 + 3.1-SNAPSHOT maven-aether-provider From f5f016c47df6e3811bf809a746a93610d97bd5e0 Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Sat, 29 Dec 2012 22:25:25 +0100 Subject: [PATCH 104/224] Used improved conflict resolver --- .../internal/MavenRepositorySystemUtils.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java index d60363895..3e379f9ef 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java @@ -39,10 +39,11 @@ import org.eclipse.aether.util.graph.selector.OptionalDependencySelector; import org.eclipse.aether.util.graph.selector.ScopeDependencySelector; import org.eclipse.aether.util.graph.transformer.ChainedDependencyGraphTransformer; -import org.eclipse.aether.util.graph.transformer.ConflictMarker; +import org.eclipse.aether.util.graph.transformer.ConflictResolver; import org.eclipse.aether.util.graph.transformer.JavaDependencyContextRefiner; -import org.eclipse.aether.util.graph.transformer.JavaEffectiveScopeCalculator; -import org.eclipse.aether.util.graph.transformer.NearestVersionConflictResolver; +import org.eclipse.aether.util.graph.transformer.JavaScopeDeriver; +import org.eclipse.aether.util.graph.transformer.JavaScopeSelector; +import org.eclipse.aether.util.graph.transformer.NearestVersionSelector; import org.eclipse.aether.util.graph.traverser.FatArtifactTraverser; import org.eclipse.aether.util.repository.SimpleArtifactDescriptorPolicy; @@ -102,9 +103,8 @@ public static DefaultRepositorySystemSession newSession() session.setDependencySelector( depFilter ); DependencyGraphTransformer transformer = - new ChainedDependencyGraphTransformer( new ConflictMarker(), new JavaEffectiveScopeCalculator(), - new NearestVersionConflictResolver(), - new JavaDependencyContextRefiner() ); + new ConflictResolver( new NearestVersionSelector(), new JavaScopeSelector(), new JavaScopeDeriver() ); + new ChainedDependencyGraphTransformer( transformer, new JavaDependencyContextRefiner() ); session.setDependencyGraphTransformer( transformer ); DefaultArtifactTypeRegistry stereotypes = new DefaultArtifactTypeRegistry(); From 8dde488b423e4db2131a250cfc1765393f9127f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Boutemy?= Date: Thu, 17 Jan 2013 22:00:49 +0100 Subject: [PATCH 105/224] improved javadoc --- .../maven/repository/internal/DefaultVersionResolver.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java index cdc025293..e31e94e9f 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -68,7 +68,13 @@ import org.sonatype.aether.util.metadata.DefaultMetadata; /** + * Maven version resolver: supports *-SNAPSHOT, RELEASE and LATEST + * meta-version resolution from + * versioning + * element in repositories' maven-metadata.xml. + * * @author Benjamin Bentmann + * @see Versioning */ @Component( role = VersionResolver.class ) public class DefaultVersionResolver From bcbc3672c1662da9120bca41971310832166ba08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Boutemy?= Date: Thu, 17 Jan 2013 22:04:09 +0100 Subject: [PATCH 106/224] little code simplification --- .../repository/internal/DefaultVersionResolver.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java index e31e94e9f..f360e33e7 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -68,7 +68,7 @@ import org.sonatype.aether.util.metadata.DefaultMetadata; /** - * Maven version resolver: supports *-SNAPSHOT, RELEASE and LATEST + * Maven meta-version resolver: supports *-SNAPSHOT, RELEASE and LATEST * meta-version resolution from * versioning * element in repositories' maven-metadata.xml. @@ -293,11 +293,11 @@ else if ( LATEST.equals( version ) ) { throw new VersionResolutionException( result ); } - } - if ( cacheKey != null && metadata != null && isSafelyCacheable( session, artifact ) ) - { - cache.put( session, cacheKey, new Record( result.getVersion(), result.getRepository() ) ); + if ( cacheKey != null && isSafelyCacheable( session, artifact ) ) + { + cache.put( session, cacheKey, new Record( result.getVersion(), result.getRepository() ) ); + } } return result; From 815e7404af35b913a0a60b90e67ebdaafc082af1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Boutemy?= Date: Thu, 17 Jan 2013 22:56:18 +0100 Subject: [PATCH 107/224] code simplification --- .../internal/DefaultVersionResolver.java | 95 +++++++++++-------- 1 file changed, 53 insertions(+), 42 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java index f360e33e7..24e9531b5 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -22,6 +22,7 @@ import java.io.File; import java.io.FileInputStream; import java.io.IOException; +import java.io.InputStream; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -36,6 +37,7 @@ import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.util.IOUtil; import org.codehaus.plexus.util.StringUtils; +import org.codehaus.plexus.util.xml.pull.XmlPullParserException; import org.sonatype.aether.RepositoryCache; import org.sonatype.aether.RepositoryEvent.EventType; import org.sonatype.aether.RepositorySystemSession; @@ -149,8 +151,6 @@ public DefaultVersionResolver setRepositoryEventDispatcher( RepositoryEventDispa public VersionResult resolveVersion( RepositorySystemSession session, VersionRequest request ) throws VersionResolutionException { - RequestTrace trace = DefaultRequestTrace.newChild( request.getTrace(), request ); - Artifact artifact = request.getArtifact(); String version = artifact.getVersion(); @@ -219,6 +219,8 @@ else if ( version.endsWith( SNAPSHOT ) ) metadataRequests.add( new MetadataRequest( metadata, null, request.getRequestContext() ) ); + RequestTrace trace = DefaultRequestTrace.newChild( request.getTrace(), request ); + for ( RemoteRepository repository : request.getRepositories() ) { MetadataRequest metadataRequest = @@ -319,50 +321,35 @@ private Versioning readVersions( RepositorySystemSession session, RequestTrace t { Versioning versioning = null; - FileInputStream fis = null; + SyncContext syncContext = syncContextFactory.newInstance( session, true ); + try { - if ( metadata != null ) - { - SyncContext syncContext = syncContextFactory.newInstance( session, true ); + syncContext.acquire( null, Collections.singleton( metadata ) ); - try - { - syncContext.acquire( null, Collections.singleton( metadata ) ); + versioning = readMavenRepositoryMetadataVersioning( metadata.getFile() ); - if ( metadata.getFile() != null && metadata.getFile().exists() ) - { - fis = new FileInputStream( metadata.getFile() ); - org.apache.maven.artifact.repository.metadata.Metadata m = - new MetadataXpp3Reader().read( fis, false ); - versioning = m.getVersioning(); - - /* - * NOTE: Users occasionally misuse the id "local" for remote repos which screws up the metadata - * of the local repository. This is especially troublesome during snapshot resolution so we try - * to handle that gracefully. - */ - if ( versioning != null && repository instanceof LocalRepository ) - { - if ( versioning.getSnapshot() != null && versioning.getSnapshot().getBuildNumber() > 0 ) - { - Versioning repaired = new Versioning(); - repaired.setLastUpdated( versioning.getLastUpdated() ); - Snapshot snapshot = new Snapshot(); - snapshot.setLocalCopy( true ); - repaired.setSnapshot( snapshot ); - versioning = repaired; - - throw new IOException( "Snapshot information corrupted with remote repository data" - + ", please verify that no remote repository uses the id '" + repository.getId() - + "'" ); - } - } - } - } - finally + /* + * NOTE: Users occasionally misuse the id "local" for remote repos which screws up the metadata + * of the local repository. This is especially troublesome during snapshot resolution so we try + * to handle that gracefully. + */ + if ( versioning != null && repository instanceof LocalRepository ) + { + Snapshot snapshot = versioning.getSnapshot(); + if ( snapshot != null && snapshot.getBuildNumber() > 0 ) { - syncContext.release(); + Versioning repaired = new Versioning(); + repaired.setLastUpdated( versioning.getLastUpdated() ); + snapshot = new Snapshot(); + snapshot.setLocalCopy( true ); + repaired.setSnapshot( snapshot ); + + versioning = repaired; + + throw new IOException( "Snapshot information corrupted with remote repository data" + + ", please verify that no remote repository uses the id '" + repository.getId() + + "'" ); } } } @@ -373,12 +360,36 @@ private Versioning readVersions( RepositorySystemSession session, RequestTrace t } finally { - IOUtil.close( fis ); + syncContext.release(); } return ( versioning != null ) ? versioning : new Versioning(); } + private Versioning readMavenRepositoryMetadataVersioning( File metadataFile ) + throws IOException, XmlPullParserException + { + if ( metadataFile == null ||! metadataFile.exists() ) + { + return null; + } + + InputStream is = null; + try + { + is = new FileInputStream( metadataFile ); + + MetadataXpp3Reader reader = new MetadataXpp3Reader(); + org.apache.maven.artifact.repository.metadata.Metadata m = reader.read( is, false ); + + return m.getVersioning(); + } + finally + { + IOUtil.close( is ); + } + } + private void invalidMetadata( RepositorySystemSession session, RequestTrace trace, Metadata metadata, ArtifactRepository repository, Exception exception ) { From 2190a7a29ab980fb47a1ae13566ea8e1430e562a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Boutemy?= Date: Thu, 17 Jan 2013 23:22:58 +0100 Subject: [PATCH 108/224] extracted readVersionInfoMap method --- .../internal/DefaultVersionResolver.java | 175 +++++++++--------- 1 file changed, 87 insertions(+), 88 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java index 24e9531b5..eca718ed4 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -175,134 +175,133 @@ public VersionResult resolveVersion( RepositorySystemSession session, VersionReq } } - Metadata metadata; - if ( RELEASE.equals( version ) ) { - metadata = - new DefaultMetadata( artifact.getGroupId(), artifact.getArtifactId(), MAVEN_METADATA_XML, - Metadata.Nature.RELEASE ); + Map infos = readVersionInfoMap( session, result, Metadata.Nature.RELEASE, null ); + + resolve( result, infos, RELEASE ); } else if ( LATEST.equals( version ) ) { - metadata = - new DefaultMetadata( artifact.getGroupId(), artifact.getArtifactId(), MAVEN_METADATA_XML, - Metadata.Nature.RELEASE_OR_SNAPSHOT ); + Map infos = + readVersionInfoMap( session, result, Metadata.Nature.RELEASE_OR_SNAPSHOT, null ); + + if ( !resolve( result, infos, LATEST ) ) + { + resolve( result, infos, RELEASE ); + } + + if ( result.getVersion() != null && result.getVersion().endsWith( SNAPSHOT ) ) + { + VersionRequest subRequest = new VersionRequest(); + subRequest.setArtifact( artifact.setVersion( result.getVersion() ) ); + if ( result.getRepository() instanceof RemoteRepository ) + { + subRequest.setRepositories( Collections.singletonList( (RemoteRepository) result.getRepository() ) ); + } + else + { + subRequest.setRepositories( request.getRepositories() ); + } + VersionResult subResult = resolveVersion( session, subRequest ); + result.setVersion( subResult.getVersion() ); + result.setRepository( subResult.getRepository() ); + for ( Exception exception : subResult.getExceptions() ) + { + result.addException( exception ); + } + } } else if ( version.endsWith( SNAPSHOT ) ) { WorkspaceReader workspace = session.getWorkspaceReader(); if ( workspace != null && workspace.findVersions( artifact ).contains( version ) ) { - metadata = null; + result.setVersion( version ); result.setRepository( workspace.getRepository() ); + + return result; } else { - metadata = - new DefaultMetadata( artifact.getGroupId(), artifact.getArtifactId(), version, MAVEN_METADATA_XML, - Metadata.Nature.SNAPSHOT ); + Map infos = + readVersionInfoMap( session, result, Metadata.Nature.SNAPSHOT, version ); + + String key = SNAPSHOT + getKey( artifact.getClassifier(), artifact.getExtension() ); + + merge( infos, SNAPSHOT, key ); + + if ( !resolve( result, infos, key ) ) + { + result.setVersion( version ); + } } } else { - metadata = null; + result.setVersion( version ); + + return result; } - if ( metadata == null ) + if ( StringUtils.isEmpty( result.getVersion() ) ) { - result.setVersion( version ); + throw new VersionResolutionException( result ); } - else + + if ( cacheKey != null && isSafelyCacheable( session, artifact ) ) { - List metadataRequests = new ArrayList( request.getRepositories().size() ); + cache.put( session, cacheKey, new Record( result.getVersion(), result.getRepository() ) ); + } + + return result; + } - metadataRequests.add( new MetadataRequest( metadata, null, request.getRequestContext() ) ); + private Map readVersionInfoMap( RepositorySystemSession session, VersionResult result, + Metadata.Nature nature, String version ) + { + VersionRequest request = result.getRequest(); + Artifact artifact = request.getArtifact(); - RequestTrace trace = DefaultRequestTrace.newChild( request.getTrace(), request ); + Metadata metadata = + new DefaultMetadata( artifact.getGroupId(), artifact.getArtifactId(), version, MAVEN_METADATA_XML, nature ); - for ( RemoteRepository repository : request.getRepositories() ) - { - MetadataRequest metadataRequest = - new MetadataRequest( metadata, repository, request.getRequestContext() ); - metadataRequest.setDeleteLocalCopyIfMissing( true ); - metadataRequest.setFavorLocalRepository( true ); - metadataRequest.setTrace( trace ); - metadataRequests.add( metadataRequest ); - } + RequestTrace trace = DefaultRequestTrace.newChild( request.getTrace(), request ); - List metadataResults = metadataResolver.resolveMetadata( session, metadataRequests ); + List metadataRequests = new ArrayList( request.getRepositories().size() + 1 ); - Map infos = new HashMap(); + metadataRequests.add( new MetadataRequest( metadata, null, request.getRequestContext() ) ); - for ( MetadataResult metadataResult : metadataResults ) - { - result.addException( metadataResult.getException() ); + for ( RemoteRepository repository : request.getRepositories() ) + { + MetadataRequest metadataRequest = new MetadataRequest( metadata, repository, request.getRequestContext() ); + metadataRequest.setDeleteLocalCopyIfMissing( true ); + metadataRequest.setFavorLocalRepository( true ); + metadataRequest.setTrace( trace ); - ArtifactRepository repository = metadataResult.getRequest().getRepository(); - if ( repository == null ) - { - repository = session.getLocalRepository(); - } + metadataRequests.add( metadataRequest ); + } - Versioning versioning = readVersions( session, trace, metadataResult.getMetadata(), repository, result ); - merge( artifact, infos, versioning, repository ); - } + List metadataResults = metadataResolver.resolveMetadata( session, metadataRequests ); - if ( RELEASE.equals( version ) ) - { - resolve( result, infos, RELEASE ); - } - else if ( LATEST.equals( version ) ) - { - if ( !resolve( result, infos, LATEST ) ) - { - resolve( result, infos, RELEASE ); - } + Map infos = new HashMap(); - if ( result.getVersion() != null && result.getVersion().endsWith( SNAPSHOT ) ) - { - VersionRequest subRequest = new VersionRequest(); - subRequest.setArtifact( artifact.setVersion( result.getVersion() ) ); - if ( result.getRepository() instanceof RemoteRepository ) - { - subRequest.setRepositories( Collections.singletonList( (RemoteRepository) result.getRepository() ) ); - } - else - { - subRequest.setRepositories( request.getRepositories() ); - } - VersionResult subResult = resolveVersion( session, subRequest ); - result.setVersion( subResult.getVersion() ); - result.setRepository( subResult.getRepository() ); - for ( Exception exception : subResult.getExceptions() ) - { - result.addException( exception ); - } - } - } - else - { - String key = SNAPSHOT + getKey( artifact.getClassifier(), artifact.getExtension() ); - merge( infos, SNAPSHOT, key ); - if ( !resolve( result, infos, key ) ) - { - result.setVersion( version ); - } - } + for ( MetadataResult metadataResult : metadataResults ) + { + result.addException( metadataResult.getException() ); - if ( StringUtils.isEmpty( result.getVersion() ) ) + ArtifactRepository repository = metadataResult.getRequest().getRepository(); + if ( repository == null ) { - throw new VersionResolutionException( result ); + repository = session.getLocalRepository(); } - if ( cacheKey != null && isSafelyCacheable( session, artifact ) ) - { - cache.put( session, cacheKey, new Record( result.getVersion(), result.getRepository() ) ); - } + Versioning versioning = readVersions( session, trace, metadataResult.getMetadata(), repository, result ); + + merge( request.getArtifact(), infos, versioning, repository ); } - return result; + return infos; } private boolean resolve( VersionResult result, Map infos, String key ) From ae7ff33ec4a7bda6765956a600a46167785fbb3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Boutemy?= Date: Fri, 18 Jan 2013 00:44:02 +0100 Subject: [PATCH 109/224] code simplification --- .../internal/DefaultVersionRangeResolver.java | 47 ++++++------------- .../internal/DefaultVersionResolver.java | 2 +- 2 files changed, 16 insertions(+), 33 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java index c5b85f709..26dca40be 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java @@ -19,7 +19,6 @@ * under the License. */ -import java.io.FileInputStream; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -27,10 +26,8 @@ import java.util.Map; import org.apache.maven.artifact.repository.metadata.Versioning; -import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; -import org.codehaus.plexus.util.IOUtil; import org.sonatype.aether.RepositoryEvent.EventType; import org.sonatype.aether.RepositorySystemSession; import org.sonatype.aether.RequestTrace; @@ -244,39 +241,25 @@ private Versioning readVersions( RepositorySystemSession session, RequestTrace t { Versioning versioning = null; - FileInputStream fis = null; - try + if ( metadata != null ) { - if ( metadata != null ) - { - SyncContext syncContext = syncContextFactory.newInstance( session, true ); + SyncContext syncContext = syncContextFactory.newInstance( session, true ); - try - { - syncContext.acquire( null, Collections.singleton( metadata ) ); + try + { + syncContext.acquire( null, Collections.singleton( metadata ) ); - if ( metadata.getFile() != null && metadata.getFile().exists() ) - { - fis = new FileInputStream( metadata.getFile() ); - org.apache.maven.artifact.repository.metadata.Metadata m = - new MetadataXpp3Reader().read( fis, false ); - versioning = m.getVersioning(); - } - } - finally - { - syncContext.release(); - } + versioning = DefaultVersionResolver.readMavenRepositoryMetadataVersioning( metadata.getFile() ); + } + catch ( Exception e ) + { + invalidMetadata( session, trace, metadata, repository, e ); + result.addException( e ); + } + finally + { + syncContext.release(); } - } - catch ( Exception e ) - { - invalidMetadata( session, trace, metadata, repository, e ); - result.addException( e ); - } - finally - { - IOUtil.close( fis ); } return ( versioning != null ) ? versioning : new Versioning(); diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java index eca718ed4..daed903bb 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -365,7 +365,7 @@ private Versioning readVersions( RepositorySystemSession session, RequestTrace t return ( versioning != null ) ? versioning : new Versioning(); } - private Versioning readMavenRepositoryMetadataVersioning( File metadataFile ) + static Versioning readMavenRepositoryMetadataVersioning( File metadataFile ) throws IOException, XmlPullParserException { if ( metadataFile == null ||! metadataFile.exists() ) From 2ca3887fea0316351b7dead6f80a774a9aee446d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Boutemy?= Date: Sat, 19 Jan 2013 08:56:12 +0100 Subject: [PATCH 110/224] move MAVEN_METADATA_XML constant to MavenMetadata class --- .../repository/internal/DefaultVersionRangeResolver.java | 5 +---- .../maven/repository/internal/DefaultVersionResolver.java | 6 ++---- .../org/apache/maven/repository/internal/MavenMetadata.java | 4 +++- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java index 26dca40be..d2c87745c 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java @@ -66,9 +66,6 @@ public class DefaultVersionRangeResolver implements VersionRangeResolver, Service { - private static final String MAVEN_METADATA_XML = "maven-metadata.xml"; - - @SuppressWarnings( "unused" ) @Requirement private Logger logger = NullLogger.INSTANCE; @@ -187,7 +184,7 @@ private Map getVersions( RepositorySystemSession ses Metadata metadata = new DefaultMetadata( request.getArtifact().getGroupId(), request.getArtifact().getArtifactId(), - MAVEN_METADATA_XML, Metadata.Nature.RELEASE_OR_SNAPSHOT ); + MavenMetadata.MAVEN_METADATA_XML, Metadata.Nature.RELEASE_OR_SNAPSHOT ); List metadataRequests = new ArrayList( request.getRepositories().size() ); diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java index daed903bb..a9146d7fd 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -83,15 +83,12 @@ public class DefaultVersionResolver implements VersionResolver, Service { - private static final String MAVEN_METADATA_XML = "maven-metadata.xml"; - private static final String RELEASE = "RELEASE"; private static final String LATEST = "LATEST"; private static final String SNAPSHOT = "SNAPSHOT"; - @SuppressWarnings( "unused" ) @Requirement private Logger logger = NullLogger.INSTANCE; @@ -264,7 +261,8 @@ private Map readVersionInfoMap( RepositorySystemSession ses Artifact artifact = request.getArtifact(); Metadata metadata = - new DefaultMetadata( artifact.getGroupId(), artifact.getArtifactId(), version, MAVEN_METADATA_XML, nature ); + new DefaultMetadata( artifact.getGroupId(), artifact.getArtifactId(), version, + MavenMetadata.MAVEN_METADATA_XML, nature ); RequestTrace trace = DefaultRequestTrace.newChild( request.getTrace(), request ); diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java index 3db90e94f..1fdfad7f8 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java @@ -41,6 +41,8 @@ abstract class MavenMetadata implements MergeableMetadata { + static final String MAVEN_METADATA_XML = "maven-metadata.xml"; + private final File file; protected Metadata metadata; @@ -55,7 +57,7 @@ protected MavenMetadata( Metadata metadata, File file ) public String getType() { - return "maven-metadata.xml"; + return MAVEN_METADATA_XML; } public File getFile() From 51243b0a4839aed859742c8a09f295bfcde6ef47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Boutemy?= Date: Sat, 19 Jan 2013 09:04:29 +0100 Subject: [PATCH 111/224] use MavenMetadata.read(File) API instead of duplicating code --- .../internal/DefaultVersionRangeResolver.java | 2 +- .../internal/DefaultVersionResolver.java | 31 +------------------ .../repository/internal/MavenMetadata.java | 2 +- 3 files changed, 3 insertions(+), 32 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java index d2c87745c..87c69fb0d 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java @@ -246,7 +246,7 @@ private Versioning readVersions( RepositorySystemSession session, RequestTrace t { syncContext.acquire( null, Collections.singleton( metadata ) ); - versioning = DefaultVersionResolver.readMavenRepositoryMetadataVersioning( metadata.getFile() ); + versioning = MavenMetadata.read( metadata.getFile() ).getVersioning(); } catch ( Exception e ) { diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java index a9146d7fd..759d90ec8 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -20,9 +20,7 @@ */ import java.io.File; -import java.io.FileInputStream; import java.io.IOException; -import java.io.InputStream; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -32,12 +30,9 @@ import org.apache.maven.artifact.repository.metadata.Snapshot; import org.apache.maven.artifact.repository.metadata.SnapshotVersion; import org.apache.maven.artifact.repository.metadata.Versioning; -import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; -import org.codehaus.plexus.util.IOUtil; import org.codehaus.plexus.util.StringUtils; -import org.codehaus.plexus.util.xml.pull.XmlPullParserException; import org.sonatype.aether.RepositoryCache; import org.sonatype.aether.RepositoryEvent.EventType; import org.sonatype.aether.RepositorySystemSession; @@ -324,7 +319,7 @@ private Versioning readVersions( RepositorySystemSession session, RequestTrace t { syncContext.acquire( null, Collections.singleton( metadata ) ); - versioning = readMavenRepositoryMetadataVersioning( metadata.getFile() ); + versioning = MavenMetadata.read( metadata.getFile() ).getVersioning(); /* * NOTE: Users occasionally misuse the id "local" for remote repos which screws up the metadata @@ -363,30 +358,6 @@ private Versioning readVersions( RepositorySystemSession session, RequestTrace t return ( versioning != null ) ? versioning : new Versioning(); } - static Versioning readMavenRepositoryMetadataVersioning( File metadataFile ) - throws IOException, XmlPullParserException - { - if ( metadataFile == null ||! metadataFile.exists() ) - { - return null; - } - - InputStream is = null; - try - { - is = new FileInputStream( metadataFile ); - - MetadataXpp3Reader reader = new MetadataXpp3Reader(); - org.apache.maven.artifact.repository.metadata.Metadata m = reader.read( is, false ); - - return m.getVersioning(); - } - finally - { - IOUtil.close( is ); - } - } - private void invalidMetadata( RepositorySystemSession session, RequestTrace trace, Metadata metadata, ArtifactRepository repository, Exception exception ) { diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java index 1fdfad7f8..78be415fc 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java @@ -84,7 +84,7 @@ public boolean isMerged() protected abstract void merge( Metadata recessive ); - private Metadata read( File metadataFile ) + static Metadata read( File metadataFile ) throws RepositoryException { if ( metadataFile.length() <= 0 ) From b6ab90e85ffab9d9914a8230ff40083af7456a3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Boutemy?= Date: Sat, 19 Jan 2013 09:22:56 +0100 Subject: [PATCH 112/224] removed unused annotation --- .../repository/internal/DefaultArtifactDescriptorReader.java | 1 - 1 file changed, 1 deletion(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java index 1faee2975..a86428b02 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java @@ -88,7 +88,6 @@ public class DefaultArtifactDescriptorReader implements ArtifactDescriptorReader, Service { - @SuppressWarnings( "unused" ) @Requirement private Logger logger = NullLogger.INSTANCE; From 6dfaa8203d70aad086754d01c928dc8738fe20f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Boutemy?= Date: Sat, 19 Jan 2013 13:36:20 +0100 Subject: [PATCH 113/224] refactoring: extracted MavenSnapshotMetadata from (Local+Remote)SnapshotMetadata --- .../internal/LocalSnapshotMetadata.java | 66 ++---------- .../internal/MavenSnapshotMetadata.java | 100 ++++++++++++++++++ .../internal/RemoteSnapshotMetadata.java | 72 +------------ .../repository/internal/VersionsMetadata.java | 13 +-- 4 files changed, 118 insertions(+), 133 deletions(-) create mode 100644 maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenSnapshotMetadata.java diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java index a084977ab..4cea6c1b3 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java @@ -21,7 +21,6 @@ import java.io.File; import java.util.ArrayList; -import java.util.Collection; import java.util.LinkedHashMap; import java.util.Map; @@ -35,66 +34,38 @@ * @author Benjamin Bentmann */ final class LocalSnapshotMetadata - extends MavenMetadata + extends MavenSnapshotMetadata { - private final Collection artifacts = new ArrayList(); - - private final boolean legacyFormat; - public LocalSnapshotMetadata( Artifact artifact, boolean legacyFormat ) { - super( createMetadata( artifact, legacyFormat ), null ); - this.legacyFormat = legacyFormat; + super( createLocalMetadata( artifact, legacyFormat ), null, legacyFormat ); } public LocalSnapshotMetadata( Metadata metadata, File file, boolean legacyFormat ) { - super( metadata, file ); - this.legacyFormat = legacyFormat; + super( metadata, file, legacyFormat ); } - private static Metadata createMetadata( Artifact artifact, boolean legacyFormat ) + private static Metadata createLocalMetadata( Artifact artifact, boolean legacyFormat ) { + Metadata metadata = createRepositoryMetadata( artifact, legacyFormat ); + Snapshot snapshot = new Snapshot(); snapshot.setLocalCopy( true ); Versioning versioning = new Versioning(); versioning.setSnapshot( snapshot ); - Metadata metadata = new Metadata(); metadata.setVersioning( versioning ); - metadata.setGroupId( artifact.getGroupId() ); - metadata.setArtifactId( artifact.getArtifactId() ); - metadata.setVersion( artifact.getBaseVersion() ); - - if ( !legacyFormat ) - { - metadata.setModelVersion( "1.1.0" ); - } return metadata; } - public void bind( Artifact artifact ) - { - artifacts.add( artifact ); - } - public MavenMetadata setFile( File file ) { return new LocalSnapshotMetadata( metadata, file, legacyFormat ); } - public Object getKey() - { - return getGroupId() + ':' + getArtifactId() + ':' + getVersion(); - } - - public static Object getKey( Artifact artifact ) - { - return artifact.getGroupId() + ':' + artifact.getArtifactId() + ':' + artifact.getBaseVersion(); - } - @Override protected void merge( Metadata recessive ) { @@ -135,29 +106,4 @@ protected void merge( Metadata recessive ) artifacts.clear(); } - private String getKey( String classifier, String extension ) - { - return classifier + ':' + extension; - } - - public String getGroupId() - { - return metadata.getGroupId(); - } - - public String getArtifactId() - { - return metadata.getArtifactId(); - } - - public String getVersion() - { - return metadata.getVersion(); - } - - public Nature getNature() - { - return Nature.SNAPSHOT; - } - } diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenSnapshotMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenSnapshotMetadata.java new file mode 100644 index 000000000..0f88cdc1d --- /dev/null +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenSnapshotMetadata.java @@ -0,0 +1,100 @@ +package org.apache.maven.repository.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 java.io.File; +import java.util.ArrayList; +import java.util.Collection; + +import org.apache.maven.artifact.repository.metadata.Metadata; +import org.sonatype.aether.artifact.Artifact; + +/** + * @author Hervé Boutemy + */ +abstract class MavenSnapshotMetadata + extends MavenMetadata +{ + static final String SNAPSHOT = "SNAPSHOT"; + + protected final Collection artifacts = new ArrayList(); + + protected final boolean legacyFormat; + + protected MavenSnapshotMetadata( Metadata metadata, File file, boolean legacyFormat ) + { + super( metadata, file ); + this.legacyFormat = legacyFormat; + } + + protected static Metadata createRepositoryMetadata( Artifact artifact, boolean legacyFormat ) + { + Metadata metadata = new Metadata(); + if ( !legacyFormat ) + { + metadata.setModelVersion( "1.1.0" ); + } + metadata.setGroupId( artifact.getGroupId() ); + metadata.setArtifactId( artifact.getArtifactId() ); + metadata.setVersion( artifact.getBaseVersion() ); + + return metadata; + } + + public void bind( Artifact artifact ) + { + artifacts.add( artifact ); + } + + public Object getKey() + { + return getGroupId() + ':' + getArtifactId() + ':' + getVersion(); + } + + public static Object getKey( Artifact artifact ) + { + return artifact.getGroupId() + ':' + artifact.getArtifactId() + ':' + artifact.getBaseVersion(); + } + + protected String getKey( String classifier, String extension ) + { + return classifier + ':' + extension; + } + + public String getGroupId() + { + return metadata.getGroupId(); + } + + public String getArtifactId() + { + return metadata.getArtifactId(); + } + + public String getVersion() + { + return metadata.getVersion(); + } + + public Nature getNature() + { + return Nature.SNAPSHOT; + } +} diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java index 4ce43938a..246c786e0 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java @@ -23,7 +23,6 @@ import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Collection; import java.util.Date; import java.util.LinkedHashMap; import java.util.Map; @@ -39,46 +38,19 @@ * @author Benjamin Bentmann */ final class RemoteSnapshotMetadata - extends MavenMetadata + extends MavenSnapshotMetadata { - private static final String SNAPSHOT = "SNAPSHOT"; - - private final Collection artifacts = new ArrayList(); - private final Map versions = new LinkedHashMap(); - private final boolean legacyFormat; - public RemoteSnapshotMetadata( Artifact artifact, boolean legacyFormat ) { - super( createMetadata( artifact, legacyFormat ), null ); - this.legacyFormat = legacyFormat; + super( createRepositoryMetadata( artifact, legacyFormat ), null, legacyFormat ); } private RemoteSnapshotMetadata( Metadata metadata, File file, boolean legacyFormat ) { - super( metadata, file ); - this.legacyFormat = legacyFormat; - } - - private static Metadata createMetadata( Artifact artifact, boolean legacyFormat ) - { - Metadata metadata = new Metadata(); - if ( !legacyFormat ) - { - metadata.setModelVersion( "1.1.0" ); - } - metadata.setGroupId( artifact.getGroupId() ); - metadata.setArtifactId( artifact.getArtifactId() ); - metadata.setVersion( artifact.getBaseVersion() ); - - return metadata; - } - - public void bind( Artifact artifact ) - { - artifacts.add( artifact ); + super( metadata, file, legacyFormat ); } public MavenMetadata setFile( File file ) @@ -86,16 +58,6 @@ public MavenMetadata setFile( File file ) return new RemoteSnapshotMetadata( metadata, file, legacyFormat ); } - public Object getKey() - { - return getGroupId() + ':' + getArtifactId() + ':' + getVersion(); - } - - public static Object getKey( Artifact artifact ) - { - return artifact.getGroupId() + ':' + artifact.getArtifactId() + ':' + artifact.getBaseVersion(); - } - public String getExpandedVersion( Artifact artifact ) { String key = getKey( artifact.getClassifier(), artifact.getExtension() ); @@ -136,7 +98,7 @@ protected void merge( Metadata recessive ) if ( version.endsWith( SNAPSHOT ) ) { - String qualifier = snapshot.getTimestamp() + "-" + snapshot.getBuildNumber(); + String qualifier = snapshot.getTimestamp() + '-' + snapshot.getBuildNumber(); version = version.substring( 0, version.length() - SNAPSHOT.length() ) + qualifier; } @@ -145,6 +107,7 @@ protected void merge( Metadata recessive ) sv.setExtension( artifact.getExtension() ); sv.setVersion( version ); sv.setUpdated( lastUpdated ); + versions.put( getKey( sv.getClassifier(), sv.getExtension() ), sv ); } @@ -169,11 +132,6 @@ protected void merge( Metadata recessive ) } } - private String getKey( String classifier, String extension ) - { - return classifier + ':' + extension; - } - private static int getBuildNumber( Metadata metadata ) { int number = 0; @@ -191,24 +149,4 @@ private static int getBuildNumber( Metadata metadata ) return number; } - public String getGroupId() - { - return metadata.getGroupId(); - } - - public String getArtifactId() - { - return metadata.getArtifactId(); - } - - public String getVersion() - { - return metadata.getVersion(); - } - - public Nature getNature() - { - return Nature.SNAPSHOT; - } - } diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java index 139e5f8c9..2fefe02e1 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java @@ -40,18 +40,22 @@ final class VersionsMetadata public VersionsMetadata( Artifact artifact ) { - super( createMetadata( artifact ), null ); + super( createRepositoryMetadata( artifact ), null ); this.artifact = artifact; } public VersionsMetadata( Artifact artifact, File file ) { - super( createMetadata( artifact ), file ); + super( createRepositoryMetadata( artifact ), file ); this.artifact = artifact; } - private static Metadata createMetadata( Artifact artifact ) + private static Metadata createRepositoryMetadata( Artifact artifact ) { + Metadata metadata = new Metadata(); + metadata.setGroupId( artifact.getGroupId() ); + metadata.setArtifactId( artifact.getArtifactId() ); + Versioning versioning = new Versioning(); versioning.addVersion( artifact.getBaseVersion() ); if ( !artifact.isSnapshot() ) @@ -63,10 +67,7 @@ private static Metadata createMetadata( Artifact artifact ) versioning.setLatest( artifact.getBaseVersion() ); } - Metadata metadata = new Metadata(); metadata.setVersioning( versioning ); - metadata.setGroupId( artifact.getGroupId() ); - metadata.setArtifactId( artifact.getArtifactId() ); return metadata; } From 691b4b59f4a92703aa28cd65aab99d8ec1722b70 Mon Sep 17 00:00:00 2001 From: Kristian Rosenvold Date: Tue, 29 Jan 2013 16:26:35 +0100 Subject: [PATCH 114/224] Fixed line feeds, added .gitattributes --- .../internal/AbstractRepositoryTestCase.java | 152 +++++++------- .../internal/DefaultVersionResolverTest.java | 192 +++++++++--------- .../07.20.3-SNAPSHOT/maven-metadata.xml | 96 ++++----- 3 files changed, 220 insertions(+), 220 deletions(-) diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java index 2ad80f814..3b2f379fb 100644 --- a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java @@ -1,76 +1,76 @@ -package org.apache.maven.repository.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 java.net.MalformedURLException; - -import org.apache.maven.repository.internal.util.ConsoleRepositoryListener; -import org.apache.maven.repository.internal.util.ConsoleTransferListener; -import org.codehaus.plexus.PlexusTestCase; -import org.sonatype.aether.RepositorySystem; -import org.sonatype.aether.RepositorySystemSession; -import org.sonatype.aether.repository.LocalRepository; -import org.sonatype.aether.repository.RemoteRepository; - -public abstract class AbstractRepositoryTestCase - extends PlexusTestCase -{ - protected RepositorySystem system; - - protected RepositorySystemSession session; - - @Override - protected void setUp() - throws Exception - { - super.setUp(); - system = lookup( RepositorySystem.class ); - session = newMavenRepositorySystemSession( system ); - } - - @Override - protected void tearDown() - throws Exception - { - session = null; - system = null; - super.tearDown(); - } - - public static RepositorySystemSession newMavenRepositorySystemSession( RepositorySystem system ) - { - MavenRepositorySystemSession session = new MavenRepositorySystemSession( true ); - - LocalRepository localRepo = new LocalRepository( "target/local-repo" ); - session.setLocalRepositoryManager( system.newLocalRepositoryManager( localRepo ) ); - - session.setTransferListener( new ConsoleTransferListener() ); - session.setRepositoryListener( new ConsoleRepositoryListener() ); - - return session; - } - - public static RemoteRepository newTestRepository() - throws MalformedURLException - { - return new RemoteRepository( "repo", "default", - getTestFile( "target/test-classes/repo" ).toURI().toURL().toString() ); - } -} +package org.apache.maven.repository.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 java.net.MalformedURLException; + +import org.apache.maven.repository.internal.util.ConsoleRepositoryListener; +import org.apache.maven.repository.internal.util.ConsoleTransferListener; +import org.codehaus.plexus.PlexusTestCase; +import org.sonatype.aether.RepositorySystem; +import org.sonatype.aether.RepositorySystemSession; +import org.sonatype.aether.repository.LocalRepository; +import org.sonatype.aether.repository.RemoteRepository; + +public abstract class AbstractRepositoryTestCase + extends PlexusTestCase +{ + protected RepositorySystem system; + + protected RepositorySystemSession session; + + @Override + protected void setUp() + throws Exception + { + super.setUp(); + system = lookup( RepositorySystem.class ); + session = newMavenRepositorySystemSession( system ); + } + + @Override + protected void tearDown() + throws Exception + { + session = null; + system = null; + super.tearDown(); + } + + public static RepositorySystemSession newMavenRepositorySystemSession( RepositorySystem system ) + { + MavenRepositorySystemSession session = new MavenRepositorySystemSession( true ); + + LocalRepository localRepo = new LocalRepository( "target/local-repo" ); + session.setLocalRepositoryManager( system.newLocalRepositoryManager( localRepo ) ); + + session.setTransferListener( new ConsoleTransferListener() ); + session.setRepositoryListener( new ConsoleRepositoryListener() ); + + return session; + } + + public static RemoteRepository newTestRepository() + throws MalformedURLException + { + return new RemoteRepository( "repo", "default", + getTestFile( "target/test-classes/repo" ).toURI().toURL().toString() ); + } +} diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionResolverTest.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionResolverTest.java index 39eaaf647..1feaef808 100644 --- a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionResolverTest.java +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionResolverTest.java @@ -1,96 +1,96 @@ -package org.apache.maven.repository.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.sonatype.aether.artifact.Artifact; -import org.sonatype.aether.impl.VersionResolver; -import org.sonatype.aether.resolution.VersionRequest; -import org.sonatype.aether.resolution.VersionResult; -import org.sonatype.aether.util.artifact.DefaultArtifact; - -public class DefaultVersionResolverTest - extends AbstractRepositoryTestCase -{ - private DefaultVersionResolver versionResolver; - - @Override - protected void setUp() - throws Exception - { - super.setUp(); - // be sure we're testing the right class, i.e. DefaultVersionResolver.class - versionResolver = (DefaultVersionResolver) lookup( VersionResolver.class, "default" ); - } - - @Override - protected void tearDown() - throws Exception - { - versionResolver = null; - super.tearDown(); - } - - public void testResolveSeparateInstalledClassifiedNonUniqueVersionedArtifacts() - throws Exception - { - VersionRequest requestB = new VersionRequest(); - requestB.addRepository( newTestRepository() ); - Artifact artifactB = - new DefaultArtifact( "org.apache.maven.its", "dep-mng5324", "classifierB", "jar", "07.20.3-SNAPSHOT" ); - requestB.setArtifact( artifactB ); - - VersionResult resultB = versionResolver.resolveVersion( session, requestB ); - assertEquals( "07.20.3-20120809.112920-97", resultB.getVersion() ); - - VersionRequest requestA = new VersionRequest(); - requestA.addRepository( newTestRepository() ); - - Artifact artifactA = - new DefaultArtifact( "org.apache.maven.its", "dep-mng5324", "classifierA", "jar", "07.20.3-SNAPSHOT" ); - requestA.setArtifact( artifactA ); - - VersionResult resultA = versionResolver.resolveVersion( session, requestA ); - assertEquals( "07.20.3-20120809.112124-88", resultA.getVersion() ); - } - - public void testResolveSeparateInstalledClassifiedNonVersionedArtifacts() - throws Exception - { - VersionRequest requestA = new VersionRequest(); - requestA.addRepository( newTestRepository() ); - String versionA = "07.20.3-20120809.112124-88"; - Artifact artifactA = - new DefaultArtifact( "org.apache.maven.its", "dep-mng5324", "classifierA", "jar", versionA ); - requestA.setArtifact( artifactA ); - - VersionResult resultA = versionResolver.resolveVersion( session, requestA ); - assertEquals( versionA, resultA.getVersion() ); - - VersionRequest requestB = new VersionRequest(); - requestB.addRepository( newTestRepository() ); - String versionB = "07.20.3-20120809.112920-97"; - Artifact artifactB = - new DefaultArtifact( "org.apache.maven.its", "dep-mng5324", "classifierB", "jar", versionB ); - requestB.setArtifact( artifactB ); - - VersionResult resultB = versionResolver.resolveVersion( session, requestB ); - assertEquals( versionB, resultB.getVersion() ); - } -} +package org.apache.maven.repository.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.sonatype.aether.artifact.Artifact; +import org.sonatype.aether.impl.VersionResolver; +import org.sonatype.aether.resolution.VersionRequest; +import org.sonatype.aether.resolution.VersionResult; +import org.sonatype.aether.util.artifact.DefaultArtifact; + +public class DefaultVersionResolverTest + extends AbstractRepositoryTestCase +{ + private DefaultVersionResolver versionResolver; + + @Override + protected void setUp() + throws Exception + { + super.setUp(); + // be sure we're testing the right class, i.e. DefaultVersionResolver.class + versionResolver = (DefaultVersionResolver) lookup( VersionResolver.class, "default" ); + } + + @Override + protected void tearDown() + throws Exception + { + versionResolver = null; + super.tearDown(); + } + + public void testResolveSeparateInstalledClassifiedNonUniqueVersionedArtifacts() + throws Exception + { + VersionRequest requestB = new VersionRequest(); + requestB.addRepository( newTestRepository() ); + Artifact artifactB = + new DefaultArtifact( "org.apache.maven.its", "dep-mng5324", "classifierB", "jar", "07.20.3-SNAPSHOT" ); + requestB.setArtifact( artifactB ); + + VersionResult resultB = versionResolver.resolveVersion( session, requestB ); + assertEquals( "07.20.3-20120809.112920-97", resultB.getVersion() ); + + VersionRequest requestA = new VersionRequest(); + requestA.addRepository( newTestRepository() ); + + Artifact artifactA = + new DefaultArtifact( "org.apache.maven.its", "dep-mng5324", "classifierA", "jar", "07.20.3-SNAPSHOT" ); + requestA.setArtifact( artifactA ); + + VersionResult resultA = versionResolver.resolveVersion( session, requestA ); + assertEquals( "07.20.3-20120809.112124-88", resultA.getVersion() ); + } + + public void testResolveSeparateInstalledClassifiedNonVersionedArtifacts() + throws Exception + { + VersionRequest requestA = new VersionRequest(); + requestA.addRepository( newTestRepository() ); + String versionA = "07.20.3-20120809.112124-88"; + Artifact artifactA = + new DefaultArtifact( "org.apache.maven.its", "dep-mng5324", "classifierA", "jar", versionA ); + requestA.setArtifact( artifactA ); + + VersionResult resultA = versionResolver.resolveVersion( session, requestA ); + assertEquals( versionA, resultA.getVersion() ); + + VersionRequest requestB = new VersionRequest(); + requestB.addRepository( newTestRepository() ); + String versionB = "07.20.3-20120809.112920-97"; + Artifact artifactB = + new DefaultArtifact( "org.apache.maven.its", "dep-mng5324", "classifierB", "jar", versionB ); + requestB.setArtifact( artifactB ); + + VersionResult resultB = versionResolver.resolveVersion( session, requestB ); + assertEquals( versionB, resultB.getVersion() ); + } +} diff --git a/maven-aether-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5324/07.20.3-SNAPSHOT/maven-metadata.xml b/maven-aether-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5324/07.20.3-SNAPSHOT/maven-metadata.xml index db26c6eb3..9f0a7fedd 100644 --- a/maven-aether-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5324/07.20.3-SNAPSHOT/maven-metadata.xml +++ b/maven-aether-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5324/07.20.3-SNAPSHOT/maven-metadata.xml @@ -1,49 +1,49 @@ - - - - - - org.apache.maven.its - dep-mng5324 - 07.20.3-SNAPSHOT - - - 20120809.112920 - 97 - - 20120809112920 - - - classifierA - jar - 07.20.3-20120809.112124-88 - 20120809112124 - - - classifierB - jar - 07.20.3-20120809.112920-97 - 20120809112920 - - - + + + + + + org.apache.maven.its + dep-mng5324 + 07.20.3-SNAPSHOT + + + 20120809.112920 + 97 + + 20120809112920 + + + classifierA + jar + 07.20.3-20120809.112124-88 + 20120809112124 + + + classifierB + jar + 07.20.3-20120809.112920-97 + 20120809112920 + + + \ No newline at end of file From 18444eed3665695f2d7a863a47505e33aa29d277 Mon Sep 17 00:00:00 2001 From: olivier lamy Date: Thu, 31 Jan 2013 23:02:19 +0100 Subject: [PATCH 115/224] prevent possible NPE --- .../maven/repository/internal/DefaultVersionResolver.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java index 759d90ec8..0b5697003 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -313,6 +313,12 @@ private Versioning readVersions( RepositorySystemSession session, RequestTrace t { Versioning versioning = null; + + if (metadata == null) + { + return new Versioning(); + } + SyncContext syncContext = syncContextFactory.newInstance( session, true ); try From 6a94b65958df1c6364fc4328b5402a2098900c62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Boutemy?= Date: Sat, 2 Feb 2013 16:46:43 +0100 Subject: [PATCH 116/224] code formatting --- .../maven/repository/internal/DefaultVersionResolver.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java index 0b5697003..cf3448348 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -314,7 +314,7 @@ private Versioning readVersions( RepositorySystemSession session, RequestTrace t Versioning versioning = null; - if (metadata == null) + if ( metadata == null ) { return new Versioning(); } From f04ca09131c6793dcbbb9ec38d3b71b6e6cb1efb Mon Sep 17 00:00:00 2001 From: Benjamin Bentmann Date: Sun, 3 Feb 2013 20:44:44 +0100 Subject: [PATCH 117/224] Updated for latest ConflictResolver --- .../maven/repository/internal/MavenRepositorySystemUtils.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java index 3e379f9ef..b7ed32015 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java @@ -44,6 +44,7 @@ import org.eclipse.aether.util.graph.transformer.JavaScopeDeriver; import org.eclipse.aether.util.graph.transformer.JavaScopeSelector; import org.eclipse.aether.util.graph.transformer.NearestVersionSelector; +import org.eclipse.aether.util.graph.transformer.SimpleOptionalitySelector; import org.eclipse.aether.util.graph.traverser.FatArtifactTraverser; import org.eclipse.aether.util.repository.SimpleArtifactDescriptorPolicy; @@ -103,7 +104,8 @@ public static DefaultRepositorySystemSession newSession() session.setDependencySelector( depFilter ); DependencyGraphTransformer transformer = - new ConflictResolver( new NearestVersionSelector(), new JavaScopeSelector(), new JavaScopeDeriver() ); + new ConflictResolver( new NearestVersionSelector(), new JavaScopeSelector(), + new SimpleOptionalitySelector(), new JavaScopeDeriver() ); new ChainedDependencyGraphTransformer( transformer, new JavaDependencyContextRefiner() ); session.setDependencyGraphTransformer( transformer ); From 17a4497dcf5c863321523f3ca80931a956fe9d3a Mon Sep 17 00:00:00 2001 From: Stuart McCulloch Date: Wed, 13 Mar 2013 01:11:34 +0000 Subject: [PATCH 118/224] Use Eclipse/Sisu 0.0.0.M2 milestone Signed-off-by: Jason van Zyl --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 6c611771d..f6985d97b 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -76,8 +76,8 @@ under the License. test - org.sonatype.sisu - sisu-inject-plexus + org.eclipse.sisu + org.eclipse.sisu.plexus org.codehaus.plexus From bffe9a8b0be7421f73c447e79c67f4a4f1ab583e Mon Sep 17 00:00:00 2001 From: Stuart McCulloch Date: Tue, 19 Mar 2013 01:12:21 +0000 Subject: [PATCH 119/224] Avoid mixing two flavours of Guice on the classpath. Note: the main blocker to using Google-Guice for Maven3 is the lack of a release with the new ProvisionListener API, which is needed to support Plexus lifecycles. While there are other fixes/features in Sisu-Guice that are nice-to-have (such as removal of the big global singleton lock) they aren't strictly required for Maven3. Signed-off-by: Jason van Zyl --- maven-aether-provider/pom.xml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 926c51e2c..35daff114 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -88,9 +88,8 @@ under the License. plexus-utils - com.google.inject - guice - 3.0 + org.sonatype.sisu + sisu-guice no_aop true From d95c71390e59d3b0ff9cd826c3fd7bb1951cda65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Boutemy?= Date: Sat, 30 Mar 2013 09:37:11 +0100 Subject: [PATCH 120/224] code formatting --- .../internal/MavenAetherModule.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenAetherModule.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenAetherModule.java index 0432cdb6d..6f391fd43 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenAetherModule.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenAetherModule.java @@ -1,5 +1,24 @@ package org.apache.maven.repository.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 java.util.Collections; import java.util.HashSet; import java.util.Set; From 1660996014c1aca6ed9eeee4deb057681b0193ae Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Sat, 30 Mar 2013 10:19:45 -0400 Subject: [PATCH 121/224] [maven-release-plugin] prepare release maven-3.1.0 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 35daff114..b168e0291 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1-SNAPSHOT + 3.1.0 maven-aether-provider From 63225ae9561f38dd72045f1cb74e47c2b2fad82c Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Sat, 30 Mar 2013 10:21:32 -0400 Subject: [PATCH 122/224] [maven-release-plugin] prepare for next development iteration --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index b168e0291..e20855114 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1.0 + 3.1.1-SNAPSHOT maven-aether-provider From da65e265330fcc8e900371226af27cc56e0fcb5a Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Sat, 30 Mar 2013 10:50:39 -0400 Subject: [PATCH 123/224] o revert release plugin commits --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index e20855114..35daff114 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1.1-SNAPSHOT + 3.1-SNAPSHOT maven-aether-provider From 6621e292921c1efda3a2ff2a13f4d0260f50b537 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Sat, 30 Mar 2013 10:52:10 -0400 Subject: [PATCH 124/224] [maven-release-plugin] prepare release maven-3.1.0-alpha-1 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 35daff114..8ee802ad3 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1-SNAPSHOT + 3.1.0-alpha-1 maven-aether-provider From f80dc4eefbe06f111209f02361a0964bae2804c4 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Sat, 30 Mar 2013 10:52:15 -0400 Subject: [PATCH 125/224] [maven-release-plugin] prepare for next development iteration --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 8ee802ad3..35daff114 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1.0-alpha-1 + 3.1-SNAPSHOT maven-aether-provider From 02e1f9680033aaf1c5abc7cba055c59463702412 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Boutemy?= Date: Tue, 9 Apr 2013 08:15:58 +0200 Subject: [PATCH 126/224] accounted for Eclipse Aether API change --- .../apache/maven/repository/internal/package.html | 2 +- maven-aether-provider/src/site/apt/index.apt | 13 +++++-------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/package.html b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/package.html index b36134bd5..ea3c9071a 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/package.html +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/package.html @@ -1,3 +1,3 @@ -

Aether extensions for utilizing the Maven POM and Maven repository metadata.

+

Aether extensions for utilizing the Maven POM and Maven repository metadata.

\ No newline at end of file diff --git a/maven-aether-provider/src/site/apt/index.apt b/maven-aether-provider/src/site/apt/index.apt index 00c0b13f7..3077ec3ad 100644 --- a/maven-aether-provider/src/site/apt/index.apt +++ b/maven-aether-provider/src/site/apt/index.apt @@ -8,12 +8,9 @@ Maven Aether Provider - Maven Aether Provider is an Aether extension to support Maven POMs and local+remote repositories. + Maven Aether Provider is an {{{http://www.eclipse.org/aether/}Aether}} extension to support + Maven POMs and local+remote repositories. - Main component is <<>> - ({{{./apidocs/org/apache/maven/repository/internal/MavenRepositorySystemSession.html}javadoc}}, - {{{./xref/org/apache/maven/repository/internal/MavenRepositorySystemSession.html}source}}). - - If used outside Maven runtime context, another useful entry point is <<>> - ({{{./apidocs/org/apache/maven/repository/internal/MavenServiceLocator.html}javadoc}}, - {{{./xref/org/apache/maven/repository/internal/MavenServiceLocator.html}source}}). + Main component is <<>> + ({{{./apidocs/org/apache/maven/repository/internal/MavenRepositorySystemUtils.html}javadoc}}, + {{{./xref/org/apache/maven/repository/internal/MavenRepositorySystemUtils.html}source}}). From b408dc93e51f83920fd37fdf1fa7b38b2f60e10b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Boutemy?= Date: Wed, 10 Apr 2013 01:42:32 +0200 Subject: [PATCH 127/224] added unit testst back after Eclipse Aether migration --- .../internal/AbstractRepositoryTestCase.java | 85 +++++++ .../internal/DefaultVersionResolverTest.java | 96 ++++++++ .../internal/RepositorySystemTest.java | 220 ++++++++++++++++++ .../util/ConsoleRepositoryListener.java | 132 +++++++++++ .../util/ConsoleTransferListener.java | 186 +++++++++++++++ 5 files changed, 719 insertions(+) create mode 100644 maven-aether-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java create mode 100644 maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionResolverTest.java create mode 100644 maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java create mode 100644 maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleRepositoryListener.java create mode 100644 maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleTransferListener.java diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java new file mode 100644 index 000000000..eea3830b2 --- /dev/null +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java @@ -0,0 +1,85 @@ +package org.apache.maven.repository.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 java.net.MalformedURLException; + +import org.apache.maven.repository.internal.util.ConsoleRepositoryListener; +import org.apache.maven.repository.internal.util.ConsoleTransferListener; +import org.codehaus.plexus.ContainerConfiguration; +import org.codehaus.plexus.PlexusTestCase; +import org.eclipse.aether.DefaultRepositorySystemSession; +import org.eclipse.aether.RepositorySystem; +import org.eclipse.aether.RepositorySystemSession; +import org.eclipse.aether.repository.LocalRepository; +import org.eclipse.aether.repository.RemoteRepository; + +public abstract class AbstractRepositoryTestCase + extends PlexusTestCase +{ + protected RepositorySystem system; + + protected RepositorySystemSession session; + + @Override + protected void customizeContainerConfiguration( ContainerConfiguration containerConfiguration ) + { + super.customizeContainerConfiguration( containerConfiguration ); + containerConfiguration.setAutoWiring( true ); + } + + @Override + protected void setUp() + throws Exception + { + super.setUp(); + system = lookup( RepositorySystem.class ); + session = newMavenRepositorySystemSession( system ); + } + + @Override + protected void tearDown() + throws Exception + { + session = null; + system = null; + super.tearDown(); + } + + public static RepositorySystemSession newMavenRepositorySystemSession( RepositorySystem system ) + { + DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession(); + + LocalRepository localRepo = new LocalRepository( "target/local-repo" ); + session.setLocalRepositoryManager( system.newLocalRepositoryManager( session, localRepo ) ); + + session.setTransferListener( new ConsoleTransferListener() ); + session.setRepositoryListener( new ConsoleRepositoryListener() ); + + return session; + } + + public static RemoteRepository newTestRepository() + throws MalformedURLException + { + return new RemoteRepository.Builder( "repo", "default", + getTestFile( "target/test-classes/repo" ).toURI().toURL().toString() ).build(); + } +} diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionResolverTest.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionResolverTest.java new file mode 100644 index 000000000..90dd6a4cf --- /dev/null +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionResolverTest.java @@ -0,0 +1,96 @@ +package org.apache.maven.repository.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.eclipse.aether.artifact.Artifact; +import org.eclipse.aether.impl.VersionResolver; +import org.eclipse.aether.resolution.VersionRequest; +import org.eclipse.aether.resolution.VersionResult; +import org.eclipse.aether.artifact.DefaultArtifact; + +public class DefaultVersionResolverTest + extends AbstractRepositoryTestCase +{ + private DefaultVersionResolver versionResolver; + + @Override + protected void setUp() + throws Exception + { + super.setUp(); + // be sure we're testing the right class, i.e. DefaultVersionResolver.class + versionResolver = (DefaultVersionResolver) lookup( VersionResolver.class, "default" ); + } + + @Override + protected void tearDown() + throws Exception + { + versionResolver = null; + super.tearDown(); + } + + public void testResolveSeparateInstalledClassifiedNonUniqueVersionedArtifacts() + throws Exception + { + VersionRequest requestB = new VersionRequest(); + requestB.addRepository( newTestRepository() ); + Artifact artifactB = + new DefaultArtifact( "org.apache.maven.its", "dep-mng5324", "classifierB", "jar", "07.20.3-SNAPSHOT" ); + requestB.setArtifact( artifactB ); + + VersionResult resultB = versionResolver.resolveVersion( session, requestB ); + assertEquals( "07.20.3-20120809.112920-97", resultB.getVersion() ); + + VersionRequest requestA = new VersionRequest(); + requestA.addRepository( newTestRepository() ); + + Artifact artifactA = + new DefaultArtifact( "org.apache.maven.its", "dep-mng5324", "classifierA", "jar", "07.20.3-SNAPSHOT" ); + requestA.setArtifact( artifactA ); + + VersionResult resultA = versionResolver.resolveVersion( session, requestA ); + assertEquals( "07.20.3-20120809.112124-88", resultA.getVersion() ); + } + + public void testResolveSeparateInstalledClassifiedNonVersionedArtifacts() + throws Exception + { + VersionRequest requestA = new VersionRequest(); + requestA.addRepository( newTestRepository() ); + String versionA = "07.20.3-20120809.112124-88"; + Artifact artifactA = + new DefaultArtifact( "org.apache.maven.its", "dep-mng5324", "classifierA", "jar", versionA ); + requestA.setArtifact( artifactA ); + + VersionResult resultA = versionResolver.resolveVersion( session, requestA ); + assertEquals( versionA, resultA.getVersion() ); + + VersionRequest requestB = new VersionRequest(); + requestB.addRepository( newTestRepository() ); + String versionB = "07.20.3-20120809.112920-97"; + Artifact artifactB = + new DefaultArtifact( "org.apache.maven.its", "dep-mng5324", "classifierB", "jar", versionB ); + requestB.setArtifact( artifactB ); + + VersionResult resultB = versionResolver.resolveVersion( session, requestB ); + assertEquals( versionB, resultB.getVersion() ); + } +} diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java new file mode 100644 index 000000000..ffe1bc1fd --- /dev/null +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java @@ -0,0 +1,220 @@ +package org.apache.maven.repository.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 java.util.Arrays; +import java.util.List; + +import org.eclipse.aether.artifact.Artifact; +import org.eclipse.aether.collection.CollectRequest; +import org.eclipse.aether.collection.CollectResult; +import org.eclipse.aether.graph.Dependency; +import org.eclipse.aether.graph.DependencyNode; +import org.eclipse.aether.resolution.ArtifactDescriptorRequest; +import org.eclipse.aether.resolution.ArtifactDescriptorResult; +import org.eclipse.aether.resolution.ArtifactRequest; +import org.eclipse.aether.resolution.ArtifactResult; +import org.eclipse.aether.artifact.DefaultArtifact; + +public class RepositorySystemTest + extends AbstractRepositoryTestCase +{ + public void testResolveVersionRange() + throws Exception + { + //VersionRangeResult resolveVersionRange( RepositorySystemSession session, VersionRangeRequest request ) + // throws VersionRangeResolutionException; + + } + + public void testResolveVersion() + throws Exception + { + //VersionResult resolveVersion( RepositorySystemSession session, VersionRequest request ) + // throws VersionResolutionException; + } + + public void testReadArtifactDescriptor() + throws Exception + { + Artifact artifact = new DefaultArtifact( "ut.simple:artifact:extension:classifier:1.0" ); + + ArtifactDescriptorRequest request = new ArtifactDescriptorRequest(); + request.setArtifact( artifact ); + request.addRepository( newTestRepository() ); + + ArtifactDescriptorResult result = system.readArtifactDescriptor( session, request ); + + List deps = result.getDependencies(); + assertEquals( 2, deps.size() ); + checkUtSimpleArtifactDependencies( deps.get( 0 ), deps.get( 1 ) ); + } + + /** + * check ut.simple:artifact:1.0 dependencies + */ + private void checkUtSimpleArtifactDependencies( Dependency dep1, Dependency dep2 ) + { + assertEquals( "compile", dep1.getScope() ); + assertFalse( dep1.isOptional() ); + assertEquals( 0, dep1.getExclusions().size() ); + Artifact depArtifact = dep1.getArtifact(); + assertEquals( "ut.simple", depArtifact.getGroupId() ); + assertEquals( "dependency", depArtifact.getArtifactId() ); + assertEquals( "1.0", depArtifact.getVersion() ); + assertEquals( "1.0", depArtifact.getBaseVersion() ); + assertNull( depArtifact.getFile() ); + assertFalse( depArtifact.isSnapshot() ); + assertEquals( "", depArtifact.getClassifier() ); + assertEquals( "jar", depArtifact.getExtension() ); + assertEquals( "java", depArtifact.getProperty( "language", null ) ); + assertEquals( "jar", depArtifact.getProperty( "type", null ) ); + assertEquals( "true", depArtifact.getProperty( "constitutesBuildPath", null ) ); + assertEquals( "false", depArtifact.getProperty( "includesDependencies", null ) ); + assertEquals( 4, depArtifact.getProperties().size() ); + + assertEquals( "compile", dep2.getScope() ); + assertFalse( dep2.isOptional() ); + assertEquals( 0, dep2.getExclusions().size() ); + depArtifact = dep2.getArtifact(); + assertEquals( "ut.simple", depArtifact.getGroupId() ); + assertEquals( "dependency", depArtifact.getArtifactId() ); + assertEquals( "1.0", depArtifact.getVersion() ); + assertEquals( "1.0", depArtifact.getBaseVersion() ); + assertNull( depArtifact.getFile() ); + assertFalse( depArtifact.isSnapshot() ); + assertEquals( "sources", depArtifact.getClassifier() ); + assertEquals( "jar", depArtifact.getExtension() ); + assertEquals( "java", depArtifact.getProperty( "language", null ) ); + assertEquals( "jar", depArtifact.getProperty( "type", null ) ); // shouldn't it be java-sources given the classifier? + assertEquals( "true", depArtifact.getProperty( "constitutesBuildPath", null ) ); // shouldn't it be false given the classifier? + assertEquals( "false", depArtifact.getProperty( "includesDependencies", null ) ); + assertEquals( 4, depArtifact.getProperties().size() ); + } + + public void testCollectDependencies() + throws Exception + { + Artifact artifact = new DefaultArtifact( "ut.simple:artifact:extension:classifier:1.0" ); + // notice: extension and classifier not really used in this test... + + CollectRequest collectRequest = new CollectRequest(); + collectRequest.setRoot( new Dependency( artifact, null ) ); + collectRequest.addRepository( newTestRepository() ); + + CollectResult collectResult = system.collectDependencies( session, collectRequest ); + + List nodes = collectResult.getRoot().getChildren(); + assertEquals( 2, nodes.size() ); + checkUtSimpleArtifactDependencies( nodes.get( 0 ).getDependency(), nodes.get( 1 ).getDependency() ); + } + + public void testResolveArtifact() + throws Exception + { + Artifact artifact = new DefaultArtifact( "ut.simple:artifact:1.0" ); + + ArtifactRequest artifactRequest = new ArtifactRequest(); + artifactRequest.setArtifact( artifact ); + artifactRequest.addRepository( newTestRepository() ); + + ArtifactResult artifactResult = system.resolveArtifact( session, artifactRequest ); + checkArtifactResult( artifactResult, "artifact-1.0.jar" ); + + artifact = new DefaultArtifact( "ut.simple:artifact:zip:1.0" ); + artifactRequest.setArtifact( artifact ); + artifactResult = system.resolveArtifact( session, artifactRequest ); + checkArtifactResult( artifactResult, "artifact-1.0.zip" ); + + artifact = new DefaultArtifact( "ut.simple:artifact:zip:classifier:1.0" ); + artifactRequest.setArtifact( artifact ); + artifactResult = system.resolveArtifact( session, artifactRequest ); + checkArtifactResult( artifactResult, "artifact-1.0-classifier.zip" ); + } + + private void checkArtifactResult( ArtifactResult result, String filename ) + { + assertFalse( result.isMissing() ); + assertTrue( result.isResolved() ); + Artifact artifact = result.getArtifact(); + assertNotNull( artifact.getFile() ); + assertEquals( filename, artifact.getFile().getName() ); + } + + public void testResolveArtifacts() + throws Exception + { + ArtifactRequest req1 = new ArtifactRequest(); + req1.setArtifact( new DefaultArtifact( "ut.simple:artifact:1.0" ) ); + req1.addRepository( newTestRepository() ); + + ArtifactRequest req2 = new ArtifactRequest(); + req2.setArtifact( new DefaultArtifact( "ut.simple:artifact:zip:1.0" ) ); + req2.addRepository( newTestRepository() ); + + ArtifactRequest req3 = new ArtifactRequest(); + req3.setArtifact( new DefaultArtifact( "ut.simple:artifact:zip:classifier:1.0" ) ); + req3.addRepository( newTestRepository() ); + + List requests = Arrays.asList( new ArtifactRequest[] { req1, req2, req3 } ); + + List results = system.resolveArtifacts( session, requests ); + + assertEquals( 3, results.size() ); + checkArtifactResult( results.get( 0 ), "artifact-1.0.jar" ); + checkArtifactResult( results.get( 1 ), "artifact-1.0.zip" ); + checkArtifactResult( results.get( 2 ), "artifact-1.0-classifier.zip" ); + } + + public void testResolveMetadata() + throws Exception + { + //List resolveMetadata( RepositorySystemSession session, + // Collection requests ); + } + + public void testInstall() + throws Exception + { + //InstallResult install( RepositorySystemSession session, InstallRequest request ) + // throws InstallationException; + // release, snapshot unique ou non unique, attachement + } + + public void testDeploy() + throws Exception + { + //DeployResult deploy( RepositorySystemSession session, DeployRequest request ) + // throws DeploymentException; + } + + public void testNewLocalRepositoryManager() + throws Exception + { + //LocalRepositoryManager newLocalRepositoryManager( LocalRepository localRepository ); + } + + public void testNewSyncContext() + throws Exception + { + //SyncContext newSyncContext( RepositorySystemSession session, boolean shared ); + } + +} diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleRepositoryListener.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleRepositoryListener.java new file mode 100644 index 000000000..2879a9fe4 --- /dev/null +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleRepositoryListener.java @@ -0,0 +1,132 @@ +package org.apache.maven.repository.internal.util; + +/* + * 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 java.io.PrintStream; + +import org.eclipse.aether.AbstractRepositoryListener; +import org.eclipse.aether.RepositoryEvent; + +public class ConsoleRepositoryListener + extends AbstractRepositoryListener +{ + + private PrintStream out; + + public ConsoleRepositoryListener() + { + this( null ); + } + + public ConsoleRepositoryListener( PrintStream out ) + { + this.out = ( out != null ) ? out : System.out; + } + + public void artifactDeployed( RepositoryEvent event ) + { + println( "artifactDeployed", event.getArtifact() + " to " + event.getRepository() ); + } + + public void artifactDeploying( RepositoryEvent event ) + { + println( "artifactDeploying", event.getArtifact() + " to " + event.getRepository() ); + } + + public void artifactDescriptorInvalid( RepositoryEvent event ) + { + println( "artifactDescriptorInvalid", "for " + event.getArtifact() + ": " + event.getException().getMessage() ); + } + + public void artifactDescriptorMissing( RepositoryEvent event ) + { + println( "artifactDescriptorMissing", "for " + event.getArtifact() ); + } + + public void artifactInstalled( RepositoryEvent event ) + { + println( "artifactInstalled", event.getArtifact() + " to " + event.getFile() ); + } + + public void artifactInstalling( RepositoryEvent event ) + { + println( "artifactInstalling", event.getArtifact() + " to " + event.getFile() ); + } + + public void artifactResolved( RepositoryEvent event ) + { + println( "artifactResolved", event.getArtifact() + " from " + event.getRepository() ); + } + + public void artifactDownloading( RepositoryEvent event ) + { + println( "artifactDownloading", event.getArtifact() + " from " + event.getRepository() ); + } + + public void artifactDownloaded( RepositoryEvent event ) + { + println( "artifactDownloaded", event.getArtifact() + " from " + event.getRepository() ); + } + + public void artifactResolving( RepositoryEvent event ) + { + println( "artifactResolving", event.getArtifact().toString() ); + } + + public void metadataDeployed( RepositoryEvent event ) + { + println( "metadataDeployed", event.getMetadata() + " to " + event.getRepository() ); + } + + public void metadataDeploying( RepositoryEvent event ) + { + println( "metadataDeploying", event.getMetadata() + " to " + event.getRepository() ); + } + + public void metadataInstalled( RepositoryEvent event ) + { + println( "metadataInstalled", event.getMetadata() + " to " + event.getFile() ); + } + + public void metadataInstalling( RepositoryEvent event ) + { + println( "metadataInstalling", event.getMetadata() + " to " + event.getFile() ); + } + + public void metadataInvalid( RepositoryEvent event ) + { + println( "metadataInvalid", event.getMetadata().toString() ); + } + + public void metadataResolved( RepositoryEvent event ) + { + println( "metadataResolved", event.getMetadata() + " from " + event.getRepository() ); + } + + public void metadataResolving( RepositoryEvent event ) + { + println( "metadataResolving", event.getMetadata() + " from " + event.getRepository() ); + } + + private void println( String event, String message ) + { + out.println( "Aether Repository - " + event + ": " + message ); + } +} diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleTransferListener.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleTransferListener.java new file mode 100644 index 000000000..f5e858099 --- /dev/null +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleTransferListener.java @@ -0,0 +1,186 @@ +package org.apache.maven.repository.internal.util; + +/* + * 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 java.io.PrintStream; +import java.text.DecimalFormat; +import java.text.DecimalFormatSymbols; +import java.util.Locale; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +import org.eclipse.aether.transfer.AbstractTransferListener; +import org.eclipse.aether.transfer.TransferEvent; +import org.eclipse.aether.transfer.TransferResource; + +public class ConsoleTransferListener + extends AbstractTransferListener +{ + + private PrintStream out; + + private Map downloads = new ConcurrentHashMap(); + + private int lastLength; + + public ConsoleTransferListener() + { + this( null ); + } + + public ConsoleTransferListener( PrintStream out ) + { + this.out = ( out != null ) ? out : System.out; + } + + @Override + public void transferInitiated( TransferEvent event ) + { + String message = event.getRequestType() == TransferEvent.RequestType.PUT ? "Uploading" : "Downloading"; + + println( "transferInitiated", message + ": " + event.getResource().getRepositoryUrl() + event.getResource().getResourceName() ); + } + + @Override + public void transferProgressed( TransferEvent event ) + { + TransferResource resource = event.getResource(); + downloads.put( resource, Long.valueOf( event.getTransferredBytes() ) ); + + StringBuilder buffer = new StringBuilder( 64 ); + + for ( Map.Entry entry : downloads.entrySet() ) + { + long total = entry.getKey().getContentLength(); + long complete = entry.getValue().longValue(); + + buffer.append( getStatus( complete, total ) ).append( " " ); + } + + int pad = lastLength - buffer.length(); + lastLength = buffer.length(); + pad( buffer, pad ); + buffer.append( '\r' ); + + print( "transferProgressed", buffer.toString() ); + } + + private String getStatus( long complete, long total ) + { + if ( total >= 1024 ) + { + return toKB( complete ) + "/" + toKB( total ) + " KB "; + } + else if ( total >= 0 ) + { + return complete + "/" + total + " B "; + } + else if ( complete >= 1024 ) + { + return toKB( complete ) + " KB "; + } + else + { + return complete + " B "; + } + } + + private void pad( StringBuilder buffer, int spaces ) + { + String block = " "; + while ( spaces > 0 ) + { + int n = Math.min( spaces, block.length() ); + buffer.append( block, 0, n ); + spaces -= n; + } + } + + @Override + public void transferSucceeded( TransferEvent event ) + { + transferCompleted( event ); + + TransferResource resource = event.getResource(); + long contentLength = event.getTransferredBytes(); + if ( contentLength >= 0 ) + { + String type = ( event.getRequestType() == TransferEvent.RequestType.PUT ? "Uploaded" : "Downloaded" ); + String len = contentLength >= 1024 ? toKB( contentLength ) + " KB" : contentLength + " B"; + + String throughput = ""; + long duration = System.currentTimeMillis() - resource.getTransferStartTime(); + if ( duration > 0 ) + { + DecimalFormat format = new DecimalFormat( "0.0", new DecimalFormatSymbols( Locale.ENGLISH ) ); + double kbPerSec = ( contentLength / 1024.0 ) / ( duration / 1000.0 ); + throughput = " at " + format.format( kbPerSec ) + " KB/sec"; + } + + println( "transferSucceeded", type + ": " + resource.getRepositoryUrl() + resource.getResourceName() + " (" + + len + throughput + ")" ); + } + } + + @Override + public void transferFailed( TransferEvent event ) + { + transferCompleted( event ); + + println( "transferFailed", event.getException().getClass() + ": " + event.getException().getMessage() ); + } + + private void transferCompleted( TransferEvent event ) + { + downloads.remove( event.getResource() ); + + StringBuilder buffer = new StringBuilder( 64 ); + pad( buffer, lastLength ); + buffer.append( '\r' ); + out.println( buffer ); + } + + @Override + public void transferCorrupted( TransferEvent event ) + { + println( "transferCorrupted", event.getException().getClass() + ": " + event.getException().getMessage() ); + } + + protected long toKB( long bytes ) + { + return ( bytes + 1023 ) / 1024; + } + + private void println( String event, String message ) + { + print( event, message ); + out.println(); + } + + private void print( String event, String message ) + { + out.print( "Aether Transfer - " + event ); + if ( message != null ) + { + out.print( ": " ); + out.print( message ); + } + } +} From 70d54df60948542fd849c296ce414cfb79b721ee Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Thu, 23 May 2013 10:23:05 -0400 Subject: [PATCH 128/224] [maven-release-plugin] prepare release maven-3.1.0-alpha-1 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 35daff114..8ee802ad3 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1-SNAPSHOT + 3.1.0-alpha-1 maven-aether-provider From 5ca50282602f346767fe4c459ad8a7e2cd83afde Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Thu, 23 May 2013 10:23:11 -0400 Subject: [PATCH 129/224] [maven-release-plugin] prepare for next development iteration --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 8ee802ad3..35daff114 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1.0-alpha-1 + 3.1-SNAPSHOT maven-aether-provider From f62c65bde868e539f68298155eb5cd848c7f0d5e Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Sat, 25 May 2013 08:33:02 -0400 Subject: [PATCH 130/224] [maven-release-plugin] prepare release maven-3.1.0-alpha-1 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 35daff114..8ee802ad3 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1-SNAPSHOT + 3.1.0-alpha-1 maven-aether-provider From b0d747f0b8712f366c0216880fab44c7629ba205 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Sat, 25 May 2013 08:33:08 -0400 Subject: [PATCH 131/224] [maven-release-plugin] prepare for next development iteration --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 8ee802ad3..35daff114 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1.0-alpha-1 + 3.1-SNAPSHOT maven-aether-provider From 0dd4ecd8bb87252e18bc9341b334eaf51886bb9f Mon Sep 17 00:00:00 2001 From: Stephen Connolly Date: Tue, 28 May 2013 10:19:32 +0100 Subject: [PATCH 132/224] Add ASL license header --- .../maven/repository/internal/package.html | 19 +++++++++++++++++++ maven-aether-provider/src/site/apt/index.apt | 17 +++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/package.html b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/package.html index ea3c9071a..bfe6692fb 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/package.html +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/package.html @@ -1,3 +1,22 @@ + +

Aether extensions for utilizing the Maven POM and Maven repository metadata.

\ No newline at end of file diff --git a/maven-aether-provider/src/site/apt/index.apt b/maven-aether-provider/src/site/apt/index.apt index 3077ec3ad..600ec417d 100644 --- a/maven-aether-provider/src/site/apt/index.apt +++ b/maven-aether-provider/src/site/apt/index.apt @@ -1,3 +1,20 @@ +~~ 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. + ----- Introduction ----- From 12178640a13c25d4350a17667c7cd16bd7daaee0 Mon Sep 17 00:00:00 2001 From: rfscholte Date: Tue, 28 May 2013 22:02:39 +0200 Subject: [PATCH 133/224] Replace package.html with package-info.java --- .../repository/internal/package-info.java | 23 +++++++++++++++++++ .../maven/repository/internal/package.html | 22 ------------------ 2 files changed, 23 insertions(+), 22 deletions(-) create mode 100644 maven-aether-provider/src/main/java/org/apache/maven/repository/internal/package-info.java delete mode 100644 maven-aether-provider/src/main/java/org/apache/maven/repository/internal/package.html diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/package-info.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/package-info.java new file mode 100644 index 000000000..826a5c0fe --- /dev/null +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/package-info.java @@ -0,0 +1,23 @@ +/** + * Aether extensions for utilizing the Maven POM and Maven repository metadata. + */ +package org.apache.maven.repository.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. + */ \ No newline at end of file diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/package.html b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/package.html deleted file mode 100644 index bfe6692fb..000000000 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/package.html +++ /dev/null @@ -1,22 +0,0 @@ - - - -

Aether extensions for utilizing the Maven POM and Maven repository metadata.

- \ No newline at end of file From 0729fc5ea39cf2b381492fdd6d4e6e2d595a829d Mon Sep 17 00:00:00 2001 From: rfscholte Date: Wed, 29 May 2013 20:47:26 +0200 Subject: [PATCH 134/224] Fix errors reported by DOAP, shortened descriptions where required (DOAP accepts max 10 words) --- maven-aether-provider/pom.xml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 35daff114..a54fd37e0 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -31,10 +31,7 @@ under the License. maven-aether-provider Maven Aether Provider - - This module provides extensions to Aether for utilizing the Maven POM and Maven repository metadata for artifacts resolution - and download. - + Extensions to Aether for utilizing Maven POM and repository metadata. From fbefff626e39ef0936d30264ca4950a9b20bc460 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Sat, 1 Jun 2013 08:56:20 -0400 Subject: [PATCH 135/224] [maven-release-plugin] prepare release maven-3.1.0-alpha-1 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index a54fd37e0..a5252a38d 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1-SNAPSHOT + 3.1.0-alpha-1 maven-aether-provider From bcd172b05b08cda1d59274980dabf2e24cd8687f Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Sat, 1 Jun 2013 08:56:26 -0400 Subject: [PATCH 136/224] [maven-release-plugin] prepare for next development iteration --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index a5252a38d..a54fd37e0 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1.0-alpha-1 + 3.1-SNAPSHOT maven-aether-provider From e68def85ab50076ecf2aaae58300707b610b5996 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arnaud=20He=CC=81ritier?= Date: Tue, 11 Jun 2013 21:43:53 +0200 Subject: [PATCH 137/224] Code cleanup - Maven requires Java 5+ : Remove unnecessary boxing --- .../repository/internal/DefaultArtifactDescriptorReader.java | 2 +- .../maven/repository/internal/util/ConsoleTransferListener.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java index 60a183c49..380a6078c 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java @@ -248,7 +248,7 @@ public ArtifactDescriptorResult readArtifactDescriptor( RepositorySystemSession } List licenses = model.getLicenses(); - properties.put( "license.count", Integer.valueOf( licenses.size() ) ); + properties.put( "license.count", licenses.size() ); for ( int i = 0; i < licenses.size(); i++ ) { License license = licenses.get( i ); diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleTransferListener.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleTransferListener.java index f5e858099..1b77d4da8 100644 --- a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleTransferListener.java +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleTransferListener.java @@ -62,7 +62,7 @@ public void transferInitiated( TransferEvent event ) public void transferProgressed( TransferEvent event ) { TransferResource resource = event.getResource(); - downloads.put( resource, Long.valueOf( event.getTransferredBytes() ) ); + downloads.put( resource, event.getTransferredBytes() ); StringBuilder buffer = new StringBuilder( 64 ); From b5cc338e0f11bde602ad0e1e4ee6c004dc1659e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arnaud=20He=CC=81ritier?= Date: Tue, 11 Jun 2013 21:47:18 +0200 Subject: [PATCH 138/224] Code cleanup - Maven requires Java 5+ : Remove unnecessary unboxing --- .../maven/repository/internal/util/ConsoleTransferListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleTransferListener.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleTransferListener.java index 1b77d4da8..fb442834b 100644 --- a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleTransferListener.java +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleTransferListener.java @@ -69,7 +69,7 @@ public void transferProgressed( TransferEvent event ) for ( Map.Entry entry : downloads.entrySet() ) { long total = entry.getKey().getContentLength(); - long complete = entry.getValue().longValue(); + long complete = entry.getValue(); buffer.append( getStatus( complete, total ) ).append( " " ); } From 13fb9f852c96be0b91acd7b47c5d9496190a0653 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arnaud=20He=CC=81ritier?= Date: Tue, 11 Jun 2013 22:27:26 +0200 Subject: [PATCH 139/224] Code cleanup - Redundant array creation for calling varargs method --- .../apache/maven/repository/internal/RepositorySystemTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java index ffe1bc1fd..36bb9c5d6 100644 --- a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java @@ -173,7 +173,7 @@ public void testResolveArtifacts() req3.setArtifact( new DefaultArtifact( "ut.simple:artifact:zip:classifier:1.0" ) ); req3.addRepository( newTestRepository() ); - List requests = Arrays.asList( new ArtifactRequest[] { req1, req2, req3 } ); + List requests = Arrays.asList( req1, req2, req3 ); List results = system.resolveArtifacts( session, requests ); From 50de00b70f80c45d945d690f8a1091e82be40f32 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Sun, 23 Jun 2013 08:03:53 -0700 Subject: [PATCH 140/224] [maven-release-plugin] prepare release maven-3.1 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index a54fd37e0..3df9052a6 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1-SNAPSHOT + 3.1 maven-aether-provider From 9dc2c997af60a01e007dd8d1e6c9a9ce3faba0b8 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Sun, 23 Jun 2013 08:03:57 -0700 Subject: [PATCH 141/224] [maven-release-plugin] prepare for next development iteration --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 3df9052a6..af353b665 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1 + 3.2-SNAPSHOT maven-aether-provider From 9fe5c3c92d4e4023c490f0c05cc9a4d64b553a64 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Sun, 23 Jun 2013 08:15:29 -0700 Subject: [PATCH 142/224] Revert "[maven-release-plugin] prepare for next development iteration" This reverts commit e22b2fa16a14551b6a9f8fd5776d21cf5ef6c663. --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index af353b665..3df9052a6 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.2-SNAPSHOT + 3.1 maven-aether-provider From 4d6de34f24672ae81f2f3340514e896bc424a536 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Sun, 23 Jun 2013 08:15:55 -0700 Subject: [PATCH 143/224] Revert "[maven-release-plugin] prepare release maven-3.1" This reverts commit a47ef06832bff888928c66c525e18439b7a3c0f3. --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 3df9052a6..a54fd37e0 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1 + 3.1-SNAPSHOT maven-aether-provider From da99b25b77f96f5e9fee2e32068db330ef052d3a Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Thu, 27 Jun 2013 22:10:16 -0400 Subject: [PATCH 144/224] [maven-release-plugin] prepare release maven-3.1.0 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index a54fd37e0..1bb112601 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1-SNAPSHOT + 3.1.0 maven-aether-provider From 7096fa70ba4332036730974733a1cbfd2d798223 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Thu, 27 Jun 2013 22:10:23 -0400 Subject: [PATCH 145/224] [maven-release-plugin] prepare for next development iteration --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 1bb112601..a54fd37e0 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1.0 + 3.1-SNAPSHOT maven-aether-provider From 35a39cda5cfbfd88b28255d99b368b74f574ed66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arnaud=20He=CC=81ritier?= Date: Mon, 15 Jul 2013 22:37:09 +0200 Subject: [PATCH 146/224] Bump to 3.2-SNAPSHOT --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index a54fd37e0..af353b665 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1-SNAPSHOT + 3.2-SNAPSHOT maven-aether-provider From fc01c604ced56e7df3db004691db49deb453705b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Boutemy?= Date: Fri, 19 Jul 2013 19:31:00 +0200 Subject: [PATCH 147/224] bump to 3.1.1-SNAPSHOT --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index af353b665..910fab6c0 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.2-SNAPSHOT + 3.1.1-SNAPSHOT maven-aether-provider From a9c33543847203b79121e20bb07e3263c3cc8ee7 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Fri, 26 Jul 2013 21:09:50 -0400 Subject: [PATCH 148/224] o change the scope of org.eclipse.sisu to test in the maven-aether-provider to prevent it from leaking out to clients. --- maven-aether-provider/pom.xml | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 910fab6c0..9235f1c6f 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -62,20 +62,6 @@ under the License. org.eclipse.aether aether-impl - - org.eclipse.aether - aether-connector-wagon - test - - - org.apache.maven.wagon - wagon-file - test - - - org.eclipse.sisu - org.eclipse.sisu.plexus - org.codehaus.plexus plexus-component-annotations @@ -96,6 +82,22 @@ under the License.
+ + + org.eclipse.aether + aether-connector-wagon + test + + + org.apache.maven.wagon + wagon-file + test + + + org.eclipse.sisu + org.eclipse.sisu.plexus + test + From 1e783d6be808303ea4c882bf5118ef562e423952 Mon Sep 17 00:00:00 2001 From: rfscholte Date: Mon, 26 Aug 2013 20:08:04 +0200 Subject: [PATCH 149/224] [MNG-5459] failure to resolve pom artifact from snapshotVersion in maven-metadata.xml --- maven-aether-provider/pom.xml | 6 ++ .../DefaultArtifactDescriptorReader.java | 10 ++- .../DefaultArtifactDescriptorReaderTest.java | 77 +++++++++++++++++++ .../0.4.0-SNAPSHOT/maven-metadata.xml | 47 +++++++++++ 4 files changed, 138 insertions(+), 2 deletions(-) create mode 100644 maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReaderTest.java create mode 100644 maven-aether-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5459/0.4.0-SNAPSHOT/maven-metadata.xml diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 9235f1c6f..6695a40bf 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -97,6 +97,12 @@ under the License. org.eclipse.sisu org.eclipse.sisu.plexus test + + + org.mockito + mockito-core + 1.9.5 + test diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java index 380a6078c..59a955d9c 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java @@ -275,6 +275,7 @@ private Model loadPom( RepositorySystemSession session, ArtifactDescriptorReques Set visited = new LinkedHashSet(); for ( Artifact artifact = request.getArtifact();; ) { + Artifact pomArtifact = ArtifactDescriptorUtils.toPomArtifact( artifact ); try { VersionRequest versionRequest = @@ -283,6 +284,13 @@ private Model loadPom( RepositorySystemSession session, ArtifactDescriptorReques VersionResult versionResult = versionResolver.resolveVersion( session, versionRequest ); artifact = artifact.setVersion( versionResult.getVersion() ); + + versionRequest = + new VersionRequest( pomArtifact, request.getRepositories(), request.getRequestContext() ); + versionRequest.setTrace( trace ); + versionResult = versionResolver.resolveVersion( session, versionRequest ); + + pomArtifact = pomArtifact.setVersion( versionResult.getVersion() ); } catch ( VersionResolutionException e ) { @@ -303,8 +311,6 @@ private Model loadPom( RepositorySystemSession session, ArtifactDescriptorReques throw new ArtifactDescriptorException( result ); } - Artifact pomArtifact = ArtifactDescriptorUtils.toPomArtifact( artifact ); - ArtifactResult resolveResult; try { diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReaderTest.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReaderTest.java new file mode 100644 index 000000000..a7b1db2ee --- /dev/null +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReaderTest.java @@ -0,0 +1,77 @@ +package org.apache.maven.repository.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 static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; + +import org.eclipse.aether.RepositoryEvent; +import org.eclipse.aether.RepositoryEvent.EventType; +import org.eclipse.aether.artifact.DefaultArtifact; +import org.eclipse.aether.impl.ArtifactDescriptorReader; +import org.eclipse.aether.impl.RepositoryEventDispatcher; +import org.eclipse.aether.resolution.ArtifactDescriptorRequest; +import org.mockito.ArgumentCaptor; + +public class DefaultArtifactDescriptorReaderTest + extends AbstractRepositoryTestCase +{ + + public void testMng5459() + throws Exception + { + // prepare + DefaultArtifactDescriptorReader reader = (DefaultArtifactDescriptorReader) lookup( ArtifactDescriptorReader.class ); + + RepositoryEventDispatcher eventDispatcher = mock( RepositoryEventDispatcher.class ); + + ArgumentCaptor event = ArgumentCaptor.forClass( RepositoryEvent.class ); + + reader.setRepositoryEventDispatcher( eventDispatcher ); + + ArtifactDescriptorRequest request = new ArtifactDescriptorRequest(); + + request.addRepository( newTestRepository() ); + + request.setArtifact( new DefaultArtifact( "org.apache.maven.its", "dep-mng5459", "jar", "0.4.0-SNAPSHOT" ) ); + + // execute + reader.readArtifactDescriptor( session, request ); + + // verify + verify( eventDispatcher ).dispatch( event.capture() ); + + boolean missingArtifactDescriptor = false; + + for( RepositoryEvent evt : event.getAllValues() ) + { + if ( EventType.ARTIFACT_DESCRIPTOR_MISSING.equals( evt.getType() ) ) + { + assertEquals( "Could not find artifact org.apache.maven.its:dep-mng5459:pom:0.4.0-20130404.090532-2 in repo (" + newTestRepository().getUrl() + ")", evt.getException().getMessage() ); + missingArtifactDescriptor = true; + } + } + + if( !missingArtifactDescriptor ) + { + fail( "Expected missing artifact descriptor for org.apache.maven.its:dep-mng5459:pom:0.4.0-20130404.090532-2" ); + } + } +} diff --git a/maven-aether-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5459/0.4.0-SNAPSHOT/maven-metadata.xml b/maven-aether-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5459/0.4.0-SNAPSHOT/maven-metadata.xml new file mode 100644 index 000000000..923f26feb --- /dev/null +++ b/maven-aether-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5459/0.4.0-SNAPSHOT/maven-metadata.xml @@ -0,0 +1,47 @@ + + + + + + org.apache.maven.its + dep-mng5459 + 0.4.0-SNAPSHOT + + + 20130404.090532 + 2 + + 20130404093657 + + + pom + 0.4.0-20130404.090532-2 + 20130404090532 + + + jar + 0.4.0-20130404.093655-3 + 20130404093655 + + + + \ No newline at end of file From 1c47f814859b5d28e22ed26fed3945cf0c1c9cd6 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Thu, 5 Sep 2013 12:59:15 -0400 Subject: [PATCH 150/224] [maven-release-plugin] prepare release maven-3.1.1 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 6695a40bf..b6d87e53b 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1.1-SNAPSHOT + 3.1.1 maven-aether-provider From 44d5c14344265e730d7b3890da238624ef6425db Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Thu, 5 Sep 2013 12:59:21 -0400 Subject: [PATCH 151/224] [maven-release-plugin] prepare for next development iteration --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index b6d87e53b..dbc659cfa 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1.1 + 3.1.2-SNAPSHOT maven-aether-provider From f849e0a3b714a46b9b43e536a7385ab45b347da4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Boutemy?= Date: Sat, 14 Sep 2013 11:55:34 +0200 Subject: [PATCH 152/224] fix scm connection and developerConnection values in modules, waiting for maven-scm support of default inherited values, which appends /${artifactId} --- maven-aether-provider/pom.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index dbc659cfa..7d3f45893 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -33,6 +33,11 @@ under the License. Maven Aether Provider Extensions to Aether for utilizing Maven POM and repository metadata. + + scm:git:https://git-wip-us.apache.org/repos/asf/maven.git + scm:git:https://git-wip-us.apache.org/repos/asf/maven.git + + org.apache.maven From a94528bdc141c9f51c8602a8d58181459935396d Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Sat, 14 Sep 2013 17:05:06 -0400 Subject: [PATCH 153/224] Change poms over to major.minor-SNAPSHOT --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 7d3f45893..4614cc8bb 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1.2-SNAPSHOT + 3.1-SNAPSHOT maven-aether-provider From f9c4be18470b8fac6316b8ea462f13b8bedc4b88 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Tue, 17 Sep 2013 11:17:43 -0400 Subject: [PATCH 154/224] [maven-release-plugin] prepare release maven-3.1.1 --- maven-aether-provider/pom.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 4614cc8bb..a5c460a8e 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1-SNAPSHOT + 3.1.1 maven-aether-provider @@ -36,6 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git + maven-3.1.1 From 00bb558296a43e4c28ae97fcfbf036a86450d4d6 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Tue, 17 Sep 2013 11:17:49 -0400 Subject: [PATCH 155/224] [maven-release-plugin] prepare for next development iteration --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index a5c460a8e..c18471fce 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1.1 + 3.1-SNAPSHOT maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - maven-3.1.1 + HEAD From 778586e1ac8921c0d07b63bc79ce8b2d3ee93e19 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Fri, 4 Oct 2013 15:05:56 -0400 Subject: [PATCH 156/224] The version:set plugin works to roll/unroll changes (where the release plugin is not very good) so we can use more standard versions which will help withe ITs. --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index c18471fce..8ac2dbf83 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1-SNAPSHOT + 3.1.2-SNAPSHOT maven-aether-provider From 4e1fe2fa7c1f2a9ae3a2355a0aa5759cc2d03f23 Mon Sep 17 00:00:00 2001 From: Stephen Connolly Date: Mon, 6 Jan 2014 09:49:00 +0000 Subject: [PATCH 157/224] targetting 3.2.0 release --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 8ac2dbf83..29c99623c 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.1.2-SNAPSHOT + 3.2.0-SNAPSHOT maven-aether-provider From a194d26e7dc896b715fef3865a7c2ee8b690bd6d Mon Sep 17 00:00:00 2001 From: Stephen Connolly Date: Mon, 6 Jan 2014 11:21:26 +0000 Subject: [PATCH 158/224] Remove dead code (initializers) --- .../maven/repository/internal/RemoteSnapshotMetadata.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java index 60b8749a6..4494cae65 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java @@ -68,7 +68,7 @@ public String getExpandedVersion( Artifact artifact ) protected void merge( Metadata recessive ) { Snapshot snapshot; - String lastUpdated = ""; + String lastUpdated; if ( metadata.getVersioning() == null ) { From b8a1685c28ac29be588b197147820f9530274f96 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Mon, 10 Feb 2014 18:27:30 -0500 Subject: [PATCH 159/224] [maven-release-plugin] prepare release maven-3.2.0 --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 29c99623c..8a5fc7865 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.2.0-SNAPSHOT + 3.2.0 maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - HEAD + maven-3.2.0 From 2cf7b5f245f52e3927bf74e4a8d516443c364e6d Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Mon, 10 Feb 2014 18:27:37 -0500 Subject: [PATCH 160/224] [maven-release-plugin] prepare for next development iteration --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 8a5fc7865..4a4d057a6 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.2.0 + 3.2.1-SNAPSHOT maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - maven-3.2.0 + HEAD From aa57bbbd09d77bc6ed80db1c26a26baa3ad03bcb Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Mon, 10 Feb 2014 19:51:43 -0500 Subject: [PATCH 161/224] Roll back to 3.2.0-SNAPSHOT --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 4a4d057a6..29c99623c 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.2.1-SNAPSHOT + 3.2.0-SNAPSHOT maven-aether-provider From aea7b81f16f9444cbb0f8383e257d634fa534ce6 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Mon, 10 Feb 2014 19:55:21 -0500 Subject: [PATCH 162/224] [maven-release-plugin] prepare release maven-3.2.0 --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 29c99623c..8a5fc7865 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.2.0-SNAPSHOT + 3.2.0 maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - HEAD + maven-3.2.0 From 764a3dc8640f06a158dfc79a33fb7cb0817dfd2e Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Mon, 10 Feb 2014 19:55:28 -0500 Subject: [PATCH 163/224] [maven-release-plugin] prepare for next development iteration --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 8a5fc7865..4a4d057a6 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.2.0 + 3.2.1-SNAPSHOT maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - maven-3.2.0 + HEAD From 04faa94d322534fb04bb7c037e186146d14a4ec0 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Fri, 14 Feb 2014 12:00:04 -0500 Subject: [PATCH 164/224] [maven-release-plugin] prepare release maven-3.2.1 --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 4a4d057a6..f9f16737e 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.2.1-SNAPSHOT + 3.2.1 maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - HEAD + maven-3.2.1 From 38edb0eab490672f1e4f5f19d1b5deb1706456ed Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Fri, 14 Feb 2014 12:00:12 -0500 Subject: [PATCH 165/224] [maven-release-plugin] prepare for next development iteration --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index f9f16737e..d2fbbf225 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.2.1 + 3.2.2-SNAPSHOT maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - maven-3.2.1 + HEAD From 3cae72b2b053dcacad7e7d8809ab311eaf50608c Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Fri, 14 Feb 2014 12:14:35 -0500 Subject: [PATCH 166/224] Move the POMs back the 3.2.1-SNAPSHOT --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index d2fbbf225..4a4d057a6 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.2.2-SNAPSHOT + 3.2.1-SNAPSHOT maven-aether-provider From e9c3a9f887416a75006654e1ce4dbdf60c224eca Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Fri, 14 Feb 2014 12:32:44 -0500 Subject: [PATCH 167/224] [maven-release-plugin] prepare release maven-3.2.1 --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 4a4d057a6..f9f16737e 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.2.1-SNAPSHOT + 3.2.1 maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - HEAD + maven-3.2.1 From 5e26819b33395967af84c6018d6f291221c9ec11 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Fri, 14 Feb 2014 12:32:50 -0500 Subject: [PATCH 168/224] [maven-release-plugin] prepare for next development iteration --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index f9f16737e..d2fbbf225 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.2.1 + 3.2.2-SNAPSHOT maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - maven-3.2.1 + HEAD From 75b871f6397c53d1dac1125be917b387bdda075d Mon Sep 17 00:00:00 2001 From: Mark Ingram Date: Tue, 27 May 2014 15:44:06 +0100 Subject: [PATCH 169/224] MNG-5639: Support resolution of Import Scope POMs from Repo that contains a ${parameter} Fix up previous Signed-off-by: Jason van Zyl --- .../internal/DefaultModelResolver.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java index 08ad43227..98eacb6c5 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java @@ -20,6 +20,7 @@ */ import java.io.File; +import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.List; @@ -60,6 +61,8 @@ class DefaultModelResolver private List repositories; + private final List externalRepositories; + private final ArtifactResolver resolver; private final RemoteRepositoryManager remoteRepositoryManager; @@ -76,6 +79,10 @@ public DefaultModelResolver( RepositorySystemSession session, RequestTrace trace this.resolver = resolver; this.remoteRepositoryManager = remoteRepositoryManager; this.repositories = repositories; + List externalRepositories = new ArrayList(); + externalRepositories.addAll(repositories); + this.externalRepositories = Collections.unmodifiableList(externalRepositories); + this.repositoryIds = new HashSet(); } @@ -87,9 +94,11 @@ private DefaultModelResolver( DefaultModelResolver original ) this.resolver = original.resolver; this.remoteRepositoryManager = original.remoteRepositoryManager; this.repositories = original.repositories; + this.externalRepositories = original.externalRepositories; this.repositoryIds = new HashSet( original.repositoryIds ); } + @Override public void addRepository( Repository repository ) throws InvalidRepositoryException { @@ -105,11 +114,21 @@ public void addRepository( Repository repository ) remoteRepositoryManager.aggregateRepositories( session, repositories, newRepositories, true ); } + @Override + public void resetRepositories() + { + this.repositoryIds.clear(); + this.repositories.clear(); + this.repositories.addAll(externalRepositories); + } + + @Override public ModelResolver newCopy() { return new DefaultModelResolver( this ); } + @Override public ModelSource resolveModel( String groupId, String artifactId, String version ) throws UnresolvableModelException { From 9e758b639ef1221c75f85fd026c721b8c5cd57c2 Mon Sep 17 00:00:00 2001 From: Christian Schulte Date: Fri, 13 Jun 2014 01:59:34 +0200 Subject: [PATCH 170/224] MNG-2199: Version ranges not supported for parent artifacts Fixes #21 Signed-off-by: Jason van Zyl --- .../DefaultArtifactDescriptorReader.java | 24 ++++++-- .../internal/DefaultModelResolver.java | 57 ++++++++++++++++++- 2 files changed, 74 insertions(+), 7 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java index 59a955d9c..51a8dd539 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java @@ -28,10 +28,8 @@ import java.util.Map; import java.util.Properties; import java.util.Set; - import javax.inject.Inject; import javax.inject.Named; - import org.apache.maven.model.DependencyManagement; import org.apache.maven.model.DistributionManagement; import org.apache.maven.model.License; @@ -49,9 +47,9 @@ import org.apache.maven.model.resolution.UnresolvableModelException; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; -import org.eclipse.aether.RepositoryException; -import org.eclipse.aether.RepositoryEvent.EventType; import org.eclipse.aether.RepositoryEvent; +import org.eclipse.aether.RepositoryEvent.EventType; +import org.eclipse.aether.RepositoryException; import org.eclipse.aether.RepositorySystemSession; import org.eclipse.aether.RequestTrace; import org.eclipse.aether.artifact.Artifact; @@ -66,6 +64,7 @@ import org.eclipse.aether.impl.ArtifactResolver; import org.eclipse.aether.impl.RemoteRepositoryManager; import org.eclipse.aether.impl.RepositoryEventDispatcher; +import org.eclipse.aether.impl.VersionRangeResolver; import org.eclipse.aether.impl.VersionResolver; import org.eclipse.aether.repository.WorkspaceRepository; import org.eclipse.aether.resolution.ArtifactDescriptorException; @@ -105,6 +104,9 @@ public class DefaultArtifactDescriptorReader @Requirement private VersionResolver versionResolver; + @Requirement + private VersionRangeResolver versionRangeResolver; + @Requirement private ArtifactResolver artifactResolver; @@ -137,6 +139,7 @@ public void initService( ServiceLocator locator ) setLoggerFactory( locator.getService( LoggerFactory.class ) ); setRemoteRepositoryManager( locator.getService( RemoteRepositoryManager.class ) ); setVersionResolver( locator.getService( VersionResolver.class ) ); + setVersionRangeResolver( locator.getService( VersionRangeResolver.class ) ); setArtifactResolver( locator.getService( ArtifactResolver.class ) ); setRepositoryEventDispatcher( locator.getService( RepositoryEventDispatcher.class ) ); modelBuilder = locator.getService( ModelBuilder.class ); @@ -178,6 +181,17 @@ public DefaultArtifactDescriptorReader setVersionResolver( VersionResolver versi return this; } + /** @since 3.2.2 */ + public DefaultArtifactDescriptorReader setVersionRangeResolver( VersionRangeResolver versionRangeResolver ) + { + if ( versionRangeResolver == null ) + { + throw new IllegalArgumentException( "version range resolver has not been specified" ); + } + this.versionRangeResolver = versionRangeResolver; + return this; + } + public DefaultArtifactDescriptorReader setArtifactResolver( ArtifactResolver artifactResolver ) { if ( artifactResolver == null ) @@ -347,7 +361,7 @@ private Model loadPom( RepositorySystemSession session, ArtifactDescriptorReques modelRequest.setModelCache( DefaultModelCache.newInstance( session ) ); modelRequest.setModelResolver( new DefaultModelResolver( session, trace.newChild( modelRequest ), request.getRequestContext(), artifactResolver, - remoteRepositoryManager, + versionRangeResolver, remoteRepositoryManager, request.getRepositories() ) ); if ( resolveResult.getRepository() instanceof WorkspaceRepository ) { diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java index 98eacb6c5..e97ac29ef 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java @@ -26,6 +26,7 @@ import java.util.List; import java.util.Set; +import org.apache.maven.model.Parent; import org.apache.maven.model.Repository; import org.apache.maven.model.building.FileModelSource; import org.apache.maven.model.building.ModelSource; @@ -38,9 +39,13 @@ import org.eclipse.aether.artifact.DefaultArtifact; import org.eclipse.aether.impl.ArtifactResolver; import org.eclipse.aether.impl.RemoteRepositoryManager; +import org.eclipse.aether.impl.VersionRangeResolver; import org.eclipse.aether.repository.RemoteRepository; import org.eclipse.aether.resolution.ArtifactRequest; import org.eclipse.aether.resolution.ArtifactResolutionException; +import org.eclipse.aether.resolution.VersionRangeRequest; +import org.eclipse.aether.resolution.VersionRangeResolutionException; +import org.eclipse.aether.resolution.VersionRangeResult; /** * A model resolver to assist building of dependency POMs. This resolver gives priority to those repositories that have @@ -65,18 +70,21 @@ class DefaultModelResolver private final ArtifactResolver resolver; + private final VersionRangeResolver versionRangeResolver; + private final RemoteRepositoryManager remoteRepositoryManager; private final Set repositoryIds; public DefaultModelResolver( RepositorySystemSession session, RequestTrace trace, String context, - ArtifactResolver resolver, RemoteRepositoryManager remoteRepositoryManager, - List repositories ) + ArtifactResolver resolver, VersionRangeResolver versionRangeResolver, + RemoteRepositoryManager remoteRepositoryManager, List repositories ) { this.session = session; this.trace = trace; this.context = context; this.resolver = resolver; + this.versionRangeResolver = versionRangeResolver; this.remoteRepositoryManager = remoteRepositoryManager; this.repositories = repositories; List externalRepositories = new ArrayList(); @@ -92,6 +100,7 @@ private DefaultModelResolver( DefaultModelResolver original ) this.trace = original.trace; this.context = original.context; this.resolver = original.resolver; + this.versionRangeResolver = original.versionRangeResolver; this.remoteRepositoryManager = original.remoteRepositoryManager; this.repositories = original.repositories; this.externalRepositories = original.externalRepositories; @@ -150,4 +159,48 @@ public ModelSource resolveModel( String groupId, String artifactId, String versi return new FileModelSource( pomFile ); } + public ModelSource resolveModel( Parent parent ) + throws UnresolvableModelException + { + Artifact artifact = new DefaultArtifact( parent.getGroupId(), parent.getArtifactId(), "", "pom", + parent.getVersion() ); + + VersionRangeRequest versionRangeRequest = new VersionRangeRequest( artifact, repositories, context ); + versionRangeRequest.setTrace( trace ); + + try + { + VersionRangeResult versionRangeResult = + versionRangeResolver.resolveVersionRange( session, versionRangeRequest ); + + if ( versionRangeResult.getHighestVersion() == null ) + { + throw new UnresolvableModelException( "No versions matched the requested range '" + parent.getVersion() + + "'", parent.getGroupId(), parent.getArtifactId(), + parent.getVersion() ); + + } + + if ( versionRangeResult.getVersionConstraint() != null + && versionRangeResult.getVersionConstraint().getRange() != null + && versionRangeResult.getVersionConstraint().getRange().getUpperBound() == null ) + { + throw new UnresolvableModelException( "The requested version range '" + parent.getVersion() + + "' does not specify an upper bound", parent.getGroupId(), + parent.getArtifactId(), parent.getVersion() ); + + } + + parent.setVersion( versionRangeResult.getHighestVersion().toString() ); + } + catch ( VersionRangeResolutionException e ) + { + throw new UnresolvableModelException( e.getMessage(), parent.getGroupId(), parent.getArtifactId(), + parent.getVersion(), e ); + + } + + return resolveModel( parent.getGroupId(), parent.getArtifactId(), parent.getVersion() ); + } + } From 9273f7f4d7dd2cb286a8429d834b0693035420ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Boutemy?= Date: Mon, 16 Jun 2014 18:30:24 +0200 Subject: [PATCH 171/224] fixed errors reported by Checkstyle --- .../maven/repository/internal/DefaultModelResolver.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java index e97ac29ef..8335e01b9 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java @@ -88,8 +88,8 @@ public DefaultModelResolver( RepositorySystemSession session, RequestTrace trace this.remoteRepositoryManager = remoteRepositoryManager; this.repositories = repositories; List externalRepositories = new ArrayList(); - externalRepositories.addAll(repositories); - this.externalRepositories = Collections.unmodifiableList(externalRepositories); + externalRepositories.addAll( repositories ); + this.externalRepositories = Collections.unmodifiableList( externalRepositories ); this.repositoryIds = new HashSet(); } @@ -128,7 +128,7 @@ public void resetRepositories() { this.repositoryIds.clear(); this.repositories.clear(); - this.repositories.addAll(externalRepositories); + this.repositories.addAll( externalRepositories ); } @Override From 5f067f584e2a525e22bbaff5933231930fed4535 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Tue, 17 Jun 2014 09:36:00 -0400 Subject: [PATCH 172/224] [maven-release-plugin] prepare release maven-3.2.2 --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index d2fbbf225..74a7c7178 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.2.2-SNAPSHOT + 3.2.2 maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - HEAD + maven-3.2.2 From 945ecbae1797ee016ca28165d86fedbead579122 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Tue, 17 Jun 2014 09:36:07 -0400 Subject: [PATCH 173/224] [maven-release-plugin] prepare for next development iteration --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 74a7c7178..6a1385753 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.2.2 + 3.2.3-SNAPSHOT maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - maven-3.2.2 + HEAD From 13d4db875c66e89222625744721bffc5d1b42032 Mon Sep 17 00:00:00 2001 From: markdingram Date: Fri, 18 Jul 2014 16:59:09 +0100 Subject: [PATCH 174/224] Fixes MNG-5663 - a regression introduced in 3.2.2 by MNG-5639 that prevents nested import POMs from resolving their dependencies. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The cuplrit was the resetRepositories method in tandem with the repository list instances being shared between ModelResolvers. - The copy constructor for the ModelResolvers now creates new lists. - The resetRepositories method has been removed. Instead there is a 'replace' parameter on the addRepository method that allows the desired parameter replacement of MNG-5639 to take place. Signed-off-by: Jason van Zyl --- .../internal/DefaultModelResolver.java | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java index 8335e01b9..859ab5ada 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java @@ -26,6 +26,8 @@ import java.util.List; import java.util.Set; +import com.google.common.base.Predicate; +import com.google.common.collect.Iterables; import org.apache.maven.model.Parent; import org.apache.maven.model.Repository; import org.apache.maven.model.building.FileModelSource; @@ -102,7 +104,7 @@ private DefaultModelResolver( DefaultModelResolver original ) this.resolver = original.resolver; this.versionRangeResolver = original.versionRangeResolver; this.remoteRepositoryManager = original.remoteRepositoryManager; - this.repositories = original.repositories; + this.repositories = new ArrayList(original.repositories); this.externalRepositories = original.externalRepositories; this.repositoryIds = new HashSet( original.repositoryIds ); } @@ -111,11 +113,24 @@ private DefaultModelResolver( DefaultModelResolver original ) public void addRepository( Repository repository ) throws InvalidRepositoryException { - if ( session.isIgnoreArtifactDescriptorRepositories() || !repositoryIds.add( repository.getId() ) ) + addRepository( repository, false ); + } + + @Override + public void addRepository(final Repository repository, boolean replace) throws InvalidRepositoryException { + if ( session.isIgnoreArtifactDescriptorRepositories() ) { return; } + if ( !repositoryIds.add( repository.getId() ) ) { + if ( !replace ) { + return; + } + + removeMatchingRepository( repositories, repository.getId() ); + } + List newRepositories = Collections.singletonList( ArtifactDescriptorUtils.toRemoteRepository( repository ) ); @@ -123,12 +138,13 @@ public void addRepository( Repository repository ) remoteRepositoryManager.aggregateRepositories( session, repositories, newRepositories, true ); } - @Override - public void resetRepositories() - { - this.repositoryIds.clear(); - this.repositories.clear(); - this.repositories.addAll( externalRepositories ); + private static void removeMatchingRepository(Iterable repositories, final String id) { + Iterables.removeIf(repositories, new Predicate() { + @Override + public boolean apply(RemoteRepository remoteRepository) { + return remoteRepository.getId().equals(id); + } + }); } @Override From 6dcb5111c1245a042cf00a6615005211f91bea48 Mon Sep 17 00:00:00 2001 From: Igor Fedorenko Date: Wed, 30 Jul 2014 07:28:12 +0400 Subject: [PATCH 175/224] MNG-5670 guard against ConcurrentModificationException iterating over System properties Signed-off-by: Igor Fedorenko --- .../repository/internal/MavenRepositorySystemUtils.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java index b7ed32015..dbc4b86c6 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java @@ -126,7 +126,12 @@ public static DefaultRepositorySystemSession newSession() session.setArtifactDescriptorPolicy( new SimpleArtifactDescriptorPolicy( true, true ) ); - Properties sysProps = System.getProperties(); + // MNG-5670 guard against ConcurrentModificationException + Properties sysProps = new Properties(); + for ( String key : System.getProperties().stringPropertyNames() ) + { + sysProps.put( key, System.getProperty( key ) ); + } session.setSystemProperties( sysProps ); session.setConfigProperties( sysProps ); From 417685af757ba4bb9dc4e8b5cf2d46827e4676ae Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Mon, 11 Aug 2014 13:54:57 -0700 Subject: [PATCH 176/224] [maven-release-plugin] prepare release maven-3.2.3 --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 6a1385753..130805cde 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.2.3-SNAPSHOT + 3.2.3 maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - HEAD + maven-3.2.3 From c430bf3ffb96d5d618e8bf427b5a7c3c955eb705 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Mon, 11 Aug 2014 13:55:03 -0700 Subject: [PATCH 177/224] [maven-release-plugin] prepare for next development iteration --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 130805cde..9c1569ef1 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.2.3 + 3.2.4-SNAPSHOT maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - maven-3.2.3 + HEAD From 39b89f2a20e9f16d4e79a5fda1e1ed5dccdc6604 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Boutemy?= Date: Tue, 19 Aug 2014 00:17:28 +0200 Subject: [PATCH 178/224] fix a lot of checkstyle violations for future m-checkstyle-p 2.13, as proof of concept for misc violations suppressions strategies --- .../internal/DefaultModelResolver.java | 25 ++++++++++++------- .../repository/internal/package-info.java | 4 ++- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java index 859ab5ada..bb5bf3c08 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java @@ -104,7 +104,7 @@ private DefaultModelResolver( DefaultModelResolver original ) this.resolver = original.resolver; this.versionRangeResolver = original.versionRangeResolver; this.remoteRepositoryManager = original.remoteRepositoryManager; - this.repositories = new ArrayList(original.repositories); + this.repositories = new ArrayList( original.repositories ); this.externalRepositories = original.externalRepositories; this.repositoryIds = new HashSet( original.repositoryIds ); } @@ -117,14 +117,18 @@ public void addRepository( Repository repository ) } @Override - public void addRepository(final Repository repository, boolean replace) throws InvalidRepositoryException { + public void addRepository( final Repository repository, boolean replace ) + throws InvalidRepositoryException + { if ( session.isIgnoreArtifactDescriptorRepositories() ) { return; } - if ( !repositoryIds.add( repository.getId() ) ) { - if ( !replace ) { + if ( !repositoryIds.add( repository.getId() ) ) + { + if ( !replace ) + { return; } @@ -138,13 +142,16 @@ public void addRepository(final Repository repository, boolean replace) throws I remoteRepositoryManager.aggregateRepositories( session, repositories, newRepositories, true ); } - private static void removeMatchingRepository(Iterable repositories, final String id) { - Iterables.removeIf(repositories, new Predicate() { + private static void removeMatchingRepository( Iterable repositories, final String id ) + { + Iterables.removeIf( repositories, new Predicate() + { @Override - public boolean apply(RemoteRepository remoteRepository) { - return remoteRepository.getId().equals(id); + public boolean apply( RemoteRepository remoteRepository ) + { + return remoteRepository.getId().equals( id ); } - }); + } ); } @Override diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/package-info.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/package-info.java index 826a5c0fe..5582cf75f 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/package-info.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/package-info.java @@ -1,5 +1,7 @@ +// CHECKSTYLE_OFF: RegexpHeader /** - * Aether extensions for utilizing the Maven POM and Maven repository metadata. + * Aether extensions for utilizing the Maven POM and Maven repository + * metadata. */ package org.apache.maven.repository.internal; From 850d441b3615ac51fac6e0e3412d1816acd7721f Mon Sep 17 00:00:00 2001 From: Igor Fedorenko Date: Wed, 27 Aug 2014 10:15:25 -0400 Subject: [PATCH 179/224] enabled JSR330-only components in all unit tests Signed-off-by: Igor Fedorenko --- .../maven/repository/internal/AbstractRepositoryTestCase.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java index eea3830b2..b81450cea 100644 --- a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java @@ -24,6 +24,7 @@ import org.apache.maven.repository.internal.util.ConsoleRepositoryListener; import org.apache.maven.repository.internal.util.ConsoleTransferListener; import org.codehaus.plexus.ContainerConfiguration; +import org.codehaus.plexus.PlexusConstants; import org.codehaus.plexus.PlexusTestCase; import org.eclipse.aether.DefaultRepositorySystemSession; import org.eclipse.aether.RepositorySystem; @@ -43,6 +44,7 @@ protected void customizeContainerConfiguration( ContainerConfiguration container { super.customizeContainerConfiguration( containerConfiguration ); containerConfiguration.setAutoWiring( true ); + containerConfiguration.setClassPathScanning( PlexusConstants.SCANNING_INDEX ); } @Override From 4b7ad705dbe83cd037cf3a73d6535b127031ee75 Mon Sep 17 00:00:00 2001 From: Igor Fedorenko Date: Wed, 27 Aug 2014 23:17:24 -0400 Subject: [PATCH 180/224] aether 1.0 Signed-off-by: Igor Fedorenko --- maven-aether-provider/pom.xml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 9c1569ef1..16e2f647b 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -91,7 +91,12 @@ under the License. org.eclipse.aether - aether-connector-wagon + aether-connector-basic + test + + + org.eclipse.aether + aether-transport-wagon test @@ -122,3 +127,4 @@ under the License. + From d23276bcd155216c2997cb6cabdcdeb865803639 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Boutemy?= Date: Fri, 24 Oct 2014 01:25:49 +0200 Subject: [PATCH 181/224] updated parent pom (and fixed issues...) --- .../DefaultArtifactDescriptorReader.java | 40 +++++++++---------- .../internal/DefaultVersionRangeResolver.java | 6 +-- .../internal/DefaultVersionResolver.java | 18 +++++---- .../internal/MavenAetherModule.java | 6 ++- 4 files changed, 37 insertions(+), 33 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java index 51a8dd539..7caf8631d 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java @@ -202,13 +202,13 @@ public DefaultArtifactDescriptorReader setArtifactResolver( ArtifactResolver art return this; } - public DefaultArtifactDescriptorReader setRepositoryEventDispatcher( RepositoryEventDispatcher repositoryEventDispatcher ) + public DefaultArtifactDescriptorReader setRepositoryEventDispatcher( RepositoryEventDispatcher red ) { - if ( repositoryEventDispatcher == null ) + if ( red == null ) { throw new IllegalArgumentException( "repository event dispatcher has not been specified" ); } - this.repositoryEventDispatcher = repositoryEventDispatcher; + this.repositoryEventDispatcher = red; return this; } @@ -287,17 +287,17 @@ private Model loadPom( RepositorySystemSession session, ArtifactDescriptorReques RequestTrace trace = RequestTrace.newChild( request.getTrace(), request ); Set visited = new LinkedHashSet(); - for ( Artifact artifact = request.getArtifact();; ) + for ( Artifact a = request.getArtifact();; ) { - Artifact pomArtifact = ArtifactDescriptorUtils.toPomArtifact( artifact ); + Artifact pomArtifact = ArtifactDescriptorUtils.toPomArtifact( a ); try { VersionRequest versionRequest = - new VersionRequest( artifact, request.getRepositories(), request.getRequestContext() ); + new VersionRequest( a, request.getRepositories(), request.getRequestContext() ); versionRequest.setTrace( trace ); VersionResult versionResult = versionResolver.resolveVersion( session, versionRequest ); - artifact = artifact.setVersion( versionResult.getVersion() ); + a = a.setVersion( versionResult.getVersion() ); versionRequest = new VersionRequest( pomArtifact, request.getRepositories(), request.getRequestContext() ); @@ -312,12 +312,12 @@ private Model loadPom( RepositorySystemSession session, ArtifactDescriptorReques throw new ArtifactDescriptorException( result ); } - if ( !visited.add( artifact.getGroupId() + ':' + artifact.getArtifactId() + ':' + artifact.getBaseVersion() ) ) + if ( !visited.add( a.getGroupId() + ':' + a.getArtifactId() + ':' + a.getBaseVersion() ) ) { RepositoryException exception = new RepositoryException( "Artifact relocations form a cycle: " + visited ); - invalidDescriptor( session, trace, artifact, exception ); - if ( ( getPolicy( session, artifact, request ) & ArtifactDescriptorPolicy.IGNORE_INVALID ) != 0 ) + invalidDescriptor( session, trace, a, exception ); + if ( ( getPolicy( session, a, request ) & ArtifactDescriptorPolicy.IGNORE_INVALID ) != 0 ) { return null; } @@ -339,8 +339,8 @@ private Model loadPom( RepositorySystemSession session, ArtifactDescriptorReques { if ( e.getCause() instanceof ArtifactNotFoundException ) { - missingDescriptor( session, trace, artifact, (Exception) e.getCause() ); - if ( ( getPolicy( session, artifact, request ) & ArtifactDescriptorPolicy.IGNORE_MISSING ) != 0 ) + missingDescriptor( session, trace, a, (Exception) e.getCause() ); + if ( ( getPolicy( session, a, request ) & ArtifactDescriptorPolicy.IGNORE_MISSING ) != 0 ) { return null; } @@ -384,8 +384,8 @@ private Model loadPom( RepositorySystemSession session, ArtifactDescriptorReques throw new ArtifactDescriptorException( result ); } } - invalidDescriptor( session, trace, artifact, e ); - if ( ( getPolicy( session, artifact, request ) & ArtifactDescriptorPolicy.IGNORE_INVALID ) != 0 ) + invalidDescriptor( session, trace, a, e ); + if ( ( getPolicy( session, a, request ) & ArtifactDescriptorPolicy.IGNORE_INVALID ) != 0 ) { return null; } @@ -397,11 +397,11 @@ private Model loadPom( RepositorySystemSession session, ArtifactDescriptorReques if ( relocation != null ) { - result.addRelocation( artifact ); - artifact = - new RelocatedArtifact( artifact, relocation.getGroupId(), relocation.getArtifactId(), + result.addRelocation( a ); + a = + new RelocatedArtifact( a, relocation.getGroupId(), relocation.getArtifactId(), relocation.getVersion() ); - result.setArtifact( artifact ); + result.setArtifact( a ); } else { @@ -510,14 +510,14 @@ private void invalidDescriptor( RepositorySystemSession session, RequestTrace tr repositoryEventDispatcher.dispatch( event.build() ); } - private int getPolicy( RepositorySystemSession session, Artifact artifact, ArtifactDescriptorRequest request ) + private int getPolicy( RepositorySystemSession session, Artifact a, ArtifactDescriptorRequest request ) { ArtifactDescriptorPolicy policy = session.getArtifactDescriptorPolicy(); if ( policy == null ) { return ArtifactDescriptorPolicy.STRICT; } - return policy.getPolicy( session, new ArtifactDescriptorPolicyRequest( artifact, request.getRequestContext() ) ); + return policy.getPolicy( session, new ArtifactDescriptorPolicyRequest( a, request.getRequestContext() ) ); } } diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java index a7ff573bb..e8ba06b92 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java @@ -143,13 +143,13 @@ public DefaultVersionRangeResolver setSyncContextFactory( SyncContextFactory syn return this; } - public DefaultVersionRangeResolver setRepositoryEventDispatcher( RepositoryEventDispatcher repositoryEventDispatcher ) + public DefaultVersionRangeResolver setRepositoryEventDispatcher( RepositoryEventDispatcher red ) { - if ( repositoryEventDispatcher == null ) + if ( red == null ) { throw new IllegalArgumentException( "repository event dispatcher has not been specified" ); } - this.repositoryEventDispatcher = repositoryEventDispatcher; + this.repositoryEventDispatcher = red; return this; } diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java index 9fcfc996b..d722644ef 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -233,9 +233,9 @@ else if ( version.endsWith( SNAPSHOT ) ) } else { - List metadataRequests = new ArrayList( request.getRepositories().size() ); + List metadataReqs = new ArrayList( request.getRepositories().size() ); - metadataRequests.add( new MetadataRequest( metadata, null, request.getRequestContext() ) ); + metadataReqs.add( new MetadataRequest( metadata, null, request.getRequestContext() ) ); for ( RemoteRepository repository : request.getRepositories() ) { @@ -244,10 +244,10 @@ else if ( version.endsWith( SNAPSHOT ) ) metadataRequest.setDeleteLocalCopyIfMissing( true ); metadataRequest.setFavorLocalRepository( true ); metadataRequest.setTrace( trace ); - metadataRequests.add( metadataRequest ); + metadataReqs.add( metadataRequest ); } - List metadataResults = metadataResolver.resolveMetadata( session, metadataRequests ); + List metadataResults = metadataResolver.resolveMetadata( session, metadataReqs ); Map infos = new HashMap(); @@ -261,8 +261,8 @@ else if ( version.endsWith( SNAPSHOT ) ) repository = session.getLocalRepository(); } - Versioning versioning = readVersions( session, trace, metadataResult.getMetadata(), repository, result ); - merge( artifact, infos, versioning, repository ); + Versioning v = readVersions( session, trace, metadataResult.getMetadata(), repository, result ); + merge( artifact, infos, v, repository ); } if ( RELEASE.equals( version ) ) @@ -282,7 +282,8 @@ else if ( LATEST.equals( version ) ) subRequest.setArtifact( artifact.setVersion( result.getVersion() ) ); if ( result.getRepository() instanceof RemoteRepository ) { - subRequest.setRepositories( Collections.singletonList( (RemoteRepository) result.getRepository() ) ); + RemoteRepository r = (RemoteRepository) result.getRepository(); + subRequest.setRepositories( Collections.singletonList( r ) ); } else { @@ -467,7 +468,8 @@ private void merge( Map infos, String srcKey, String dstKey VersionInfo dstInfo = infos.get( dstKey ); if ( dstInfo == null - || ( srcInfo != null && dstInfo.isOutdated( srcInfo.timestamp ) && srcInfo.repository != dstInfo.repository ) ) + || ( srcInfo != null && dstInfo.isOutdated( srcInfo.timestamp ) + && srcInfo.repository != dstInfo.repository ) ) { infos.put( dstKey, srcInfo ); } diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenAetherModule.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenAetherModule.java index 6f391fd43..fa81f611c 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenAetherModule.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenAetherModule.java @@ -62,8 +62,10 @@ protected void configure() @Provides @Singleton - Set provideMetadataGeneratorFactories( @Named( "snapshot" ) MetadataGeneratorFactory snapshot, - @Named( "versions" ) MetadataGeneratorFactory versions ) + Set provideMetadataGeneratorFactories( @Named( "snapshot" ) + MetadataGeneratorFactory snapshot, + @Named( "versions" ) + MetadataGeneratorFactory versions ) { Set factories = new HashSet(); factories.add( snapshot ); From 299b8b7b5eaa60f36298506724bb50a72c775640 Mon Sep 17 00:00:00 2001 From: Michael Osipov Date: Sun, 23 Nov 2014 13:00:59 +0100 Subject: [PATCH 182/224] Trimmed trailing whitespace --- maven-aether-provider/pom.xml | 2 +- .../internal/ArtifactDescriptorUtils.java | 2 +- .../repository/internal/DefaultModelCache.java | 2 +- .../internal/DefaultModelResolver.java | 2 +- .../internal/MavenRepositorySystemUtils.java | 8 ++++---- .../DefaultArtifactDescriptorReaderTest.java | 16 ++++++++-------- .../internal/RepositorySystemTest.java | 2 +- 7 files changed, 17 insertions(+), 17 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 16e2f647b..0533d7180 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -114,7 +114,7 @@ under the License. mockito-core 1.9.5 test - + diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorUtils.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorUtils.java index 85158037d..7d4ede872 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorUtils.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorUtils.java @@ -28,7 +28,7 @@ /** * Warning: This is an internal utility class that is only public for technical reasons, it is not part * of the public API. In particular, this class can be changed or deleted without prior notice. - * + * * @author Benjamin Bentmann */ public class ArtifactDescriptorUtils diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelCache.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelCache.java index 2d4fa7d67..f13495dfa 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelCache.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelCache.java @@ -25,7 +25,7 @@ /** * A model builder cache backed by the repository system cache. - * + * * @author Benjamin Bentmann */ class DefaultModelCache diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java index bb5bf3c08..7cd47475a 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java @@ -52,7 +52,7 @@ /** * A model resolver to assist building of dependency POMs. This resolver gives priority to those repositories that have * been initially specified and repositories discovered in dependency POMs are recessively merged into the search chain. - * + * * @author Benjamin Bentmann * @see DefaultArtifactDescriptorReader */ diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java index dbc4b86c6..5b240efe1 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java @@ -52,7 +52,7 @@ * A utility class to assist in setting up a Maven-like repository system. Note: This component is meant to * assist those clients that employ the repository system outside of an IoC container, Maven plugins should instead * always use regular dependency injection to acquire the repository system. - * + * * @author Benjamin Bentmann */ public final class MavenRepositorySystemUtils @@ -66,7 +66,7 @@ private MavenRepositorySystemUtils() /** * Creates a new service locator that already knows about all service implementations included in this library. To * acquire a complete repository system, clients need to add some repository connectors for remote transfers. - * + * * @return The new service locator, never {@code null}. */ public static DefaultServiceLocator newServiceLocator() @@ -85,7 +85,7 @@ public static DefaultServiceLocator newServiceLocator() * Maven-based resolution. In more detail, this method configures settings relevant for the processing of dependency * graphs, most other settings remain at their generic default value. Use the various setters to further configure * the session with authentication, mirror, proxy and other information required for your environment. - * + * * @return The new repository system session, never {@code null}. */ public static DefaultRepositorySystemSession newSession() @@ -126,7 +126,7 @@ public static DefaultRepositorySystemSession newSession() session.setArtifactDescriptorPolicy( new SimpleArtifactDescriptorPolicy( true, true ) ); - // MNG-5670 guard against ConcurrentModificationException + // MNG-5670 guard against ConcurrentModificationException Properties sysProps = new Properties(); for ( String key : System.getProperties().stringPropertyNames() ) { diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReaderTest.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReaderTest.java index a7b1db2ee..e87313809 100644 --- a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReaderTest.java +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReaderTest.java @@ -39,19 +39,19 @@ public void testMng5459() { // prepare DefaultArtifactDescriptorReader reader = (DefaultArtifactDescriptorReader) lookup( ArtifactDescriptorReader.class ); - + RepositoryEventDispatcher eventDispatcher = mock( RepositoryEventDispatcher.class ); - + ArgumentCaptor event = ArgumentCaptor.forClass( RepositoryEvent.class ); - + reader.setRepositoryEventDispatcher( eventDispatcher ); ArtifactDescriptorRequest request = new ArtifactDescriptorRequest(); - + request.addRepository( newTestRepository() ); - + request.setArtifact( new DefaultArtifact( "org.apache.maven.its", "dep-mng5459", "jar", "0.4.0-SNAPSHOT" ) ); - + // execute reader.readArtifactDescriptor( session, request ); @@ -59,7 +59,7 @@ public void testMng5459() verify( eventDispatcher ).dispatch( event.capture() ); boolean missingArtifactDescriptor = false; - + for( RepositoryEvent evt : event.getAllValues() ) { if ( EventType.ARTIFACT_DESCRIPTOR_MISSING.equals( evt.getType() ) ) @@ -68,7 +68,7 @@ public void testMng5459() missingArtifactDescriptor = true; } } - + if( !missingArtifactDescriptor ) { fail( "Expected missing artifact descriptor for org.apache.maven.its:dep-mng5459:pom:0.4.0-20130404.090532-2" ); diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java index 36bb9c5d6..db77a441a 100644 --- a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java @@ -59,7 +59,7 @@ public void testReadArtifactDescriptor() ArtifactDescriptorRequest request = new ArtifactDescriptorRequest(); request.setArtifact( artifact ); request.addRepository( newTestRepository() ); - + ArtifactDescriptorResult result = system.readArtifactDescriptor( session, request ); List deps = result.getDependencies(); From ed774001a099c38fbee4c349616ea1f7bee13ba0 Mon Sep 17 00:00:00 2001 From: Igor Fedorenko Date: Tue, 25 Nov 2014 15:38:35 -0500 Subject: [PATCH 183/224] extracted ArtifactDescriptorReaderDelegate Signed-off-by: Igor Fedorenko --- .../ArtifactDescriptorReaderDelegate.java | 153 ++++++++++++++++++ .../DefaultArtifactDescriptorReader.java | 116 +------------ 2 files changed, 161 insertions(+), 108 deletions(-) create mode 100644 maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorReaderDelegate.java diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorReaderDelegate.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorReaderDelegate.java new file mode 100644 index 000000000..29749ad0f --- /dev/null +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorReaderDelegate.java @@ -0,0 +1,153 @@ +package org.apache.maven.repository.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 java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.apache.maven.model.DependencyManagement; +import org.apache.maven.model.DistributionManagement; +import org.apache.maven.model.License; +import org.apache.maven.model.Model; +import org.apache.maven.model.Prerequisites; +import org.apache.maven.model.Repository; +import org.eclipse.aether.RepositorySystemSession; +import org.eclipse.aether.artifact.Artifact; +import org.eclipse.aether.artifact.ArtifactProperties; +import org.eclipse.aether.artifact.ArtifactType; +import org.eclipse.aether.artifact.ArtifactTypeRegistry; +import org.eclipse.aether.artifact.DefaultArtifact; +import org.eclipse.aether.artifact.DefaultArtifactType; +import org.eclipse.aether.graph.Dependency; +import org.eclipse.aether.graph.Exclusion; +import org.eclipse.aether.resolution.ArtifactDescriptorResult; + +/** + * Populates Aether {@link ArtifactDescriptorResult} from Maven project {@link Model}. + * + * @since 3.2.4 + * @provisional This class is part of work in progress and can be changed or removed without notice. + */ +public class ArtifactDescriptorReaderDelegate +{ + public void populateResult( RepositorySystemSession session, ArtifactDescriptorResult result, Model model ) + { + ArtifactTypeRegistry stereotypes = session.getArtifactTypeRegistry(); + + for ( Repository r : model.getRepositories() ) + { + result.addRepository( ArtifactDescriptorUtils.toRemoteRepository( r ) ); + } + + for ( org.apache.maven.model.Dependency dependency : model.getDependencies() ) + { + result.addDependency( convert( dependency, stereotypes ) ); + } + + DependencyManagement mngt = model.getDependencyManagement(); + if ( mngt != null ) + { + for ( org.apache.maven.model.Dependency dependency : mngt.getDependencies() ) + { + result.addManagedDependency( convert( dependency, stereotypes ) ); + } + } + + Map properties = new LinkedHashMap(); + + Prerequisites prerequisites = model.getPrerequisites(); + if ( prerequisites != null ) + { + properties.put( "prerequisites.maven", prerequisites.getMaven() ); + } + + List licenses = model.getLicenses(); + properties.put( "license.count", licenses.size() ); + for ( int i = 0; i < licenses.size(); i++ ) + { + License license = licenses.get( i ); + properties.put( "license." + i + ".name", license.getName() ); + properties.put( "license." + i + ".url", license.getUrl() ); + properties.put( "license." + i + ".comments", license.getComments() ); + properties.put( "license." + i + ".distribution", license.getDistribution() ); + } + + result.setProperties( properties ); + + setArtifactProperties( result, model ); + } + + private Dependency convert( org.apache.maven.model.Dependency dependency, ArtifactTypeRegistry stereotypes ) + { + ArtifactType stereotype = stereotypes.get( dependency.getType() ); + if ( stereotype == null ) + { + stereotype = new DefaultArtifactType( dependency.getType() ); + } + + boolean system = dependency.getSystemPath() != null && dependency.getSystemPath().length() > 0; + + Map props = null; + if ( system ) + { + props = Collections.singletonMap( ArtifactProperties.LOCAL_PATH, dependency.getSystemPath() ); + } + + Artifact artifact = + new DefaultArtifact( dependency.getGroupId(), dependency.getArtifactId(), dependency.getClassifier(), null, + dependency.getVersion(), props, stereotype ); + + List exclusions = new ArrayList( dependency.getExclusions().size() ); + for ( org.apache.maven.model.Exclusion exclusion : dependency.getExclusions() ) + { + exclusions.add( convert( exclusion ) ); + } + + Dependency result = new Dependency( artifact, dependency.getScope(), dependency.isOptional(), exclusions ); + + return result; + } + + private Exclusion convert( org.apache.maven.model.Exclusion exclusion ) + { + return new Exclusion( exclusion.getGroupId(), exclusion.getArtifactId(), "*", "*" ); + } + + private void setArtifactProperties( ArtifactDescriptorResult result, Model model ) + { + String downloadUrl = null; + DistributionManagement distMngt = model.getDistributionManagement(); + if ( distMngt != null ) + { + downloadUrl = distMngt.getDownloadUrl(); + } + if ( downloadUrl != null && downloadUrl.length() > 0 ) + { + Artifact artifact = result.getArtifact(); + Map props = new HashMap( artifact.getProperties() ); + props.put( ArtifactProperties.DOWNLOAD_URL, downloadUrl ); + result.setArtifact( artifact.setProperties( props ) ); + } + } +} diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java index 7caf8631d..0fea15aaa 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java @@ -19,24 +19,17 @@ * under the License. */ -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.LinkedHashMap; import java.util.LinkedHashSet; -import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; + import javax.inject.Inject; import javax.inject.Named; -import org.apache.maven.model.DependencyManagement; + import org.apache.maven.model.DistributionManagement; -import org.apache.maven.model.License; import org.apache.maven.model.Model; -import org.apache.maven.model.Prerequisites; import org.apache.maven.model.Relocation; -import org.apache.maven.model.Repository; import org.apache.maven.model.building.DefaultModelBuilderFactory; import org.apache.maven.model.building.DefaultModelBuildingRequest; import org.apache.maven.model.building.FileModelSource; @@ -53,13 +46,6 @@ import org.eclipse.aether.RepositorySystemSession; import org.eclipse.aether.RequestTrace; import org.eclipse.aether.artifact.Artifact; -import org.eclipse.aether.artifact.ArtifactProperties; -import org.eclipse.aether.artifact.ArtifactType; -import org.eclipse.aether.artifact.ArtifactTypeRegistry; -import org.eclipse.aether.artifact.DefaultArtifact; -import org.eclipse.aether.artifact.DefaultArtifactType; -import org.eclipse.aether.graph.Dependency; -import org.eclipse.aether.graph.Exclusion; import org.eclipse.aether.impl.ArtifactDescriptorReader; import org.eclipse.aether.impl.ArtifactResolver; import org.eclipse.aether.impl.RemoteRepositoryManager; @@ -232,49 +218,16 @@ public ArtifactDescriptorResult readArtifactDescriptor( RepositorySystemSession if ( model != null ) { - ArtifactTypeRegistry stereotypes = session.getArtifactTypeRegistry(); - - for ( Repository r : model.getRepositories() ) - { - result.addRepository( ArtifactDescriptorUtils.toRemoteRepository( r ) ); - } - - for ( org.apache.maven.model.Dependency dependency : model.getDependencies() ) - { - result.addDependency( convert( dependency, stereotypes ) ); - } + Map config = session.getConfigProperties(); + ArtifactDescriptorReaderDelegate delegate = + (ArtifactDescriptorReaderDelegate) config.get( ArtifactDescriptorReaderDelegate.class.getName() ); - DependencyManagement mngt = model.getDependencyManagement(); - if ( mngt != null ) + if ( delegate == null ) { - for ( org.apache.maven.model.Dependency dependency : mngt.getDependencies() ) - { - result.addManagedDependency( convert( dependency, stereotypes ) ); - } + delegate = new ArtifactDescriptorReaderDelegate(); } - Map properties = new LinkedHashMap(); - - Prerequisites prerequisites = model.getPrerequisites(); - if ( prerequisites != null ) - { - properties.put( "prerequisites.maven", prerequisites.getMaven() ); - } - - List licenses = model.getLicenses(); - properties.put( "license.count", licenses.size() ); - for ( int i = 0; i < licenses.size(); i++ ) - { - License license = licenses.get( i ); - properties.put( "license." + i + ".name", license.getName() ); - properties.put( "license." + i + ".url", license.getUrl() ); - properties.put( "license." + i + ".comments", license.getComments() ); - properties.put( "license." + i + ".distribution", license.getDistribution() ); - } - - result.setProperties( properties ); - - setArtifactProperties( result, model ); + delegate.populateResult( session, result, model ); } return result; @@ -435,59 +388,6 @@ private Relocation getRelocation( Model model ) return relocation; } - private void setArtifactProperties( ArtifactDescriptorResult result, Model model ) - { - String downloadUrl = null; - DistributionManagement distMngt = model.getDistributionManagement(); - if ( distMngt != null ) - { - downloadUrl = distMngt.getDownloadUrl(); - } - if ( downloadUrl != null && downloadUrl.length() > 0 ) - { - Artifact artifact = result.getArtifact(); - Map props = new HashMap( artifact.getProperties() ); - props.put( ArtifactProperties.DOWNLOAD_URL, downloadUrl ); - result.setArtifact( artifact.setProperties( props ) ); - } - } - - private Dependency convert( org.apache.maven.model.Dependency dependency, ArtifactTypeRegistry stereotypes ) - { - ArtifactType stereotype = stereotypes.get( dependency.getType() ); - if ( stereotype == null ) - { - stereotype = new DefaultArtifactType( dependency.getType() ); - } - - boolean system = dependency.getSystemPath() != null && dependency.getSystemPath().length() > 0; - - Map props = null; - if ( system ) - { - props = Collections.singletonMap( ArtifactProperties.LOCAL_PATH, dependency.getSystemPath() ); - } - - Artifact artifact = - new DefaultArtifact( dependency.getGroupId(), dependency.getArtifactId(), dependency.getClassifier(), null, - dependency.getVersion(), props, stereotype ); - - List exclusions = new ArrayList( dependency.getExclusions().size() ); - for ( org.apache.maven.model.Exclusion exclusion : dependency.getExclusions() ) - { - exclusions.add( convert( exclusion ) ); - } - - Dependency result = new Dependency( artifact, dependency.getScope(), dependency.isOptional(), exclusions ); - - return result; - } - - private Exclusion convert( org.apache.maven.model.Exclusion exclusion ) - { - return new Exclusion( exclusion.getGroupId(), exclusion.getArtifactId(), "*", "*" ); - } - private void missingDescriptor( RepositorySystemSession session, RequestTrace trace, Artifact artifact, Exception exception ) { From 0d573083b15194e83cf55aeadef6d58858ff7a59 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Fri, 12 Dec 2014 16:14:23 -0500 Subject: [PATCH 184/224] [maven-release-plugin] prepare release maven-3.2.4 --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 0533d7180..79f2bcdca 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.2.4-SNAPSHOT + 3.2.4 maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - HEAD + maven-3.2.4 From fff8fda10d4db85108665ed077c8288e7cd35c7e Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Fri, 12 Dec 2014 16:14:40 -0500 Subject: [PATCH 185/224] [maven-release-plugin] prepare for next development iteration --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 79f2bcdca..30abeaa30 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.2.4 + 3.2.5-SNAPSHOT maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - maven-3.2.4 + HEAD From 5546b0495b0e0b021fdd350f8ef1a7b2132082c6 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Sun, 14 Dec 2014 12:22:35 -0500 Subject: [PATCH 186/224] [maven-release-plugin] prepare release maven-3.2.5 --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 30abeaa30..14a2d4d93 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.2.5-SNAPSHOT + 3.2.5 maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - HEAD + maven-3.2.5 From 29dff6e2df47f79289dc32813a6b69cd64bb4b1d Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Sun, 14 Dec 2014 12:22:54 -0500 Subject: [PATCH 187/224] [maven-release-plugin] prepare for next development iteration --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 14a2d4d93..1973613ef 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.2.5 + 3.2.6-SNAPSHOT maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - maven-3.2.5 + HEAD From 7d46c261223dcd2dff8a575d6a0bf61841a6f432 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Wed, 3 Sep 2014 11:48:28 -0700 Subject: [PATCH 188/224] MNG-5775 Make the project graph building code pluggable to allow for new/different implementations. --- .../DefaultArtifactDescriptorReader.java | 14 +++++++- .../internal/MavenWorkspaceReader.java | 32 +++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenWorkspaceReader.java diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java index 0fea15aaa..a768de562 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java @@ -52,6 +52,7 @@ import org.eclipse.aether.impl.RepositoryEventDispatcher; import org.eclipse.aether.impl.VersionRangeResolver; import org.eclipse.aether.impl.VersionResolver; +import org.eclipse.aether.repository.WorkspaceReader; import org.eclipse.aether.repository.WorkspaceRepository; import org.eclipse.aether.resolution.ArtifactDescriptorException; import org.eclipse.aether.resolution.ArtifactDescriptorPolicy; @@ -215,7 +216,6 @@ public ArtifactDescriptorResult readArtifactDescriptor( RepositorySystemSession ArtifactDescriptorResult result = new ArtifactDescriptorResult( request ); Model model = loadPom( session, request, result ); - if ( model != null ) { Map config = session.getConfigProperties(); @@ -303,6 +303,18 @@ private Model loadPom( RepositorySystemSession session, ArtifactDescriptorReques } Model model; + + // hack: don't rebuild model if it was already loaded during reactor resolution + final WorkspaceReader workspace = session.getWorkspaceReader(); + if ( workspace instanceof MavenWorkspaceReader ) + { + model = ( (MavenWorkspaceReader) workspace ).findModel( pomArtifact ); + if ( model != null ) + { + return model; + } + } + try { ModelBuildingRequest modelRequest = new DefaultModelBuildingRequest(); diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenWorkspaceReader.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenWorkspaceReader.java new file mode 100644 index 000000000..270cf588a --- /dev/null +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenWorkspaceReader.java @@ -0,0 +1,32 @@ +package org.apache.maven.repository.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.model.Model; +import org.eclipse.aether.artifact.Artifact; +import org.eclipse.aether.repository.WorkspaceReader; + +public interface MavenWorkspaceReader + extends WorkspaceReader +{ + + Model findModel( Artifact artifact ); + +} \ No newline at end of file From 90169ec23b3aeaedb84a7124d4a5c45f8f770cf3 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Wed, 4 Mar 2015 10:57:41 -0800 Subject: [PATCH 189/224] Change version from 3.2.6-SNAPSHOT to 3.3.0-SNAPSHOT --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 1973613ef..978f2469a 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.2.6-SNAPSHOT + 3.3.0-SNAPSHOT maven-aether-provider From 6f5928f0e79f6ed4946e23767d28ee7990882e79 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Wed, 11 Mar 2015 14:42:01 -0700 Subject: [PATCH 190/224] [maven-release-plugin] prepare release maven-3.3.0 --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 978f2469a..28b0e059f 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.3.0-SNAPSHOT + 3.3.0 maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - HEAD + maven-3.3.0 From 9f9dddd4c2b8356be9887c5dee17e209d83b9218 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Wed, 11 Mar 2015 14:42:17 -0700 Subject: [PATCH 191/224] [maven-release-plugin] prepare for next development iteration --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 28b0e059f..77ec510e7 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.3.0 + 3.3.1-SNAPSHOT maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - maven-3.3.0 + HEAD From 5e7e81aa965f8958678d3a97ca6d97b859b01617 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Fri, 13 Mar 2015 13:05:27 -0700 Subject: [PATCH 192/224] [maven-release-plugin] prepare release maven-3.3.1 --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 77ec510e7..495fed656 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.3.1-SNAPSHOT + 3.3.1 maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - HEAD + maven-3.3.1 From 7eef2fb84bf4cd520f361eac123bcf4bcf5e4b2c Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Fri, 13 Mar 2015 13:05:42 -0700 Subject: [PATCH 193/224] [maven-release-plugin] prepare for next development iteration --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 495fed656..dafa2cb9e 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.3.1 + 3.3.2-SNAPSHOT maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - maven-3.3.1 + HEAD From f3a2c298690ae665bf7885d00d134aebaa64ed5c Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Thu, 16 Apr 2015 09:13:50 -0400 Subject: [PATCH 194/224] [maven-release-plugin] prepare release maven-3.3.2 --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index dafa2cb9e..333b38596 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.3.2-SNAPSHOT + 3.3.2 maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - HEAD + maven-3.3.2 From 988531885adaa293c3a662b8a8185c63f9b9c1f0 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Thu, 16 Apr 2015 09:14:08 -0400 Subject: [PATCH 195/224] [maven-release-plugin] prepare for next development iteration --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 333b38596..41894fdd7 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.3.2 + 3.3.3-SNAPSHOT maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - maven-3.3.2 + HEAD From 13781cb6f8a9632553f414c5607064fc5c651939 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Wed, 22 Apr 2015 07:54:38 -0400 Subject: [PATCH 196/224] [maven-release-plugin] prepare release maven-3.3.3 --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 41894fdd7..4906647c2 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.3.3-SNAPSHOT + 3.3.3 maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - HEAD + maven-3.3.3 From 52cbf539c2e59834f8dbab6c08b7898bdea97c90 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Wed, 22 Apr 2015 07:54:54 -0400 Subject: [PATCH 197/224] [maven-release-plugin] prepare for next development iteration --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 4906647c2..4ab5d723f 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.3.3 + 3.3.4-SNAPSHOT maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - maven-3.3.3 + HEAD From f43a870eefc955a007058e0183e018c9337dd983 Mon Sep 17 00:00:00 2001 From: Kristian Rosenvold Date: Fri, 6 Mar 2015 07:12:21 +0100 Subject: [PATCH 198/224] Upgraded to java7 language features --- .../ArtifactDescriptorReaderDelegate.java | 6 +- .../DefaultArtifactDescriptorReader.java | 2 +- .../internal/DefaultModelResolver.java | 8 +-- .../internal/DefaultVersionRangeResolver.java | 34 ++++----- .../internal/DefaultVersionResolver.java | 69 ++++++++----------- .../internal/LocalSnapshotMetadata.java | 6 +- .../LocalSnapshotMetadataGenerator.java | 2 +- .../internal/MavenAetherModule.java | 2 +- .../internal/MavenSnapshotMetadata.java | 2 +- .../internal/RemoteSnapshotMetadata.java | 4 +- .../RemoteSnapshotMetadataGenerator.java | 2 +- .../repository/internal/VersionsMetadata.java | 4 +- .../internal/VersionsMetadataGenerator.java | 4 +- .../util/ConsoleTransferListener.java | 2 +- 14 files changed, 66 insertions(+), 81 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorReaderDelegate.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorReaderDelegate.java index 29749ad0f..2395b36fb 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorReaderDelegate.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorReaderDelegate.java @@ -74,7 +74,7 @@ public void populateResult( RepositorySystemSession session, ArtifactDescriptorR } } - Map properties = new LinkedHashMap(); + Map properties = new LinkedHashMap<>(); Prerequisites prerequisites = model.getPrerequisites(); if ( prerequisites != null ) @@ -118,7 +118,7 @@ private Dependency convert( org.apache.maven.model.Dependency dependency, Artifa new DefaultArtifact( dependency.getGroupId(), dependency.getArtifactId(), dependency.getClassifier(), null, dependency.getVersion(), props, stereotype ); - List exclusions = new ArrayList( dependency.getExclusions().size() ); + List exclusions = new ArrayList<>( dependency.getExclusions().size() ); for ( org.apache.maven.model.Exclusion exclusion : dependency.getExclusions() ) { exclusions.add( convert( exclusion ) ); @@ -145,7 +145,7 @@ private void setArtifactProperties( ArtifactDescriptorResult result, Model model if ( downloadUrl != null && downloadUrl.length() > 0 ) { Artifact artifact = result.getArtifact(); - Map props = new HashMap( artifact.getProperties() ); + Map props = new HashMap<>( artifact.getProperties() ); props.put( ArtifactProperties.DOWNLOAD_URL, downloadUrl ); result.setArtifact( artifact.setProperties( props ) ); } diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java index a768de562..f7328a1f0 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java @@ -239,7 +239,7 @@ private Model loadPom( RepositorySystemSession session, ArtifactDescriptorReques { RequestTrace trace = RequestTrace.newChild( request.getTrace(), request ); - Set visited = new LinkedHashSet(); + Set visited = new LinkedHashSet<>(); for ( Artifact a = request.getArtifact();; ) { Artifact pomArtifact = ArtifactDescriptorUtils.toPomArtifact( a ); diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java index 7cd47475a..f344959f1 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java @@ -89,11 +89,11 @@ public DefaultModelResolver( RepositorySystemSession session, RequestTrace trace this.versionRangeResolver = versionRangeResolver; this.remoteRepositoryManager = remoteRepositoryManager; this.repositories = repositories; - List externalRepositories = new ArrayList(); + List externalRepositories = new ArrayList<>(); externalRepositories.addAll( repositories ); this.externalRepositories = Collections.unmodifiableList( externalRepositories ); - this.repositoryIds = new HashSet(); + this.repositoryIds = new HashSet<>(); } private DefaultModelResolver( DefaultModelResolver original ) @@ -104,9 +104,9 @@ private DefaultModelResolver( DefaultModelResolver original ) this.resolver = original.resolver; this.versionRangeResolver = original.versionRangeResolver; this.remoteRepositoryManager = original.remoteRepositoryManager; - this.repositories = new ArrayList( original.repositories ); + this.repositories = new ArrayList<>( original.repositories ); this.externalRepositories = original.externalRepositories; - this.repositoryIds = new HashSet( original.repositoryIds ); + this.repositoryIds = new HashSet<>( original.repositoryIds ); } @Override diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java index e8ba06b92..224fd2c90 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java @@ -19,23 +19,13 @@ * under the License. */ -import java.io.FileInputStream; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.inject.Inject; -import javax.inject.Named; - import org.apache.maven.artifact.repository.metadata.Versioning; import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.util.IOUtil; -import org.eclipse.aether.RepositoryEvent.EventType; import org.eclipse.aether.RepositoryEvent; +import org.eclipse.aether.RepositoryEvent.EventType; import org.eclipse.aether.RepositorySystemSession; import org.eclipse.aether.RequestTrace; import org.eclipse.aether.SyncContext; @@ -64,6 +54,15 @@ import org.eclipse.aether.version.VersionConstraint; import org.eclipse.aether.version.VersionScheme; +import javax.inject.Inject; +import javax.inject.Named; +import java.io.FileInputStream; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + /** * @author Benjamin Bentmann */ @@ -181,7 +180,7 @@ public VersionRangeResult resolveVersionRange( RepositorySystemSession session, { Map versionIndex = getVersions( session, result, request ); - List versions = new ArrayList(); + List versions = new ArrayList<>(); for ( Map.Entry v : versionIndex.entrySet() ) { try @@ -211,13 +210,13 @@ private Map getVersions( RepositorySystemSession ses { RequestTrace trace = RequestTrace.newChild( request.getTrace(), request ); - Map versionIndex = new HashMap(); + Map versionIndex = new HashMap<>(); Metadata metadata = new DefaultMetadata( request.getArtifact().getGroupId(), request.getArtifact().getArtifactId(), MAVEN_METADATA_XML, Metadata.Nature.RELEASE_OR_SNAPSHOT ); - List metadataRequests = new ArrayList( request.getRepositories().size() ); + List metadataRequests = new ArrayList<>( request.getRepositories().size() ); metadataRequests.add( new MetadataRequest( metadata, null, request.getRequestContext() ) ); @@ -274,9 +273,8 @@ private Versioning readVersions( RepositorySystemSession session, RequestTrace t { if ( metadata != null ) { - SyncContext syncContext = syncContextFactory.newInstance( session, true ); - try + try ( SyncContext syncContext = syncContextFactory.newInstance( session, true ) ) { syncContext.acquire( null, Collections.singleton( metadata ) ); @@ -288,10 +286,6 @@ private Versioning readVersions( RepositorySystemSession session, RequestTrace t versioning = m.getVersioning(); } } - finally - { - syncContext.close(); - } } } catch ( Exception e ) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java index d722644ef..4dc1435db 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -19,18 +19,6 @@ * under the License. */ -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.inject.Inject; -import javax.inject.Named; - import org.apache.maven.artifact.repository.metadata.Snapshot; import org.apache.maven.artifact.repository.metadata.SnapshotVersion; import org.apache.maven.artifact.repository.metadata.Versioning; @@ -40,8 +28,8 @@ import org.codehaus.plexus.util.IOUtil; import org.codehaus.plexus.util.StringUtils; import org.eclipse.aether.RepositoryCache; -import org.eclipse.aether.RepositoryEvent.EventType; import org.eclipse.aether.RepositoryEvent; +import org.eclipse.aether.RepositoryEvent.EventType; import org.eclipse.aether.RepositorySystemSession; import org.eclipse.aether.RequestTrace; import org.eclipse.aether.SyncContext; @@ -70,6 +58,17 @@ import org.eclipse.aether.spi.log.NullLoggerFactory; import org.eclipse.aether.util.ConfigUtils; +import javax.inject.Inject; +import javax.inject.Named; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + /** * @author Benjamin Bentmann */ @@ -187,8 +186,8 @@ public VersionResult resolveVersion( RepositorySystemSession session, VersionReq { Record record = (Record) obj; result.setVersion( record.version ); - result.setRepository( CacheUtils.getRepository( session, request.getRepositories(), record.repoClass, - record.repoId ) ); + result.setRepository( + CacheUtils.getRepository( session, request.getRepositories(), record.repoClass, record.repoId ) ); return result; } } @@ -197,15 +196,13 @@ public VersionResult resolveVersion( RepositorySystemSession session, VersionReq if ( RELEASE.equals( version ) ) { - metadata = - new DefaultMetadata( artifact.getGroupId(), artifact.getArtifactId(), MAVEN_METADATA_XML, - Metadata.Nature.RELEASE ); + metadata = new DefaultMetadata( artifact.getGroupId(), artifact.getArtifactId(), MAVEN_METADATA_XML, + Metadata.Nature.RELEASE ); } else if ( LATEST.equals( version ) ) { - metadata = - new DefaultMetadata( artifact.getGroupId(), artifact.getArtifactId(), MAVEN_METADATA_XML, - Metadata.Nature.RELEASE_OR_SNAPSHOT ); + metadata = new DefaultMetadata( artifact.getGroupId(), artifact.getArtifactId(), MAVEN_METADATA_XML, + Metadata.Nature.RELEASE_OR_SNAPSHOT ); } else if ( version.endsWith( SNAPSHOT ) ) { @@ -233,7 +230,7 @@ else if ( version.endsWith( SNAPSHOT ) ) } else { - List metadataReqs = new ArrayList( request.getRepositories().size() ); + List metadataReqs = new ArrayList<>( request.getRepositories().size() ); metadataReqs.add( new MetadataRequest( metadata, null, request.getRequestContext() ) ); @@ -249,7 +246,7 @@ else if ( version.endsWith( SNAPSHOT ) ) List metadataResults = metadataResolver.resolveMetadata( session, metadataReqs ); - Map infos = new HashMap(); + Map infos = new HashMap<>(); for ( MetadataResult metadataResult : metadataResults ) { @@ -343,9 +340,8 @@ private Versioning readVersions( RepositorySystemSession session, RequestTrace t { if ( metadata != null ) { - SyncContext syncContext = syncContextFactory.newInstance( session, true ); - try + try ( SyncContext syncContext = syncContextFactory.newInstance( session, true ) ) { syncContext.acquire( null, Collections.singleton( metadata ) ); @@ -373,16 +369,12 @@ private Versioning readVersions( RepositorySystemSession session, RequestTrace t versioning = repaired; throw new IOException( "Snapshot information corrupted with remote repository data" - + ", please verify that no remote repository uses the id '" + repository.getId() - + "'" ); + + ", please verify that no remote repository uses the id '" + + repository.getId() + "'" ); } } } } - finally - { - syncContext.close(); - } } } catch ( Exception e ) @@ -467,9 +459,8 @@ private void merge( Map infos, String srcKey, String dstKey VersionInfo srcInfo = infos.get( srcKey ); VersionInfo dstInfo = infos.get( dstKey ); - if ( dstInfo == null - || ( srcInfo != null && dstInfo.isOutdated( srcInfo.timestamp ) - && srcInfo.repository != dstInfo.repository ) ) + if ( dstInfo == null || ( srcInfo != null && dstInfo.isOutdated( srcInfo.timestamp ) + && srcInfo.repository != dstInfo.repository ) ) { infos.put( dstKey, srcInfo ); } @@ -554,7 +545,7 @@ public Key( RepositorySystemSession session, VersionRequest request ) version = artifact.getVersion(); localRepo = session.getLocalRepository().getBasedir(); workspace = CacheUtils.getWorkspace( session ); - repositories = new ArrayList( request.getRepositories().size() ); + repositories = new ArrayList<>( request.getRepositories().size() ); boolean repoMan = false; for ( RemoteRepository repository : request.getRepositories() ) { @@ -594,10 +585,10 @@ else if ( obj == null || !getClass().equals( obj.getClass() ) ) } Key that = (Key) obj; - return artifactId.equals( that.artifactId ) && groupId.equals( that.groupId ) - && classifier.equals( that.classifier ) && extension.equals( that.extension ) - && version.equals( that.version ) && context.equals( that.context ) - && localRepo.equals( that.localRepo ) && CacheUtils.eq( workspace, that.workspace ) + return artifactId.equals( that.artifactId ) && groupId.equals( that.groupId ) && classifier.equals( + that.classifier ) && extension.equals( that.extension ) && version.equals( that.version ) + && context.equals( that.context ) && localRepo.equals( that.localRepo ) + && CacheUtils.eq( workspace, that.workspace ) && CacheUtils.repositoriesEquals( repositories, that.repositories ); } diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java index a22d07d27..a5720109b 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java @@ -38,7 +38,7 @@ final class LocalSnapshotMetadata extends MavenMetadata { - private final Collection artifacts = new ArrayList(); + private final Collection artifacts = new ArrayList<>(); private final boolean legacyFormat; @@ -104,7 +104,7 @@ protected void merge( Metadata recessive ) { String lastUpdated = metadata.getVersioning().getLastUpdated(); - Map versions = new LinkedHashMap(); + Map versions = new LinkedHashMap<>(); for ( Artifact artifact : artifacts ) { @@ -129,7 +129,7 @@ protected void merge( Metadata recessive ) } } - metadata.getVersioning().setSnapshotVersions( new ArrayList( versions.values() ) ); + metadata.getVersioning().setSnapshotVersions( new ArrayList<>( versions.values() ) ); } artifacts.clear(); diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java index ee7c10b0c..072ba660e 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java @@ -46,7 +46,7 @@ public LocalSnapshotMetadataGenerator( RepositorySystemSession session, InstallR { legacyFormat = ConfigUtils.getBoolean( session.getConfigProperties(), false, "maven.metadata.legacy" ); - snapshots = new LinkedHashMap(); + snapshots = new LinkedHashMap<>(); } public Collection prepare( Collection artifacts ) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenAetherModule.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenAetherModule.java index fa81f611c..1c9acd727 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenAetherModule.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenAetherModule.java @@ -67,7 +67,7 @@ Set provideMetadataGeneratorFactories( @Named( "snapsh @Named( "versions" ) MetadataGeneratorFactory versions ) { - Set factories = new HashSet(); + Set factories = new HashSet<>(); factories.add( snapshot ); factories.add( versions ); return Collections.unmodifiableSet( factories ); diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenSnapshotMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenSnapshotMetadata.java index 1e6f9097d..e4c9a7e9e 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenSnapshotMetadata.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenSnapshotMetadata.java @@ -34,7 +34,7 @@ abstract class MavenSnapshotMetadata { static final String SNAPSHOT = "SNAPSHOT"; - protected final Collection artifacts = new ArrayList(); + protected final Collection artifacts = new ArrayList<>(); protected final boolean legacyFormat; diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java index 4494cae65..5c7faba05 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java @@ -41,7 +41,7 @@ final class RemoteSnapshotMetadata extends MavenSnapshotMetadata { - private final Map versions = new LinkedHashMap(); + private final Map versions = new LinkedHashMap<>(); public RemoteSnapshotMetadata( Artifact artifact, boolean legacyFormat ) { @@ -128,7 +128,7 @@ protected void merge( Metadata recessive ) if ( !legacyFormat ) { - metadata.getVersioning().setSnapshotVersions( new ArrayList( versions.values() ) ); + metadata.getVersioning().setSnapshotVersions( new ArrayList<>( versions.values() ) ); } } diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java index 6cbeec550..825896620 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java @@ -46,7 +46,7 @@ public RemoteSnapshotMetadataGenerator( RepositorySystemSession session, DeployR { legacyFormat = ConfigUtils.getBoolean( session.getConfigProperties(), false, "maven.metadata.legacy" ); - snapshots = new LinkedHashMap(); + snapshots = new LinkedHashMap<>(); /* * NOTE: This should be considered a quirk to support interop with Maven's legacy ArtifactDeployer which diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java index adaca9dbc..f5e13be19 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java @@ -89,9 +89,9 @@ protected void merge( Metadata recessive ) versioning.setRelease( recessive.getVersioning().getRelease() ); } - Collection versions = new LinkedHashSet( recessive.getVersioning().getVersions() ); + Collection versions = new LinkedHashSet<>( recessive.getVersioning().getVersions() ); versions.addAll( versioning.getVersions() ); - versioning.setVersions( new ArrayList( versions ) ); + versioning.setVersions( new ArrayList<>( versions ) ); } } diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java index e2f5e82d5..5173001bb 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java @@ -55,8 +55,8 @@ public VersionsMetadataGenerator( RepositorySystemSession session, DeployRequest private VersionsMetadataGenerator( RepositorySystemSession session, Collection metadatas ) { - versions = new LinkedHashMap(); - processedVersions = new LinkedHashMap(); + versions = new LinkedHashMap<>(); + processedVersions = new LinkedHashMap<>(); /* * NOTE: This should be considered a quirk to support interop with Maven's legacy ArtifactDeployer which diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleTransferListener.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleTransferListener.java index fb442834b..cf587d89f 100644 --- a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleTransferListener.java +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleTransferListener.java @@ -36,7 +36,7 @@ public class ConsoleTransferListener private PrintStream out; - private Map downloads = new ConcurrentHashMap(); + private Map downloads = new ConcurrentHashMap<>(); private int lastLength; From 4eca5721fbd4c5d789b19d59745c41ae3ed4d4f0 Mon Sep 17 00:00:00 2001 From: sugartxy Date: Fri, 19 Jun 2015 17:10:43 +0800 Subject: [PATCH 199/224] try-with-resources Reformatted to code style by me. This fixes #53 --- .../repository/internal/MavenMetadata.java | 33 ++++++------------- 1 file changed, 10 insertions(+), 23 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java index bdf287831..aef44f6bb 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java @@ -19,17 +19,9 @@ * under the License. */ -import java.io.File; -import java.io.IOException; -import java.io.Reader; -import java.io.Writer; -import java.util.Collections; -import java.util.Map; - import org.apache.maven.artifact.repository.metadata.Metadata; import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader; import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Writer; -import org.codehaus.plexus.util.IOUtil; import org.codehaus.plexus.util.ReaderFactory; import org.codehaus.plexus.util.WriterFactory; import org.codehaus.plexus.util.xml.pull.XmlPullParserException; @@ -37,6 +29,13 @@ import org.eclipse.aether.metadata.AbstractMetadata; import org.eclipse.aether.metadata.MergeableMetadata; +import java.io.File; +import java.io.IOException; +import java.io.Reader; +import java.io.Writer; +import java.util.Collections; +import java.util.Map; + /** * @author Benjamin Bentmann */ @@ -96,10 +95,8 @@ static Metadata read( File metadataFile ) return new Metadata(); } - Reader reader = null; - try + try ( Reader reader = ReaderFactory.newXmlReader( metadataFile ) ) { - reader = ReaderFactory.newXmlReader( metadataFile ); return new MetadataXpp3Reader().read( reader, false ); } catch ( IOException e ) @@ -110,30 +107,20 @@ static Metadata read( File metadataFile ) { throw new RepositoryException( "Could not parse metadata " + metadataFile + ": " + e.getMessage(), e ); } - finally - { - IOUtil.close( reader ); - } } private void write( File metadataFile, Metadata metadata ) throws RepositoryException { - Writer writer = null; - try + metadataFile.getParentFile().mkdirs(); + try ( Writer writer = WriterFactory.newXmlWriter( metadataFile ) ) { - metadataFile.getParentFile().mkdirs(); - writer = WriterFactory.newXmlWriter( metadataFile ); new MetadataXpp3Writer().write( writer, metadata ); } catch ( IOException e ) { throw new RepositoryException( "Could not write metadata " + metadataFile + ": " + e.getMessage(), e ); } - finally - { - IOUtil.close( writer ); - } } public Map getProperties() From 32bddf2c39e09d6e2f95d9cd8a009188e21651e2 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Fri, 17 Jul 2015 14:05:46 -0400 Subject: [PATCH 200/224] [maven-release-plugin] prepare release maven-3.3.4 --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 4ab5d723f..a3f62c3bb 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.3.4-SNAPSHOT + 3.3.4 maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - HEAD + maven-3.3.4 From 115df5d71ebdf29dee9bdce898762884fc83acdd Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Fri, 17 Jul 2015 14:06:03 -0400 Subject: [PATCH 201/224] [maven-release-plugin] prepare for next development iteration --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index a3f62c3bb..0c111238e 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.3.4 + 3.3.5-SNAPSHOT maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - maven-3.3.4 + HEAD From 328c5c7ccfad6e4da67497575c0daaa2d97fa3b3 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Mon, 20 Jul 2015 14:05:06 -0400 Subject: [PATCH 202/224] [maven-release-plugin] prepare release maven-3.3.5 --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 0c111238e..c83e2936f 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.3.5-SNAPSHOT + 3.3.5 maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - HEAD + maven-3.3.5 From eba8fdfc7e35712680d8badd47de6e06dd277eb1 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Mon, 20 Jul 2015 14:05:24 -0400 Subject: [PATCH 203/224] [maven-release-plugin] prepare for next development iteration --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index c83e2936f..d0f3a311e 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.3.5 + 3.3.6-SNAPSHOT maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - maven-3.3.5 + HEAD From eda754395566cb11c782c56977279412492a812f Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Thu, 30 Jul 2015 22:25:36 -0400 Subject: [PATCH 204/224] [maven-release-plugin] prepare release maven-3.3.6 --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index d0f3a311e..106a18de5 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.3.6-SNAPSHOT + 3.3.6 maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - HEAD + maven-3.3.6 From edd3ae25f2663199d3e3f8fe5be7d6f74d4c574c Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Thu, 30 Jul 2015 22:25:55 -0400 Subject: [PATCH 205/224] [maven-release-plugin] prepare for next development iteration --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 106a18de5..7d498efe6 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.3.6 + 3.3.7-SNAPSHOT maven-aether-provider @@ -36,7 +36,7 @@ under the License. scm:git:https://git-wip-us.apache.org/repos/asf/maven.git scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - maven-3.3.6 + HEAD From ee9003fb51328397aca54539fb1df946c29ea6e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Boutemy?= Date: Sun, 9 Aug 2015 21:30:11 +0200 Subject: [PATCH 206/224] removed unused config since MPIR is at 2.8 with MPIR-290 --- maven-aether-provider/pom.xml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 7d498efe6..0995155b1 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -33,12 +33,6 @@ under the License. Maven Aether Provider Extensions to Aether for utilizing Maven POM and repository metadata. - - scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - scm:git:https://git-wip-us.apache.org/repos/asf/maven.git - HEAD - - org.apache.maven From 812d63a6d50b83dd386f7939fb1b9979889cf92d Mon Sep 17 00:00:00 2001 From: Stuart McCulloch Date: Wed, 29 Apr 2015 00:38:57 +0100 Subject: [PATCH 207/224] Switch to official Guice 4.0 Signed-off-by: Jason van Zyl closes #45 --- maven-aether-provider/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 0995155b1..274a3189e 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -71,8 +71,8 @@ under the License. plexus-utils - org.sonatype.sisu - sisu-guice + com.google.inject + guice no_aop true From c25139489af31fc374e354a2e87a46db5890d279 Mon Sep 17 00:00:00 2001 From: Joseph Walton Date: Sat, 12 Sep 2015 23:20:21 +1000 Subject: [PATCH 208/224] [MNG-5877] maven-aether-provider does not always generate snapshot versions using Gregorian calendar year Snapshot versioning should use the Gregorian calendar for consistency across systems. Apply the fix reported by Anders Forsell to make that explicit, and include a somewhat overengineered test to confirm that it's working. Signed-off-by: Michael Osipov --- .../internal/RemoteSnapshotMetadata.java | 2 + .../internal/RemoteSnapshotMetadataTest.java | 81 +++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataTest.java diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java index 5c7faba05..98c914acb 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java @@ -24,6 +24,7 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; +import java.util.GregorianCalendar; import java.util.LinkedHashMap; import java.util.Map; import java.util.TimeZone; @@ -73,6 +74,7 @@ protected void merge( Metadata recessive ) if ( metadata.getVersioning() == null ) { DateFormat utcDateFormatter = new SimpleDateFormat( "yyyyMMdd.HHmmss" ); + utcDateFormatter.setCalendar( new GregorianCalendar() ); utcDateFormatter.setTimeZone( TimeZone.getTimeZone( "UTC" ) ); snapshot = new Snapshot(); diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataTest.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataTest.java new file mode 100644 index 000000000..3b3dcb0b9 --- /dev/null +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataTest.java @@ -0,0 +1,81 @@ +package org.apache.maven.repository.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 static org.junit.Assert.assertTrue; + +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.HashSet; +import java.util.Locale; +import java.util.Set; + +import org.apache.maven.artifact.repository.metadata.Metadata; +import org.eclipse.aether.artifact.DefaultArtifact; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class RemoteSnapshotMetadataTest +{ + private Locale defaultLocale; + + @Before + public void setLocaleToUseBuddhistCalendar() + { + defaultLocale = Locale.getDefault(); + Locale.setDefault( new Locale( "th", "TH" ) ); + } + + @After + public void restoreLocale() + { + Locale.setDefault(defaultLocale); + } + + static String gregorianDate() + { + SimpleDateFormat df = new SimpleDateFormat( "yyyyMMdd" ); + df.setCalendar(new GregorianCalendar()); + return df.format( new Date() ); + } + + @Test + public void gregorianCalendarIsUsed() + { + String dateBefore = gregorianDate(); + + RemoteSnapshotMetadata metadata = new RemoteSnapshotMetadata( + new DefaultArtifact( "a:b:1-SNAPSHOT" ), false); + metadata.merge(new Metadata()); + + String dateAfter = gregorianDate(); + + String ts = metadata.metadata.getVersioning().getSnapshot().getTimestamp(); + String datePart = ts.replaceAll( "\\..*", "" ); + + /* Allow for this test running across midnight */ + Set expected = new HashSet( Arrays.asList( dateBefore, dateAfter ) ); + assertTrue( "Expected " + datePart + " to be in " + expected, + expected.contains(datePart) ); + } +} From 5263a59a51f5377375ec4773e0501f8e05923881 Mon Sep 17 00:00:00 2001 From: Michael Osipov Date: Sat, 10 Oct 2015 14:39:31 +0200 Subject: [PATCH 209/224] [MNG-5906] Use canonical name for UTC timezone --- .../maven/repository/internal/RemoteSnapshotMetadata.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java index 98c914acb..285d218f4 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java @@ -41,6 +41,9 @@ final class RemoteSnapshotMetadata extends MavenSnapshotMetadata { + private static final String DEFAULT_SNAPSHOT_TIMESTAMP_FORMAT = "yyyyMMdd.HHmmss"; + + private static final TimeZone DEFAULT_SNAPSHOT_TIME_ZONE = TimeZone.getTimeZone( "Etc/UTC" ); private final Map versions = new LinkedHashMap<>(); @@ -73,9 +76,9 @@ protected void merge( Metadata recessive ) if ( metadata.getVersioning() == null ) { - DateFormat utcDateFormatter = new SimpleDateFormat( "yyyyMMdd.HHmmss" ); + DateFormat utcDateFormatter = new SimpleDateFormat( DEFAULT_SNAPSHOT_TIMESTAMP_FORMAT ); utcDateFormatter.setCalendar( new GregorianCalendar() ); - utcDateFormatter.setTimeZone( TimeZone.getTimeZone( "UTC" ) ); + utcDateFormatter.setTimeZone( DEFAULT_SNAPSHOT_TIME_ZONE ); snapshot = new Snapshot(); snapshot.setBuildNumber( getBuildNumber( recessive ) + 1 ); From 5070fd988a6326f12a193d8be50610656fd1b368 Mon Sep 17 00:00:00 2001 From: Michael Osipov Date: Sat, 10 Oct 2015 15:50:22 +0200 Subject: [PATCH 210/224] [MNG-5907] org.apache.maven.repository.internal.RemoteSnapshotMetadataTest fails starting at midnight --- .../repository/internal/RemoteSnapshotMetadata.java | 4 ++-- .../repository/internal/RemoteSnapshotMetadataTest.java | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java index 285d218f4..1e791d8a4 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java @@ -41,9 +41,9 @@ final class RemoteSnapshotMetadata extends MavenSnapshotMetadata { - private static final String DEFAULT_SNAPSHOT_TIMESTAMP_FORMAT = "yyyyMMdd.HHmmss"; + public static final String DEFAULT_SNAPSHOT_TIMESTAMP_FORMAT = "yyyyMMdd.HHmmss"; - private static final TimeZone DEFAULT_SNAPSHOT_TIME_ZONE = TimeZone.getTimeZone( "Etc/UTC" ); + public static final TimeZone DEFAULT_SNAPSHOT_TIME_ZONE = TimeZone.getTimeZone( "Etc/UTC" ); private final Map versions = new LinkedHashMap<>(); diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataTest.java b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataTest.java index 3b3dcb0b9..278231f9f 100644 --- a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataTest.java +++ b/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataTest.java @@ -49,13 +49,14 @@ public void setLocaleToUseBuddhistCalendar() @After public void restoreLocale() { - Locale.setDefault(defaultLocale); + Locale.setDefault( defaultLocale ); } static String gregorianDate() { SimpleDateFormat df = new SimpleDateFormat( "yyyyMMdd" ); - df.setCalendar(new GregorianCalendar()); + df.setCalendar( new GregorianCalendar() ); + df.setTimeZone( RemoteSnapshotMetadata.DEFAULT_SNAPSHOT_TIME_ZONE ); return df.format( new Date() ); } @@ -66,7 +67,7 @@ public void gregorianCalendarIsUsed() RemoteSnapshotMetadata metadata = new RemoteSnapshotMetadata( new DefaultArtifact( "a:b:1-SNAPSHOT" ), false); - metadata.merge(new Metadata()); + metadata.merge( new Metadata() ); String dateAfter = gregorianDate(); @@ -76,6 +77,6 @@ public void gregorianCalendarIsUsed() /* Allow for this test running across midnight */ Set expected = new HashSet( Arrays.asList( dateBefore, dateAfter ) ); assertTrue( "Expected " + datePart + " to be in " + expected, - expected.contains(datePart) ); + expected.contains( datePart ) ); } } From 62e761407b0e0bb81ed53748d8041ecc6db8f6d0 Mon Sep 17 00:00:00 2001 From: Michael Osipov Date: Fri, 16 Oct 2015 12:47:02 +0200 Subject: [PATCH 211/224] [MNG-5649] Use Commons Lang's Validate to intercept invalid input Use wherever possible Validate with consistent messages and exceptions. --- maven-aether-provider/pom.xml | 4 ++ .../DefaultArtifactDescriptorReader.java | 42 +++++-------------- .../internal/DefaultVersionRangeResolver.java | 23 ++++------ .../internal/DefaultVersionResolver.java | 20 +++------ .../internal/RelocatedArtifact.java | 8 ++-- 5 files changed, 30 insertions(+), 67 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 274a3189e..9121fa8dc 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -82,6 +82,10 @@ under the License. + + org.apache.commons + commons-lang3 + org.eclipse.aether diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java index f7328a1f0..0f313301d 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java @@ -27,6 +27,7 @@ import javax.inject.Inject; import javax.inject.Named; +import org.apache.commons.lang3.Validate; import org.apache.maven.model.DistributionManagement; import org.apache.maven.model.Model; import org.apache.maven.model.Relocation; @@ -150,62 +151,41 @@ void setLogger( LoggerFactory loggerFactory ) public DefaultArtifactDescriptorReader setRemoteRepositoryManager( RemoteRepositoryManager remoteRepositoryManager ) { - if ( remoteRepositoryManager == null ) - { - throw new IllegalArgumentException( "remote repository manager has not been specified" ); - } - this.remoteRepositoryManager = remoteRepositoryManager; + this.remoteRepositoryManager = Validate.notNull( remoteRepositoryManager, + "remoteRepositoryManager cannot be null" ); return this; } public DefaultArtifactDescriptorReader setVersionResolver( VersionResolver versionResolver ) { - if ( versionResolver == null ) - { - throw new IllegalArgumentException( "version resolver has not been specified" ); - } - this.versionResolver = versionResolver; + this.versionResolver = Validate.notNull( versionResolver, "versionResolver cannot be null" ); return this; } /** @since 3.2.2 */ public DefaultArtifactDescriptorReader setVersionRangeResolver( VersionRangeResolver versionRangeResolver ) { - if ( versionRangeResolver == null ) - { - throw new IllegalArgumentException( "version range resolver has not been specified" ); - } - this.versionRangeResolver = versionRangeResolver; + this.versionRangeResolver = Validate.notNull( versionRangeResolver, "versionRangeResolver cannot be null" ); return this; } public DefaultArtifactDescriptorReader setArtifactResolver( ArtifactResolver artifactResolver ) { - if ( artifactResolver == null ) - { - throw new IllegalArgumentException( "artifact resolver has not been specified" ); - } - this.artifactResolver = artifactResolver; + this.artifactResolver = Validate.notNull( artifactResolver, "artifactResolver cannot be null" ); return this; } - public DefaultArtifactDescriptorReader setRepositoryEventDispatcher( RepositoryEventDispatcher red ) + public DefaultArtifactDescriptorReader setRepositoryEventDispatcher( + RepositoryEventDispatcher repositoryEventDispatcher ) { - if ( red == null ) - { - throw new IllegalArgumentException( "repository event dispatcher has not been specified" ); - } - this.repositoryEventDispatcher = red; + this.repositoryEventDispatcher = Validate.notNull( repositoryEventDispatcher, + "repositoryEventDispatcher cannot be null" ); return this; } public DefaultArtifactDescriptorReader setModelBuilder( ModelBuilder modelBuilder ) { - if ( modelBuilder == null ) - { - throw new IllegalArgumentException( "model builder has not been specified" ); - } - this.modelBuilder = modelBuilder; + this.modelBuilder = Validate.notNull( modelBuilder, "modelBuilder cannot be null" ); return this; } diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java index 224fd2c90..ddd3e972f 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java @@ -19,6 +19,7 @@ * under the License. */ +import org.apache.commons.lang3.Validate; import org.apache.maven.artifact.repository.metadata.Versioning; import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader; import org.codehaus.plexus.component.annotations.Component; @@ -124,31 +125,21 @@ void setLogger( LoggerFactory loggerFactory ) public DefaultVersionRangeResolver setMetadataResolver( MetadataResolver metadataResolver ) { - if ( metadataResolver == null ) - { - throw new IllegalArgumentException( "metadata resolver has not been specified" ); - } - this.metadataResolver = metadataResolver; + this.metadataResolver = Validate.notNull( metadataResolver, "metadataResolver cannot be null" ); return this; } public DefaultVersionRangeResolver setSyncContextFactory( SyncContextFactory syncContextFactory ) { - if ( syncContextFactory == null ) - { - throw new IllegalArgumentException( "sync context factory has not been specified" ); - } - this.syncContextFactory = syncContextFactory; + this.syncContextFactory = Validate.notNull( syncContextFactory, "syncContextFactory cannot be null" ); return this; } - public DefaultVersionRangeResolver setRepositoryEventDispatcher( RepositoryEventDispatcher red ) + public DefaultVersionRangeResolver setRepositoryEventDispatcher( + RepositoryEventDispatcher repositoryEventDispatcher ) { - if ( red == null ) - { - throw new IllegalArgumentException( "repository event dispatcher has not been specified" ); - } - this.repositoryEventDispatcher = red; + this.repositoryEventDispatcher = Validate.notNull( repositoryEventDispatcher, + "repositoryEventDispatcher cannot be null" ); return this; } diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java index 4dc1435db..2b0890b15 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java @@ -19,6 +19,7 @@ * under the License. */ +import org.apache.commons.lang3.Validate; import org.apache.maven.artifact.repository.metadata.Snapshot; import org.apache.maven.artifact.repository.metadata.SnapshotVersion; import org.apache.maven.artifact.repository.metadata.Versioning; @@ -136,31 +137,20 @@ void setLogger( LoggerFactory loggerFactory ) public DefaultVersionResolver setMetadataResolver( MetadataResolver metadataResolver ) { - if ( metadataResolver == null ) - { - throw new IllegalArgumentException( "metadata resolver has not been specified" ); - } - this.metadataResolver = metadataResolver; + this.metadataResolver = Validate.notNull( metadataResolver, "metadataResolver cannot be null" ); return this; } public DefaultVersionResolver setSyncContextFactory( SyncContextFactory syncContextFactory ) { - if ( syncContextFactory == null ) - { - throw new IllegalArgumentException( "sync context factory has not been specified" ); - } - this.syncContextFactory = syncContextFactory; + this.syncContextFactory = Validate.notNull( syncContextFactory, "syncContextFactory cannot be null" ); return this; } public DefaultVersionResolver setRepositoryEventDispatcher( RepositoryEventDispatcher repositoryEventDispatcher ) { - if ( repositoryEventDispatcher == null ) - { - throw new IllegalArgumentException( "repository event dispatcher has not been specified" ); - } - this.repositoryEventDispatcher = repositoryEventDispatcher; + this.repositoryEventDispatcher = Validate.notNull( repositoryEventDispatcher, + "repositoryEventDispatcher cannot be null" ); return this; } diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RelocatedArtifact.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RelocatedArtifact.java index 958eb388c..c6ef3aa89 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RelocatedArtifact.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RelocatedArtifact.java @@ -22,6 +22,7 @@ import java.io.File; import java.util.Map; +import org.apache.commons.lang3.Validate; import org.eclipse.aether.artifact.AbstractArtifact; import org.eclipse.aether.artifact.Artifact; @@ -42,11 +43,8 @@ final class RelocatedArtifact public RelocatedArtifact( Artifact artifact, String groupId, String artifactId, String version ) { - if ( artifact == null ) - { - throw new IllegalArgumentException( "no artifact specified" ); - } - this.artifact = artifact; + this.artifact = Validate.notNull( artifact, "artifact cannot be null" ); + // TODO Use StringUtils here this.groupId = ( groupId != null && groupId.length() > 0 ) ? groupId : null; this.artifactId = ( artifactId != null && artifactId.length() > 0 ) ? artifactId : null; this.version = ( version != null && version.length() > 0 ) ? version : null; From 62c556b72debf2a686cdfe3b3327b86b34a5858a Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Tue, 27 Oct 2015 11:36:22 -0700 Subject: [PATCH 212/224] [maven-release-plugin] prepare release maven-3.3.7 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 9121fa8dc..3a62658d8 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.3.7-SNAPSHOT + 3.3.7 maven-aether-provider From 14422b2e2893bd743cfd817230a1c2fc696f6ca1 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Tue, 27 Oct 2015 11:36:39 -0700 Subject: [PATCH 213/224] [maven-release-plugin] prepare for next development iteration --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 3a62658d8..78870285d 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.3.7 + 3.3.8-SNAPSHOT maven-aether-provider From 6c152b156e34f905ba3dc32fb28789cc97c198cc Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Fri, 30 Oct 2015 09:40:58 -0700 Subject: [PATCH 214/224] [maven-release-plugin] prepare release maven-3.3.8 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 78870285d..8f95e5471 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.3.8-SNAPSHOT + 3.3.8 maven-aether-provider From 67e67b4cb21c6f2077defea0b9c71e89ac3ed12a Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Fri, 30 Oct 2015 09:41:20 -0700 Subject: [PATCH 215/224] [maven-release-plugin] prepare for next development iteration --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 8f95e5471..53342f6a4 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.3.8 + 3.3.9-SNAPSHOT maven-aether-provider From f9ce49d2ac9072e4416d1d5acc0aeec0519f0bcd Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Tue, 10 Nov 2015 11:36:45 -0500 Subject: [PATCH 216/224] [maven-release-plugin] prepare release maven-3.3.9 --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 53342f6a4..d53e001af 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.3.9-SNAPSHOT + 3.3.9 maven-aether-provider From ad41b808add4bb098d902d362b61c70342570569 Mon Sep 17 00:00:00 2001 From: Jason van Zyl Date: Tue, 10 Nov 2015 11:37:02 -0500 Subject: [PATCH 217/224] [maven-release-plugin] prepare for next development iteration --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index d53e001af..93e93e92e 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.3.9 + 3.3.10-SNAPSHOT maven-aether-provider From a41305bcaef1d27ad20b048e6c992b4a8f7ff9c0 Mon Sep 17 00:00:00 2001 From: Stephen Connolly Date: Wed, 4 Jan 2017 09:12:47 +0000 Subject: [PATCH 218/224] [MNG-6151] Set version to 3.5.0-SNAPSHOT --- maven-aether-provider/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 93e93e92e..0f3cb615c 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -25,7 +25,7 @@ under the License. org.apache.maven maven - 3.3.10-SNAPSHOT + 3.5.0-SNAPSHOT maven-aether-provider From c4dd3e7fbbb4d20f14c4ade55087259097719e62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillaume=20Bou=C3=A9?= Date: Sun, 16 Oct 2016 01:40:46 +0200 Subject: [PATCH 219/224] [MNG-6105] properties.internal.SystemProperties.addSystemProperties() is not really thread-safe Refactoring the current code setting system properties to synchronize correctly on the given ones: avoids ConcurrentModificationException and NullPointerException if the properties is modified by another thread. --- .../internal/MavenRepositorySystemUtils.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java index 5b240efe1..1b11cb34a 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java +++ b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java @@ -126,14 +126,18 @@ public static DefaultRepositorySystemSession newSession() session.setArtifactDescriptorPolicy( new SimpleArtifactDescriptorPolicy( true, true ) ); + final Properties systemProperties = new Properties(); + // MNG-5670 guard against ConcurrentModificationException - Properties sysProps = new Properties(); - for ( String key : System.getProperties().stringPropertyNames() ) + // MNG-6053 guard against key without value + Properties sysProp = System.getProperties(); + synchronized ( sysProp ) { - sysProps.put( key, System.getProperty( key ) ); + systemProperties.putAll( sysProp ); } - session.setSystemProperties( sysProps ); - session.setConfigProperties( sysProps ); + + session.setSystemProperties( systemProperties ); + session.setConfigProperties( systemProperties ); return session; } From 5cc300958768c63a3227882b0081604dfeecc37f Mon Sep 17 00:00:00 2001 From: Harald Wellmann Date: Sun, 6 Nov 2016 12:13:32 +0100 Subject: [PATCH 220/224] [MNG-6110] Upgrade Aether to Maven Resolver 1.0.3 --- maven-aether-provider/pom.xml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/maven-aether-provider/pom.xml b/maven-aether-provider/pom.xml index 0f3cb615c..91d1ae73e 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-aether-provider/pom.xml @@ -31,7 +31,7 @@ under the License. maven-aether-provider Maven Aether Provider - Extensions to Aether for utilizing Maven POM and repository metadata. + Extensions to Maven Resolver for utilizing Maven POM and repository metadata. @@ -47,20 +47,20 @@ under the License. maven-repository-metadata - org.eclipse.aether - aether-api + org.apache.maven.resolver + maven-resolver-api - org.eclipse.aether - aether-spi + org.apache.maven.resolver + maven-resolver-spi - org.eclipse.aether - aether-util + org.apache.maven.resolver + maven-resolver-util - org.eclipse.aether - aether-impl + org.apache.maven.resolver + maven-resolver-impl org.codehaus.plexus @@ -88,13 +88,13 @@ under the License. - org.eclipse.aether - aether-connector-basic + org.apache.maven.resolver + maven-resolver-connector-basic test - org.eclipse.aether - aether-transport-wagon + org.apache.maven.resolver + maven-resolver-transport-wagon test From 990bc9ea6a11916e848e718fa574fad9ef5c7ba1 Mon Sep 17 00:00:00 2001 From: Christian Schulte Date: Sun, 11 Dec 2016 23:36:04 +0100 Subject: [PATCH 221/224] [MNG-6110] renamed 'maven-aether-provider' to 'maven-resolver-provider' --- .../pom.xml | 4 +- .../ArtifactDescriptorReaderDelegate.java | 0 .../internal/ArtifactDescriptorUtils.java | 0 .../DefaultArtifactDescriptorReader.java | 0 .../internal/DefaultModelCache.java | 0 .../internal/DefaultModelResolver.java | 0 .../internal/DefaultVersionRangeResolver.java | 0 .../internal/DefaultVersionResolver.java | 0 .../internal/LocalSnapshotMetadata.java | 0 .../LocalSnapshotMetadataGenerator.java | 0 .../internal/MavenAetherModule.java | 4 ++ .../repository/internal/MavenMetadata.java | 0 .../internal/MavenRepositorySystemUtils.java | 0 .../internal/MavenResolverModule.java | 70 +++++++++++++++++++ .../internal/MavenSnapshotMetadata.java | 0 .../internal/MavenWorkspaceReader.java | 0 .../internal/RelocatedArtifact.java | 0 .../internal/RemoteSnapshotMetadata.java | 0 .../RemoteSnapshotMetadataGenerator.java | 0 .../SnapshotMetadataGeneratorFactory.java | 0 .../repository/internal/VersionsMetadata.java | 0 .../internal/VersionsMetadataGenerator.java | 0 .../VersionsMetadataGeneratorFactory.java | 0 .../repository/internal/package-info.java | 6 +- .../src/site/apt/index.apt | 4 +- .../src/site/site.xml | 0 .../internal/AbstractRepositoryTestCase.java | 0 .../DefaultArtifactDescriptorReaderTest.java | 0 .../internal/DefaultVersionResolverTest.java | 0 .../MavenRepositorySystemUtilsTest.java | 0 .../internal/RemoteSnapshotMetadataTest.java | 0 .../internal/RepositorySystemTest.java | 0 .../util/ConsoleRepositoryListener.java | 0 .../util/ConsoleTransferListener.java | 0 .../07.20.3-SNAPSHOT/maven-metadata.xml | 0 .../0.4.0-SNAPSHOT/maven-metadata.xml | 0 .../artifact/1.0/artifact-1.0-classifier.zip | 0 .../ut/simple/artifact/1.0/artifact-1.0.jar | 0 .../ut/simple/artifact/1.0/artifact-1.0.pom | 0 .../ut/simple/artifact/1.0/artifact-1.0.zip | 0 .../ut/simple/artifact/maven-metadata.xml | 0 .../dependency/1.0/dependency-1.0-sources.jar | 0 .../simple/dependency/1.0/dependency-1.0.jar | 0 .../simple/dependency/1.0/dependency-1.0.pom | 0 .../ut/simple/dependency/maven-metadata.xml | 0 .../repo/ut/simple/parent/1.0/parent-1.0.pom | 0 .../repo/ut/simple/parent/maven-metadata.xml | 0 47 files changed, 81 insertions(+), 7 deletions(-) rename {maven-aether-provider => maven-resolver-provider}/pom.xml (97%) rename {maven-aether-provider => maven-resolver-provider}/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorReaderDelegate.java (100%) rename {maven-aether-provider => maven-resolver-provider}/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorUtils.java (100%) rename {maven-aether-provider => maven-resolver-provider}/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java (100%) rename {maven-aether-provider => maven-resolver-provider}/src/main/java/org/apache/maven/repository/internal/DefaultModelCache.java (100%) rename {maven-aether-provider => maven-resolver-provider}/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java (100%) rename {maven-aether-provider => maven-resolver-provider}/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java (100%) rename {maven-aether-provider => maven-resolver-provider}/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java (100%) rename {maven-aether-provider => maven-resolver-provider}/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java (100%) rename {maven-aether-provider => maven-resolver-provider}/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java (100%) rename {maven-aether-provider => maven-resolver-provider}/src/main/java/org/apache/maven/repository/internal/MavenAetherModule.java (96%) rename {maven-aether-provider => maven-resolver-provider}/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java (100%) rename {maven-aether-provider => maven-resolver-provider}/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java (100%) create mode 100644 maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenResolverModule.java rename {maven-aether-provider => maven-resolver-provider}/src/main/java/org/apache/maven/repository/internal/MavenSnapshotMetadata.java (100%) rename {maven-aether-provider => maven-resolver-provider}/src/main/java/org/apache/maven/repository/internal/MavenWorkspaceReader.java (100%) rename {maven-aether-provider => maven-resolver-provider}/src/main/java/org/apache/maven/repository/internal/RelocatedArtifact.java (100%) rename {maven-aether-provider => maven-resolver-provider}/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java (100%) rename {maven-aether-provider => maven-resolver-provider}/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java (100%) rename {maven-aether-provider => maven-resolver-provider}/src/main/java/org/apache/maven/repository/internal/SnapshotMetadataGeneratorFactory.java (100%) rename {maven-aether-provider => maven-resolver-provider}/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java (100%) rename {maven-aether-provider => maven-resolver-provider}/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java (100%) rename {maven-aether-provider => maven-resolver-provider}/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGeneratorFactory.java (100%) rename {maven-aether-provider => maven-resolver-provider}/src/main/java/org/apache/maven/repository/internal/package-info.java (86%) rename {maven-aether-provider => maven-resolver-provider}/src/site/apt/index.apt (89%) rename {maven-aether-provider => maven-resolver-provider}/src/site/site.xml (100%) rename {maven-aether-provider => maven-resolver-provider}/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java (100%) rename {maven-aether-provider => maven-resolver-provider}/src/test/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReaderTest.java (100%) rename {maven-aether-provider => maven-resolver-provider}/src/test/java/org/apache/maven/repository/internal/DefaultVersionResolverTest.java (100%) rename {maven-aether-provider => maven-resolver-provider}/src/test/java/org/apache/maven/repository/internal/MavenRepositorySystemUtilsTest.java (100%) rename {maven-aether-provider => maven-resolver-provider}/src/test/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataTest.java (100%) rename {maven-aether-provider => maven-resolver-provider}/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java (100%) rename {maven-aether-provider => maven-resolver-provider}/src/test/java/org/apache/maven/repository/internal/util/ConsoleRepositoryListener.java (100%) rename {maven-aether-provider => maven-resolver-provider}/src/test/java/org/apache/maven/repository/internal/util/ConsoleTransferListener.java (100%) rename {maven-aether-provider => maven-resolver-provider}/src/test/resources/repo/org/apache/maven/its/dep-mng5324/07.20.3-SNAPSHOT/maven-metadata.xml (100%) rename {maven-aether-provider => maven-resolver-provider}/src/test/resources/repo/org/apache/maven/its/dep-mng5459/0.4.0-SNAPSHOT/maven-metadata.xml (100%) rename {maven-aether-provider => maven-resolver-provider}/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0-classifier.zip (100%) rename {maven-aether-provider => maven-resolver-provider}/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.jar (100%) rename {maven-aether-provider => maven-resolver-provider}/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.pom (100%) rename {maven-aether-provider => maven-resolver-provider}/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.zip (100%) rename {maven-aether-provider => maven-resolver-provider}/src/test/resources/repo/ut/simple/artifact/maven-metadata.xml (100%) rename {maven-aether-provider => maven-resolver-provider}/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0-sources.jar (100%) rename {maven-aether-provider => maven-resolver-provider}/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0.jar (100%) rename {maven-aether-provider => maven-resolver-provider}/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0.pom (100%) rename {maven-aether-provider => maven-resolver-provider}/src/test/resources/repo/ut/simple/dependency/maven-metadata.xml (100%) rename {maven-aether-provider => maven-resolver-provider}/src/test/resources/repo/ut/simple/parent/1.0/parent-1.0.pom (100%) rename {maven-aether-provider => maven-resolver-provider}/src/test/resources/repo/ut/simple/parent/maven-metadata.xml (100%) diff --git a/maven-aether-provider/pom.xml b/maven-resolver-provider/pom.xml similarity index 97% rename from maven-aether-provider/pom.xml rename to maven-resolver-provider/pom.xml index 91d1ae73e..7d71e337b 100644 --- a/maven-aether-provider/pom.xml +++ b/maven-resolver-provider/pom.xml @@ -28,9 +28,9 @@ under the License. 3.5.0-SNAPSHOT - maven-aether-provider + maven-resolver-provider - Maven Aether Provider + Maven Artifact Resolver Provider Extensions to Maven Resolver for utilizing Maven POM and repository metadata. diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorReaderDelegate.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorReaderDelegate.java similarity index 100% rename from maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorReaderDelegate.java rename to maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorReaderDelegate.java diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorUtils.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorUtils.java similarity index 100% rename from maven-aether-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorUtils.java rename to maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorUtils.java diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java similarity index 100% rename from maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java rename to maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelCache.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelCache.java similarity index 100% rename from maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelCache.java rename to maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelCache.java diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java similarity index 100% rename from maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java rename to maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultModelResolver.java diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java similarity index 100% rename from maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java rename to maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionRangeResolver.java diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java similarity index 100% rename from maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java rename to maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java similarity index 100% rename from maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java rename to maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadata.java diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java similarity index 100% rename from maven-aether-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java rename to maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/LocalSnapshotMetadataGenerator.java diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenAetherModule.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenAetherModule.java similarity index 96% rename from maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenAetherModule.java rename to maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenAetherModule.java index 1c9acd727..41e98aaea 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenAetherModule.java +++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenAetherModule.java @@ -38,6 +38,10 @@ import com.google.inject.Provides; import com.google.inject.name.Names; +/** + * @deprecated As of Maven Resolver 1.0.3, please use class {@link MavenResolverModule}. + */ +@Deprecated public final class MavenAetherModule extends AbstractModule { diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java similarity index 100% rename from maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java rename to maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenMetadata.java diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java similarity index 100% rename from maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java rename to maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenRepositorySystemUtils.java diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenResolverModule.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenResolverModule.java new file mode 100644 index 000000000..070b91c7a --- /dev/null +++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenResolverModule.java @@ -0,0 +1,70 @@ +package org.apache.maven.repository.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 java.util.Collections; +import java.util.HashSet; +import java.util.Set; +import javax.inject.Named; +import javax.inject.Singleton; +import com.google.inject.AbstractModule; +import com.google.inject.Provides; +import com.google.inject.name.Names; +import org.apache.maven.model.building.DefaultModelBuilderFactory; +import org.apache.maven.model.building.ModelBuilder; +import org.eclipse.aether.impl.ArtifactDescriptorReader; +import org.eclipse.aether.impl.MetadataGeneratorFactory; +import org.eclipse.aether.impl.VersionRangeResolver; +import org.eclipse.aether.impl.VersionResolver; +import org.eclipse.aether.impl.guice.AetherModule; + +public final class MavenResolverModule + extends AbstractModule +{ + + @Override + protected void configure() + { + install( new AetherModule() ); + bind( ArtifactDescriptorReader.class ).to( DefaultArtifactDescriptorReader.class ).in( Singleton.class ); + bind( VersionResolver.class ).to( DefaultVersionResolver.class ).in( Singleton.class ); + bind( VersionRangeResolver.class ).to( DefaultVersionRangeResolver.class ).in( Singleton.class ); + bind( MetadataGeneratorFactory.class ).annotatedWith( Names.named( "snapshot" ) ) + .to( SnapshotMetadataGeneratorFactory.class ).in( Singleton.class ); + + bind( MetadataGeneratorFactory.class ).annotatedWith( Names.named( "versions" ) ) + .to( VersionsMetadataGeneratorFactory.class ).in( Singleton.class ); + + bind( ModelBuilder.class ).toInstance( new DefaultModelBuilderFactory().newInstance() ); + } + + @Provides + @Singleton + Set provideMetadataGeneratorFactories( + @Named( "snapshot" ) MetadataGeneratorFactory snapshot, + @Named( "versions" ) MetadataGeneratorFactory versions ) + { + Set factories = new HashSet<>( 2 ); + factories.add( snapshot ); + factories.add( versions ); + return Collections.unmodifiableSet( factories ); + } + +} diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenSnapshotMetadata.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenSnapshotMetadata.java similarity index 100% rename from maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenSnapshotMetadata.java rename to maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenSnapshotMetadata.java diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenWorkspaceReader.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenWorkspaceReader.java similarity index 100% rename from maven-aether-provider/src/main/java/org/apache/maven/repository/internal/MavenWorkspaceReader.java rename to maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenWorkspaceReader.java diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RelocatedArtifact.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RelocatedArtifact.java similarity index 100% rename from maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RelocatedArtifact.java rename to maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RelocatedArtifact.java diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java similarity index 100% rename from maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java rename to maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java similarity index 100% rename from maven-aether-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java rename to maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/SnapshotMetadataGeneratorFactory.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/SnapshotMetadataGeneratorFactory.java similarity index 100% rename from maven-aether-provider/src/main/java/org/apache/maven/repository/internal/SnapshotMetadataGeneratorFactory.java rename to maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/SnapshotMetadataGeneratorFactory.java diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java similarity index 100% rename from maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java rename to maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadata.java diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java similarity index 100% rename from maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java rename to maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGeneratorFactory.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGeneratorFactory.java similarity index 100% rename from maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGeneratorFactory.java rename to maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGeneratorFactory.java diff --git a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/package-info.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/package-info.java similarity index 86% rename from maven-aether-provider/src/main/java/org/apache/maven/repository/internal/package-info.java rename to maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/package-info.java index 5582cf75f..7309c2b03 100644 --- a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/package-info.java +++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/package-info.java @@ -1,7 +1,7 @@ // CHECKSTYLE_OFF: RegexpHeader /** - * Aether extensions for utilizing the Maven POM and Maven repository - * metadata. + * Maven Resolver extensions for utilizing the Maven POM and Maven + * repository metadata. */ package org.apache.maven.repository.internal; @@ -22,4 +22,4 @@ * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. - */ \ No newline at end of file + */ diff --git a/maven-aether-provider/src/site/apt/index.apt b/maven-resolver-provider/src/site/apt/index.apt similarity index 89% rename from maven-aether-provider/src/site/apt/index.apt rename to maven-resolver-provider/src/site/apt/index.apt index 600ec417d..b50ea1dbf 100644 --- a/maven-aether-provider/src/site/apt/index.apt +++ b/maven-resolver-provider/src/site/apt/index.apt @@ -23,9 +23,9 @@ 2012-09-29 ----- -Maven Aether Provider +Maven Artifact Resolver Provider - Maven Aether Provider is an {{{http://www.eclipse.org/aether/}Aether}} extension to support + Maven Artifact Resolver Provider is a {{{/resolver/}Maven Artifact Resolver}} extension to support Maven POMs and local+remote repositories. Main component is <<>> diff --git a/maven-aether-provider/src/site/site.xml b/maven-resolver-provider/src/site/site.xml similarity index 100% rename from maven-aether-provider/src/site/site.xml rename to maven-resolver-provider/src/site/site.xml diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java similarity index 100% rename from maven-aether-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java rename to maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/AbstractRepositoryTestCase.java diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReaderTest.java b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReaderTest.java similarity index 100% rename from maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReaderTest.java rename to maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReaderTest.java diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionResolverTest.java b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionResolverTest.java similarity index 100% rename from maven-aether-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionResolverTest.java rename to maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/DefaultVersionResolverTest.java diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/MavenRepositorySystemUtilsTest.java b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/MavenRepositorySystemUtilsTest.java similarity index 100% rename from maven-aether-provider/src/test/java/org/apache/maven/repository/internal/MavenRepositorySystemUtilsTest.java rename to maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/MavenRepositorySystemUtilsTest.java diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataTest.java b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataTest.java similarity index 100% rename from maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataTest.java rename to maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataTest.java diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java similarity index 100% rename from maven-aether-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java rename to maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/RepositorySystemTest.java diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleRepositoryListener.java b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleRepositoryListener.java similarity index 100% rename from maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleRepositoryListener.java rename to maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleRepositoryListener.java diff --git a/maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleTransferListener.java b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleTransferListener.java similarity index 100% rename from maven-aether-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleTransferListener.java rename to maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/util/ConsoleTransferListener.java diff --git a/maven-aether-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5324/07.20.3-SNAPSHOT/maven-metadata.xml b/maven-resolver-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5324/07.20.3-SNAPSHOT/maven-metadata.xml similarity index 100% rename from maven-aether-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5324/07.20.3-SNAPSHOT/maven-metadata.xml rename to maven-resolver-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5324/07.20.3-SNAPSHOT/maven-metadata.xml diff --git a/maven-aether-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5459/0.4.0-SNAPSHOT/maven-metadata.xml b/maven-resolver-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5459/0.4.0-SNAPSHOT/maven-metadata.xml similarity index 100% rename from maven-aether-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5459/0.4.0-SNAPSHOT/maven-metadata.xml rename to maven-resolver-provider/src/test/resources/repo/org/apache/maven/its/dep-mng5459/0.4.0-SNAPSHOT/maven-metadata.xml diff --git a/maven-aether-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0-classifier.zip b/maven-resolver-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0-classifier.zip similarity index 100% rename from maven-aether-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0-classifier.zip rename to maven-resolver-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0-classifier.zip diff --git a/maven-aether-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.jar b/maven-resolver-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.jar similarity index 100% rename from maven-aether-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.jar rename to maven-resolver-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.jar diff --git a/maven-aether-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.pom b/maven-resolver-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.pom similarity index 100% rename from maven-aether-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.pom rename to maven-resolver-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.pom diff --git a/maven-aether-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.zip b/maven-resolver-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.zip similarity index 100% rename from maven-aether-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.zip rename to maven-resolver-provider/src/test/resources/repo/ut/simple/artifact/1.0/artifact-1.0.zip diff --git a/maven-aether-provider/src/test/resources/repo/ut/simple/artifact/maven-metadata.xml b/maven-resolver-provider/src/test/resources/repo/ut/simple/artifact/maven-metadata.xml similarity index 100% rename from maven-aether-provider/src/test/resources/repo/ut/simple/artifact/maven-metadata.xml rename to maven-resolver-provider/src/test/resources/repo/ut/simple/artifact/maven-metadata.xml diff --git a/maven-aether-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0-sources.jar b/maven-resolver-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0-sources.jar similarity index 100% rename from maven-aether-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0-sources.jar rename to maven-resolver-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0-sources.jar diff --git a/maven-aether-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0.jar b/maven-resolver-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0.jar similarity index 100% rename from maven-aether-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0.jar rename to maven-resolver-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0.jar diff --git a/maven-aether-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0.pom b/maven-resolver-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0.pom similarity index 100% rename from maven-aether-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0.pom rename to maven-resolver-provider/src/test/resources/repo/ut/simple/dependency/1.0/dependency-1.0.pom diff --git a/maven-aether-provider/src/test/resources/repo/ut/simple/dependency/maven-metadata.xml b/maven-resolver-provider/src/test/resources/repo/ut/simple/dependency/maven-metadata.xml similarity index 100% rename from maven-aether-provider/src/test/resources/repo/ut/simple/dependency/maven-metadata.xml rename to maven-resolver-provider/src/test/resources/repo/ut/simple/dependency/maven-metadata.xml diff --git a/maven-aether-provider/src/test/resources/repo/ut/simple/parent/1.0/parent-1.0.pom b/maven-resolver-provider/src/test/resources/repo/ut/simple/parent/1.0/parent-1.0.pom similarity index 100% rename from maven-aether-provider/src/test/resources/repo/ut/simple/parent/1.0/parent-1.0.pom rename to maven-resolver-provider/src/test/resources/repo/ut/simple/parent/1.0/parent-1.0.pom diff --git a/maven-aether-provider/src/test/resources/repo/ut/simple/parent/maven-metadata.xml b/maven-resolver-provider/src/test/resources/repo/ut/simple/parent/maven-metadata.xml similarity index 100% rename from maven-aether-provider/src/test/resources/repo/ut/simple/parent/maven-metadata.xml rename to maven-resolver-provider/src/test/resources/repo/ut/simple/parent/maven-metadata.xml From 7cf0526ba740c8ab95fe1ac8be306f553cb14663 Mon Sep 17 00:00:00 2001 From: Josh Soref Date: Mon, 23 Jan 2017 04:56:27 +0000 Subject: [PATCH 222/224] [MNG-6146] Several small stylistic and spelling improvements to code and documentation Spelling fixes: * system * tokenizer * toolchain * trailing * transitive * unsupported * version * artifact * attachment * codehaus * colleagues * comparison * concurrency * configure * creation * dependency * descriptor * downstream * efficient * e.g. * elements * encountered * encounters * environments * executed * explicitly * happens * hierarchical * hierarchy * ignore * implemented * implementers * independence * indicates * inheritance * inherited * inherits * install * interface * javascript * laziness * management * maven * metadata * mgmt * minimalist * nonexistent * objects * overridden * print * project * properties * recessive * referring * repository * representation * retrieval * retrieve * rigorous * should * spontaneously * subsequent Literal fixes: * use static final values Style fixes: * use the proper term for char U+002D (-) hyphen(-minus) instead of dash This closes #100 --- .../internal/ArtifactDescriptorReaderDelegate.java | 12 ++++++------ .../internal/DefaultArtifactDescriptorReader.java | 6 +++--- .../repository/internal/RepositorySystemTest.java | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorReaderDelegate.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorReaderDelegate.java index 2395b36fb..53c04752f 100644 --- a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorReaderDelegate.java +++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/ArtifactDescriptorReaderDelegate.java @@ -65,10 +65,10 @@ public void populateResult( RepositorySystemSession session, ArtifactDescriptorR result.addDependency( convert( dependency, stereotypes ) ); } - DependencyManagement mngt = model.getDependencyManagement(); - if ( mngt != null ) + DependencyManagement mgmt = model.getDependencyManagement(); + if ( mgmt != null ) { - for ( org.apache.maven.model.Dependency dependency : mngt.getDependencies() ) + for ( org.apache.maven.model.Dependency dependency : mgmt.getDependencies() ) { result.addManagedDependency( convert( dependency, stereotypes ) ); } @@ -137,10 +137,10 @@ private Exclusion convert( org.apache.maven.model.Exclusion exclusion ) private void setArtifactProperties( ArtifactDescriptorResult result, Model model ) { String downloadUrl = null; - DistributionManagement distMngt = model.getDistributionManagement(); - if ( distMngt != null ) + DistributionManagement distMgmt = model.getDistributionManagement(); + if ( distMgmt != null ) { - downloadUrl = distMngt.getDownloadUrl(); + downloadUrl = distMgmt.getDownloadUrl(); } if ( downloadUrl != null && downloadUrl.length() > 0 ) { diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java index 0f313301d..1df1c12a0 100644 --- a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java +++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java @@ -372,10 +372,10 @@ private Properties toProperties( Map dominant, Map Date: Wed, 8 Feb 2017 23:04:57 -0500 Subject: [PATCH 223/224] Add some javadoc comments to silence checkstyle --- .../repository/internal/MavenResolverModule.java | 14 +++++++++----- .../repository/internal/MavenWorkspaceReader.java | 8 +++++++- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenResolverModule.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenResolverModule.java index 070b91c7a..bdfd21282 100644 --- a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenResolverModule.java +++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenResolverModule.java @@ -19,11 +19,6 @@ * under the License. */ -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; -import javax.inject.Named; -import javax.inject.Singleton; import com.google.inject.AbstractModule; import com.google.inject.Provides; import com.google.inject.name.Names; @@ -35,6 +30,15 @@ import org.eclipse.aether.impl.VersionResolver; import org.eclipse.aether.impl.guice.AetherModule; +import javax.inject.Named; +import javax.inject.Singleton; +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; + +/** + * A guice Module for injecting suitable providers for a the Maven Artifact Resolver + */ public final class MavenResolverModule extends AbstractModule { diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenWorkspaceReader.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenWorkspaceReader.java index 270cf588a..74fc676af 100644 --- a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenWorkspaceReader.java +++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenWorkspaceReader.java @@ -23,10 +23,16 @@ import org.eclipse.aether.artifact.Artifact; import org.eclipse.aether.repository.WorkspaceReader; +/** + * Manages a repository backed by the IDE workspace, a build session or a similar ad-hoc collection of artifacts. + * + * @see org.eclipse.aether.RepositorySystemSession#getWorkspaceReader() + */ + public interface MavenWorkspaceReader extends WorkspaceReader { Model findModel( Artifact artifact ); -} \ No newline at end of file +} From cd895838f1afb3d71d68e3e5a9d1f86689049335 Mon Sep 17 00:00:00 2001 From: Simon Spero Date: Wed, 8 Feb 2017 23:16:34 -0500 Subject: [PATCH 224/224] Change dependency versions (mostly plexus related). Make maven-resolver-provider a sub-project of maven-resolver, instead of the main maven project maven-resolver-provider builds against maven-3.3.9, which might make it easier to create a first (or third) release version, with version numbers in the maven-resolver group, rather than the maven group. --- maven-resolver-provider/pom.xml | 73 ++++++++++++++++++++++---- maven-resolver-transport-wagon/pom.xml | 6 +-- pom.xml | 25 +++++++-- 3 files changed, 89 insertions(+), 15 deletions(-) diff --git a/maven-resolver-provider/pom.xml b/maven-resolver-provider/pom.xml index 7d71e337b..ece5e5132 100644 --- a/maven-resolver-provider/pom.xml +++ b/maven-resolver-provider/pom.xml @@ -23,16 +23,22 @@ under the License. 4.0.0 - org.apache.maven - maven - 3.5.0-SNAPSHOT + org.apache.maven.resolver + maven-resolver + 1.0.4-SNAPSHOT + .. - + maven-resolver-provider Maven Artifact Resolver Provider Extensions to Maven Resolver for utilizing Maven POM and repository metadata. + + 7 + 1.7 + 1.7 + org.apache.maven @@ -65,48 +71,76 @@ under the License. org.codehaus.plexus plexus-component-annotations + 1.5.5 org.codehaus.plexus plexus-utils + 3.0.22 + + + org.eclipse.sisu + org.eclipse.sisu.inject + 0.3.2 - com.google.inject - guice + org.eclipse.sisu + org.eclipse.sisu.plexus + 0.3.2 + + + javax.enterprise + cdi-api + + + + + org.sonatype.sisu + sisu-guice + 3.2.2 no_aop - true aopalliance aopalliance + + com.google.code.findbugs + jsr305 + org.apache.commons commons-lang3 + 3.4 org.apache.maven.resolver maven-resolver-connector-basic + ${parent.version} test org.apache.maven.resolver maven-resolver-transport-wagon + ${parent.version} test org.apache.maven.wagon wagon-file + 2.10 test - org.eclipse.sisu - org.eclipse.sisu.plexus + junit + junit + 4.11 test + org.mockito mockito-core @@ -121,6 +155,27 @@ under the License. org.codehaus.plexus plexus-component-metadata + + maven-enforcer-plugin + + + enforce-bytecode-version + + enforce + + + + + 1.8 + + + true + + + + + + diff --git a/maven-resolver-transport-wagon/pom.xml b/maven-resolver-transport-wagon/pom.xml index dae9129e0..6c850677c 100644 --- a/maven-resolver-transport-wagon/pom.xml +++ b/maven-resolver-transport-wagon/pom.xml @@ -36,7 +36,7 @@ - 1.0 + 2.10 @@ -72,13 +72,13 @@ org.codehaus.plexus plexus-classworlds - 2.4 + 2.5.2 true org.codehaus.plexus plexus-utils - 2.1 + 3.0.22 true diff --git a/pom.xml b/pom.xml index 824896a92..259e131da 100644 --- a/pom.xml +++ b/pom.xml @@ -62,6 +62,7 @@ + 3.3.9 true resolver-archives/resolver-LATEST UnusedImports,LineLength,InnerAssignment,MagicNumber,AvoidNestedBlocks,ParameterNumber,MethodLength,MemberName @@ -79,10 +80,28 @@ maven-resolver-transport-file maven-resolver-transport-http maven-resolver-transport-wagon + maven-resolver-provider + + + org.apache.maven + maven-model + ${version.of.maven} + + + org.apache.maven + maven-model-builder + ${version.of.maven} + + + org.apache.maven + maven-repository-metadata + ${version.of.maven} + + org.apache.maven.resolver maven-resolver-api @@ -150,12 +169,12 @@ org.eclipse.sisu org.eclipse.sisu.inject - 0.1.1 + 0.3.2 org.eclipse.sisu org.eclipse.sisu.plexus - 0.1.1 + 0.3.2 javax.enterprise @@ -166,7 +185,7 @@ org.sonatype.sisu sisu-guice - 3.1.6 + 3.2.2 no_aop