extracted ArtifactDescriptorReaderDelegate Signed-off-by: Igor Fedorenko <[email protected]>
Project: http://git-wip-us.apache.org/repos/asf/maven/repo Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/1e95aa15 Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/1e95aa15 Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/1e95aa15 Branch: refs/heads/master Commit: 1e95aa1524de7f7b5b24b82e47f7211dd3b33460 Parents: c15226f Author: Igor Fedorenko <[email protected]> Authored: Tue Nov 25 15:38:35 2014 -0500 Committer: Igor Fedorenko <[email protected]> Committed: Tue Nov 25 19:11:00 2014 -0500 ---------------------------------------------------------------------- .../ArtifactDescriptorReaderDelegate.java | 153 +++++++++++++++++++ .../DefaultArtifactDescriptorReader.java | 116 +------------- 2 files changed, 161 insertions(+), 108 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven/blob/1e95aa15/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 0000000..29749ad --- /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<String, Object> properties = new LinkedHashMap<String, Object>(); + + Prerequisites prerequisites = model.getPrerequisites(); + if ( prerequisites != null ) + { + properties.put( "prerequisites.maven", prerequisites.getMaven() ); + } + + List<License> 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<String, String> 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<Exclusion> exclusions = new ArrayList<Exclusion>( 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<String, String> props = new HashMap<String, String>( artifact.getProperties() ); + props.put( ArtifactProperties.DOWNLOAD_URL, downloadUrl ); + result.setArtifact( artifact.setProperties( props ) ); + } + } +} http://git-wip-us.apache.org/repos/asf/maven/blob/1e95aa15/maven-aether-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/DefaultArtifactDescriptorReader.java b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultArtifactDescriptorReader.java index 7caf863..0fea15a 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 @@ package org.apache.maven.repository.internal; * 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.RepositoryException; 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 class DefaultArtifactDescriptorReader 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<String, Object> 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<String, Object> properties = new LinkedHashMap<String, Object>(); - - Prerequisites prerequisites = model.getPrerequisites(); - if ( prerequisites != null ) - { - properties.put( "prerequisites.maven", prerequisites.getMaven() ); - } - - List<License> 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 @@ public class DefaultArtifactDescriptorReader 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<String, String> props = new HashMap<String, String>( 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<String, String> 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<Exclusion> exclusions = new ArrayList<Exclusion>( 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 ) {
