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/23 23:55:23 UTC

svn commit: r659682 - in /maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata: conflict/ resolver/ transform/

Author: jvanzyl
Date: Fri May 23 14:55:21 2008
New Revision: 659682

URL: http://svn.apache.org/viewvc?rev=659682&view=rev
Log: (empty)

Added:
    maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/conflict/ConflictResolutionException.java
      - copied, changed from r659622, maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/conflict/GraphConflictResolutionException.java
Removed:
    maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/conflict/GraphConflictResolutionException.java
Modified:
    maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/conflict/ConflictResolutionPolicy.java
    maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/conflict/ConflictResolver.java
    maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/conflict/DefaultConflictResolutionPolicy.java
    maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/conflict/DefaultConflictResolver.java
    maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/resolver/ArtifactMetadata.java
    maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/resolver/ArtifactResolver.java
    maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/resolver/DefaultMetadataResolver.java
    maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/resolver/MetadataResolutionResult.java
    maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/transform/DefaultClasspathTransformation.java

Copied: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/conflict/ConflictResolutionException.java (from r659622, maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/conflict/GraphConflictResolutionException.java)
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/conflict/ConflictResolutionException.java?p2=maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/conflict/ConflictResolutionException.java&p1=maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/conflict/GraphConflictResolutionException.java&r1=659622&r2=659682&rev=659682&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/conflict/GraphConflictResolutionException.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/conflict/ConflictResolutionException.java Fri May 23 14:55:21 2008
@@ -7,26 +7,26 @@
  * @version $Id$
  */
 
-public class GraphConflictResolutionException
+public class ConflictResolutionException
 extends Exception
 {
 	private static final long serialVersionUID = 2677613140287940255L;
 
-	public GraphConflictResolutionException()
+	public ConflictResolutionException()
 	{
 	}
 
-	public GraphConflictResolutionException(String message)
+	public ConflictResolutionException(String message)
 	{
 		super(message);
 	}
 
-	public GraphConflictResolutionException(Throwable cause)
+	public ConflictResolutionException(Throwable cause)
 	{
 		super(cause);
 	}
 
-	public GraphConflictResolutionException(String message, Throwable cause)
+	public ConflictResolutionException(String message, Throwable cause)
 	{
 		super(message, cause);
 	}

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/conflict/ConflictResolutionPolicy.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/conflict/ConflictResolutionPolicy.java?rev=659682&r1=659681&r2=659682&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/conflict/ConflictResolutionPolicy.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/conflict/ConflictResolutionPolicy.java Fri May 23 14:55:21 2008
@@ -2,9 +2,8 @@
 
 import org.apache.maven.artifact.resolver.metadata.resolver.MetadataGraphEdge;
 
-/**
- *  MetadataGraph edge selection policy. Complements 
- *  GraphConflictResolver by being injected into it
+/*
+ * MetadataGraph edge selection policy. Complements GraphConflictResolver by being injected into it
  * 
  * @author <a href="mailto:oleg@codehaus.org">Oleg Gusakov</a>
  * 
@@ -15,8 +14,5 @@
 {
     static String ROLE = ConflictResolutionPolicy.class.getName();
 
-    public MetadataGraphEdge apply( 
-			  MetadataGraphEdge e1
-			, MetadataGraphEdge e2
-			);
+    public MetadataGraphEdge apply( MetadataGraphEdge e1, MetadataGraphEdge e2 );
 }

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/conflict/ConflictResolver.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/conflict/ConflictResolver.java?rev=659682&r1=659681&r2=659682&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/conflict/ConflictResolver.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/conflict/ConflictResolver.java Fri May 23 14:55:21 2008
@@ -43,5 +43,5 @@
      * @since 3.0
      */
     MetadataGraph resolveConflicts( MetadataGraph graph, ArtifactScopeEnum scope )
-        throws GraphConflictResolutionException;
+        throws ConflictResolutionException;
 }

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/conflict/DefaultConflictResolutionPolicy.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/conflict/DefaultConflictResolutionPolicy.java?rev=659682&r1=659681&r2=659682&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/conflict/DefaultConflictResolutionPolicy.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/conflict/DefaultConflictResolutionPolicy.java Fri May 23 14:55:21 2008
@@ -4,51 +4,56 @@
 import org.apache.maven.artifact.resolver.metadata.version.ArtifactVersion;
 import org.apache.maven.artifact.resolver.metadata.version.DefaultArtifactVersion;
 
