You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by og...@apache.org on 2008/07/17 06:42:27 UTC
svn commit: r677499 - in /maven/sandbox/trunk/mercury/src:
main/java/org/apache/maven/mercury/
main/java/org/apache/maven/mercury/metadata/
main/java/org/apache/maven/mercury/metadata/sat/
test/java/org/apache/maven/mercury/metadata/ test/java/org/apac...
Author: ogusakov
Date: Wed Jul 16 21:42:26 2008
New Revision: 677499
URL: http://svn.apache.org/viewvc?rev=677499&view=rev
Log:
scoped resolution implemented.
Added:
maven/sandbox/trunk/mercury/src/test/resources/controlledRepo/a/a/4/
maven/sandbox/trunk/mercury/src/test/resources/controlledRepo/a/a/4/a-4.pom
Modified:
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/ArtifactScopeEnum.java
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/MetadataTree.java
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolver.java
maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/MetadataTreeTest.java
maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolverTest.java
maven/sandbox/trunk/mercury/src/test/resources/controlledRepo/a/a/3/a-3.pom
maven/sandbox/trunk/mercury/src/test/resources/controlledRepo/c/c/3/c-3.pom
Modified: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/ArtifactScopeEnum.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/ArtifactScopeEnum.java?rev=677499&r1=677498&r2=677499&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/ArtifactScopeEnum.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/ArtifactScopeEnum.java Wed Jul 16 21:42:26 2008
@@ -70,7 +70,7 @@
private static final ArtifactScopeEnum [][][] _compliancySets = {
{ { compile }, { compile, provided, system } }
- , { { test }, { compile, test, provided, system } }
+ , { { test }, { compile, test, provided, system } }
, { { runtime }, { compile, runtime, system } }
, { { provided }, { compile, test, provided } }
};
Modified: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/MetadataTree.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/MetadataTree.java?rev=677499&r1=677498&r2=677499&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/MetadataTree.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/MetadataTree.java Wed Jul 16 21:42:26 2008
@@ -168,7 +168,7 @@
try
{
- DefaultSatSolver solver = new DefaultSatSolver( _root );
+ DefaultSatSolver solver = new DefaultSatSolver( _root, scope );
if( _comparators == null )
_comparators = new ArrayList<Comparator<MetadataTreeNode>>(2);
Modified: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolver.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolver.java?rev=677499&r1=677498&r2=677499&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolver.java (original)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolver.java Wed Jul 16 21:42:26 2008
@@ -9,6 +9,7 @@
import java.util.List;
import java.util.Map;
+import org.apache.maven.mercury.ArtifactScopeEnum;
import org.apache.maven.mercury.metadata.ArtifactMetadata;
import org.apache.maven.mercury.metadata.MetadataTreeNode;
import org.sat4j.core.Vec;
@@ -35,15 +36,16 @@
protected SatContext _context;
protected IPBSolver _solver = SolverFactory.newEclipseP2();
protected MetadataTreeNode _root;
+ protected ArtifactScopeEnum _scope;
protected static final Comparator<MetadataTreeNode> gaComparator = new MetadataTreeNodeGAComparator();
//-----------------------------------------------------------------------
- public static SatSolver create( MetadataTreeNode tree )
+ public static SatSolver create( MetadataTreeNode tree, ArtifactScopeEnum scope )
throws SatException
{
- return new DefaultSatSolver( tree );
+ return new DefaultSatSolver( tree, scope );
}
//-----------------------------------------------------------------------
- public DefaultSatSolver( MetadataTreeNode tree )
+ public DefaultSatSolver( MetadataTreeNode tree, ArtifactScopeEnum scope )
throws SatException
{
if( tree == null)
@@ -53,6 +55,7 @@
_context = new SatContext( nNodes );
_solver.newVar( _context.varCount );
_root = tree;
+ _scope = scope == null ? ArtifactScopeEnum.DEFAULT_SCOPE : scope;
try
{
@@ -125,7 +128,7 @@
lastComparator = comparator;
}
// due to the nature of Comparator need to reverse the result
- // as the bets fit is now last
+ // as the best fit is now last
Collections.reverse( bucket );
// we don't need duplicate GAVs
@@ -156,7 +159,7 @@
}
//-----------------------------------------------------------------------
/**
- * reorders the bucket's lastComparator "equals" with comparator, most desirable - positive - elements first.
+ * reorders the bucket's lastComparator equal subsets with comparator.
*/
protected static final void sortBucket(
List<MetadataTreeNode> bucket
@@ -348,6 +351,9 @@
for( Map.Entry<ArtifactMetadata,List<MetadataTreeNode>> kid : kids.entrySet() )
{
ArtifactMetadata query = kid.getKey();
+ if( ! _scope.encloses( query.getArtifactScope()) )
+ continue;
+
List<MetadataTreeNode> range = kid.getValue();
if( range.size() > 1 )
Modified: maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/MetadataTreeTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/MetadataTreeTest.java?rev=677499&r1=677498&r2=677499&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/MetadataTreeTest.java (original)
+++ maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/MetadataTreeTest.java Wed Jul 16 21:42:26 2008
@@ -100,6 +100,26 @@
System.out.println( "testResolveConflicts: " + res );
}
//----------------------------------------------------------------------------------------------
+ public void testResolveScopedConflicts()
+ throws MetadataTreeException
+ {
+ ArtifactMetadata md = new ArtifactMetadata( "a:a:4" );
+
+ MetadataTreeNode root = mt.buildTree( md );
+ assertNotNull( "null tree built", root );
+ assertEquals( "wrong tree size", 4, root.countNodes() );
+
+ List<ArtifactMetadata> res = mt.resolveConflicts( ArtifactScopeEnum.compile );
+ assertNotNull( "null resolution", res );
+ assertEquals( "wrong tree size", 2, res.size() );
+
+ System.out.println( "testResolveScopedConflicts: " + res );
+
+ assertTrue( "no a:a:4 in the result", assertHasArtifact( res, "a:a:4" ) );
+ assertTrue( "no c:c:3 in the result", assertHasArtifact( res, "c:c:3" ) );
+
+ }
+ //----------------------------------------------------------------------------------------------
public void testBigResolveConflicts()
throws MetadataTreeException
{
Modified: maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolverTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolverTest.java?rev=677499&r1=677498&r2=677499&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolverTest.java (original)
+++ maven/sandbox/trunk/mercury/src/test/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolverTest.java Wed Jul 16 21:42:26 2008
@@ -93,7 +93,7 @@
cc1bb2 = new MetadataTreeNode( mdbb2, cc1, mdbb2 );
cc1.addChild( cc1bb2 );
- ss = (DefaultSatSolver) DefaultSatSolver.create( aa1 );
+ ss = (DefaultSatSolver) DefaultSatSolver.create( aa1, ArtifactScopeEnum.compile );
List< Comparator<MetadataTreeNode>> comparators = new ArrayList<Comparator<MetadataTreeNode>>(2);
comparators.add( new ClassicDepthComparator() );
@@ -168,7 +168,7 @@
.addChild(nb3)
;
- ss = (DefaultSatSolver) DefaultSatSolver.create(na1);
+ ss = (DefaultSatSolver) DefaultSatSolver.create(na1, ArtifactScopeEnum.compile);
List<ArtifactMetadata> res = ss.solve();
Modified: maven/sandbox/trunk/mercury/src/test/resources/controlledRepo/a/a/3/a-3.pom
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/test/resources/controlledRepo/a/a/3/a-3.pom?rev=677499&r1=677498&r2=677499&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/test/resources/controlledRepo/a/a/3/a-3.pom (original)
+++ maven/sandbox/trunk/mercury/src/test/resources/controlledRepo/a/a/3/a-3.pom Wed Jul 16 21:42:26 2008
@@ -1,8 +1,8 @@
<project>
- <modelVersion>3</modelVersion>
+ <modelVersion>4.0.0</modelVersion>
<groupId>a</groupId>
<artifactId>a</artifactId>
- <version>1</version>
+ <version>3</version>
<dependencies>
<dependency>
Added: maven/sandbox/trunk/mercury/src/test/resources/controlledRepo/a/a/4/a-4.pom
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/test/resources/controlledRepo/a/a/4/a-4.pom?rev=677499&view=auto
==============================================================================
--- maven/sandbox/trunk/mercury/src/test/resources/controlledRepo/a/a/4/a-4.pom (added)
+++ maven/sandbox/trunk/mercury/src/test/resources/controlledRepo/a/a/4/a-4.pom Wed Jul 16 21:42:26 2008
@@ -0,0 +1,21 @@
+<project>
+ <modelVersion>3</modelVersion>
+ <groupId>a</groupId>
+ <artifactId>a</artifactId>
+ <version>4</version>
+
+ <dependencies>
+ <dependency>
+ <groupId>b</groupId>
+ <artifactId>b</artifactId>
+ <version>2</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>c</groupId>
+ <artifactId>c</artifactId>
+ <version>[2,3]</version>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+</project>
\ No newline at end of file
Modified: maven/sandbox/trunk/mercury/src/test/resources/controlledRepo/c/c/3/c-3.pom
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/test/resources/controlledRepo/c/c/3/c-3.pom?rev=677499&r1=677498&r2=677499&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/src/test/resources/controlledRepo/c/c/3/c-3.pom (original)
+++ maven/sandbox/trunk/mercury/src/test/resources/controlledRepo/c/c/3/c-3.pom Wed Jul 16 21:42:26 2008
@@ -1,5 +1,5 @@
<project>
- <modelVersion>4</modelVersion>
+ <modelVersion>4.0.0</modelVersion>
<groupId>c</groupId>
<artifactId>c</artifactId>
<version>3</version>