Author: ogusakov Date: Tue Dec 9 21:19:39 2008 New Revision: 724991 URL: http://svn.apache.org/viewvc?rev=724991&view=rev Log: MERCURY-49 - modifications to simplify usage for ant tasks
Modified: maven/mercury/trunk/mercury-it/pom.xml maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyBuilder.java maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java maven/mercury/trunk/mercury-repo/mercury-repo-remote-m2/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryReaderM2.java maven/mercury/trunk/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/SimpleTestServer.java Modified: maven/mercury/trunk/mercury-it/pom.xml URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-it/pom.xml?rev=724991&r1=724990&r2=724991&view=diff ============================================================================== --- maven/mercury/trunk/mercury-it/pom.xml (original) +++ maven/mercury/trunk/mercury-it/pom.xml Tue Dec 9 21:19:39 2008 @@ -4,7 +4,7 @@ <parent> <groupId>org.apache.maven.mercury</groupId> <artifactId>mercury</artifactId> - <version>1.0.0-alpha-2-SNAPSHOT</version> + <version>1.0.0-alpha-3-SNAPSHOT</version> </parent> <artifactId>mercury-it</artifactId> Modified: maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyBuilder.java URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyBuilder.java?rev=724991&r1=724990&r2=724991&view=diff ============================================================================== --- maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyBuilder.java (original) +++ maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyBuilder.java Tue Dec 9 21:19:39 2008 @@ -60,6 +60,19 @@ throws MetadataTreeException; /** + * consolidated entry point: give it a collection of GAVs, it + * will create a classpath out of it + * + * @param root the tree to resolve conflicts on + * @return list of resolved GAVs + * @throws MetadataTreeException + */ + public abstract List<ArtifactMetadata> resolveConflicts( ArtifactScopeEnum scope, ArtifactBasicMetadata... startMDs ) + throws MetadataTreeException; + public abstract List<ArtifactMetadata> resolveConflicts( ArtifactScopeEnum scope, List<ArtifactBasicMetadata> startMDs ) + throws MetadataTreeException; + + /** * this one resolves the conflicts, removing all duplicate GAVs from the tree and * returning a copy of the resulting subtree - original tree should be intact * Modified: maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java?rev=724991&r1=724990&r2=724991&view=diff ============================================================================== --- maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java (original) +++ maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java Tue Dec 9 21:19:39 2008 @@ -60,6 +60,8 @@ class DependencyTreeBuilder implements DependencyBuilder, EventGenerator { + public static final ArtifactMetadata DUMMY_ROOT = new ArtifactMetadata("__fake:__fake:1.0"); + private static final Language _lang = new DefaultLanguage(DependencyTreeBuilder.class); private static final IMercuryLogger _log = MercuryLoggerManager.getLogger( DependencyTreeBuilder.class ); @@ -132,11 +134,14 @@ _existingNodes = new HashMap<String, MetadataTreeNode>(256); - GenericEvent treeBuildEvent = new GenericEvent( EventTypeEnum.dependencyBuilder, TREE_BUILD_EVENT, startMD.getGAV() ); + GenericEvent treeBuildEvent = null; + if( _eventManager != null ) + treeBuildEvent = new GenericEvent( EventTypeEnum.dependencyBuilder, TREE_BUILD_EVENT, startMD.getGAV() ); MetadataTreeNode root = createNode( startMD, null, startMD, treeScope ); - treeBuildEvent.stop(); + if( _eventManager != null ) + treeBuildEvent.stop(); if( _eventManager != null ) _eventManager.fireEvent( treeBuildEvent ); @@ -146,41 +151,37 @@ return root; } //------------------------------------------------------------------------ - private MetadataTreeNode buildTree( Collection<ArtifactBasicMetadata> startMDs, ArtifactScopeEnum treeScope ) + public List<ArtifactMetadata> resolveConflicts( ArtifactScopeEnum scope, ArtifactBasicMetadata... startMDs ) + throws MetadataTreeException + { + return resolveConflicts( scope, Arrays.asList( startMDs ) ); + } + //------------------------------------------------------------------------ + public List<ArtifactMetadata> resolveConflicts( ArtifactScopeEnum scope, List<ArtifactBasicMetadata> startMDs ) throws MetadataTreeException { -// if( Util.isEmpty( startMDs ) ) -// throw new MetadataTreeException( _lang.getMessage( "empty.md.collection") ); -// -// List<MetadataTreeNode> deps = new ArrayList<MetadataTreeNode>( startMDs.size() ); -// for() - -// try -// { -// _reader.setEventManager( _eventManager ); -// _reader.setProcessors( _processors ); -// _reader.init(); -// } -// catch( RepositoryException e ) -// { -// throw new MetadataTreeException(e); -// } -// -// _existingNodes = new HashMap<String, MetadataTreeNode>(256); - -//// GenericEvent treeBuildEvent = new GenericEvent( EventTypeEnum.dependencyBuilder, TREE_BUILD_EVENT, startMD.getGAV() ); -//// -//// MetadataTreeNode root = createNode( startMD, null, startMD, treeScope ); -// -// treeBuildEvent.stop(); -// -// if( _eventManager != null ) -// _eventManager.fireEvent( treeBuildEvent ); -// -// MetadataTreeNode.reNumber( root, 1 ); + if( Util.isEmpty( startMDs ) ) + throw new MetadataTreeException( _lang.getMessage( "empty.md.collection") ); + + List<MetadataTreeNode> deps = new ArrayList<MetadataTreeNode>( startMDs.size() ); + + // build all trees + for( ArtifactBasicMetadata bmd : startMDs ) + { + MetadataTreeNode rooty = buildTree( bmd, scope ); + + deps.add( rooty ); + } -// return root; - return null; + DUMMY_ROOT.setDependencies( startMDs ); + + // combine into one tree + MetadataTreeNode root = new MetadataTreeNode( DUMMY_ROOT, null, null ); + + for( MetadataTreeNode kid : deps ) + root.addChild( kid ); + + return resolveConflicts( root ); } //----------------------------------------------------- private MetadataTreeNode createNode( ArtifactBasicMetadata nodeMD, MetadataTreeNode parent, ArtifactBasicMetadata nodeQuery, ArtifactScopeEnum globalScope ) @@ -428,49 +429,6 @@ return _comparators; } //----------------------------------------------------- - protected List<ArtifactMetadata> resolveConflicts( List<ArtifactBasicMetadata> bmds ) - throws MetadataTreeException - { - if( Util.isEmpty( bmds ) ) - throw new MetadataTreeException(_lang.getMessage( "empty.tree.collection" )); - - String dummyGAV = "__fake:__fake:0.0.0"; - - ArtifactBasicMetadata query = new ArtifactBasicMetadata( dummyGAV ); - - ArtifactMetadata dummyMd = new ArtifactMetadata( query ); - dummyMd.setDependencies( bmds ); - - MetadataTreeNode root = new MetadataTreeNode( dummyMd, null, query ); - - try - { - DefaultSatSolver solver = new DefaultSatSolver( root, _eventManager ); - - solver.applyPolicies( getComparators() ); - - List<ArtifactMetadata> res = solver.solve(); - - res.remove( dummyMd ); - - return res; - } - catch (SatException e) - { - throw new MetadataTreeException(e); - } - - } - //----------------------------------------------------- - protected List<ArtifactMetadata> resolveConflicts( ArtifactBasicMetadata... bmds ) - throws MetadataTreeException - { - if( Util.isEmpty( bmds ) ) - return null; - - return resolveConflicts( Arrays.asList( bmds ) ); - } - //----------------------------------------------------- private String showPath( MetadataTreeNode node ) throws MetadataTreeCircularDependencyException { Modified: maven/mercury/trunk/mercury-repo/mercury-repo-remote-m2/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryReaderM2.java URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-remote-m2/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryReaderM2.java?rev=724991&r1=724990&r2=724991&view=diff ============================================================================== --- maven/mercury/trunk/mercury-repo/mercury-repo-remote-m2/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryReaderM2.java (original) +++ maven/mercury/trunk/mercury-repo/mercury-repo-remote-m2/src/main/java/org/apache/maven/mercury/repository/remote/m2/RemoteRepositoryReaderM2.java Tue Dec 9 21:19:39 2008 @@ -461,10 +461,11 @@ _log.debug( _repo.getId()+": did not find in the cache - go out for "+bmd ); // no cached data, or it has expired - read from repository - byte[] mavenMetadata = readRawData( loc.getGaPath()+FileUtil.SEP+_repo.getMetadataName() ); + String mdPath = loc.getGaPath()+FileUtil.SEP+_repo.getMetadataName(); + byte[] mavenMetadata = readRawData( mdPath ); if( mavenMetadata == null ) - throw new MetadataReaderException(); + throw new MetadataReaderException( _lang.getMessage( "no.group.md", _repo.getServer().getURL().toString(), mdPath ) ); Metadata mmd = MetadataBuilder.getMetadata( mavenMetadata ); Modified: maven/mercury/trunk/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/SimpleTestServer.java URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/SimpleTestServer.java?rev=724991&r1=724990&r2=724991&view=diff ============================================================================== --- maven/mercury/trunk/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/SimpleTestServer.java (original) +++ maven/mercury/trunk/mercury-transport/mercury-transport-http/src/test/java/org/apache/maven/mercury/spi/http/server/SimpleTestServer.java Tue Dec 9 21:19:39 2008 @@ -75,6 +75,21 @@ context.setResourceBase( base.getCanonicalPath() ); } + public SimpleTestServer( File localBase, String remotePathFragment ) + throws Exception + { + super( 0 ); + + HandlerCollection handlers = new HandlerCollection(); + setHandler( handlers ); + + context = new Context( handlers, remotePathFragment ); + handlers.addHandler( new DefaultHandler() ); + + context.addServlet( DefaultServlet.class, "/" ); + context.setResourceBase( localBase.getCanonicalPath() ); + } + public int getPort() { return getConnectors()[0].getLocalPort();