-/**
- *
+/*
+ * 
  * @plexus.component
  * 
  * @author <a href="mailto:oleg@codehaus.org">Oleg Gusakov</a>
  * 
  * @version $Id$
  */
+
 public class DefaultConflictResolutionPolicy
-implements ConflictResolutionPolicy
+    implements ConflictResolutionPolicy
 {
-	
-	/**
+    /**
      * artifact, closer to the entry point, is selected
      * 
      * @plexus.configuration default-value="true"
      */
-	private boolean closerFirst = true;
-	
-	/**
+    private boolean closerFirst = true;
+
+    /**
      * newer artifact is selected
      * 
      * @plexus.configuration default-value="true"
      */
-	private boolean newerFirst = 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;
+            }
+
+            return v1.compareTo( v2 ) > 0 ? e2 : e1;
+        }
 
-	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;
-
-			return v1.compareTo(v2) > 0 ? e2 : e1;
-		}
-		
-		if( closerFirst )
-			return depth1 < depth2 ? e1 : e2;
+        if ( closerFirst )
+        {
+            return depth1 < depth2 ? e1 : e2;
+        }
 
-		return depth1 < depth2 ? e2 : e1;
-	}
+        return depth1 < depth2 ? e2 : e1;
+    }
 
 }

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/conflict/DefaultConflictResolver.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/conflict/DefaultConflictResolver.java?rev=659682&r1=659681&r2=659682&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/conflict/DefaultConflictResolver.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/conflict/DefaultConflictResolver.java Fri May 23 14:55:21 2008
@@ -1,22 +1,18 @@
 package org.apache.maven.artifact.resolver.metadata.conflict;
 
 /*
- * 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.
+ * 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;
@@ -30,9 +26,9 @@
 import org.apache.maven.artifact.resolver.metadata.resolver.MetadataGraphVertex;
 import org.apache.maven.artifact.resolver.metadata.resolver.MetadataResolutionException;
 
-/**
- * Default conflict resolver.Implements closer newer first policy 
- * by default, but could be configured via plexus 
+/*
+ * Default conflict resolver.Implements closer newer first policy by default, but could be
+ * configured via plexus
  * 
  * @plexus.component
  * 
@@ -42,185 +38,206 @@
  */
 
 public class DefaultConflictResolver
