diff --git a/maven-compat/src/main/java/org/apache/maven/artifact/DefaultArtifact.java b/maven-compat/src/main/java/org/apache/maven/artifact/DefaultArtifact.java index ff2184f57b..92bb74fd44 100644 --- a/maven-compat/src/main/java/org/apache/maven/artifact/DefaultArtifact.java +++ b/maven-compat/src/main/java/org/apache/maven/artifact/DefaultArtifact.java @@ -78,14 +78,14 @@ public class DefaultArtifact private List availableVersions; private Map metadataMap; - + private boolean optional; public DefaultArtifact( String groupId, String artifactId, String version, String scope, String type, String classifier, ArtifactHandler artifactHandler ) { this( groupId, artifactId, VersionRange.createFromVersion( version ), scope, type, classifier, artifactHandler, false ); } - + public DefaultArtifact( String groupId, String artifactId, VersionRange versionRange, String scope, String type, String classifier, ArtifactHandler artifactHandler ) { this( groupId, artifactId, versionRange, scope, type, classifier, artifactHandler, false ); @@ -263,7 +263,8 @@ public class DefaultArtifact public Collection getMetadataList() { - if (metadataMap == null) { + if ( metadataMap == null ) + { return Collections.emptyList(); } @@ -385,7 +386,7 @@ public class DefaultArtifact protected void setBaseVersionInternal( String baseVersion ) { Matcher m = VERSION_FILE_PATTERN.matcher( baseVersion ); - + if ( m.matches() ) { this.baseVersion = m.group( 1 ) + "-" + SNAPSHOT_VERSION; @@ -528,7 +529,8 @@ public class DefaultArtifact public boolean isSnapshot() { - return getBaseVersion() != null && (getBaseVersion().endsWith(SNAPSHOT_VERSION) || getBaseVersion().equals(LATEST_VERSION)); + return getBaseVersion() != null + && ( getBaseVersion().endsWith( SNAPSHOT_VERSION ) || getBaseVersion().equals( LATEST_VERSION ) ); } public void setResolved( boolean resolved ) diff --git a/maven-compat/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryPolicy.java b/maven-compat/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryPolicy.java index b88270effb..64ef97f092 100644 --- a/maven-compat/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryPolicy.java +++ b/maven-compat/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryPolicy.java @@ -82,16 +82,18 @@ public class ArtifactRepositoryPolicy public void setUpdatePolicy( String updatePolicy ) { - if(updatePolicy != null) { - this.updatePolicy = updatePolicy; + if ( updatePolicy != null ) + { + this.updatePolicy = updatePolicy; } } public void setChecksumPolicy( String checksumPolicy ) { - if(checksumPolicy != null) { - this.checksumPolicy = checksumPolicy; - } + if ( checksumPolicy != null ) + { + this.checksumPolicy = checksumPolicy; + } } public boolean isEnabled() @@ -135,7 +137,7 @@ public class ArtifactRepositoryPolicy else if ( updatePolicy.startsWith( UPDATE_POLICY_INTERVAL ) ) { String s = updatePolicy.substring( UPDATE_POLICY_INTERVAL.length() + 1 ); - int minutes = Integer.valueOf(s); + int minutes = Integer.valueOf( s ); Calendar cal = Calendar.getInstance(); cal.add( Calendar.MINUTE, -minutes ); if ( cal.getTime().after( lastModified ) ) diff --git a/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DebugResolutionListener.java b/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DebugResolutionListener.java index f9972fe7e7..c2238efc21 100644 --- a/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DebugResolutionListener.java +++ b/maven-compat/src/main/java/org/apache/maven/artifact/resolver/DebugResolutionListener.java @@ -86,15 +86,15 @@ public class DebugResolutionListener String ignoredScope ) { logger.debug( - indent + artifact + " (not setting artifactScope to: " + ignoredScope + "; local artifactScope " + artifact.getScope() + - " wins)" ); + indent + artifact + " (not setting artifactScope to: " + ignoredScope + "; local artifactScope " + artifact.getScope() + + " wins)" ); // TODO: better way than static? this might hide messages in a reactor if ( !ignoredArtifacts.contains( artifact ) ) { - logger.warn( "\n\tArtifact " + artifact + " retains local artifactScope '" + artifact.getScope() + - "' overriding broader artifactScope '" + ignoredScope + "'\n" + - "\tgiven by a dependency. If this is not intended, modify or remove the local artifactScope.\n" ); + logger.warn( "\n\tArtifact " + artifact + " retains local artifactScope '" + artifact.getScope() + + "' overriding broader artifactScope '" + ignoredScope + "'\n" + + "\tgiven by a dependency. If this is not intended, modify or remove the local artifactScope.\n" ); ignoredArtifacts.add( artifact ); } } @@ -107,16 +107,16 @@ public class DebugResolutionListener public void selectVersionFromRange( Artifact artifact ) { - logger.debug( indent + artifact + " (setting version to: " + artifact.getVersion() + " from range: " + - artifact.getVersionRange() + ")" ); + logger.debug( indent + artifact + " (setting version to: " + artifact.getVersion() + " from range: " + + artifact.getVersionRange() + ")" ); } public void restrictRange( Artifact artifact, Artifact replacement, VersionRange newRange ) { - logger.debug( indent + artifact + " (range restricted from: " + artifact.getVersionRange() + " and: " + - replacement.getVersionRange() + " to: " + newRange + " )" ); + logger.debug( indent + artifact + " (range restricted from: " + artifact.getVersionRange() + " and: " + + replacement.getVersionRange() + " to: " + newRange + " )" ); } /** diff --git a/maven-compat/src/main/java/org/apache/maven/artifact/resolver/MultipleArtifactsNotFoundException.java b/maven-compat/src/main/java/org/apache/maven/artifact/resolver/MultipleArtifactsNotFoundException.java index eb2fb10f0c..0f13db1571 100644 --- a/maven-compat/src/main/java/org/apache/maven/artifact/resolver/MultipleArtifactsNotFoundException.java +++ b/maven-compat/src/main/java/org/apache/maven/artifact/resolver/MultipleArtifactsNotFoundException.java @@ -90,13 +90,13 @@ public class MultipleArtifactsNotFoundException int counter = 0; - for (Artifact artifact : artifacts) { - String message = (++counter) + ") " + artifact.getId(); + for ( Artifact artifact : artifacts ) + { + String message = ( ++counter ) + ") " + artifact.getId(); - buffer.append(constructMissingArtifactMessage(message, " ", artifact.getGroupId(), artifact - .getArtifactId(), artifact.getVersion(), artifact.getType(), artifact.getClassifier(), - artifact.getDownloadUrl(), artifact - .getDependencyTrail())); + buffer.append( constructMissingArtifactMessage( message, " ", artifact.getGroupId(), + artifact.getArtifactId(), artifact.getVersion(), artifact.getType(), artifact.getClassifier(), + artifact.getDownloadUrl(), artifact.getDependencyTrail() ) ); } buffer.append( "----------\n" ); diff --git a/maven-compat/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java b/maven-compat/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java index c2853f7dc9..d469a70624 100644 --- a/maven-compat/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java +++ b/maven-compat/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java @@ -279,8 +279,8 @@ public class VersionRange version = recommendedVersion; found = true; } - else if ( version == null && restriction.getRecommendedVersion() != null && - r.containsVersion( restriction.getRecommendedVersion() ) ) + else if ( version == null && restriction.getRecommendedVersion() != null + && r.containsVersion( restriction.getRecommendedVersion() ) ) { // use this if we can, but prefer the original if possible version = restriction.getRecommendedVersion(); @@ -320,11 +320,11 @@ public class VersionRange boolean done = false; while ( !done ) { - if ( res1.getLowerBound() == null || res2.getUpperBound() == null || - res1.getLowerBound().compareTo( res2.getUpperBound() ) <= 0 ) + if ( res1.getLowerBound() == null || res2.getUpperBound() == null + || res1.getLowerBound().compareTo( res2.getUpperBound() ) <= 0 ) { - if ( res1.getUpperBound() == null || res2.getLowerBound() == null || - res1.getUpperBound().compareTo( res2.getLowerBound() ) >= 0 ) + if ( res1.getUpperBound() == null || res2.getLowerBound() == null + || res1.getUpperBound().compareTo( res2.getLowerBound() ) >= 0 ) { ArtifactVersion lower; ArtifactVersion upper; @@ -525,10 +525,13 @@ public class VersionRange // TODO: could be more efficient by sorting the list and then moving along the restrictions in order? ArtifactVersion matched = null; - for (ArtifactVersion version : versions) { - if (containsVersion(version)) { + for ( ArtifactVersion version : versions ) + { + if ( containsVersion( version ) ) + { // valid - check if it is greater than the currently matched version - if (matched == null || version.compareTo(matched) > 0) { + if ( matched == null || version.compareTo( matched ) > 0 ) + { matched = version; } } @@ -538,8 +541,10 @@ public class VersionRange public boolean containsVersion( ArtifactVersion version ) { - for (Restriction restriction : restrictions) { - if (restriction.containsVersion(version)) { + for ( Restriction restriction : restrictions ) + { + if ( restriction.containsVersion( version ) ) + { return true; } } @@ -553,21 +558,22 @@ public class VersionRange public boolean equals( Object obj ) { - if (this == obj){ + if ( this == obj ) + { return true; } - if (!(obj instanceof VersionRange )) + if ( !( obj instanceof VersionRange ) ) { return false; } VersionRange other = (VersionRange) obj; - + boolean equals = - recommendedVersion == other.recommendedVersion || - ( ( recommendedVersion != null ) && recommendedVersion.equals( other.recommendedVersion ) ); + recommendedVersion == other.recommendedVersion + || ( ( recommendedVersion != null ) && recommendedVersion.equals( other.recommendedVersion ) ); equals &= - restrictions == other.restrictions || - ( ( restrictions != null ) && restrictions.equals( other.restrictions ) ); + restrictions == other.restrictions + || ( ( restrictions != null ) && restrictions.equals( other.restrictions ) ); return equals; } diff --git a/maven-compat/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java b/maven-compat/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java index a2bc6dec32..8d8025c196 100644 --- a/maven-compat/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java +++ b/maven-compat/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java @@ -28,7 +28,6 @@ import org.apache.maven.model.profile.ProfileSelector; import org.apache.maven.profiles.activation.ProfileActivationException; import org.codehaus.plexus.MutablePlexusContainer; import org.codehaus.plexus.PlexusContainer; -import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.component.repository.exception.ComponentLookupException; import org.codehaus.plexus.logging.Logger; @@ -44,7 +43,7 @@ import java.util.Properties; public class DefaultProfileManager implements ProfileManager { - + @Requirement private Logger logger; @@ -67,7 +66,7 @@ public class DefaultProfileManager */ public DefaultProfileManager( PlexusContainer container ) { - this( container, null); + this( container, null ); } /** @@ -89,7 +88,8 @@ public class DefaultProfileManager this.requestProperties = props; } - public Properties getRequestProperties() { + public Properties getRequestProperties() + { return requestProperties; } @@ -108,8 +108,8 @@ public class DefaultProfileManager Profile existing = (Profile) profilesById.get( profileId ); if ( existing != null ) { - logger.warn( "Overriding profile: \'" + profileId + "\' (source: " + existing.getSource() + - ") with new instance from source: " + profile.getSource() ); + logger.warn( "Overriding profile: \'" + profileId + "\' (source: " + existing.getSource() + + ") with new instance from source: " + profile.getSource() ); } profilesById.put( profile.getId(), profile ); diff --git a/maven-compat/src/main/java/org/apache/maven/project/ModelUtils.java b/maven-compat/src/main/java/org/apache/maven/project/ModelUtils.java index c28442eba3..a79b957f47 100644 --- a/maven-compat/src/main/java/org/apache/maven/project/ModelUtils.java +++ b/maven-compat/src/main/java/org/apache/maven/project/ModelUtils.java @@ -97,8 +97,8 @@ public final class ModelUtils // 1. we're not processing the plugins in an inheritance-based merge // 2. the parent's flag is not set // 3. the parent's flag is set to true - if ( !handleAsInheritance || ( parentInherited == null ) || - Boolean.valueOf( parentInherited ).booleanValue() ) + if ( !handleAsInheritance || ( parentInherited == null ) + || Boolean.valueOf( parentInherited ).booleanValue() ) { Plugin childPlugin = (Plugin) childPlugins.get( parentPlugin.getKey() ); diff --git a/maven-compat/src/main/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssembler.java b/maven-compat/src/main/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssembler.java index 8452bc429b..a1ab80a57c 100644 --- a/maven-compat/src/main/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssembler.java +++ b/maven-compat/src/main/java/org/apache/maven/project/inheritance/DefaultModelInheritanceAssembler.java @@ -155,8 +155,8 @@ public class DefaultModelInheritanceAssembler appendPath( parentScm.getConnection(), child.getArtifactId(), childPathAdjustment, appendPaths ) ); } - if ( StringUtils.isEmpty( childScm.getDeveloperConnection() ) && - !StringUtils.isEmpty( parentScm.getDeveloperConnection() ) ) + if ( StringUtils.isEmpty( childScm.getDeveloperConnection() ) + && !StringUtils.isEmpty( parentScm.getDeveloperConnection() ) ) { childScm .setDeveloperConnection( appendPath( parentScm.getDeveloperConnection(), child.getArtifactId(), @@ -388,8 +388,8 @@ public class DefaultModelInheritanceAssembler String parentInherited = parentPlugin.getInherited(); - if ( !handleAsInheritance || ( parentInherited == null ) || - Boolean.valueOf( parentInherited ).booleanValue() ) + if ( !handleAsInheritance || ( parentInherited == null ) + || Boolean.valueOf( parentInherited ).booleanValue() ) { ReportPlugin assembledPlugin = parentPlugin; @@ -545,9 +545,8 @@ public class DefaultModelInheritanceAssembler if ( deps != null ) { - for ( Iterator it = deps.iterator(); it.hasNext(); ) + for ( Dependency dependency : deps ) { - Dependency dependency = it.next(); depsMap.put( dependency.getManagementKey(), dependency ); } } @@ -556,9 +555,8 @@ public class DefaultModelInheritanceAssembler if ( deps != null ) { - for ( Iterator it = deps.iterator(); it.hasNext(); ) + for ( Dependency dependency : deps ) { - Dependency dependency = it.next(); depsMap.put( dependency.getManagementKey(), dependency ); } } @@ -753,9 +751,8 @@ public class DefaultModelInheritanceAssembler private static void mergeExtensionLists( Build childBuild, Build parentBuild ) { - for ( Iterator i = parentBuild.getExtensions().iterator(); i.hasNext(); ) + for ( Extension e : parentBuild.getExtensions() ) { - Extension e = (Extension) i.next(); if ( !childBuild.getExtensions().contains( e ) ) { childBuild.addExtension( e ); diff --git a/maven-compat/src/main/java/org/apache/maven/repository/legacy/DefaultUpdateCheckManager.java b/maven-compat/src/main/java/org/apache/maven/repository/legacy/DefaultUpdateCheckManager.java index 77451f7eea..20a2b085a1 100644 --- a/maven-compat/src/main/java/org/apache/maven/repository/legacy/DefaultUpdateCheckManager.java +++ b/maven-compat/src/main/java/org/apache/maven/repository/legacy/DefaultUpdateCheckManager.java @@ -73,7 +73,7 @@ public class DefaultUpdateCheckManager // we can safely assume that we're calculating based on the snapshot policy here if we've made it past the // release-artifact short circuit above. ArtifactRepositoryPolicy policy = repository.getSnapshots(); - + return isUpdateRequired( artifact, repository, policy ); } @@ -194,8 +194,8 @@ public class DefaultUpdateCheckManager { if ( !touchfile.getParentFile().exists() && !touchfile.getParentFile().mkdirs() ) { - getLogger().debug( "Failed to create directory: " + touchfile.getParent() + - " for tracking artifact metadata resolution." ); + getLogger().debug( "Failed to create directory: " + touchfile.getParent() + + " for tracking artifact metadata resolution." ); return; } @@ -237,8 +237,8 @@ public class DefaultUpdateCheckManager } catch ( IOException e ) { - getLogger().debug( "Failed to record lastUpdated information for resolution.\nFile: " + - touchfile.toString() + "; key: " + key, e ); + getLogger().debug( "Failed to record lastUpdated information for resolution.\nFile: " + + touchfile.toString() + "; key: " + key, e ); } finally { @@ -250,8 +250,8 @@ public class DefaultUpdateCheckManager } catch ( IOException e ) { - getLogger().debug( "Error releasing exclusive lock for resolution tracking file: " + - touchfile, e ); + getLogger().debug( "Error releasing exclusive lock for resolution tracking file: " + + touchfile, e ); } } @@ -263,8 +263,8 @@ public class DefaultUpdateCheckManager } catch ( IOException e ) { - getLogger().debug( "Error closing FileChannel for resolution tracking file: " + - touchfile, e ); + getLogger().debug( "Error closing FileChannel for resolution tracking file: " + + touchfile, e ); } } } @@ -314,8 +314,8 @@ public class DefaultUpdateCheckManager } catch ( IOException e ) { - getLogger().debug( "Failed to read lastUpdated information.\nFile: " + - touchfile.toString() + "; key: " + key, e ); + getLogger().debug( "Failed to read lastUpdated information.\nFile: " + + touchfile.toString() + "; key: " + key, e ); } finally { @@ -327,8 +327,8 @@ public class DefaultUpdateCheckManager } catch ( IOException e ) { - getLogger().debug( "Error releasing shared lock for resolution tracking file: " + - touchfile, e ); + getLogger().debug( "Error releasing shared lock for resolution tracking file: " + + touchfile, e ); } } @@ -340,8 +340,8 @@ public class DefaultUpdateCheckManager } catch ( IOException e ) { - getLogger().debug( "Error closing FileChannel for resolution tracking file: " + - touchfile, e ); + getLogger().debug( "Error closing FileChannel for resolution tracking file: " + + touchfile, e ); } } } diff --git a/maven-compat/src/main/java/org/apache/maven/repository/legacy/UpdateCheckManager.java b/maven-compat/src/main/java/org/apache/maven/repository/legacy/UpdateCheckManager.java index b21aebf9b5..b128a7b550 100644 --- a/maven-compat/src/main/java/org/apache/maven/repository/legacy/UpdateCheckManager.java +++ b/maven-compat/src/main/java/org/apache/maven/repository/legacy/UpdateCheckManager.java @@ -25,17 +25,18 @@ import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.repository.metadata.RepositoryMetadata; -public interface UpdateCheckManager { +public interface UpdateCheckManager +{ - String ROLE = UpdateCheckManager.class.getName(); + String ROLE = UpdateCheckManager.class.getName(); - boolean isUpdateRequired( Artifact artifact, ArtifactRepository repository ); + boolean isUpdateRequired( Artifact artifact, ArtifactRepository repository ); - void touch( Artifact artifact, ArtifactRepository repository ); + void touch( Artifact artifact, ArtifactRepository repository ); boolean isUpdateRequired( RepositoryMetadata metadata, ArtifactRepository repository, File file ); - void touch( RepositoryMetadata metadata, ArtifactRepository repository, File file ); + void touch( RepositoryMetadata metadata, ArtifactRepository repository, File file ); boolean isPomUpdateRequired( Artifact artifact, ArtifactRepository repository ); diff --git a/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/transform/DefaultArtifactTransformationManager.java b/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/transform/DefaultArtifactTransformationManager.java index 0847a6479e..ed9fa0ebe4 100644 --- a/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/transform/DefaultArtifactTransformationManager.java +++ b/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/transform/DefaultArtifactTransformationManager.java @@ -55,7 +55,8 @@ public class DefaultArtifactTransformationManager ArtifactRepository localRepository ) throws ArtifactResolutionException, ArtifactNotFoundException { - for (ArtifactTransformation transform : artifactTransformations) { + for ( ArtifactTransformation transform : artifactTransformations ) + { transform.transformForResolve( artifact, remoteRepositories, localRepository ); } } @@ -64,7 +65,8 @@ public class DefaultArtifactTransformationManager ArtifactRepository localRepository ) throws ArtifactInstallationException { - for (ArtifactTransformation transform : artifactTransformations) { + for ( ArtifactTransformation transform : artifactTransformations ) + { transform.transformForInstall( artifact, localRepository ); } } @@ -74,7 +76,8 @@ public class DefaultArtifactTransformationManager ArtifactRepository localRepository ) throws ArtifactDeploymentException { - for (ArtifactTransformation transform : artifactTransformations) { + for ( ArtifactTransformation transform : artifactTransformations ) + { transform.transformForDeployment( artifact, remoteRepository, localRepository ); } } diff --git a/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/transform/SnapshotTransformation.java b/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/transform/SnapshotTransformation.java index 5b323e43f1..a9e2c58ab2 100644 --- a/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/transform/SnapshotTransformation.java +++ b/maven-compat/src/main/java/org/apache/maven/repository/legacy/resolver/transform/SnapshotTransformation.java @@ -46,7 +46,7 @@ import org.codehaus.plexus.util.StringUtils; * @author Michal Maczka * @version $Id$ */ -@Component(role=ArtifactTransformation.class, hint="snapshot") +@Component(role=ArtifactTransformation.class, hint="snapshot") public class SnapshotTransformation extends AbstractVersionTransformation { @@ -105,7 +105,7 @@ public class SnapshotTransformation if ( artifact.isSnapshot() ) { Snapshot snapshot = new Snapshot(); - + snapshot.setTimestamp( getDeploymentTimestamp() ); // we update the build number anyway so that it doesn't get lost. It requires the timestamp to take effect @@ -117,8 +117,8 @@ public class SnapshotTransformation } catch ( RepositoryMetadataResolutionException e ) { - throw new ArtifactDeploymentException( "Error retrieving previous build number for artifact '" + - artifact.getDependencyConflictId() + "': " + e.getMessage(), e ); + throw new ArtifactDeploymentException( "Error retrieving previous build number for artifact '" + + artifact.getDependencyConflictId() + "': " + e.getMessage(), e ); } RepositoryMetadata metadata = new SnapshotArtifactRepositoryMetadata( artifact, snapshot ); diff --git a/maven-compat/src/main/java/org/apache/maven/repository/metadata/ClasspathContainer.java b/maven-compat/src/main/java/org/apache/maven/repository/metadata/ClasspathContainer.java index 9618fed564..927506e39b 100644 --- a/maven-compat/src/main/java/org/apache/maven/repository/metadata/ClasspathContainer.java +++ b/maven-compat/src/main/java/org/apache/maven/repository/metadata/ClasspathContainer.java @@ -1,5 +1,24 @@ package org.apache.maven.repository.metadata; +/* + * 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.Iterator; import java.util.List; @@ -8,7 +27,7 @@ import org.apache.maven.artifact.ArtifactScopeEnum; /** * classpath container that is aware of the classpath scope - * + * * @author Oleg Gusakov * */ @@ -16,97 +35,111 @@ public class ClasspathContainer implements Iterable { private List classpath; - private ArtifactScopeEnum scope; - - //------------------------------------------------------------------------------------------- - public ClasspathContainer(ArtifactScopeEnum scope) - { - this.scope = ArtifactScopeEnum.checkScope(scope); - } - //------------------------------------------------------------------------------------------- - public ClasspathContainer( - List classpath - , ArtifactScopeEnum scope - ) - { - this(scope); - this.classpath = classpath; - } - //------------------------------------------------------------------------------------------- - public Iterator iterator() - { - return classpath == null ? null : classpath.iterator() ; - } - //------------------------------------------------------------------------------------------- - public ClasspathContainer add( ArtifactMetadata md ) - { - if( classpath == null ) - classpath = new ArrayList(16); - - classpath.add(md); - - return this; - } - //------------------------------------------------------------------------------------------- - public List getClasspath() - { - return classpath; - } - //------------------------------------------------------------------------------------------- - public MetadataTreeNode getClasspathAsTree() - throws MetadataResolutionException - { - if( classpath == null || classpath.size() < 1 ) - return null; - - MetadataTreeNode tree = null; - MetadataTreeNode parent = null; - MetadataTreeNode node = null; - for( ArtifactMetadata md : classpath ) { - node = new MetadataTreeNode( md, parent, md.isResolved(), md.getArtifactScope() ); - if( tree == null ) { - tree = node; - } - - if( parent != null ) { - parent.setNChildren(1); - parent.addChild(0, node); - } - - parent = node; - - } - return tree; - } + private ArtifactScopeEnum scope; - public void setClasspath(List classpath) - { - this.classpath = classpath; - } + // ------------------------------------------------------------------------------------------- + public ClasspathContainer( ArtifactScopeEnum scope ) + { + this.scope = ArtifactScopeEnum.checkScope( scope ); + } - public ArtifactScopeEnum getScope() - { - return scope; - } + // ------------------------------------------------------------------------------------------- + public ClasspathContainer( List classpath, ArtifactScopeEnum scope ) + { + this( scope ); + this.classpath = classpath; + } - public void setScope(ArtifactScopeEnum scope) - { - this.scope = scope; - } - //------------------------------------------------------------------------------------------- - @Override - public String toString() - { - StringBuilder sb = new StringBuilder(256); - sb.append("[scope="+scope.getScope() ); - if(classpath != null) - for( ArtifactMetadata md : classpath ) { - sb.append(": "+md.toString()+'{'+md.getArtifactUri()+'}'); - } - sb.append(']'); - return sb.toString(); - } - //------------------------------------------------------------------------------------------- - //------------------------------------------------------------------------------------------- + // ------------------------------------------------------------------------------------------- + public Iterator iterator() + { + return classpath == null ? null : classpath.iterator(); + } + + // ------------------------------------------------------------------------------------------- + public ClasspathContainer add( ArtifactMetadata md ) + { + if ( classpath == null ) + { + classpath = new ArrayList( 16 ); + } + + classpath.add( md ); + + return this; + } + + // ------------------------------------------------------------------------------------------- + public List getClasspath() + { + return classpath; + } + + // ------------------------------------------------------------------------------------------- + public MetadataTreeNode getClasspathAsTree() + throws MetadataResolutionException + { + if ( classpath == null || classpath.size() < 1 ) + { + return null; + } + + MetadataTreeNode tree = null; + MetadataTreeNode parent = null; + MetadataTreeNode node = null; + + for ( ArtifactMetadata md : classpath ) + { + node = new MetadataTreeNode( md, parent, md.isResolved(), md.getArtifactScope() ); + if ( tree == null ) + { + tree = node; + } + + if ( parent != null ) + { + parent.setNChildren( 1 ); + parent.addChild( 0, node ); + } + + parent = node; + + } + return tree; + } + + public void setClasspath( List classpath ) + { + this.classpath = classpath; + } + + public ArtifactScopeEnum getScope() + { + return scope; + } + + public void setScope( ArtifactScopeEnum scope ) + { + this.scope = scope; + } + + // ------------------------------------------------------------------------------------------- + @Override + public String toString() + { + StringBuilder sb = new StringBuilder( 256 ); + sb.append( "[scope=" + scope.getScope() ); + if ( classpath != null ) + { + for ( ArtifactMetadata md : classpath ) + { + sb.append( ": " + md.toString() + '{' + md.getArtifactUri() + '}' ); + } + } + sb.append( ']' ); + return sb.toString(); + } + // ------------------------------------------------------------------------------------------- + // ------------------------------------------------------------------------------------------- } diff --git a/maven-compat/src/main/java/org/apache/maven/repository/metadata/DefaultClasspathTransformation.java b/maven-compat/src/main/java/org/apache/maven/repository/metadata/DefaultClasspathTransformation.java index a7d7406d5a..a6ac824508 100644 --- a/maven-compat/src/main/java/org/apache/maven/repository/metadata/DefaultClasspathTransformation.java +++ b/maven-compat/src/main/java/org/apache/maven/repository/metadata/DefaultClasspathTransformation.java @@ -1,5 +1,24 @@ package org.apache.maven.repository.metadata; +/* + * 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.Arrays; import java.util.Comparator; @@ -11,7 +30,7 @@ import org.codehaus.plexus.component.annotations.Requirement; /** * default implementation of the metadata classpath transformer - * + * * @author Oleg Gusakov * */ @@ -23,44 +42,47 @@ implements ClasspathTransformation GraphConflictResolver conflictResolver; //---------------------------------------------------------------------------------------------------- - public ClasspathContainer transform( - MetadataGraph dirtyGraph - , ArtifactScopeEnum scope - , boolean resolve - ) - throws MetadataGraphTransformationException - { - try { - if( dirtyGraph == null - || dirtyGraph.isEmpty() - ) - return null; + public ClasspathContainer transform( MetadataGraph dirtyGraph, ArtifactScopeEnum scope, boolean resolve ) + throws MetadataGraphTransformationException + { + try + { + if ( dirtyGraph == null || dirtyGraph.isEmpty() ) + { + return null; + } - MetadataGraph cleanGraph = conflictResolver.resolveConflicts( dirtyGraph, scope ); + MetadataGraph cleanGraph = conflictResolver.resolveConflicts( dirtyGraph, scope ); + + if ( cleanGraph == null || cleanGraph.isEmpty() ) + { + return null; + } + + ClasspathContainer cpc = new ClasspathContainer( scope ); + if ( cleanGraph.isEmptyEdges() ) + { + // single entry in the classpath, populated from itself + ArtifactMetadata amd = cleanGraph.getEntry().getMd(); + cpc.add( amd ); + } + else + { + ClasspathGraphVisitor v = new ClasspathGraphVisitor( cleanGraph, cpc ); + MetadataGraphVertex entry = cleanGraph.getEntry(); + ArtifactMetadata md = entry.getMd(); + // entry point + v.visit( entry ); // , md.getVersion(), md.getArtifactUri() ); + } + + return cpc; + } + catch ( GraphConflictResolutionException e ) + { + throw new MetadataGraphTransformationException( e ); + } + } - if( cleanGraph == null - || cleanGraph.isEmpty() - ) - return null; - - ClasspathContainer cpc = new ClasspathContainer( scope ); - if( cleanGraph.isEmptyEdges() ) { - // single entry in the classpath, populated from itself - ArtifactMetadata amd = cleanGraph.getEntry().getMd(); - cpc.add( amd ); - } else { - ClasspathGraphVisitor v = new ClasspathGraphVisitor( cleanGraph, cpc ); - MetadataGraphVertex entry = cleanGraph.getEntry(); - ArtifactMetadata md = entry.getMd(); - // entry point - v.visit( entry ); //, md.getVersion(), md.getArtifactUri() ); - } - - return cpc; - } catch (GraphConflictResolutionException e) { - throw new MetadataGraphTransformationException(e); - } - } //=================================================================================================== /** * Helper class to traverse graph. Required to make the containing method thread-safe @@ -68,82 +90,91 @@ implements ClasspathTransformation */ private class ClasspathGraphVisitor { - MetadataGraph graph; - ClasspathContainer cpc; - List visited; - //----------------------------------------------------------------------- - protected ClasspathGraphVisitor( MetadataGraph cleanGraph, ClasspathContainer cpc ) - { - this.cpc = cpc; - this.graph = cleanGraph; + MetadataGraph graph; - visited = new ArrayList( cleanGraph.getVertices().size() ); - } - //----------------------------------------------------------------------- - protected void visit( MetadataGraphVertex node ) //, String version, String artifactUri ) - { - ArtifactMetadata md = node.getMd(); - if( visited.contains(node) ) - return; + ClasspathContainer cpc; - cpc.add( md ); + List visited; + + // ----------------------------------------------------------------------- + protected ClasspathGraphVisitor( MetadataGraph cleanGraph, ClasspathContainer cpc ) + { + this.cpc = cpc; + this.graph = cleanGraph; + + visited = new ArrayList( cleanGraph.getVertices().size() ); + } + + // ----------------------------------------------------------------------- + protected void visit( MetadataGraphVertex node ) // , String version, String artifactUri ) + { + ArtifactMetadata md = node.getMd(); + if ( visited.contains( node ) ) + { + return; + } + + cpc.add( md ); // -// TreeSet deps = new TreeSet( -// new Comparator() -// { -// public int compare( MetadataGraphEdge e1 -// , MetadataGraphEdge e2 -// ) -// { -// if( e1.getDepth() == e2.getDepth() ) -// { -// if( e2.getPomOrder() == e1.getPomOrder() ) -// return e1.getTarget().toString().compareTo(e2.getTarget().toString() ); +// TreeSet deps = new TreeSet( +// new Comparator() +// { +// public int compare( MetadataGraphEdge e1 +// , MetadataGraphEdge e2 +// ) +// { +// if( e1.getDepth() == e2.getDepth() ) +// { +// if( e2.getPomOrder() == e1.getPomOrder() ) +// return e1.getTarget().toString().compareTo(e2.getTarget().toString() ); // -// return e2.getPomOrder() - e1.getPomOrder(); -// } +// return e2.getPomOrder() - e1.getPomOrder(); +// } // -// return e2.getDepth() - e1.getDepth(); -// } -// } -// ); +// return e2.getDepth() - e1.getDepth(); +// } +// } +// ); - List exits = graph.getExcidentEdges(node); - - if( exits != null && exits.size() > 0) - { - MetadataGraphEdge[] sortedExits = exits.toArray( new MetadataGraphEdge[exits.size()] ); - Arrays.sort( sortedExits - , - new Comparator() - { - public int compare( MetadataGraphEdge e1 - , MetadataGraphEdge e2 - ) - { - if( e1.getDepth() == e2.getDepth() ) - { - if( e2.getPomOrder() == e1.getPomOrder() ) - return e1.getTarget().toString().compareTo(e2.getTarget().toString() ); - return e2.getPomOrder() - e1.getPomOrder(); - } + List exits = graph.getExcidentEdges(node); - return e2.getDepth() - e1.getDepth(); - } - } - ); - - for( MetadataGraphEdge e : sortedExits ) { - MetadataGraphVertex targetNode = e.getTarget(); - targetNode.getMd().setArtifactScope( e.getScope() ); - targetNode.getMd().setWhy( e.getSource().getMd().toString() ); - visit( targetNode ); - } - } - - } - //----------------------------------------------------------------------- - //----------------------------------------------------------------------- + if ( exits != null && exits.size() > 0 ) + { + MetadataGraphEdge[] sortedExits = exits.toArray( new MetadataGraphEdge[exits.size()] ); + Arrays.sort( sortedExits + , + new Comparator() + { + public int compare( MetadataGraphEdge e1 + , MetadataGraphEdge e2 + ) + { + if ( e1.getDepth() == e2.getDepth() ) + { + if ( e2.getPomOrder() == e1.getPomOrder() ) + { + return e1.getTarget().toString().compareTo( e2.getTarget().toString() ); + } + return e2.getPomOrder() - e1.getPomOrder(); + } + + return e2.getDepth() - e1.getDepth(); + } + } + ); + + for ( MetadataGraphEdge e : sortedExits ) + { + MetadataGraphVertex targetNode = e.getTarget(); + targetNode.getMd().setArtifactScope( e.getScope() ); + targetNode.getMd().setWhy( e.getSource().getMd().toString() ); + visit( targetNode ); + } + } + + } + //----------------------------------------------------------------------- + //----------------------------------------------------------------------- } //---------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------- diff --git a/maven-compat/src/main/java/org/apache/maven/repository/metadata/DefaultGraphConflictResolutionPolicy.java b/maven-compat/src/main/java/org/apache/maven/repository/metadata/DefaultGraphConflictResolutionPolicy.java index 68e27817fd..320bbd85cb 100644 --- a/maven-compat/src/main/java/org/apache/maven/repository/metadata/DefaultGraphConflictResolutionPolicy.java +++ b/maven-compat/src/main/java/org/apache/maven/repository/metadata/DefaultGraphConflictResolutionPolicy.java @@ -1,5 +1,24 @@ package org.apache.maven.repository.metadata; +/* + * 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.artifact.versioning.ArtifactVersion; import org.apache.maven.artifact.versioning.DefaultArtifactVersion; import org.codehaus.plexus.component.annotations.Component; @@ -7,44 +26,49 @@ import org.codehaus.plexus.component.annotations.Configuration; /** * @author Oleg Gusakov - * + * * @version $Id$ */ -@Component(role=GraphConflictResolutionPolicy.class) +@Component(role=GraphConflictResolutionPolicy.class) public class DefaultGraphConflictResolutionPolicy implements GraphConflictResolutionPolicy -{ +{ /** * artifact, closer to the entry point, is selected */ - @Configuration(name="closer-first", value="true") + @Configuration(name="closer-first", value="true") private boolean closerFirst = true; - + /** * newer artifact is selected */ - @Configuration(name="newer-first", value="true") + @Configuration(name="newer-first", value="true") private boolean newerFirst = true; - public MetadataGraphEdge apply(MetadataGraphEdge e1, MetadataGraphEdge e2) - { - int depth1 = e1.getDepth(); - int depth2 = e2.getDepth(); - - if( depth1 == depth2 ) { - ArtifactVersion v1 = new DefaultArtifactVersion( e1.getVersion() ); - ArtifactVersion v2 = new DefaultArtifactVersion( e2.getVersion() ); - - if( newerFirst ) - return v1.compareTo(v2) > 0 ? e1 : e2; + public MetadataGraphEdge apply( MetadataGraphEdge e1, MetadataGraphEdge e2 ) + { + int depth1 = e1.getDepth(); + int depth2 = e2.getDepth(); - return v1.compareTo(v2) > 0 ? e2 : e1; - } - - if( closerFirst ) - return depth1 < depth2 ? e1 : e2; + if ( depth1 == depth2 ) + { + ArtifactVersion v1 = new DefaultArtifactVersion( e1.getVersion() ); + ArtifactVersion v2 = new DefaultArtifactVersion( e2.getVersion() ); - return depth1 < depth2 ? e2 : e1; - } + if ( newerFirst ) + { + return v1.compareTo( v2 ) > 0 ? e1 : e2; + } + + return v1.compareTo( v2 ) > 0 ? e2 : e1; + } + + if ( closerFirst ) + { + return depth1 < depth2 ? e1 : e2; + } + + return depth1 < depth2 ? e2 : e1; + } } diff --git a/maven-compat/src/main/java/org/apache/maven/repository/metadata/MetadataGraph.java b/maven-compat/src/main/java/org/apache/maven/repository/metadata/MetadataGraph.java index 205315fb02..f6900fa8c7 100644 --- a/maven-compat/src/main/java/org/apache/maven/repository/metadata/MetadataGraph.java +++ b/maven-compat/src/main/java/org/apache/maven/repository/metadata/MetadataGraph.java @@ -1,5 +1,24 @@ package org.apache.maven.repository.metadata; +/* + * 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.HashMap; import java.util.List; @@ -10,35 +29,35 @@ import org.apache.maven.artifact.ArtifactScopeEnum; /** * maven dependency metadata graph - * + * * @author Oleg Gusakov * */ public class MetadataGraph { - public static int DEFAULT_VERTICES = 32; - public static int DEFAULT_EDGES = 64; - - // flags to indicate the granularity of vertices - private boolean versionedVertices = false; - private boolean scopedVertices = false; - /** - * the entry point we started building the graph from - */ - MetadataGraphVertex entry; - - // graph vertices - TreeSet< MetadataGraphVertex > vertices; + public static final int DEFAULT_VERTICES = 32; + public static final int DEFAULT_EDGES = 64; - /** + // flags to indicate the granularity of vertices + private boolean versionedVertices = false; + private boolean scopedVertices = false; + /** + * the entry point we started building the graph from + */ + MetadataGraphVertex entry; + + // graph vertices + TreeSet vertices; + + /** * incident and excident edges per node */ Map> incidentEdges; Map> excidentEdges; - + /** - * null in dirty graph, actual + * null in dirty graph, actual * scope for conflict-resolved graph */ ArtifactScopeEnum scope; @@ -49,11 +68,11 @@ public class MetadataGraph */ public MetadataGraph( int nVertices ) { - init( nVertices, 2*nVertices ); + init( nVertices, 2 * nVertices ); } public MetadataGraph( int nVertices, int nEdges ) { - init( nVertices, nEdges ); + init( nVertices, nEdges ); } //------------------------------------------------------------------------ /** @@ -62,14 +81,14 @@ public class MetadataGraph public MetadataGraph( MetadataGraphVertex entry ) throws MetadataResolutionException { - checkVertex(entry); - checkVertices(1); + checkVertex( entry ); + checkVertices( 1 ); - entry.setCompareVersion( versionedVertices ); - entry.setCompareScope( scopedVertices ); + entry.setCompareVersion( versionedVertices ); + entry.setCompareScope( scopedVertices ); - vertices.add( entry ); - this.entry = entry; + vertices.add( entry ); + this.entry = entry; } //------------------------------------------------------------------------ /** @@ -78,16 +97,16 @@ public class MetadataGraph public MetadataGraph( MetadataTreeNode tree ) throws MetadataResolutionException { - this( tree, false, false ); + this( tree, false, false ); } //------------------------------------------------------------------------ /** * construct graph from a "dirty" tree - * + * * @param tree "dirty" tree root * @param versionedVertices true if graph nodes should be versioned (different versions -> different nodes) * @param scopedVertices true if graph nodes should be versioned and scoped (different versions and/or scopes -> different nodes) - * + * */ public MetadataGraph( MetadataTreeNode tree, boolean versionedVertices, boolean scopedVertices ) throws MetadataResolutionException @@ -97,12 +116,12 @@ public class MetadataGraph throw new MetadataResolutionException( "tree is null" ); } - setVersionedVertices(versionedVertices); - setScopedVertices(scopedVertices); - + setVersionedVertices( versionedVertices ); + setScopedVertices( scopedVertices ); + this.versionedVertices = scopedVertices || versionedVertices; this.scopedVertices = scopedVertices; - + int count = countNodes( tree ); init( count, count + ( count / 2 ) ); @@ -114,7 +133,7 @@ public class MetadataGraph , MetadataTreeNode node , int depth , int pomOrder - ) + ) throws MetadataResolutionException { if ( node == null ) @@ -123,20 +142,20 @@ public class MetadataGraph } MetadataGraphVertex vertex = new MetadataGraphVertex( node.md, versionedVertices, scopedVertices ); - if( ! vertices.contains(vertex) ) + if ( !vertices.contains( vertex ) ) { - vertices.add(vertex); + vertices.add( vertex ); } - if( parentVertex != null ) // then create the edge - { + if ( parentVertex != null ) // then create the edge + { ArtifactMetadata md = node.getMd(); MetadataGraphEdge e = new MetadataGraphEdge( md.version, md.resolved, md.artifactScope, md.artifactUri, depth, pomOrder ); - addEdge( parentVertex, vertex, e); + addEdge( parentVertex, vertex, e ); } else { - entry = vertex; + entry = vertex; } MetadataTreeNode[] kids = node.getChildren(); @@ -145,49 +164,57 @@ public class MetadataGraph return; } - for( int i = 0; i< kids.length; i++ ) + for ( int i = 0; i < kids.length; i++ ) { - MetadataTreeNode n = kids[i]; + MetadataTreeNode n = kids[i]; processTreeNodes( vertex, n, depth + 1, i ); } } //------------------------------------------------------------------------ public MetadataGraphVertex findVertex( ArtifactMetadata md ) { - if( md == null || vertices == null || vertices.size() < 1 ) - return null; - - MetadataGraphVertex v = new MetadataGraphVertex(md); - v.setCompareVersion(versionedVertices); - v.setCompareScope(scopedVertices); + if ( md == null || vertices == null || vertices.size() < 1 ) + { + return null; + } - for( MetadataGraphVertex gv : vertices ) - { - if( gv.equals(v) ) - return gv; - } - - return null; + MetadataGraphVertex v = new MetadataGraphVertex( md ); + v.setCompareVersion( versionedVertices ); + v.setCompareScope( scopedVertices ); + + for ( MetadataGraphVertex gv : vertices ) + { + if ( gv.equals( v ) ) + { + return gv; + } + } + + return null; } //------------------------------------------------------------------------ public MetadataGraphVertex addVertex( ArtifactMetadata md ) { - if( md == null ) - return null; - - checkVertices(); - - MetadataGraphVertex v = findVertex(md); - if( v != null) - return v; - - v = new MetadataGraphVertex(md); - - v.setCompareVersion(versionedVertices); - v.setCompareScope(scopedVertices); + if ( md == null ) + { + return null; + } - vertices.add( v ); - return v; + checkVertices(); + + MetadataGraphVertex v = findVertex( md ); + if ( v != null ) + { + return v; + } + + v = new MetadataGraphVertex( md ); + + v.setCompareVersion( versionedVertices ); + v.setCompareScope( scopedVertices ); + + vertices.add( v ); + return v; } //------------------------------------------------------------------------ /** @@ -195,136 +222,164 @@ public class MetadataGraph */ private void init( int nVertices, int nEdges ) { - int nV = nVertices; - if( nVertices < 1 ) - nV = 1; - - checkVertices(nV); + int nV = nVertices; + if ( nVertices < 1 ) + { + nV = 1; + } - int nE = nVertices; - if( nEdges <= nV ) - nE = 2*nE; - - checkEdges(nE); + checkVertices( nV ); + + int nE = nVertices; + if ( nEdges <= nV ) + { + nE = 2 * nE; + } + + checkEdges( nE ); } private void checkVertices() { - checkVertices(DEFAULT_VERTICES); + checkVertices( DEFAULT_VERTICES ); } private void checkVertices( int nVertices ) { - if( vertices == null ) - vertices = new TreeSet(); + if ( vertices == null ) + { + vertices = new TreeSet(); + } } private void checkEdges() { - int count = DEFAULT_EDGES; - - if( vertices != null ) - count = vertices.size() + vertices.size() / 2; + int count = DEFAULT_EDGES; - checkEdges( count ); + if ( vertices != null ) + { + count = vertices.size() + vertices.size() / 2; + } + + checkEdges( count ); } private void checkEdges( int nEdges ) { - if( incidentEdges == null ) - incidentEdges = new HashMap>( nEdges ); - if( excidentEdges == null ) - excidentEdges = new HashMap>( nEdges ); + if ( incidentEdges == null ) + { + incidentEdges = new HashMap>( nEdges ); + } + if ( excidentEdges == null ) + { + excidentEdges = new HashMap>( nEdges ); + } } //------------------------------------------------------------------------ private static void checkVertex( MetadataGraphVertex v ) throws MetadataResolutionException { - if( v == null ) - throw new MetadataResolutionException( "null vertex" ); - if( v.getMd() == null ) - throw new MetadataResolutionException( "vertex without metadata" ); + if ( v == null ) + { + throw new MetadataResolutionException( "null vertex" ); + } + if ( v.getMd() == null ) + { + throw new MetadataResolutionException( "vertex without metadata" ); + } } //------------------------------------------------------------------------ private static void checkEdge( MetadataGraphEdge e ) throws MetadataResolutionException { - if( e == null ) - throw new MetadataResolutionException( "badly formed edge" ); + if ( e == null ) + { + throw new MetadataResolutionException( "badly formed edge" ); + } } //------------------------------------------------------------------------ - public List getEdgesBetween( - MetadataGraphVertex vFrom - , MetadataGraphVertex vTo - ) + public List getEdgesBetween( MetadataGraphVertex vFrom, MetadataGraphVertex vTo ) { - List edges = getIncidentEdges(vTo); - if( edges == null || edges.isEmpty() ) - return null; - - List res = new ArrayList( edges.size() ); - - for( MetadataGraphEdge e : edges ) - { - if( e.getSource().equals(vFrom) ) - res.add(e); - } - - return res; + List edges = getIncidentEdges(vTo); + if ( edges == null || edges.isEmpty() ) + { + return null; + } + + List res = new ArrayList( edges.size() ); + + for ( MetadataGraphEdge e : edges ) + { + if ( e.getSource().equals( vFrom ) ) + { + res.add( e ); + } + } + + return res; } //------------------------------------------------------------------------ - public MetadataGraph addEdge( MetadataGraphVertex vFrom - , MetadataGraphVertex vTo - , MetadataGraphEdge e - ) + public MetadataGraph addEdge( MetadataGraphVertex vFrom, MetadataGraphVertex vTo, MetadataGraphEdge e ) throws MetadataResolutionException { - checkVertex(vFrom); - checkVertex(vTo); + checkVertex( vFrom ); + checkVertex( vTo ); - checkVertices(); - - checkEdge(e); - checkEdges(); - - e.setSource(vFrom); - e.setTarget(vTo); + checkVertices(); - vFrom.setCompareVersion(versionedVertices); - vFrom.setCompareScope(scopedVertices); - - List exList = excidentEdges.get(vFrom); - if( exList == null ) { - exList = new ArrayList(); - excidentEdges.put( vFrom, exList ); - } - - if( !exList.contains(e) ) - exList.add(e); - - List inList = incidentEdges.get(vTo); - if( inList == null ) { - inList = new ArrayList(); - incidentEdges.put( vTo, inList ); - } - - if( !inList.contains(e) ) - inList.add(e); - - return this; + checkEdge( e ); + checkEdges(); + + e.setSource( vFrom ); + e.setTarget( vTo ); + + vFrom.setCompareVersion( versionedVertices ); + vFrom.setCompareScope( scopedVertices ); + + List exList = excidentEdges.get( vFrom ); + if ( exList == null ) + { + exList = new ArrayList(); + excidentEdges.put( vFrom, exList ); + } + + if ( !exList.contains( e ) ) + { + exList.add( e ); + } + + List inList = incidentEdges.get( vTo ); + if ( inList == null ) + { + inList = new ArrayList(); + incidentEdges.put( vTo, inList ); + } + + if ( !inList.contains( e ) ) + { + inList.add( e ); + } + + return this; } //------------------------------------------------------------------------ public MetadataGraph removeVertex( MetadataGraphVertex v ) { - if( vertices!= null && v != null ) - vertices.remove(v); - - if( incidentEdges!= null ) - incidentEdges.remove(v); - - if( excidentEdges!= null ) - excidentEdges.remove(v); + if ( vertices != null && v != null ) + { + vertices.remove( v ); + } + + if ( incidentEdges != null ) + { + incidentEdges.remove( v ); + } + + if ( excidentEdges != null ) + { + excidentEdges.remove( v ); + } + + return this; - return this; - } //------------------------------------------------------------------------ private static int countNodes( MetadataTreeNode tree ) @@ -363,99 +418,110 @@ public class MetadataGraph { return vertices; } - - public List getIncidentEdges( MetadataGraphVertex vertex ) - { - checkEdges(); - return incidentEdges.get(vertex); - } - - public List getExcidentEdges( MetadataGraphVertex vertex ) - { - checkEdges(); - return excidentEdges.get(vertex); - } - - public boolean isVersionedVertices() - { - return versionedVertices; - } - public void setVersionedVertices(boolean versionedVertices) - { - this.versionedVertices = versionedVertices; - } - public boolean isScopedVertices() - { - return scopedVertices; - } - public void setScopedVertices(boolean scopedVertices) - { - this.scopedVertices = scopedVertices; - // scoped graph is versioned by definition - if( scopedVertices ) - versionedVertices = true; - } - public ArtifactScopeEnum getScope() - { - return scope; - } - public void setScope(ArtifactScopeEnum scope) - { - this.scope = scope; - } + public List getIncidentEdges( MetadataGraphVertex vertex ) + { + checkEdges(); + return incidentEdges.get( vertex ); + } + + public List getExcidentEdges( MetadataGraphVertex vertex ) + { + checkEdges(); + return excidentEdges.get( vertex ); + } + + public boolean isVersionedVertices() + { + return versionedVertices; + } + + public void setVersionedVertices( boolean versionedVertices ) + { + this.versionedVertices = versionedVertices; + } + + public boolean isScopedVertices() + { + return scopedVertices; + } + + public void setScopedVertices( boolean scopedVertices ) + { + this.scopedVertices = scopedVertices; + + // scoped graph is versioned by definition + if ( scopedVertices ) + { + versionedVertices = true; + } + } + + public ArtifactScopeEnum getScope() + { + return scope; + } + + public void setScope( ArtifactScopeEnum scope ) + { + this.scope = scope; + } + + // ------------------------------------------------------------------------ + public boolean isEmpty() + { + return entry == null || vertices == null || vertices.isEmpty(); + } + //------------------------------------------------------------------------ - public boolean isEmpty() - { - return - entry == null - || vertices == null - || vertices.isEmpty() - ; - } + public boolean isEmptyEdges() + { + return isEmpty() || incidentEdges == null || incidentEdges.isEmpty(); + } //------------------------------------------------------------------------ - public boolean isEmptyEdges() - { - return - isEmpty() - || incidentEdges == null - || incidentEdges.isEmpty() - ; - } - //------------------------------------------------------------------------ - @Override - public String toString() - { - StringBuilder sb = new StringBuilder(512); - if( isEmpty() ) - return "empty"; - for( MetadataGraphVertex v : vertices ) - { - sb.append("Vertex: "+v.getMd().toString()+ "\n"); - List ins = getIncidentEdges(v); - if( ins != null ) - for( MetadataGraphEdge e : ins ) - { - sb.append(" from : "+e.toString()+"\n"); - } - else - sb.append(" no entries\n"); - - List outs = getExcidentEdges(v); - if( outs != null ) - for( MetadataGraphEdge e : outs ) - { - sb.append(" to : "+e.toString()+ "\n"); - } - else - sb.append(" no exit\n"); - - sb.append("-------------------------------------------------\n"); - } - sb.append("=============================================================\n"); - return sb.toString(); - } - + @Override + public String toString() + { + StringBuilder sb = new StringBuilder( 512 ); + if ( isEmpty() ) + { + return "empty"; + } + for ( MetadataGraphVertex v : vertices ) + { + sb.append( "Vertex: " + v.getMd().toString() + "\n" ); + List ins = getIncidentEdges( v ); + if ( ins != null ) + { + for ( MetadataGraphEdge e : ins ) + { + sb.append( " from : " + e.toString() + "\n" ); + } + } + else + { + sb.append( " no entries\n" ); + } + + List outs = getExcidentEdges( v ); + if ( outs != null ) + { + for ( MetadataGraphEdge e : outs ) + { + sb.append( " to : " + e.toString() + "\n" ); + } + } + else + { + sb.append( " no exit\n" ); + } + + sb.append( "-------------------------------------------------\n" ); + } + sb.append( "=============================================================\n" ); + return sb.toString(); + } + //------------------------------------------------------------------------ //------------------------------------------------------------------------ } diff --git a/maven-compat/src/main/java/org/apache/maven/repository/metadata/MetadataGraphVertex.java b/maven-compat/src/main/java/org/apache/maven/repository/metadata/MetadataGraphVertex.java index 62a3f5acfa..87ff70bcd7 100644 --- a/maven-compat/src/main/java/org/apache/maven/repository/metadata/MetadataGraphVertex.java +++ b/maven-compat/src/main/java/org/apache/maven/repository/metadata/MetadataGraphVertex.java @@ -1,10 +1,29 @@ package org.apache.maven.repository.metadata; +/* + * 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.artifact.ArtifactScopeEnum; /** * metadata graph vertice - just a wrapper around artifact's metadata - * + * * @author Oleg Gusakov */ public class MetadataGraphVertex @@ -15,16 +34,16 @@ public class MetadataGraphVertex // indications to use these in comparrison private boolean compareVersion = false; private boolean compareScope = false; - - public MetadataGraphVertex( ArtifactMetadata md ) + + public MetadataGraphVertex( ArtifactMetadata md ) { super(); this.md = md; } - - public MetadataGraphVertex( ArtifactMetadata md, boolean compareVersion, boolean compareScope ) + + public MetadataGraphVertex( ArtifactMetadata md, boolean compareVersion, boolean compareScope ) { - this(md); + this( md ); this.compareVersion = compareVersion; this.compareScope = compareScope; } @@ -38,125 +57,160 @@ public class MetadataGraphVertex { this.md = md; } - //--------------------------------------------------------------------- + + // --------------------------------------------------------------------- public boolean isCompareVersion() - { - return compareVersion; - } + { + return compareVersion; + } - public void setCompareVersion(boolean compareVersion) - { - this.compareVersion = compareVersion; - } + public void setCompareVersion( boolean compareVersion ) + { + this.compareVersion = compareVersion; + } - public boolean isCompareScope() - { - return compareScope; - } + public boolean isCompareScope() + { + return compareScope; + } - public void setCompareScope(boolean compareScope) - { - this.compareScope = compareScope; - } + public void setCompareScope( boolean compareScope ) + { + this.compareScope = compareScope; + } - //--------------------------------------------------------------------- - @Override - public String toString() - { - return "["+ (md == null ? "no metadata" : md.toString()) + "]"; - } - //--------------------------------------------------------------------- - private static int compareStrings( String s1, String s2 ) - { - if( s1 == null && s2 == null ) - return 0; + // --------------------------------------------------------------------- + @Override + public String toString() + { + return "[" + ( md == null ? "no metadata" : md.toString() ) + "]"; + } - if( s1 == null && s2 != null ) - return -1; + // --------------------------------------------------------------------- + private static int compareStrings( String s1, String s2 ) + { + if ( s1 == null && s2 == null ) + { + return 0; + } - if( s1 != null && s2 == null ) - return 1; - - return s1.compareTo(s2); - } - //--------------------------------------------------------------------- - public int compareTo(MetadataGraphVertex vertex) - { - if( vertex == null || vertex.getMd() == null ) - return 1; - - ArtifactMetadata vmd = vertex.getMd(); + if ( s1 == null && s2 != null ) + { + return -1; + } - if( vmd == null ) - { - if( md == null ) - return 0; - else - return 1; - } - - int g = compareStrings( md.groupId, vmd.groupId ); - - if( g == 0 ) - { - int a = compareStrings( md.artifactId, vmd.artifactId ); - if( a == 0 ) - { - if( compareVersion ) - { - int v = compareStrings( md.version, vmd.version ); - if( v == 0) { - if( compareScope ) { - String s1 = ArtifactScopeEnum.checkScope( md.artifactScope).getScope(); - String s2 = ArtifactScopeEnum.checkScope(vmd.artifactScope).getScope(); - return s1.compareTo(s2); - } - else - return 0; - } - else - return v; - } - else - return 0; - } - else - return a; - } - - return g; - } - //--------------------------------------------------------------------- - @Override - public boolean equals(Object vo) - { - if( vo == null || !(vo instanceof MetadataGraphVertex) ) - return false; - return compareTo( (MetadataGraphVertex)vo ) == 0; - } - //--------------------------------------------------------------------- + if ( s1 != null && s2 == null ) + { + return 1; + } - @Override - public int hashCode() - { - if( md == null ) - return super.hashCode(); - StringBuilder hashString = new StringBuilder(128); - hashString.append( md.groupId+"|" ); - hashString.append( md.artifactId+"|" ); - - if( compareVersion ) - hashString.append(md.version + "|"); - - if( compareScope ) - hashString.append(md.getArtifactScope() + "|"); - - return hashString.toString().hashCode(); + return s1.compareTo( s2 ); + } -// BASE64Encoder b64 = new BASE64Encoder(); -// return b64.encode( hashString.toString().getBytes() ).hashCode(); - } - - //--------------------------------------------------------------------- - //--------------------------------------------------------------------- + // --------------------------------------------------------------------- + public int compareTo( MetadataGraphVertex vertex ) + { + if ( vertex == null || vertex.getMd() == null ) + { + return 1; + } + + ArtifactMetadata vmd = vertex.getMd(); + + if ( vmd == null ) + { + if ( md == null ) + { + return 0; + } + else + { + return 1; + } + } + + int g = compareStrings( md.groupId, vmd.groupId ); + + if ( g == 0 ) + { + int a = compareStrings( md.artifactId, vmd.artifactId ); + if ( a == 0 ) + { + if ( compareVersion ) + { + int v = compareStrings( md.version, vmd.version ); + if ( v == 0 ) + { + if ( compareScope ) + { + String s1 = ArtifactScopeEnum.checkScope( md.artifactScope ).getScope(); + String s2 = ArtifactScopeEnum.checkScope( vmd.artifactScope ).getScope(); + return s1.compareTo( s2 ); + } + else + { + return 0; + } + } + else + { + return v; + } + } + else + { + return 0; + } + } + else + { + return a; + } + } + + return g; + } + + // --------------------------------------------------------------------- + @Override + public boolean equals( Object vo ) + { + if ( vo == null || !( vo instanceof MetadataGraphVertex ) ) + { + return false; + } + return compareTo( (MetadataGraphVertex) vo ) == 0; + } + + // --------------------------------------------------------------------- + + @Override + public int hashCode() + { + if ( md == null ) + { + return super.hashCode(); + } + StringBuilder hashString = new StringBuilder( 128 ); + hashString.append( md.groupId + "|" ); + hashString.append( md.artifactId + "|" ); + + if ( compareVersion ) + { + hashString.append( md.version + "|" ); + } + + if ( compareScope ) + { + hashString.append( md.getArtifactScope() + "|" ); + } + + return hashString.toString().hashCode(); + + // BASE64Encoder b64 = new BASE64Encoder(); + // return b64.encode( hashString.toString().getBytes() ).hashCode(); + } + + // --------------------------------------------------------------------- + // --------------------------------------------------------------------- } diff --git a/maven-compat/src/main/java/org/apache/maven/repository/metadata/MetadataResolutionResult.java b/maven-compat/src/main/java/org/apache/maven/repository/metadata/MetadataResolutionResult.java index 6a89e4a5ca..bf7cc1ab5f 100644 --- a/maven-compat/src/main/java/org/apache/maven/repository/metadata/MetadataResolutionResult.java +++ b/maven-compat/src/main/java/org/apache/maven/repository/metadata/MetadataResolutionResult.java @@ -1,23 +1,42 @@ package org.apache.maven.repository.metadata; +/* + * 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.artifact.ArtifactScopeEnum; import org.codehaus.plexus.PlexusContainer; import org.codehaus.plexus.component.repository.exception.ComponentLookupException; -/** - * This object is tinted with ClasspathTransformation and GraphConflictResolver. +/** + * This object is tinted with ClasspathTransformation and GraphConflictResolver. * Get rid of them after debugging - * + * * @author Oleg Gusakov */ public class MetadataResolutionResult { MetadataTreeNode treeRoot; - - /** + + /** * these components are are initialized on demand by - * explicit call of the initTreeProcessing() - */ + * explicit call of the initTreeProcessing() + */ ClasspathTransformation classpathTransformation; GraphConflictResolver conflictResolver; @@ -40,84 +59,112 @@ public class MetadataResolutionResult { this.treeRoot = root; } - + public void initTreeProcessing( PlexusContainer plexus ) throws ComponentLookupException { - classpathTransformation = (ClasspathTransformation)plexus.lookup(ClasspathTransformation.class); - conflictResolver = (GraphConflictResolver)plexus.lookup(GraphConflictResolver.class); + classpathTransformation = (ClasspathTransformation) plexus.lookup( ClasspathTransformation.class ); + conflictResolver = (GraphConflictResolver) plexus.lookup( GraphConflictResolver.class ); } //---------------------------------------------------------------------------- public MetadataGraph getGraph() throws MetadataResolutionException { - return treeRoot == null ? null : new MetadataGraph(treeRoot); + return treeRoot == null ? null : new MetadataGraph( treeRoot ); } //---------------------------------------------------------------------------- public MetadataGraph getGraph( ArtifactScopeEnum scope ) throws MetadataResolutionException, GraphConflictResolutionException { - if( treeRoot == null ) - return null; - - if( conflictResolver == null ) - return null; - + if ( treeRoot == null ) + { + return null; + } + + if ( conflictResolver == null ) + { + return null; + } + return conflictResolver.resolveConflicts( getGraph(), scope ); } //---------------------------------------------------------------------------- public MetadataGraph getGraph( MetadataResolutionRequestTypeEnum requestType ) throws MetadataResolutionException, GraphConflictResolutionException { - if( requestType == null ) - return null; - - if( treeRoot == null ) - return null; - - if( conflictResolver == null ) - return null; - - if( requestType.equals(MetadataResolutionRequestTypeEnum.classpathCompile) ) - return conflictResolver.resolveConflicts( getGraph(), ArtifactScopeEnum.compile ); - else if( requestType.equals(MetadataResolutionRequestTypeEnum.classpathRuntime) ) - return conflictResolver.resolveConflicts( getGraph(), ArtifactScopeEnum.runtime ); - else if( requestType.equals(MetadataResolutionRequestTypeEnum.classpathRuntime) ) - return conflictResolver.resolveConflicts( getGraph(), ArtifactScopeEnum.test ); - else if( requestType.equals(MetadataResolutionRequestTypeEnum.classpathRuntime) ) - return conflictResolver.resolveConflicts( getGraph(), ArtifactScopeEnum.test ); - else if( requestType.equals(MetadataResolutionRequestTypeEnum.graph) ) - return getGraph(); - else if( requestType.equals(MetadataResolutionRequestTypeEnum.versionedGraph) ) { - return new MetadataGraph( getTree(), true, false ); - } - else if( requestType.equals(MetadataResolutionRequestTypeEnum.scopedGraph) ) { - return new MetadataGraph( getTree(), true, true ); - } - return null; + if ( requestType == null ) + { + return null; + } + + if ( treeRoot == null ) + { + return null; + } + + if ( conflictResolver == null ) + { + return null; + } + + if ( requestType.equals( MetadataResolutionRequestTypeEnum.classpathCompile ) ) + { + return conflictResolver.resolveConflicts( getGraph(), ArtifactScopeEnum.compile ); + } + else if ( requestType.equals( MetadataResolutionRequestTypeEnum.classpathRuntime ) ) + { + return conflictResolver.resolveConflicts( getGraph(), ArtifactScopeEnum.runtime ); + } + else if ( requestType.equals( MetadataResolutionRequestTypeEnum.classpathRuntime ) ) + { + return conflictResolver.resolveConflicts( getGraph(), ArtifactScopeEnum.test ); + } + else if ( requestType.equals( MetadataResolutionRequestTypeEnum.classpathRuntime ) ) + { + return conflictResolver.resolveConflicts( getGraph(), ArtifactScopeEnum.test ); + } + else if ( requestType.equals( MetadataResolutionRequestTypeEnum.graph ) ) + { + return getGraph(); + } + else if ( requestType.equals( MetadataResolutionRequestTypeEnum.versionedGraph ) ) + { + return new MetadataGraph( getTree(), true, false ); + } + else if ( requestType.equals( MetadataResolutionRequestTypeEnum.scopedGraph ) ) + { + return new MetadataGraph( getTree(), true, true ); + } + return null; } //---------------------------------------------------------------------------- public ClasspathContainer getClasspath( ArtifactScopeEnum scope ) throws MetadataGraphTransformationException, MetadataResolutionException { - if( classpathTransformation == null ) - return null; - + if ( classpathTransformation == null ) + { + return null; + } + MetadataGraph dirtyGraph = getGraph(); - if( dirtyGraph == null ) - return null; - + if ( dirtyGraph == null ) + { + return null; + } + return classpathTransformation.transform( dirtyGraph, scope, false ); } - + //---------------------------------------------------------------------------- public MetadataTreeNode getClasspathTree( ArtifactScopeEnum scope ) throws MetadataGraphTransformationException, MetadataResolutionException { - ClasspathContainer cpc = getClasspath(scope); - if( cpc == null ) - return null; - + ClasspathContainer cpc = getClasspath( scope ); + if ( cpc == null ) + { + return null; + } + return cpc.getClasspathAsTree(); } //---------------------------------------------------------------------------- diff --git a/maven-compat/src/main/mdo/metadata.mdo b/maven-compat/src/main/mdo/metadata.mdo index 243a5f40da..e1be1b4e44 100644 --- a/maven-compat/src/main/mdo/metadata.mdo +++ b/maven-compat/src/main/mdo/metadata.mdo @@ -147,8 +147,8 @@ under the License. versioning.setLastUpdated( v.getLastUpdated() ); } - if ( v.getLastUpdated() == null || v.getLastUpdated().length() == 0 || - versioning.getLastUpdated().compareTo( v.getLastUpdated() ) >= 0 ) + if ( v.getLastUpdated() == null || v.getLastUpdated().length() == 0 + || versioning.getLastUpdated().compareTo( v.getLastUpdated() ) >= 0 ) { changed = true; v.setLastUpdated( versioning.getLastUpdated() ); diff --git a/maven-compat/src/test/java/org/apache/maven/repository/MirrorProcessorTest.java b/maven-compat/src/test/java/org/apache/maven/repository/MirrorProcessorTest.java index f4a73007ed..17d1938090 100644 --- a/maven-compat/src/test/java/org/apache/maven/repository/MirrorProcessorTest.java +++ b/maven-compat/src/test/java/org/apache/maven/repository/MirrorProcessorTest.java @@ -1,12 +1,30 @@ package org.apache.maven.repository; +/* + * 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.Arrays; import java.util.List; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.repository.ArtifactRepositoryFactory; -import org.apache.maven.artifact.repository.DefaultArtifactRepository; import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout; import org.codehaus.plexus.PlexusTestCase; @@ -15,7 +33,7 @@ public class MirrorProcessorTest { private DefaultMirrorBuilder mirrorBuilder; private ArtifactRepositoryFactory repositorySystem; - + protected void setUp() throws Exception { @@ -23,38 +41,40 @@ public class MirrorProcessorTest repositorySystem = lookup( ArtifactRepositoryFactory.class ); mirrorBuilder.clearMirrors(); } - + @Override - protected void tearDown() throws Exception { - mirrorBuilder = null; - super.tearDown(); + protected void tearDown() + throws Exception + { + mirrorBuilder = null; + super.tearDown(); } - + public void testAddMirrorWithNullRepositoryId() { mirrorBuilder.addMirror( null, "test", "http://www.nowhere.com/", null ); } - + public void testExternalURL() { - assertTrue( mirrorBuilder.isExternalRepo( getRepo( "foo", "http://somehost" ) ) ); - assertTrue( mirrorBuilder.isExternalRepo( getRepo( "foo", "http://somehost:9090/somepath" ) ) ); - assertTrue( mirrorBuilder.isExternalRepo( getRepo( "foo", "ftp://somehost" ) ) ); - assertTrue( mirrorBuilder.isExternalRepo( getRepo( "foo", "http://192.168.101.1" ) ) ); - assertTrue( mirrorBuilder.isExternalRepo( getRepo( "foo", "http://" ) ) ); + assertTrue( DefaultMirrorBuilder.isExternalRepo( getRepo( "foo", "http://somehost" ) ) ); + assertTrue( DefaultMirrorBuilder.isExternalRepo( getRepo( "foo", "http://somehost:9090/somepath" ) ) ); + assertTrue( DefaultMirrorBuilder.isExternalRepo( getRepo( "foo", "ftp://somehost" ) ) ); + assertTrue( DefaultMirrorBuilder.isExternalRepo( getRepo( "foo", "http://192.168.101.1" ) ) ); + assertTrue( DefaultMirrorBuilder.isExternalRepo( getRepo( "foo", "http://" ) ) ); // these are local - assertFalse( mirrorBuilder.isExternalRepo( getRepo( "foo", "http://localhost:8080" ) ) ); - assertFalse( mirrorBuilder.isExternalRepo( getRepo( "foo", "http://127.0.0.1:9090" ) ) ); - assertFalse( mirrorBuilder.isExternalRepo( getRepo( "foo", "file://localhost/somepath" ) ) ); - assertFalse( mirrorBuilder.isExternalRepo( getRepo( "foo", "file://localhost/D:/somepath" ) ) ); - assertFalse( mirrorBuilder.isExternalRepo( getRepo( "foo", "http://localhost" ) ) ); - assertFalse( mirrorBuilder.isExternalRepo( getRepo( "foo", "http://127.0.0.1" ) ) ); - assertFalse( mirrorBuilder.isExternalRepo( getRepo( "foo", "file:///somepath" ) ) ); - assertFalse( mirrorBuilder.isExternalRepo( getRepo( "foo", "file://D:/somepath" ) ) ); + assertFalse( DefaultMirrorBuilder.isExternalRepo( getRepo( "foo", "http://localhost:8080" ) ) ); + assertFalse( DefaultMirrorBuilder.isExternalRepo( getRepo( "foo", "http://127.0.0.1:9090" ) ) ); + assertFalse( DefaultMirrorBuilder.isExternalRepo( getRepo( "foo", "file://localhost/somepath" ) ) ); + assertFalse( DefaultMirrorBuilder.isExternalRepo( getRepo( "foo", "file://localhost/D:/somepath" ) ) ); + assertFalse( DefaultMirrorBuilder.isExternalRepo( getRepo( "foo", "http://localhost" ) ) ); + assertFalse( DefaultMirrorBuilder.isExternalRepo( getRepo( "foo", "http://127.0.0.1" ) ) ); + assertFalse( DefaultMirrorBuilder.isExternalRepo( getRepo( "foo", "file:///somepath" ) ) ); + assertFalse( DefaultMirrorBuilder.isExternalRepo( getRepo( "foo", "file://D:/somepath" ) ) ); // not a proper url so returns false; - assertFalse( mirrorBuilder.isExternalRepo( getRepo( "foo", "192.168.101.1" ) ) ); - assertFalse( mirrorBuilder.isExternalRepo( getRepo( "foo", "" ) ) ); + assertFalse( DefaultMirrorBuilder.isExternalRepo( getRepo( "foo", "192.168.101.1" ) ) ); + assertFalse( DefaultMirrorBuilder.isExternalRepo( getRepo( "foo", "" ) ) ); } public void testMirrorLookup() @@ -98,12 +118,12 @@ public class MirrorProcessorTest mirrorBuilder.addMirror( "a2", "a,b", "http://a2", null ); mirrorBuilder.addMirror( "a", "a", "http://a", null ); //make sure repeated entries are skipped - mirrorBuilder.addMirror( "a", "a", "http://a3", null ); - + mirrorBuilder.addMirror( "a", "a", "http://a3", null ); + mirrorBuilder.addMirror( "b", "b", "http://b", null ); mirrorBuilder.addMirror( "c", "d,e", "http://de", null ); mirrorBuilder.addMirror( "c", "*", "http://wildcard", null ); - mirrorBuilder.addMirror( "c", "e,f", "http://ef", null ); + mirrorBuilder.addMirror( "c", "e,f", "http://ef", null ); ArtifactRepository repo = null; repo = mirrorBuilder.getMirrorRepository( getRepo( "a", "http://a.a" ) ); @@ -114,68 +134,68 @@ public class MirrorProcessorTest repo = mirrorBuilder.getMirrorRepository( getRepo( "c", "http://c.c" ) ); assertEquals( "http://wildcard", repo.getUrl() ); - + repo = mirrorBuilder.getMirrorRepository( getRepo( "d", "http://d" ) ); assertEquals( "http://de", repo.getUrl() ); - + repo = mirrorBuilder.getMirrorRepository( getRepo( "e", "http://e" ) ); assertEquals( "http://de", repo.getUrl() ); - + repo = mirrorBuilder.getMirrorRepository( getRepo( "f", "http://f" ) ); assertEquals( "http://wildcard", repo.getUrl() ); } - + public void testPatterns() { - assertTrue( mirrorBuilder.matchPattern( getRepo( "a" ), "*" ) ); - assertTrue( mirrorBuilder.matchPattern( getRepo( "a" ), "*," ) ); - assertTrue( mirrorBuilder.matchPattern( getRepo( "a" ), ",*," ) ); - assertTrue( mirrorBuilder.matchPattern( getRepo( "a" ), "*," ) ); + assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "a" ), "*" ) ); + assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "a" ), "*," ) ); + assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "a" ), ",*," ) ); + assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "a" ), "*," ) ); - assertTrue( mirrorBuilder.matchPattern( getRepo( "a" ), "a" ) ); - assertTrue( mirrorBuilder.matchPattern( getRepo( "a" ), "a," ) ); - assertTrue( mirrorBuilder.matchPattern( getRepo( "a" ), ",a," ) ); - assertTrue( mirrorBuilder.matchPattern( getRepo( "a" ), "a," ) ); + assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "a" ), "a" ) ); + assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "a" ), "a," ) ); + assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "a" ), ",a," ) ); + assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "a" ), "a," ) ); - assertFalse( mirrorBuilder.matchPattern( getRepo( "b" ), "a" ) ); - assertFalse( mirrorBuilder.matchPattern( getRepo( "b" ), "a," ) ); - assertFalse( mirrorBuilder.matchPattern( getRepo( "b" ), ",a" ) ); - assertFalse( mirrorBuilder.matchPattern( getRepo( "b" ), ",a," ) ); + assertFalse( DefaultMirrorBuilder.matchPattern( getRepo( "b" ), "a" ) ); + assertFalse( DefaultMirrorBuilder.matchPattern( getRepo( "b" ), "a," ) ); + assertFalse( DefaultMirrorBuilder.matchPattern( getRepo( "b" ), ",a" ) ); + assertFalse( DefaultMirrorBuilder.matchPattern( getRepo( "b" ), ",a," ) ); - assertTrue( mirrorBuilder.matchPattern( getRepo( "a" ), "a,b" ) ); - assertTrue( mirrorBuilder.matchPattern( getRepo( "b" ), "a,b" ) ); + assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "a" ), "a,b" ) ); + assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "b" ), "a,b" ) ); - assertFalse( mirrorBuilder.matchPattern( getRepo( "c" ), "a,b" ) ); + assertFalse( DefaultMirrorBuilder.matchPattern( getRepo( "c" ), "a,b" ) ); - assertTrue( mirrorBuilder.matchPattern( getRepo( "a" ), "*" ) ); - assertTrue( mirrorBuilder.matchPattern( getRepo( "a" ), "*,b" ) ); - assertTrue( mirrorBuilder.matchPattern( getRepo( "a" ), "*,!b" ) ); + assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "a" ), "*" ) ); + assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "a" ), "*,b" ) ); + assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "a" ), "*,!b" ) ); - assertFalse( mirrorBuilder.matchPattern( getRepo( "a" ), "*,!a" ) ); - assertFalse( mirrorBuilder.matchPattern( getRepo( "a" ), "!a,*" ) ); + assertFalse( DefaultMirrorBuilder.matchPattern( getRepo( "a" ), "*,!a" ) ); + assertFalse( DefaultMirrorBuilder.matchPattern( getRepo( "a" ), "!a,*" ) ); - assertTrue( mirrorBuilder.matchPattern( getRepo( "c" ), "*,!a" ) ); - assertTrue( mirrorBuilder.matchPattern( getRepo( "c" ), "!a,*" ) ); + assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "c" ), "*,!a" ) ); + assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "c" ), "!a,*" ) ); - assertFalse( mirrorBuilder.matchPattern( getRepo( "c" ), "!a,!c" ) ); - assertFalse( mirrorBuilder.matchPattern( getRepo( "d" ), "!a,!c*" ) ); + assertFalse( DefaultMirrorBuilder.matchPattern( getRepo( "c" ), "!a,!c" ) ); + assertFalse( DefaultMirrorBuilder.matchPattern( getRepo( "d" ), "!a,!c*" ) ); } public void testPatternsWithExternal() { - assertTrue( mirrorBuilder.matchPattern( getRepo( "a", "http://localhost" ), "*" ) ); - assertFalse( mirrorBuilder.matchPattern( getRepo( "a", "http://localhost" ), "external:*" ) ); + assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "a", "http://localhost" ), "*" ) ); + assertFalse( DefaultMirrorBuilder.matchPattern( getRepo( "a", "http://localhost" ), "external:*" ) ); - assertTrue( mirrorBuilder.matchPattern( getRepo( "a", "http://localhost" ), "external:*,a" ) ); - assertFalse( mirrorBuilder.matchPattern( getRepo( "a", "http://localhost" ), "external:*,!a" ) ); - assertTrue( mirrorBuilder.matchPattern( getRepo( "a", "http://localhost" ), "a,external:*" ) ); - assertFalse( mirrorBuilder.matchPattern( getRepo( "a", "http://localhost" ), "!a,external:*" ) ); + assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "a", "http://localhost" ), "external:*,a" ) ); + assertFalse( DefaultMirrorBuilder.matchPattern( getRepo( "a", "http://localhost" ), "external:*,!a" ) ); + assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "a", "http://localhost" ), "a,external:*" ) ); + assertFalse( DefaultMirrorBuilder.matchPattern( getRepo( "a", "http://localhost" ), "!a,external:*" ) ); - assertFalse( mirrorBuilder.matchPattern( getRepo( "c", "http://localhost" ), "!a,external:*" ) ); - assertTrue( mirrorBuilder.matchPattern( getRepo( "c", "http://somehost" ), "!a,external:*" ) ); - } + assertFalse( DefaultMirrorBuilder.matchPattern( getRepo( "c", "http://localhost" ), "!a,external:*" ) ); + assertTrue( DefaultMirrorBuilder.matchPattern( getRepo( "c", "http://somehost" ), "!a,external:*" ) ); + } public void testMirrorProperUrlAndProtocolAndBasedir() { @@ -192,7 +212,7 @@ public class MirrorProcessorTest /** * Build an ArtifactRepository object. - * + * * @param id * @param url * @return @@ -204,12 +224,12 @@ public class MirrorProcessorTest /** * Build an ArtifactRepository object. - * + * * @param id * @return */ private ArtifactRepository getRepo( String id ) { return getRepo( id, "http://something" ); - } + } } diff --git a/maven-compat/src/test/java/org/apache/maven/repository/legacy/DefaultWagonManagerTest.java b/maven-compat/src/test/java/org/apache/maven/repository/legacy/DefaultWagonManagerTest.java index 09c16d7bee..2eedd9e36f 100644 --- a/maven-compat/src/test/java/org/apache/maven/repository/legacy/DefaultWagonManagerTest.java +++ b/maven-compat/src/test/java/org/apache/maven/repository/legacy/DefaultWagonManagerTest.java @@ -34,10 +34,6 @@ import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy; import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout; import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout; import org.apache.maven.artifact.versioning.VersionRange; -import org.apache.maven.repository.legacy.ChecksumFailedException; -import org.apache.maven.repository.legacy.DefaultWagonManager; -import org.apache.maven.repository.legacy.UpdateCheckManager; -import org.apache.maven.repository.legacy.WagonManager; import org.apache.maven.wagon.ResourceDoesNotExistException; import org.apache.maven.wagon.TransferFailedException; import org.apache.maven.wagon.UnsupportedProtocolException; @@ -63,48 +59,59 @@ public class DefaultWagonManagerTest private TransferListener transferListener = new Debug(); private ArtifactFactory artifactFactory; - + private ArtifactRepositoryFactory artifactRepositoryFactory; protected void setUp() throws Exception { super.setUp(); - wagonManager = (DefaultWagonManager) lookup( WagonManager.class ); + wagonManager = (DefaultWagonManager) lookup( WagonManager.class ); artifactFactory = lookup( ArtifactFactory.class ); artifactRepositoryFactory = lookup( ArtifactRepositoryFactory.class ); } - + @Override - protected void tearDown() throws Exception { - wagonManager = null; - artifactFactory = null; - super.tearDown(); + protected void tearDown() + throws Exception + { + wagonManager = null; + artifactFactory = null; + super.tearDown(); } - - public void testUnnecessaryRepositoryLookup() throws Exception { + + public void testUnnecessaryRepositoryLookup() + throws Exception + { Artifact artifact = createTestPomArtifact( "target/test-data/get-missing-pom" ); List repos = new ArrayList(); - repos.add(artifactRepositoryFactory.createArtifactRepository( "repo1", "string://url1", new ArtifactRepositoryLayoutStub(), null, null )); - repos.add(artifactRepositoryFactory.createArtifactRepository( "repo2", "string://url2", new ArtifactRepositoryLayoutStub(), null, null )); + repos.add( artifactRepositoryFactory.createArtifactRepository( "repo1", "string://url1", + new ArtifactRepositoryLayoutStub(), null, null ) ); + repos.add( artifactRepositoryFactory.createArtifactRepository( "repo2", "string://url2", + new ArtifactRepositoryLayoutStub(), null, null ) ); StringWagon wagon = (StringWagon) wagonManager.getWagon( "string" ); - wagon.addExpectedContent( repos.get(0).getLayout().pathOf( artifact ), "expected" ); - wagon.addExpectedContent( repos.get(1).getLayout().pathOf( artifact ), "expected" ); - - class TransferListener extends AbstractTransferListener { - public List events = new ArrayList(); - @Override - public void transferInitiated(TransferEvent transferEvent) { - events.add(transferEvent); - } - }; + wagon.addExpectedContent( repos.get( 0 ).getLayout().pathOf( artifact ), "expected" ); + wagon.addExpectedContent( repos.get( 1 ).getLayout().pathOf( artifact ), "expected" ); + + class TransferListener + extends AbstractTransferListener + { + public List events = new ArrayList(); + + @Override + public void transferInitiated( TransferEvent transferEvent ) + { + events.add( transferEvent ); + } + } + TransferListener listener = new TransferListener(); wagonManager.getArtifact( artifact, repos, listener ); - assertEquals(1, listener.events.size()); + assertEquals( 1, listener.events.size() ); } - + public void testGetPomExistsLocallyForced() throws IOException, TransferFailedException, ResourceDoesNotExistException, UnsupportedProtocolException { @@ -131,43 +138,43 @@ public class DefaultWagonManagerTest public void testGetMissingJar() throws TransferFailedException, UnsupportedProtocolException, IOException { Artifact artifact = createTestArtifact( "target/test-data/get-missing-jar", "jar" ); - + ArtifactRepository repo = createStringRepo(); - + try { wagonManager.getArtifact( artifact, repo, null ); - + fail(); } catch ( ResourceDoesNotExistException e ) { assertTrue( true ); } - + assertFalse( artifact.getFile().exists() ); } public void testGetMissingJarForced() throws TransferFailedException, UnsupportedProtocolException, IOException { Artifact artifact = createTestArtifact( "target/test-data/get-missing-jar", "jar" ); - + ArtifactRepository repo = createStringRepo(); - + try { wagonManager.getArtifact( artifact, repo, null ); - + fail(); } catch ( ResourceDoesNotExistException e ) { assertTrue( true ); } - + assertFalse( artifact.getFile().exists() ); } - + public void testGetRemoteJar() throws TransferFailedException, ResourceDoesNotExistException, UnsupportedProtocolException, IOException, AuthorizationException @@ -249,10 +256,10 @@ public class DefaultWagonManagerTest { return artifactRepositoryFactory.createArtifactRepository( "id", "string://url", new ArtifactRepositoryLayoutStub(), null, null ); } - + /** * Build an ArtifactRepository object. - * + * * @param id * @param url * @return @@ -264,7 +271,7 @@ public class DefaultWagonManagerTest /** * Build an ArtifactRepository object. - * + * * @param id * @return */ @@ -311,7 +318,7 @@ public class DefaultWagonManagerTest /* getArtifact */ assertFalse( "Transfer listener is registered before test", wagon.getTransferEventSupport().hasTransferListener( transferListener ) ); - wagonManager.getArtifact( artifact, repo, transferListener); + wagonManager.getArtifact( artifact, repo, transferListener ); assertFalse( "Transfer listener still registered after getArtifact", wagon.getTransferEventSupport().hasTransferListener( transferListener ) ); @@ -331,16 +338,16 @@ public class DefaultWagonManagerTest throws Exception { ArtifactRepositoryPolicy policy = new ArtifactRepositoryPolicy( true, ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS, ArtifactRepositoryPolicy.CHECKSUM_POLICY_FAIL ); - + ArtifactRepository repo = artifactRepositoryFactory.createArtifactRepository( "id", "string://url", new ArtifactRepositoryLayoutStub(), policy, policy ); Artifact artifact = new DefaultArtifact( "sample.group", "sample-art", VersionRange.createFromVersion( "1.0" ), "scope", "jar", "classifier", null ); - artifact.setFile( getTestFile( "target/sample-art" ) ); + artifact.setFile( getTestFile( "target/sample-art" ) ); StringWagon wagon = (StringWagon) wagonManager.getWagon( "string" ); - + wagon.clearExpectedContent(); wagon.addExpectedContent( "path", "lower-case-checksum" ); wagon.addExpectedContent( "path.sha1", "2a25dc564a3b34f68237fc849066cbc7bb7a36a1" ); @@ -437,7 +444,7 @@ public class DefaultWagonManagerTest { return "test"; } - + public String pathOfRemoteRepositoryMetadata( ArtifactMetadata metadata ) { return "path"; diff --git a/maven-compat/src/test/java/org/apache/maven/repository/legacy/resolver/DefaultArtifactCollectorTest.java b/maven-compat/src/test/java/org/apache/maven/repository/legacy/resolver/DefaultArtifactCollectorTest.java index 75efe664e9..18e61653e8 100644 --- a/maven-compat/src/test/java/org/apache/maven/repository/legacy/resolver/DefaultArtifactCollectorTest.java +++ b/maven-compat/src/test/java/org/apache/maven/repository/legacy/resolver/DefaultArtifactCollectorTest.java @@ -48,7 +48,6 @@ import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException import org.apache.maven.artifact.versioning.OverConstrainedVersionException; import org.apache.maven.artifact.versioning.VersionRange; import org.apache.maven.repository.legacy.metadata.MetadataResolutionRequest; -import org.apache.maven.repository.legacy.resolver.LegacyArtifactCollector; import org.codehaus.plexus.PlexusTestCase; /** @@ -84,10 +83,12 @@ public class DefaultArtifactCollectorTest } @Override - protected void tearDown() throws Exception { - artifactCollector = null; - artifactFactory = null; - super.tearDown(); + protected void tearDown() + throws Exception + { + artifactCollector = null; + artifactFactory = null; + super.tearDown(); } // works, but we don't fail on cycles presently @@ -738,7 +739,7 @@ public class DefaultArtifactCollectorTest private ArtifactResolutionResult collect( Set artifacts, ArtifactFilter filter ) throws ArtifactResolutionException - { + { return artifactCollector.collect( artifacts, projectArtifact.artifact, null, null, null, source, filter, Collections.EMPTY_LIST, null ); }