You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2008/05/22 07:15:04 UTC
svn commit: r659009 [2/2] - in /maven/artifact/branches/CAP: ./
src/main/java/org/apache/maven/artifact/
src/main/java/org/apache/maven/artifact/manager/
src/main/java/org/apache/maven/artifact/repository/
src/main/java/org/apache/maven/artifact/reposi...
Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolver.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolver.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolver.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolver.java Wed May 21 22:15:02 2008
@@ -23,6 +23,7 @@
import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+import org.apache.maven.artifact.resolver.conflict.ConflictResolver;
import java.util.List;
import java.util.Map;
@@ -48,79 +49,79 @@
throws ArtifactResolutionException, ArtifactNotFoundException;
/** @deprecated use {@link #resolve(ArtifactResolutionRequest)} */
- ArtifactResolutionResult resolveTransitively( Set artifacts,
+ ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts,
Artifact originatingArtifact,
- List remoteRepositories,
+ List<ArtifactRepository> remoteRepositories,
ArtifactRepository localRepository,
ArtifactMetadataSource source )
throws ArtifactResolutionException, ArtifactNotFoundException;
/** @deprecated use {@link #resolve(ArtifactResolutionRequest)} */
- ArtifactResolutionResult resolveTransitively( Set artifacts,
+ ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts,
Artifact originatingArtifact,
- List remoteRepositories,
+ List<ArtifactRepository> remoteRepositories,
ArtifactRepository localRepository,
ArtifactMetadataSource source,
- List listeners )
+ List<ResolutionListener> listeners )
throws ArtifactResolutionException, ArtifactNotFoundException;
/** @deprecated use {@link #resolve(ArtifactResolutionRequest)} */
- ArtifactResolutionResult resolveTransitively( Set artifacts,
+ ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts,
Artifact originatingArtifact,
ArtifactRepository localRepository,
- List remoteRepositories,
+ List<ArtifactRepository> remoteRepositories,
ArtifactMetadataSource source,
ArtifactFilter filter )
throws ArtifactResolutionException, ArtifactNotFoundException;
/** @deprecated use {@link #resolve(ArtifactResolutionRequest)} */
- ArtifactResolutionResult resolveTransitively( Set artifacts,
+ ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts,
Artifact originatingArtifact,
Map managedVersions,
ArtifactRepository localRepository,
- List remoteRepositories,
+ List<ArtifactRepository> remoteRepositories,
ArtifactMetadataSource source )
throws ArtifactResolutionException, ArtifactNotFoundException;
/** @deprecated use {@link #resolve(ArtifactResolutionRequest)} */
- ArtifactResolutionResult resolveTransitively( Set artifacts,
+ ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts,
Artifact originatingArtifact,
Map managedVersions,
ArtifactRepository localRepository,
- List remoteRepositories,
+ List<ArtifactRepository> remoteRepositories,
ArtifactMetadataSource source,
ArtifactFilter filter )
throws ArtifactResolutionException, ArtifactNotFoundException;
/** @deprecated use {@link #resolve(ArtifactResolutionRequest)} */
- ArtifactResolutionResult resolveTransitively( Set artifacts,
+ ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts,
Artifact originatingArtifact,
Map managedVersions,
ArtifactRepository localRepository,
- List remoteRepositories,
+ List<ArtifactRepository> remoteRepositories,
ArtifactMetadataSource source,
ArtifactFilter filter,
- List listeners )
+ List<ResolutionListener> listeners )
throws ArtifactResolutionException, ArtifactNotFoundException;
/**
* @since 3.0
* @deprecated use {@link #resolve(ArtifactResolutionRequest)}
*/
- ArtifactResolutionResult resolveTransitively( Set artifacts,
+ ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts,
Artifact originatingArtifact,
Map managedVersions,
ArtifactRepository localRepository,
- List remoteRepositories,
+ List<ArtifactRepository> remoteRepositories,
ArtifactMetadataSource source,
ArtifactFilter filter,
- List listeners,
- List conflictResolvers )
+ List<ResolutionListener> listeners,
+ List<ConflictResolver> conflictResolvers )
throws ArtifactResolutionException, ArtifactNotFoundException;
/** @deprecated use {@link #resolve(ArtifactResolutionRequest)} */
void resolveAlways( Artifact artifact,
- List remoteRepositories,
+ List<ArtifactRepository> remoteRepositories,
ArtifactRepository localRepository )
throws ArtifactResolutionException, ArtifactNotFoundException;
Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/DebugResolutionListener.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/DebugResolutionListener.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/DebugResolutionListener.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/DebugResolutionListener.java Wed May 21 22:15:02 2008
@@ -40,7 +40,7 @@
private String indent = "";
- private static Set ignoredArtifacts = new HashSet();
+ private static Set<Artifact> ignoredArtifacts = new HashSet<Artifact>();
public DebugResolutionListener( Logger logger )
{
Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/ResolutionNode.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/ResolutionNode.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/ResolutionNode.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/ResolutionNode.java Wed May 21 22:15:02 2008
@@ -20,7 +20,9 @@
*/
import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+import org.apache.maven.artifact.versioning.ArtifactVersion;
import org.apache.maven.artifact.versioning.OverConstrainedVersionException;
import java.util.ArrayList;
@@ -34,9 +36,9 @@
{
private final Artifact artifact;
- private List children;
+ private List<ResolutionNode> children;
- private final List parents;
+ private final List<Object> parents;
private final int depth;
@@ -46,16 +48,16 @@
private boolean active = true;
- private List trail;
+ private List<Artifact> trail;
public ResolutionNode( Artifact artifact,
List remoteRepositories )
{
this.artifact = artifact;
this.remoteRepositories = remoteRepositories;
- this.depth = 0;
- this.parents = Collections.EMPTY_LIST;
- this.parent = null;
+ depth = 0;
+ parents = Collections.emptyList();
+ parent = null;
}
public ResolutionNode( Artifact artifact,
@@ -64,13 +66,13 @@
{
this.artifact = artifact;
this.remoteRepositories = remoteRepositories;
- this.depth = parent.depth + 1;
- this.parents = new ArrayList();
- this.parents.addAll( parent.parents );
- this.parents.add( parent.getKey() );
+ depth = parent.depth + 1;
+ parents = new ArrayList<Object>();
+ parents.addAll( parent.parents );
+ parents.add( parent.getKey() );
this.parent = parent;
}
-
+
public Artifact getArtifact()
{
return artifact;
@@ -81,56 +83,56 @@
return artifact.getDependencyConflictId();
}
- public void addDependencies( Set artifacts,
- List remoteRepositories,
+ public void addDependencies( Set<Artifact> artifacts,
+ List<ArtifactRepository> remoteRepositories,
ArtifactFilter filter )
throws CyclicDependencyException, OverConstrainedVersionException
{
if ( !artifacts.isEmpty() )
{
- children = new ArrayList( artifacts.size() );
-
- for ( Iterator i = artifacts.iterator(); i.hasNext(); )
- {
- Artifact a = (Artifact) i.next();
+ children = new ArrayList<ResolutionNode>( artifacts.size() );
- if ( parents.contains( a.getDependencyConflictId() ) )
- {
- a.setDependencyTrail( getDependencyTrail() );
+ for (Artifact a : artifacts) {
+ if (parents.contains(a.getDependencyConflictId())) {
+ a.setDependencyTrail(getDependencyTrail());
- throw new CyclicDependencyException( "A dependency has introduced a cycle", a );
+ throw new CyclicDependencyException("A dependency has introduced a cycle", a);
}
- children.add( new ResolutionNode( a, remoteRepositories, this ) );
+ children.add(new ResolutionNode(a, remoteRepositories, this));
}
}
else
{
- children = Collections.EMPTY_LIST;
+ children = Collections.emptyList();
}
trail = null;
}
- public List getDependencyTrail()
+ /**
+ * @return {@link List} < {@link String} > with artifact ids
+ * @throws OverConstrainedVersionException
+ */
+ public List<String> getDependencyTrail()
throws OverConstrainedVersionException
{
- List trial = getTrail();
+ List<Artifact> trial = getTrail();
- List ret = new ArrayList( trial.size() );
- for ( Iterator i = trial.iterator(); i.hasNext(); )
- {
- Artifact artifact = (Artifact) i.next();
- ret.add( artifact.getId() );
+ List<String> ret = new ArrayList<String>( trial.size() );
+
+ for (Artifact artifact : trial) {
+ ret.add(artifact.getId());
}
+
return ret;
}
- private List getTrail()
+ private List<Artifact> getTrail()
throws OverConstrainedVersionException
{
if ( trail == null )
{
- List ids = new LinkedList();
+ List<Artifact> ids = new LinkedList<Artifact>();
ResolutionNode node = this;
while ( node != null )
{
@@ -138,8 +140,17 @@
if ( artifact.getVersion() == null )
{
// set the recommended version
- String version = artifact.getSelectedVersion().toString();
- artifact.selectVersion( version );
+ ArtifactVersion selected = artifact.getSelectedVersion();
+ //MNG-2123: null is a valid response to getSelectedVersion, don't
+ //assume it won't ever be.
+ if (selected != null)
+ {
+ artifact.selectVersion( selected.toString() );
+ }
+ else
+ {
+ throw new OverConstrainedVersionException("Unable to get a selected Version for "+ artifact.getArtifactId(),artifact);
+ }
}
ids.add( 0, artifact );
@@ -156,8 +167,7 @@
}
/**
- * test whether the node is direct or transitive dependency.
- * @return
+ * Test whether the node is direct or transitive dependency.
*/
public boolean isChildOfRootNode()
{
@@ -186,13 +196,12 @@
public void enable()
{
- this.active = true;
+ active = true;
+
// TODO: if it was null, we really need to go find them now... or is this taken care of by the ordering?
if ( children != null )
{
- for ( Iterator i = children.iterator(); i.hasNext(); )
- {
- ResolutionNode node = (ResolutionNode) i.next();
+ for (ResolutionNode node : children) {
node.enable();
}
}
@@ -200,12 +209,10 @@
public void disable()
{
- this.active = false;
+ active = false;
if ( children != null )
{
- for ( Iterator i = children.iterator(); i.hasNext(); )
- {
- ResolutionNode node = (ResolutionNode) i.next();
+ for (ResolutionNode node : children) {
node.disable();
}
}
@@ -229,6 +236,7 @@
return success;
}
+ @Override
public String toString()
{
return artifact.toString() + " (" + depth + "; " + ( active ? "enabled" : "disabled" ) + ")";
Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/UnresolvedArtifacts.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/UnresolvedArtifacts.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/UnresolvedArtifacts.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/UnresolvedArtifacts.java Wed May 21 22:15:02 2008
@@ -1,6 +1,7 @@
package org.apache.maven.artifact.resolver;
import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
import java.util.List;
@@ -14,13 +15,13 @@
{
private Artifact originatingArtifact;
- private List artifacts;
+ private List<Artifact> artifacts;
- private List remoteRepositories;
+ private List<ArtifactRepository> remoteRepositories;
public UnresolvedArtifacts( Artifact originatingArtifact,
- List artifacts,
- List remoteRepositories )
+ List<Artifact> artifacts,
+ List<ArtifactRepository> remoteRepositories )
{
this.originatingArtifact = originatingArtifact;
Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/conflict/DefaultGraphConflictResolver.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/conflict/DefaultGraphConflictResolver.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/conflict/DefaultGraphConflictResolver.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/conflict/DefaultGraphConflictResolver.java Wed May 21 22:15:02 2008
@@ -19,20 +19,16 @@
* under the License.
*/
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeSet;
-
import org.apache.maven.artifact.ArtifactScopeEnum;
import org.apache.maven.artifact.resolver.metadata.ArtifactMetadata;
import org.apache.maven.artifact.resolver.metadata.MetadataGraph;
import org.apache.maven.artifact.resolver.metadata.MetadataGraphEdge;
import org.apache.maven.artifact.resolver.metadata.MetadataGraphVertex;
import org.apache.maven.artifact.resolver.metadata.MetadataResolutionException;
-import org.apache.maven.artifact.versioning.ArtifactVersion;
-import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.TreeSet;
/**
* Default conflict resolver.Implements closer newer first policy
Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/conflict/GraphConflictResolutionException.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/conflict/GraphConflictResolutionException.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/conflict/GraphConflictResolutionException.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/conflict/GraphConflictResolutionException.java Wed May 21 22:15:02 2008
@@ -10,9 +10,6 @@
public class GraphConflictResolutionException
extends Exception
{
- /**
- *
- */
private static final long serialVersionUID = 2677613140287940255L;
public GraphConflictResolutionException()
Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/AndArtifactFilter.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/AndArtifactFilter.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/AndArtifactFilter.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/AndArtifactFilter.java Wed May 21 22:15:02 2008
@@ -34,7 +34,7 @@
public class AndArtifactFilter
implements ArtifactFilter
{
- private final List filters = new ArrayList();
+ private final List<ArtifactFilter> filters = new ArrayList<ArtifactFilter>();
public boolean include( Artifact artifact )
{
Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/ExcludesArtifactFilter.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/ExcludesArtifactFilter.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/ExcludesArtifactFilter.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/ExcludesArtifactFilter.java Wed May 21 22:15:02 2008
@@ -33,7 +33,7 @@
public class ExcludesArtifactFilter
extends IncludesArtifactFilter
{
- public ExcludesArtifactFilter( List patterns )
+ public ExcludesArtifactFilter( List<String> patterns )
{
super( patterns );
}
Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/ExclusionSetFilter.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/ExclusionSetFilter.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/ExclusionSetFilter.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/ExclusionSetFilter.java Wed May 21 22:15:02 2008
@@ -32,25 +32,20 @@
public class ExclusionSetFilter
implements ArtifactFilter
{
- private Set excludes;
+ private Set<String> excludes;
public ExclusionSetFilter( String[] excludes )
{
- this.excludes = new HashSet( Arrays.asList( excludes ) );
+ this.excludes = new HashSet<String>( Arrays.asList( excludes ) );
}
- public ExclusionSetFilter( Set excludes )
+ public ExclusionSetFilter( Set<String> excludes )
{
this.excludes = excludes;
}
public boolean include( Artifact artifact )
{
- if ( excludes.contains( artifact.getArtifactId() ) )
- {
- return false;
- }
-
- return true;
+ return !excludes.contains(artifact.getArtifactId());
}
}
Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/IncludesArtifactFilter.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/IncludesArtifactFilter.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/IncludesArtifactFilter.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/IncludesArtifactFilter.java Wed May 21 22:15:02 2008
@@ -33,9 +33,9 @@
public class IncludesArtifactFilter
implements ArtifactFilter
{
- private final List patterns;
+ private final List<String> patterns;
- public IncludesArtifactFilter( List patterns )
+ public IncludesArtifactFilter( List<String> patterns )
{
this.patterns = patterns;
}
Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/InversionArtifactFilter.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/InversionArtifactFilter.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/InversionArtifactFilter.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/InversionArtifactFilter.java Wed May 21 22:15:02 2008
@@ -24,7 +24,6 @@
public class InversionArtifactFilter
implements ArtifactFilter
{
-
private final ArtifactFilter toInvert;
public InversionArtifactFilter( ArtifactFilter toInvert )
@@ -36,5 +35,4 @@
{
return !toInvert.include( artifact );
}
-
}
Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/AbstractVersionTransformation.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/AbstractVersionTransformation.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/AbstractVersionTransformation.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/AbstractVersionTransformation.java Wed May 21 22:15:02 2008
@@ -53,7 +53,7 @@
protected String resolveVersion( Artifact artifact,
ArtifactRepository localRepository,
- List remoteRepositories )
+ List<ArtifactRepository> remoteRepositories )
throws RepositoryMetadataResolutionException
{
RepositoryMetadata metadata;
Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformation.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformation.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformation.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformation.java Wed May 21 22:15:02 2008
@@ -46,7 +46,7 @@
* @param localRepository the local repository
*/
void transformForResolve( Artifact artifact,
- List remoteRepositories,
+ List<ArtifactRepository> remoteRepositories,
ArtifactRepository localRepository )
throws ArtifactResolutionException, ArtifactNotFoundException;
Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformationManager.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformationManager.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformationManager.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformationManager.java Wed May 21 22:15:02 2008
@@ -43,7 +43,7 @@
* @param localRepository the local repository
*/
void transformForResolve( Artifact artifact,
- List remoteRepositories,
+ List<ArtifactRepository> remoteRepositories,
ArtifactRepository localRepository )
throws ArtifactResolutionException, ArtifactNotFoundException;
Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/DefaultArtifactTransformationManager.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/DefaultArtifactTransformationManager.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/DefaultArtifactTransformationManager.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/DefaultArtifactTransformationManager.java Wed May 21 22:15:02 2008
@@ -41,17 +41,14 @@
* role="org.apache.maven.artifact.transform.ArtifactTransformation"
* role-hints="release,latest,snapshot"
*/
- private List artifactTransformations;
+ private List<ArtifactTransformation> artifactTransformations;
public void transformForResolve( Artifact artifact,
- List remoteRepositories,
+ List<ArtifactRepository> remoteRepositories,
ArtifactRepository localRepository )
throws ArtifactResolutionException, ArtifactNotFoundException
{
- for ( Iterator i = artifactTransformations.iterator(); i.hasNext(); )
- {
- ArtifactTransformation transform = (ArtifactTransformation) i.next();
-
+ for (ArtifactTransformation transform : artifactTransformations) {
transform.transformForResolve( artifact, remoteRepositories, localRepository );
}
}
@@ -60,9 +57,7 @@
ArtifactRepository localRepository )
throws ArtifactInstallationException
{
- for ( Iterator i = artifactTransformations.iterator(); i.hasNext(); )
- {
- ArtifactTransformation transform = (ArtifactTransformation) i.next();
+ for (ArtifactTransformation transform : artifactTransformations) {
transform.transformForInstall( artifact, localRepository );
}
}
@@ -72,9 +67,7 @@
ArtifactRepository localRepository )
throws ArtifactDeploymentException
{
- for ( Iterator i = artifactTransformations.iterator(); i.hasNext(); )
- {
- ArtifactTransformation transform = (ArtifactTransformation) i.next();
+ for (ArtifactTransformation transform : artifactTransformations) {
transform.transformForDeployment( artifact, remoteRepository, localRepository );
}
}
Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/DefaultClasspathTransformation.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/DefaultClasspathTransformation.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/DefaultClasspathTransformation.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/DefaultClasspathTransformation.java Wed May 21 22:15:02 2008
@@ -4,8 +4,6 @@
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
-import java.util.Map;
-import java.util.TreeSet;
import org.apache.maven.artifact.ArtifactScopeEnum;
import org.apache.maven.artifact.resolver.conflict.GraphConflictResolutionException;
Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/LatestArtifactTransformation.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/LatestArtifactTransformation.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/LatestArtifactTransformation.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/LatestArtifactTransformation.java Wed May 21 22:15:02 2008
@@ -33,7 +33,7 @@
extends AbstractVersionTransformation
{
public void transformForResolve( Artifact artifact,
- List remoteRepositories,
+ List<ArtifactRepository> remoteRepositories,
ArtifactRepository localRepository )
throws ArtifactResolutionException, ArtifactNotFoundException
{
Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/MetadataGraphTransformationException.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/MetadataGraphTransformationException.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/MetadataGraphTransformationException.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/MetadataGraphTransformationException.java Wed May 21 22:15:02 2008
@@ -5,12 +5,8 @@
*
*/
public class MetadataGraphTransformationException
-extends Exception
+ extends Exception
{
-
- /**
- *
- */
private static final long serialVersionUID = -4029897098314019152L;
public MetadataGraphTransformationException()
Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/ReleaseArtifactTransformation.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/ReleaseArtifactTransformation.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/ReleaseArtifactTransformation.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/ReleaseArtifactTransformation.java Wed May 21 22:15:02 2008
@@ -41,7 +41,7 @@
extends AbstractVersionTransformation
{
public void transformForResolve( Artifact artifact,
- List remoteRepositories,
+ List<ArtifactRepository> remoteRepositories,
ArtifactRepository localRepository )
throws ArtifactResolutionException, ArtifactNotFoundException
{
Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/SnapshotTransformation.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/SnapshotTransformation.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/SnapshotTransformation.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/SnapshotTransformation.java Wed May 21 22:15:02 2008
@@ -54,7 +54,7 @@
public void transformForResolve( Artifact artifact,
- List remoteRepositories,
+ List<ArtifactRepository> remoteRepositories,
ArtifactRepository localRepository )
throws ArtifactResolutionException
{
Added: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java?rev=659009&view=auto
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java (added)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java Wed May 21 22:15:02 2008
@@ -0,0 +1,434 @@
+package org.apache.maven.artifact.versioning;
+
+/*
+ * 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.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Properties;
+import java.util.Locale;
+import java.util.Stack;
+
+/**
+ * Generic implementation of version comparison.
+ *
+ * @author <a href="mailto:kenney@apache.org">Kenney Westerhof</a>
+ * @author <a href="mailto:hboutemy@apache.org">Herve Boutemy</a>
+ * @version $Id$
+ */
+public class ComparableVersion
+ implements Comparable
+{
+ private String value;
+
+ private String canonical;
+
+ private ListItem items;
+
+ private interface Item
+ {
+ public static final int INTEGER_ITEM = 0;
+ public static final int STRING_ITEM = 1;
+ public static final int LIST_ITEM = 2;
+
+ public int compareTo( Item item );
+
+ public int getType();
+
+ public boolean isNull();
+ }
+
+ /**
+ * Represents a numeric item in the version item list.
+ */
+ private static class IntegerItem
+ implements Item
+ {
+ private Integer value;
+
+ public IntegerItem( Integer i )
+ {
+ this.value = i;
+ }
+
+ public int getType()
+ {
+ return INTEGER_ITEM;
+ }
+
+ public boolean isNull()
+ {
+ return (value == 0 );
+ }
+
+ public int compareTo( Item item )
+ {
+ if ( item == null )
+ {
+ return value == 0 ? 0 : 1; // 1.0 == 1, 1.1 > 1
+ }
+
+ switch ( item.getType() )
+ {
+ case INTEGER_ITEM:
+ return value.compareTo( ( (IntegerItem) item ).value );
+
+ case STRING_ITEM:
+ return 1; // 1.1 > 1-sp
+
+ case LIST_ITEM:
+ return 1; // 1.1 > 1-1
+
+ default:
+ throw new RuntimeException( "invalid item: " + item.getClass() );
+ }
+ }
+
+ public String toString()
+ {
+ return value.toString();
+ }
+ }
+
+ /**
+ * Represents a string in the version item list, usually a qualifier.
+ */
+ private static class StringItem
+ implements Item
+ {
+ private final static String[] QUALIFIERS = { "snapshot", "alpha", "beta", "milestone", "rc", "", "sp" };
+
+ private final static List _QUALIFIERS = Arrays.asList( QUALIFIERS );
+
+ private final static Properties ALIASES = new Properties();
+ static {
+ ALIASES.put( "ga", "" );
+ ALIASES.put( "final", "" );
+ ALIASES.put( "cr", "rc" );
+ }
+ /**
+ * A comparable for the empty-string qualifier. This one is used to determine if a given qualifier makes the
+ * version older than one without a qualifier, or more recent.
+ */
+ private static Comparable RELEASE_VERSION_INDEX = String.valueOf( _QUALIFIERS.indexOf( "" ) );
+
+ private String value;
+
+ public StringItem( String value, boolean followedByDigit )
+ {
+ if ( followedByDigit && value.length() == 1 )
+ {
+ // a1 = alpha-1, b1 = beta-1, m1 = milestone-1
+ switch ( value.charAt( 0 ) )
+ {
+ case 'a':
+ value = "alpha";
+ break;
+ case 'b':
+ value = "beta";
+ break;
+ case 'm':
+ value = "milestone";
+ break;
+ }
+ }
+ this.value = ALIASES.getProperty( value , value );
+ }
+
+ public int getType()
+ {
+ return STRING_ITEM;
+ }
+
+ public boolean isNull()
+ {
+ return ( comparableQualifier( value ).compareTo( RELEASE_VERSION_INDEX ) == 0 );
+ }
+
+ /**
+ * Returns a comparable for a qualifier.
+ *
+ * This method both takes into account the ordering of known qualifiers as well as lexical ordering for unknown
+ * qualifiers.
+ *
+ * just returning an Integer with the index here is faster, but requires a lot of if/then/else to check for -1
+ * or QUALIFIERS.size and then resort to lexical ordering. Most comparisons are decided by the first character,
+ * so this is still fast. If more characters are needed then it requires a lexical sort anyway.
+ *
+ * @param qualifier
+ * @return
+ */
+ public static Comparable comparableQualifier( String qualifier )
+ {
+ int i = _QUALIFIERS.indexOf( qualifier );
+
+ return i == -1 ? _QUALIFIERS.size() + "-" + qualifier : String.valueOf( i );
+ }
+
+ public int compareTo( Item item )
+ {
+ if ( item == null )
+ {
+ // 1-rc < 1, 1-ga > 1
+ return comparableQualifier( value ).compareTo( RELEASE_VERSION_INDEX );
+ }
+ switch ( item.getType() )
+ {
+ case INTEGER_ITEM:
+ return -1; // 1.any < 1.1 ?
+
+ case STRING_ITEM:
+ return comparableQualifier( value ).compareTo( comparableQualifier( ( (StringItem) item ).value ) );
+
+ case LIST_ITEM:
+ return -1; // 1.any < 1-1
+
+ default:
+ throw new RuntimeException( "invalid item: " + item.getClass() );
+ }
+ }
+
+ public String toString()
+ {
+ return value;
+ }
+ }
+
+ /**
+ * Represents a version list item. This class is used both for the global item list and for sub-lists (which start
+ * with '-(number)' in the version specification).
+ */
+ private static class ListItem
+ extends ArrayList
+ implements Item
+ {
+ public int getType()
+ {
+ return LIST_ITEM;
+ }
+
+ public boolean isNull()
+ {
+ return ( size() == 0 );
+ }
+
+ void normalize()
+ {
+ for( ListIterator iterator = listIterator( size() ); iterator.hasPrevious(); )
+ {
+ Item item = (Item) iterator.previous();
+ if ( item.isNull() )
+ {
+ iterator.remove(); // remove null trailing items: 0, "", empty list
+ }
+ else
+ {
+ break;
+ }
+ }
+ }
+
+ public int compareTo( Item item )
+ {
+ if ( item == null )
+ {
+ if ( size() == 0 )
+ {
+ return 0; // 1-0 = 1- (normalize) = 1
+ }
+ Item first = (Item) get(0);
+ return first.compareTo( null );
+ }
+ switch ( item.getType() )
+ {
+ case INTEGER_ITEM:
+ return -1; // 1-1 < 1.0.x
+
+ case STRING_ITEM:
+ return 1; // 1-1 > 1-sp
+
+ case LIST_ITEM:
+ Iterator left = iterator();
+ Iterator right = ( (ListItem) item ).iterator();
+
+ while ( left.hasNext() || right.hasNext() )
+ {
+ Item l = left.hasNext() ? (Item) left.next() : null;
+ Item r = right.hasNext() ? (Item) right.next() : null;
+
+ // if this is shorter, then invert the compare and mul with -1
+ int result = l == null ? -1 * r.compareTo( l ) : l.compareTo( r );
+
+ if ( result != 0 )
+ {
+ return result;
+ }
+ }
+
+ return 0;
+
+ default:
+ throw new RuntimeException( "invalid item: " + item.getClass() );
+ }
+ }
+
+ public String toString()
+ {
+ StringBuffer buffer = new StringBuffer( "(" );
+ for( Iterator iter = iterator(); iter.hasNext(); )
+ {
+ buffer.append( iter.next() );
+ if ( iter.hasNext() )
+ {
+ buffer.append( ',' );
+ }
+ }
+ buffer.append( ')' );
+ return buffer.toString();
+ }
+ }
+
+ public ComparableVersion( String version )
+ {
+ parseVersion( version );
+ }
+
+ public final void parseVersion( String version )
+ {
+ this.value = version;
+
+ items = new ListItem();
+
+ version = version.toLowerCase( Locale.ENGLISH );
+
+ ListItem list = items;
+
+ Stack stack = new Stack();
+ stack.push( list );
+
+ boolean isDigit = false;
+
+ int startIndex = 0;
+
+ for ( int i = 0; i < version.length(); i++ )
+ {
+ char c = version.charAt( i );
+
+ if ( c == '.' )
+ {
+ if ( i == startIndex )
+ {
+ list.add( new IntegerItem( 0 ) );
+ }
+ else
+ {
+ list.add( parseItem( isDigit, version.substring( startIndex, i ) ) );
+ }
+ startIndex = i + 1;
+ }
+ else if ( c == '-' )
+ {
+ if ( i == startIndex )
+ {
+ list.add( new IntegerItem( 0 ) );
+ }
+ else
+ {
+ list.add( parseItem( isDigit, version.substring( startIndex, i ) ) );
+ }
+ startIndex = i + 1;
+
+ if ( isDigit )
+ {
+ list.normalize(); // 1.0-* = 1-*
+
+ if ( ( i + 1 < version.length() ) && Character.isDigit( version.charAt( i + 1 ) ) )
+ {
+ // new ListItem only if previous were digits and new char is a digit,
+ // ie need to differentiate only 1.1 from 1-1
+ list.add( list = new ListItem() );
+
+ stack.push( list );
+ }
+ }
+ }
+ else if ( Character.isDigit( c ) )
+ {
+ if ( !isDigit && i > startIndex )
+ {
+ list.add( new StringItem( version.substring( startIndex, i ), true ) );
+ startIndex = i;
+ }
+
+ isDigit = true;
+ }
+ else
+ {
+ if ( isDigit && i > startIndex )
+ {
+ list.add( parseItem( true, version.substring( startIndex, i ) ) );
+ startIndex = i;
+ }
+
+ isDigit = false;
+ }
+ }
+
+ if ( version.length() > startIndex )
+ {
+ list.add( parseItem( isDigit, version.substring( startIndex ) ) );
+ }
+
+ while ( !stack.isEmpty() )
+ {
+ list = (ListItem) stack.pop();
+ list.normalize();
+ }
+
+ canonical = items.toString();
+ }
+
+ private static Item parseItem( boolean isDigit, String buf )
+ {
+ return isDigit ? new IntegerItem( new Integer( buf ) ) : new StringItem( buf, false );
+ }
+
+ public int compareTo( Object o )
+ {
+ return items.compareTo( ( (ComparableVersion) o ).items );
+ }
+
+ public String toString()
+ {
+ return value;
+ }
+
+ public boolean equals( Object o )
+ {
+ return ( o instanceof ComparableVersion ) && canonical.equals( ( ( ComparableVersion )o ).canonical );
+ }
+
+ public int hashCode()
+ {
+ return canonical.hashCode();
+ }
+}
Propchange: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java Wed May 21 22:15:02 2008
@@ -40,6 +40,8 @@
private String qualifier;
+ private ComparableVersion comparable;
+
public DefaultArtifactVersion( String version )
{
parseVersion( version );
@@ -48,7 +50,7 @@
@Override
public int hashCode()
{
- return 11 + toString().hashCode();
+ return 11 + comparable.hashCode();
}
@Override
@@ -60,98 +62,27 @@
public int compareTo( Object o )
{
DefaultArtifactVersion otherVersion = (DefaultArtifactVersion) o;
-
- int result = compareIntegers( majorVersion, otherVersion.majorVersion );
- if ( result == 0 )
- {
- result = compareIntegers( minorVersion, otherVersion.minorVersion );
- }
- if ( result == 0 )
- {
- result = compareIntegers( incrementalVersion, otherVersion.incrementalVersion );
- }
- if ( result == 0 )
- {
- if ( ( buildNumber != null ) || ( otherVersion.buildNumber != null ) )
- {
- result = compareIntegers( buildNumber, otherVersion.buildNumber );
- }
- else if ( qualifier != null )
- {
- if ( otherVersion.qualifier != null )
- {
- if ( ( qualifier.length() > otherVersion.qualifier.length() ) &&
- qualifier.startsWith( otherVersion.qualifier ) )
- {
- // here, the longer one that otherwise match is considered older
- result = -1;
- }
- else if ( ( qualifier.length() < otherVersion.qualifier.length() ) &&
- otherVersion.qualifier.startsWith( qualifier ) )
- {
- // here, the longer one that otherwise match is considered older
- result = 1;
- }
- else
- {
- result = qualifier.compareTo( otherVersion.qualifier );
- }
- }
- else
- {
- // otherVersion has no qualifier but we do - that's newer
- result = -1;
- }
- }
- else if ( otherVersion.qualifier != null )
- {
- // otherVersion has a qualifier but we don't, we're newer
- result = 1;
- }
- }
- return result;
- }
-
- private int compareIntegers( Integer i1,
- Integer i2 )
- {
- // treat null as 0 in comparison
- if ( i1 == null ? i2 == null : i1.equals( i2 ) )
- {
- return 0;
- }
- else if ( i1 == null )
- {
- return -i2.intValue();
- }
- else if ( i2 == null )
- {
- return i1.intValue();
- }
- else
- {
- return i1.intValue() - i2.intValue();
- }
+ return this.comparable.compareTo( otherVersion.comparable );
}
public int getMajorVersion()
{
- return majorVersion != null ? majorVersion.intValue() : 0;
+ return majorVersion != null ? majorVersion : 0;
}
public int getMinorVersion()
{
- return minorVersion != null ? minorVersion.intValue() : 0;
+ return minorVersion != null ? minorVersion : 0;
}
public int getIncrementalVersion()
{
- return incrementalVersion != null ? incrementalVersion.intValue() : 0;
+ return incrementalVersion != null ? incrementalVersion : 0;
}
public int getBuildNumber()
{
- return buildNumber != null ? buildNumber.intValue() : 0;
+ return buildNumber != null ? buildNumber : 0;
}
public String getQualifier()
@@ -161,6 +92,8 @@
public final void parseVersion( String version )
{
+ comparable = new ComparableVersion( version );
+
int index = version.indexOf( "-" );
String part1;
Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/OverConstrainedVersionException.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/OverConstrainedVersionException.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/OverConstrainedVersionException.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/OverConstrainedVersionException.java Wed May 21 22:15:02 2008
@@ -20,6 +20,7 @@
*/
import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.resolver.ArtifactResolutionException;
import java.util.List;
@@ -41,7 +42,7 @@
public OverConstrainedVersionException( String msg,
Artifact artifact,
- List remoteRepositories )
+ List<ArtifactRepository> remoteRepositories )
{
super( msg, artifact, remoteRepositories );
}
Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java Wed May 21 22:15:02 2008
@@ -19,13 +19,13 @@
* under the License.
*/
-import org.apache.maven.artifact.Artifact;
-
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
+import org.apache.maven.artifact.Artifact;
+
/**
* Construct a version range from a specification.
*
@@ -36,10 +36,10 @@
{
private final ArtifactVersion recommendedVersion;
- private final List restrictions;
+ private final List<Restriction> restrictions;
private VersionRange( ArtifactVersion recommendedVersion,
- List restrictions )
+ List<Restriction> restrictions )
{
this.recommendedVersion = recommendedVersion;
this.restrictions = restrictions;
@@ -57,11 +57,11 @@
public VersionRange cloneOf()
{
- List copiedRestrictions = null;
+ List<Restriction> copiedRestrictions = null;
if ( restrictions != null )
{
- copiedRestrictions = new ArrayList();
+ copiedRestrictions = new ArrayList<Restriction>();
if ( !restrictions.isEmpty() )
{
@@ -97,7 +97,7 @@
return null;
}
- List restrictions = new ArrayList();
+ List<Restriction> restrictions = new ArrayList<Restriction>();
String process = spec;
ArtifactVersion version = null;
ArtifactVersion upperBound = null;
@@ -251,12 +251,13 @@
*/
public VersionRange restrict( VersionRange restriction )
{
- List r1 = this.restrictions;
- List r2 = restriction.restrictions;
- List restrictions;
+ List<Restriction> r1 = this.restrictions;
+ List<Restriction> r2 = restriction.restrictions;
+ List<Restriction> restrictions;
+
if ( r1.isEmpty() || r2.isEmpty() )
{
- restrictions = Collections.EMPTY_LIST;
+ restrictions = Collections.emptyList();
}
else
{
@@ -307,10 +308,9 @@
return new VersionRange( version, restrictions );
}
- private List intersection( List r1,
- List r2 )
+ private List<Restriction> intersection( List<Restriction> r1, List<Restriction> r2 )
{
- List restrictions = new ArrayList( r1.size() + r2.size() );
+ List<Restriction> restrictions = new ArrayList<Restriction>( r1.size() + r2.size() );
Iterator i1 = r1.iterator();
Iterator i2 = r2.iterator();
Restriction res1 = (Restriction) i1.next();
@@ -508,17 +508,7 @@
{
Restriction r = (Restriction) i.next();
- buf.append( r.isLowerBoundInclusive() ? "[" : "(" );
- if ( r.getLowerBound() != null )
- {
- buf.append( r.getLowerBound().toString() );
- }
- buf.append( "," );
- if ( r.getUpperBound() != null )
- {
- buf.append( r.getUpperBound().toString() );
- }
- buf.append( r.isUpperBoundInclusive() ? "]" : ")" );
+ buf.append( r.toString() );
if ( i.hasNext() )
{
@@ -529,19 +519,15 @@
}
}
- public ArtifactVersion matchVersion( List versions )
+ public ArtifactVersion matchVersion( List<ArtifactVersion> versions )
{
// TODO: could be more efficient by sorting the list and then moving along the restrictions in order?
ArtifactVersion matched = null;
- for ( Iterator i = versions.iterator(); i.hasNext(); )
- {
- ArtifactVersion version = (ArtifactVersion) i.next();
- 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;
}
}
@@ -551,20 +537,44 @@
public boolean containsVersion( ArtifactVersion version )
{
- boolean matched = false;
- for ( Iterator i = restrictions.iterator(); i.hasNext() && !matched; )
- {
- Restriction restriction = (Restriction) i.next();
- if ( restriction.containsVersion( version ) )
- {
- matched = true;
+ for (Restriction restriction : restrictions) {
+ if (restriction.containsVersion(version)) {
+ return true;
}
}
- return matched;
+ return false;
}
public boolean hasRestrictions()
{
return !restrictions.isEmpty() && recommendedVersion == null;
}
+
+ public boolean equals( Object obj )
+ {
+ if (this == obj){
+ return true;
+ }
+ if (!(obj instanceof VersionRange ))
+ {
+ return false;
+ }
+ VersionRange other = (VersionRange) obj;
+
+ boolean equals =
+ recommendedVersion == other.recommendedVersion ||
+ ( ( recommendedVersion != null ) && recommendedVersion.equals( other.recommendedVersion ) );
+ equals &=
+ restrictions == other.restrictions ||
+ ( ( restrictions != null ) && restrictions.equals( other.restrictions ) );
+ return equals;
+ }
+
+ public int hashCode()
+ {
+ int hash = 7;
+ hash = 31 * hash + ( recommendedVersion == null ? 0 : recommendedVersion.hashCode() );
+ hash = 31 * hash + ( restrictions == null ? 0 : restrictions.hashCode() );
+ return hash;
+ }
}
Modified: maven/artifact/branches/CAP/src/test/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManagerTest.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/test/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManagerTest.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/test/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManagerTest.java (original)
+++ maven/artifact/branches/CAP/src/test/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManagerTest.java Wed May 21 22:15:02 2008
@@ -1,5 +1,14 @@
package org.apache.maven.artifact.repository.metadata;
+import java.io.File;
+import java.io.IOException;
+import java.text.ParseException;
+import java.util.Collections;
+import java.util.Date;
+
+import junit.framework.TestCase;
+
+import org.apache.maven.artifact.manager.DefaultUpdateCheckManager;
import org.apache.maven.artifact.manager.WagonManager;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
@@ -12,14 +21,6 @@
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
import org.easymock.MockControl;
-import java.io.File;
-import java.io.IOException;
-import java.text.ParseException;
-import java.util.Collections;
-import java.util.Date;
-
-import junit.framework.TestCase;
-
public class DefaultRepositoryMetadataManagerTest
extends TestCase
{
@@ -34,6 +35,8 @@
private WagonManager wagonManager;
+ private DefaultUpdateCheckManager updateCheckManager;
+
@Override
public void setUp()
throws Exception
@@ -44,6 +47,8 @@
mockManager.add( wagonManagerCtl );
wagonManager = (WagonManager) wagonManagerCtl.getMock();
+
+ updateCheckManager = new DefaultUpdateCheckManager( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
}
@Override
@@ -89,7 +94,7 @@
try
{
- wagonManager.getArtifactMetadata( null, null, null, null );
+ wagonManager.getArtifactMetadataFromDeploymentRepository( null, null, null, null );
wagonManagerCtl.setMatcher( MockControl.ALWAYS_MATCHER );
wagonManagerCtl.setThrowable( new ResourceDoesNotExistException( "Test error" ) );
}
@@ -124,17 +129,16 @@
Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
- new DefaultRepositoryMetadataManager( wagonManager, logger ).resolveAlways( metadata,
- localRepo,
- localRepo );
+ new DefaultRepositoryMetadataManager( wagonManager, updateCheckManager, logger ).resolveAlways( metadata,
+ localRepo,
+ localRepo );
// helps the lastUpdate interval be significantly different.
Thread.sleep( 1000 );
Date end = new Date();
- MetadataTouchfile touchfile = new MetadataTouchfile( metadata, localRepo );
- Date checkDate = touchfile.getLastCheckDate( localRepo.getId(), filename, logger );
+ Date checkDate = updateCheckManager.readLastUpdated( metadata, localRepo, new File( dir, path ) );
assertNotNull( checkDate );
assertTrue( checkDate.after( start ) );
@@ -180,7 +184,7 @@
try
{
- wagonManager.getArtifactMetadata( null, null, null, null );
+ wagonManager.getArtifactMetadataFromDeploymentRepository( null, null, null, null );
wagonManagerCtl.setMatcher( MockControl.ALWAYS_MATCHER );
wagonManagerCtl.setThrowable( new TransferFailedException( "Test error" ) );
}
@@ -215,17 +219,24 @@
Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
- new DefaultRepositoryMetadataManager( wagonManager, logger ).resolveAlways( metadata,
- localRepo,
- localRepo );
+ try
+ {
+ new DefaultRepositoryMetadataManager( wagonManager, updateCheckManager, logger ).resolveAlways( metadata,
+ localRepo,
+ localRepo );
+ fail( "Should have thrown an exception due to transfer failure" );
+ }
+ catch ( RepositoryMetadataResolutionException e )
+ {
+ assertTrue( true );
+ }
// helps the lastUpdate interval be significantly different.
Thread.sleep( 1000 );
Date end = new Date();
- MetadataTouchfile touchfile = new MetadataTouchfile( metadata, localRepo );
- Date checkDate = touchfile.getLastCheckDate( localRepo.getId(), filename, logger );
+ Date checkDate = updateCheckManager.readLastUpdated( metadata, localRepo, new File( dir, path ) );
assertNotNull( checkDate );
assertTrue( checkDate.after( start ) );
@@ -268,7 +279,7 @@
try
{
- wagonManager.getArtifactMetadata( null, null, null, null );
+ wagonManager.getArtifactMetadataFromDeploymentRepository( null, null, null, null );
wagonManagerCtl.setMatcher( MockControl.ALWAYS_MATCHER );
wagonManagerCtl.setVoidCallable();
}
@@ -303,17 +314,16 @@
Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
- new DefaultRepositoryMetadataManager( wagonManager, logger ).resolveAlways( metadata,
- localRepo,
- localRepo );
+ new DefaultRepositoryMetadataManager( wagonManager, updateCheckManager, logger ).resolveAlways( metadata,
+ localRepo,
+ localRepo );
// helps the lastUpdate interval be significantly different.
Thread.sleep( 1000 );
Date end = new Date();
- MetadataTouchfile touchfile = new MetadataTouchfile( metadata, localRepo );
- Date checkDate = touchfile.getLastCheckDate( localRepo.getId(), filename, logger );
+ Date checkDate = updateCheckManager.readLastUpdated( metadata, localRepo, new File( dir, path ) );
assertNotNull( checkDate );
assertTrue( checkDate.after( start ) );
@@ -421,17 +431,16 @@
System.out.println( "Testing re-check proofing..." );
- RepositoryMetadataManager mgr = new DefaultRepositoryMetadataManager( wagonManager, logger );
+ RepositoryMetadataManager mgr = new DefaultRepositoryMetadataManager( wagonManager, updateCheckManager, logger );
mgr.resolve( metadata, Collections.singletonList( remoteRepo ), localRepo );
- MetadataTouchfile touchfile = new MetadataTouchfile( metadata, localRepo );
- Date checkDate = touchfile.getLastCheckDate( repoId, filename, logger );
+ Date checkDate = updateCheckManager.readLastUpdated( metadata, remoteRepo, new File( dir, path ) );
assertNotNull( checkDate );
mgr.resolve( metadata, Collections.singletonList( remoteRepo ), localRepo );
- checkDate = touchfile.getLastCheckDate( repoId, filename, logger );
+ checkDate = updateCheckManager.readLastUpdated( metadata, remoteRepo, new File( dir, path ) );
assertNotNull( checkDate );