-implements ConflictResolver
+    implements ConflictResolver
 {
-	/**
+    /**
      * artifact, closer to the entry point, is selected
      * 
      * @plexus.requirement role="org.apache.maven.artifact.resolver.conflict.GraphConflictResolutionPolicy"
      */
-	protected ConflictResolutionPolicy policy;
-	//-------------------------------------------------------------------------------------
-	//-------------------------------------------------------------------------------------
-	public MetadataGraph resolveConflicts( MetadataGraph graph, ArtifactScopeEnum scope )
-	throws GraphConflictResolutionException
-	{
-		if( policy == null )
-			throw new GraphConflictResolutionException("no GraphConflictResolutionPolicy injected");
-		
-		if( graph == null )
-			return null;
-
-		final MetadataGraphVertex entry = graph.getEntry();
-		if( entry == null )
-			return null;
-
-		if( graph.isEmpty() )
-			throw new GraphConflictResolutionException("graph with an entry, but not vertices do not exist");
-
-		if( graph.isEmptyEdges() )
-			return null; // no edges - nothing to worry about
-		
-		final TreeSet<MetadataGraphVertex> vertices = graph.getVertices();
-		
-		try {
-			// edge case - single vertex graph
-			if( vertices.size() == 1 )
-					return new MetadataGraph( entry );
-	
-			final ArtifactScopeEnum requestedScope = ArtifactScopeEnum.checkScope(scope);
-			
-			MetadataGraph res = new MetadataGraph( vertices.size() );
-			res.setVersionedVertices( false );
-			res.setScopedVertices( false );
-			
-			MetadataGraphVertex resEntry = res.addVertex( entry.getMd() );
-			res.setEntry( resEntry );
-			
-			res.setScope( requestedScope );
-	
-			for( MetadataGraphVertex v : vertices ) {
-				final List<MetadataGraphEdge> ins = graph.getIncidentEdges(v);
-				final MetadataGraphEdge edge = cleanEdges( v, ins, requestedScope );
-				
-				if( edge == null ) { // no edges - don't need this vertex any more
-					if( entry.equals(v) ) { // unless it's an entry point. 
-						// currently processing the entry point - it should not have any entry incident edges
-						res.getEntry().getMd().setWhy("This is a graph entry point. No links.");
-					} 
-					else
-					{
-//System.out.println("--->"+v.getMd().toDomainString()
-//+" has been terminated on this entry set\n-------------------\n"
-//+ins 
-//+"\n-------------------\n"
-//);
-					}
-				}
-				else
-				{
-//System.out.println("+++>"+v.getMd().toDomainString()+" still has "+edge.toString() );
-					// fill in domain md with actual version data
-					ArtifactMetadata md = v.getMd();
-					ArtifactMetadata newMd = new ArtifactMetadata(
-							md.getGroupId()
-							, md.getArtifactId()
-							, edge.getVersion()
-							, md.getType()
-							, md.getScopeAsEnum()
-							, md.getClassifier()
-							, edge.getArtifactUri()
-							, edge.getSource() == null ? ""	:  edge.getSource().getMd().toString()
-							, edge.isResolved()
-							, edge.getTarget() == null ? null : edge.getTarget().getMd().getError()
-									);
-					MetadataGraphVertex newV = res.addVertex( newMd );
-					MetadataGraphVertex sourceV = res.addVertex( edge.getSource().getMd() );
-
-					res.addEdge( sourceV, newV, edge );
-				}
-			}
-			MetadataGraph linkedRes = findLinkedSubgraph( res );
-//System.err.println("Original graph("+graph.getVertices().size()+"):\n"+graph.toString());
-//System.err.println("Cleaned("+requestedScope+") graph("+res.getVertices().size()+"):\n"+res.toString());
-//System.err.println("Linked("+requestedScope+") subgraph("+linkedRes.getVertices().size()+"):\n"+linkedRes.toString());
-			return linkedRes;
-		} catch (MetadataResolutionException e) {
-			throw new GraphConflictResolutionException(e);
-		}
-	}
-	//-------------------------------------------------------------------------------------
-	private final MetadataGraph findLinkedSubgraph( MetadataGraph g )
-	{
-		if( g.getVertices().size() == 1 )
-			return g;
-		
-		List<MetadataGraphVertex> visited = new ArrayList<MetadataGraphVertex>( g.getVertices().size() );
-		visit( g.getEntry(), visited, g );
-		
-		List<MetadataGraphVertex> dropList = new ArrayList<MetadataGraphVertex>( g.getVertices().size() );
-
-		// collect drop list
-		for( MetadataGraphVertex v : g.getVertices() )
-		{
-			if( !visited.contains(v) )
-				dropList.add( v );
-		}
-		
-		if( dropList.size() < 1 )
-			return g;
-		
-		// now - drop vertices
-		TreeSet<MetadataGraphVertex> vertices = g.getVertices();
-		for( MetadataGraphVertex v : dropList ) 
-		{
-			vertices.remove(v);
-		}
-		
-		return g;
-	}
-	//-------------------------------------------------------------------------------------
-	private final void visit( MetadataGraphVertex from
-							, List<MetadataGraphVertex> visited
-							, MetadataGraph graph
-							)
-	{
-		if( visited.contains( from ) )
-			return;
-		
-		visited.add(from);
-		
-		List<MetadataGraphEdge> exitList =  graph.getExcidentEdges(from);
-//String s = "|---> "+from.getMd().toString()+" - "+(exitList == null ? -1 : exitList.size()) + " exit links";
-		if( exitList != null && exitList.size() > 0 ) {
-			for( MetadataGraphEdge e : graph.getExcidentEdges(from) ) 
-			{
-				visit( e.getTarget(), visited, graph );
-			}
-		}
-	}
-	//-------------------------------------------------------------------------------------
-	private final MetadataGraphEdge cleanEdges( MetadataGraphVertex v
-												, List<MetadataGraphEdge> edges
-												, ArtifactScopeEnum scope
-											  )
-	{
-		if( edges == null || edges.isEmpty() )
-			return null;
-
-		if( edges.size() == 1 ) {
-			MetadataGraphEdge e = edges.get(0);
-			if( scope.encloses( e.getScope() ) )
-				return e;
-
-			return null;
-		}
-		
-		MetadataGraphEdge res = null;
-		
-		for( MetadataGraphEdge e : edges )
-		{
-			if( !scope.encloses( e.getScope()) )
-				continue;
-
-			if( res == null )
-				res = e;
-			else
-				res = policy.apply( e, res );
-		}
-
-		return res;
-	}
-	//-------------------------------------------------------------------------------------
-	//-------------------------------------------------------------------------------------
+    protected ConflictResolutionPolicy policy;
+
+    public MetadataGraph resolveConflicts( MetadataGraph graph, ArtifactScopeEnum scope )
+        throws ConflictResolutionException
+    {
+        if ( policy == null )
+        {
+            throw new ConflictResolutionException( "no GraphConflictResolutionPolicy injected" );
+        }
+
+        if ( graph == null )
+        {
+            return null;
+        }
+
+        MetadataGraphVertex entry = graph.getEntry();
+        if ( entry == null )
+        {
+            return null;
+        }
+
+        if ( graph.isEmpty() )
+        {
+            throw new ConflictResolutionException( "graph with an entry, but not vertices do not exist" );
+        }
+
+        if ( graph.isEmptyEdges() )
+        {
+            return null; // no edges - nothing to worry about
+        }
+
+        final TreeSet<MetadataGraphVertex> vertices = graph.getVertices();
+
+        try
+        {
+            // edge case - single vertex graph
+            if ( vertices.size() == 1 )
+            {
+                return new MetadataGraph( entry );
+            }
+
+            final ArtifactScopeEnum requestedScope = ArtifactScopeEnum.checkScope( scope );
+
+            MetadataGraph res = new MetadataGraph( vertices.size() );
+            res.setVersionedVertices( false );
+            res.setScopedVertices( false );
+
+            MetadataGraphVertex resEntry = res.addVertex( entry.getMd() );
+            res.setEntry( resEntry );
+
+            res.setScope( requestedScope );
+
+            for ( MetadataGraphVertex v : vertices )
+            {
+                final List<MetadataGraphEdge> ins = graph.getIncidentEdges( v );
+                final MetadataGraphEdge edge = cleanEdges( v, ins, requestedScope );
+
+                if ( edge == null )
+                { // no edges - don't need this vertex any more
+                    if ( entry.equals( v ) )
+                    { // unless it's an entry point. 
+                        // currently processing the entry point - it should not have any entry incident edges
+                        res.getEntry().getMd().setWhy( "This is a graph entry point. No links." );
+                    }
+                    else
+                    {
+                        //System.out.println("--->"+v.getMd().toDomainString()
+                        //+" has been terminated on this entry set\n-------------------\n"
+                        //+ins 
+                        //+"\n-------------------\n"
+                        //);
+                    }
+                }
+                else
+                {
+                    //System.out.println("+++>"+v.getMd().toDomainString()+" still has "+edge.toString() );
+                    // fill in domain md with actual version data
+                    ArtifactMetadata md = v.getMd();
+                    ArtifactMetadata newMd = new ArtifactMetadata( md.getGroupId(), md.getArtifactId(), edge.getVersion(), md.getType(), md.getScopeAsEnum(), md.getClassifier(),
+                                                                   edge.getArtifactUri(), edge.getSource() == null ? "" : edge.getSource().getMd().toString(), edge.isResolved(),
+                                                                   edge.getTarget() == null ? null : edge.getTarget().getMd().getError() );
+                    MetadataGraphVertex newV = res.addVertex( newMd );
+                    MetadataGraphVertex sourceV = res.addVertex( edge.getSource().getMd() );
+
+                    res.addEdge( sourceV, newV, edge );
+                }
+            }
+            MetadataGraph linkedRes = findLinkedSubgraph( res );
+            //System.err.println("Original graph("+graph.getVertices().size()+"):\n"+graph.toString());
+            //System.err.println("Cleaned("+requestedScope+") graph("+res.getVertices().size()+"):\n"+res.toString());
+            //System.err.println("Linked("+requestedScope+") subgraph("+linkedRes.getVertices().size()+"):\n"+linkedRes.toString());
+            return linkedRes;
+        }
+        catch ( MetadataResolutionException e )
+        {
+            throw new ConflictResolutionException( e );
+        }
+    }
+
+    private final MetadataGraph findLinkedSubgraph( MetadataGraph g )
+    {
+        if ( g.getVertices().size() == 1 )
+        {
+            return g;
+        }
+
+        List<MetadataGraphVertex> visited = new ArrayList<MetadataGraphVertex>( g.getVertices().size() );
+        visit( g.getEntry(), visited, g );
+
+        List<MetadataGraphVertex> dropList = new ArrayList<MetadataGraphVertex>( g.getVertices().size() );
+
+        // collect drop list
+        for ( MetadataGraphVertex v : g.getVertices() )
+        {
+            if ( !visited.contains( v ) )
+            {
+                dropList.add( v );
+            }
+        }
+
+        if ( dropList.size() < 1 )
+        {
+            return g;
+        }
+
+        // now - drop vertices
+        TreeSet<MetadataGraphVertex> vertices = g.getVertices();
+        for ( MetadataGraphVertex v : dropList )
+        {
+            vertices.remove( v );
+        }
+
+        return g;
+    }
+
+    private final void visit( MetadataGraphVertex from, List<MetadataGraphVertex> visited, MetadataGraph graph )
+    {
+        if ( visited.contains( from ) )
+        {
+            return;
+        }
+
+        visited.add( from );
+
+        List<MetadataGraphEdge> exitList = graph.getExcidentEdges( from );
+        //String s = "|---> "+from.getMd().toString()+" - "+(exitList == null ? -1 : exitList.size()) + " exit links";
+        if ( exitList != null && exitList.size() > 0 )
+        {
+            for ( MetadataGraphEdge e : graph.getExcidentEdges( from ) )
+            {
+                visit( e.getTarget(), visited, graph );
+            }
+        }
+    }
+
+    private final MetadataGraphEdge cleanEdges( MetadataGraphVertex v, List<MetadataGraphEdge> edges, ArtifactScopeEnum scope )
+    {
+        if ( edges == null || edges.isEmpty() )
+        {
+            return null;
+        }
+
+        if ( edges.size() == 1 )
+        {
+            MetadataGraphEdge e = edges.get( 0 );
+
+            if ( scope.encloses( e.getScope() ) )
+            {
+                return e;
+            }
+
+            return null;
+        }
+
+        MetadataGraphEdge res = null;
+
+        for ( MetadataGraphEdge e : edges )
+        {
+            if ( !scope.encloses( e.getScope() ) )
+            {
+                continue;
+            }
+
+            if ( res == null )
+            {
+                res = e;
+            }
+            else
+            {
+                res = policy.apply( e, res );
+            }
+        }
+
+        return res;
+    }
 }

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/resolver/ArtifactMetadata.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/resolver/ArtifactMetadata.java?rev=659682&r1=659681&r2=659682&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/resolver/ArtifactMetadata.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/resolver/ArtifactMetadata.java Fri May 23 14:55:21 2008
@@ -21,7 +21,7 @@
 
     protected String version;
 
-    protected String type;
+    protected String type = "jar";
 
     protected ArtifactScopeEnum artifactScope;
 
@@ -51,63 +51,31 @@
     /** error message  */
     private String error;
 
-    //------------------------------------------------------------------
-    /**
-     * 
-     */
-    public ArtifactMetadata( String name )
-    {
-        if ( name == null )
-            return;
-        int ind1 = name.indexOf( ':' );
-        int ind2 = name.lastIndexOf( ':' );
-
-        if ( ind1 == -1 || ind2 == -1 )
-            return;
-
-        this.groupId = name.substring( 0, ind1 );
-        if ( ind1 == ind2 )
-        {
-            this.artifactId = name.substring( ind1 + 1 );
-        }
-        else
-        {
-            this.artifactId = name.substring( ind1 + 1, ind2 );
-            this.version = name.substring( ind2 + 1 );
-        }
-    }
-
-    //------------------------------------------------------------------
     public ArtifactMetadata( String groupId, String name, String version )
     {
         this( groupId, name, version, null );
     }
 
-    //------------------------------------------------------------------
     public ArtifactMetadata( String groupId, String name, String version, String type )
     {
         this( groupId, name, version, type, null );
     }
 
-    //------------------------------------------------------------------
     public ArtifactMetadata( String groupId, String name, String version, String type, ArtifactScopeEnum artifactScope )
     {
         this( groupId, name, version, type, artifactScope, null );
     }
 
-    //------------------------------------------------------------------
     public ArtifactMetadata( String groupId, String name, String version, String type, ArtifactScopeEnum artifactScope, String classifier )
     {
         this( groupId, name, version, type, artifactScope, classifier, null );
     }
 
-    //------------------------------------------------------------------
     public ArtifactMetadata( String groupId, String name, String version, String type, ArtifactScopeEnum artifactScope, String classifier, String artifactUri )
     {
         this( groupId, name, version, type, artifactScope, classifier, artifactUri, null, true, null );
     }
 
-    //------------------------------------------------------------------
     public ArtifactMetadata( String groupId, String name, String version, String type, ArtifactScopeEnum artifactScope, String classifier, String artifactUri, String why, boolean resolved,
                              String error )
     {
@@ -123,31 +91,26 @@
         this.error = error;
     }
 
-    //------------------------------------------------------------------
     public ArtifactMetadata( String groupId, String name, String version, String type, String scopeString, String classifier, String artifactUri, String why, boolean resolved, String error )
     {
         this( groupId, name, version, type, scopeString == null ? ArtifactScopeEnum.DEFAULT_SCOPE : ArtifactScopeEnum.valueOf( scopeString ), classifier, artifactUri, why, resolved, error );
     }
 
-    //------------------------------------------------------------------
     public ArtifactMetadata( Artifact af )
     {
     }
 
-    //------------------------------------------------------------------
     @Override
     public String toString()
     {
         return groupId + ":" + artifactId + ":" + version;
     }
 
-    //------------------------------------------------------------------
     public String toDomainString()
     {
         return groupId + ":" + artifactId;
     }
 
-    //------------------------------------------------------------------
     public String getGroupId()
     {
         return groupId;
@@ -288,7 +251,6 @@
         this.why = why;
     }
 
-    //-------------------------------------------------------------------
     public String getError()
     {
         return error;
@@ -304,11 +266,8 @@
         return error == null;
     }
 
-    //------------------------------------------------------------------
     public String getDependencyConflictId()
     {
         return groupId + ":" + artifactId;
     }
-    //------------------------------------------------------------------
-    //------------------------------------------------------------------
 }

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/resolver/ArtifactResolver.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/resolver/ArtifactResolver.java?rev=659682&r1=659681&r2=659682&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/resolver/ArtifactResolver.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/resolver/ArtifactResolver.java Fri May 23 14:55:21 2008
@@ -20,12 +20,7 @@
  */
 
 /**
- * I want to use it for hidding the fact that sometime artifact must be
- * downloaded. I am just asking LocalRepository for given artifact and I don't
- * care if it is alredy there or how it will get there.
- *
  * @author Jason van Zyl
- * @version $Id$
  */
 public interface ArtifactResolver
 {

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/resolver/DefaultMetadataResolver.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/resolver/DefaultMetadataResolver.java?rev=659682&r1=659681&r2=659682&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/resolver/DefaultMetadataResolver.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/resolver/DefaultMetadataResolver.java Fri May 23 14:55:21 2008
@@ -44,8 +44,7 @@
     {
         try
         {
-            Artifact pomArtifact = new DefaultArtifact( query.getGroupId(), query.getArtifactId(), query.getVersion(), query.getType() == null ? "jar" : query.getType(), null, false,
-                                                        query.getScope(), null );
+            Artifact pomArtifact = new DefaultArtifact( query.getGroupId(), query.getArtifactId(), query.getVersion(), query.getType(), null, false, query.getScope(), null );
 
             ResolutionRequest request = new ResolutionRequest().setArtifact( pomArtifact ).setLocalRepository( localRepository ).setRemoteRepostories( remoteRepositories );
 

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/resolver/MetadataResolutionResult.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/resolver/MetadataResolutionResult.java?rev=659682&r1=659681&r2=659682&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/resolver/MetadataResolutionResult.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/resolver/MetadataResolutionResult.java Fri May 23 14:55:21 2008
@@ -1,7 +1,7 @@
 package org.apache.maven.artifact.resolver.metadata.resolver;
 
 import org.apache.maven.artifact.resolver.metadata.ArtifactScopeEnum;
-import org.apache.maven.artifact.resolver.metadata.conflict.GraphConflictResolutionException;
+import org.apache.maven.artifact.resolver.metadata.conflict.ConflictResolutionException;
 import org.apache.maven.artifact.resolver.metadata.conflict.ConflictResolver;
 import org.apache.maven.artifact.resolver.metadata.transform.ClasspathContainer;
 import org.apache.maven.artifact.resolver.metadata.transform.ClasspathTransformation;
@@ -60,7 +60,7 @@
     }
     //----------------------------------------------------------------------------
     public MetadataGraph getGraph( ArtifactScopeEnum scope )
-    throws MetadataResolutionException, GraphConflictResolutionException
+    throws MetadataResolutionException, ConflictResolutionException
     {
     	if( treeRoot == null )
     		return null;
@@ -72,7 +72,7 @@
     }
     //----------------------------------------------------------------------------
     public MetadataGraph getGraph( MetadataResolutionRequestTypeEnum requestType )
-    throws MetadataResolutionException, GraphConflictResolutionException
+    throws MetadataResolutionException, ConflictResolutionException
     {
     	if( requestType == null )
     		return null;

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/transform/DefaultClasspathTransformation.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/transform/DefaultClasspathTransformation.java?rev=659682&r1=659681&r2=659682&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/transform/DefaultClasspathTransformation.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/transform/DefaultClasspathTransformation.java Fri May 23 14:55:21 2008
@@ -6,7 +6,7 @@
 import java.util.List;
 
 import org.apache.maven.artifact.resolver.metadata.ArtifactScopeEnum;
-import org.apache.maven.artifact.resolver.metadata.conflict.GraphConflictResolutionException;
+import org.apache.maven.artifact.resolver.metadata.conflict.ConflictResolutionException;
 import org.apache.maven.artifact.resolver.metadata.conflict.ConflictResolver;
 import org.apache.maven.artifact.resolver.metadata.resolver.ArtifactMetadata;
 import org.apache.maven.artifact.resolver.metadata.resolver.MetadataGraph;
@@ -58,7 +58,7 @@
 
             return cpc;
         }
-        catch ( GraphConflictResolutionException e )
+        catch ( ConflictResolutionException e )
         {
             throw new MetadataGraphTransformationException( e );
         }