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/11/23 20:02:15 UTC

svn commit: r720033 - in /maven/mercury/trunk: mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/ mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/ mercury-repo/mercury-repo-virtual/src/main/java/org/apac...

Author: ogusakov
Date: Sun Nov 23 11:02:14 2008
New Revision: 720033

URL: http://svn.apache.org/viewvc?rev=720033&view=rev
Log:
MERCURY-35

Added special treatment for release singleton ranges

Added:
    maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/resources/
    maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/resources/repo/
    maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/resources/repo/ant/
    maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/resources/repo/ant/ant/
    maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/resources/repo/ant/ant/1.6.5/
    maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/resources/repo/ant/ant/1.6.5/ant-1.6.5.jar   (with props)
    maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/resources/repo/ant/ant/1.6.5/ant-1.6.5.jar.sha1
    maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/resources/repo/ant/ant/1.6.5/ant-1.6.5.pom
    maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/resources/repo/ant/ant/1.6.5/ant-1.6.5.pom.sha1
Modified:
    maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/MavenVersionRange.java
    maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/VersionRange.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-virtual/src/main/java/org/apache/maven/mercury/repository/virtual/Messages.properties
    maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/main/java/org/apache/maven/mercury/repository/virtual/VirtualRepositoryReader.java
    maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/java/org/apache/maven/mercury/repository/virtual/VirtualRepositoryReaderTest.java
    maven/mercury/trunk/mercury-util/src/test/java/org/apache/maven/mercury/util/event/EventFrameworkTest.java

Modified: maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/MavenVersionRange.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/MavenVersionRange.java?rev=720033&r1=720032&r2=720033&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/MavenVersionRange.java (original)
+++ maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/MavenVersionRange.java Sun Nov 23 11:02:14 2008
@@ -36,7 +36,7 @@
   DefaultArtifactVersion _toVersion;
   boolean _toInclusive = false;
   
-  boolean soft = false;
+  boolean _singleton = false;
   
   //--------------------------------------------------------------------------------------------
   protected MavenVersionRange( final String range, final QualityRange qRange )
@@ -114,7 +114,7 @@
       checkForValidCharacters(range);
       _fromVersion = new DefaultArtifactVersion( range );
       
-      soft = true;
+      _singleton = true;
       
       // good old maven version interpretation
       if( !_osgiVersion )
@@ -202,9 +202,9 @@
       _osgiVersion = Boolean.parseBoolean( System.getProperty( val, SYSTEM_PARAMETER_OSGI_VERSION_DEFAULT ) );
   }
 
-  public boolean isSoft()
+  public boolean isSingleton()
   {
-    return soft;
+    return _singleton;
   }
   
   //--------------------------------------------------------------------------------------------

Modified: maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/VersionRange.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/VersionRange.java?rev=720033&r1=720032&r2=720033&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/VersionRange.java (original)
+++ maven/mercury/trunk/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/version/VersionRange.java Sun Nov 23 11:02:14 2008
@@ -20,11 +20,7 @@
    */
   public boolean includes( String version );
   /**
-   * returns true if the range is soft. i.e. 
-   *  1). is not "hard" [|(x,y)|]
-   *  2). allows (,) on the all possible versions in the current tree
-   * 
-   * @return 
+   * @return true if the range is good old single version, not a true range
    */
-  public boolean isSoft();
+  public boolean isSingleton();
 }

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=720033&r1=720032&r2=720033&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 Sun Nov 23 11:02:14 2008
@@ -126,39 +126,6 @@
     return root;
   }
   //-----------------------------------------------------
-  /**
-   * the tree is created, now fill in "soft" 
-   * ranges with additional versions from the tree
-   * @throws MetadataTreeException 
-   */
-  private void adjustSoftRanges( MetadataTreeNode node )
-  throws MetadataTreeException
-  {
-    ArtifactBasicMetadata q = node.getQuery();
-    if( q != null )
-    {
-      try
-      {
-        VersionRange vr = VersionRangeFactory.create( q.getVersion() );
-        
-        if( vr.isSoft() )
-        {
-          fillNode( node );
-        }
-      }
-      catch( VersionException e )
-      {
-        throw new MetadataTreeException(e);
-      }
-    }
-  }
-  
-  private void fillNode( MetadataTreeNode node )
-  throws MetadataTreeException
-  {
-    
-  }
-  //-----------------------------------------------------
   private MetadataTreeNode createNode( ArtifactBasicMetadata nodeMD, MetadataTreeNode parent, ArtifactBasicMetadata nodeQuery, ArtifactScopeEnum globalScope )
   throws MetadataTreeException
   {

Modified: maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/main/java/org/apache/maven/mercury/repository/virtual/Messages.properties
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/main/java/org/apache/maven/mercury/repository/virtual/Messages.properties?rev=720033&r1=720032&r2=720033&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/main/java/org/apache/maven/mercury/repository/virtual/Messages.properties (original)
+++ maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/main/java/org/apache/maven/mercury/repository/virtual/Messages.properties Sun Nov 23 11:02:14 2008
@@ -1,3 +1,4 @@
 error.reading.existing.artifact=Error {0} reading existing artifacts from repository {1}
 internal.error.sorting.query=internal error while sorting query {0} - buckets cannot be null 
-no.snapshots=cannot find snapshots for {0}, classifier {1}, type {2}
\ No newline at end of file
+no.snapshots=cannot find snapshots for {0}, classifier {1}, type {2}
+query.element.bad.version=query element {0} has a bad version {1}

Modified: maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/main/java/org/apache/maven/mercury/repository/virtual/VirtualRepositoryReader.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/main/java/org/apache/maven/mercury/repository/virtual/VirtualRepositoryReader.java?rev=720033&r1=720032&r2=720033&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/main/java/org/apache/maven/mercury/repository/virtual/VirtualRepositoryReader.java (original)
+++ maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/main/java/org/apache/maven/mercury/repository/virtual/VirtualRepositoryReader.java Sun Nov 23 11:02:14 2008
@@ -16,6 +16,9 @@
 import org.apache.maven.mercury.artifact.api.ArtifactListProcessor;
 import org.apache.maven.mercury.artifact.api.ArtifactListProcessorException;
 import org.apache.maven.mercury.artifact.version.MetadataVersionComparator;
+import org.apache.maven.mercury.artifact.version.VersionException;
+import org.apache.maven.mercury.artifact.version.VersionRange;
+import org.apache.maven.mercury.artifact.version.VersionRangeFactory;
 import org.apache.maven.mercury.builder.api.MetadataReader;
 import org.apache.maven.mercury.builder.api.MetadataReaderException;
 import org.apache.maven.mercury.logging.IMercuryLogger;
@@ -232,16 +235,24 @@
       ArtifactListProcessor tp = _processors == null ? null : _processors.get( ArtifactListProcessor.FUNCTION_TP );
       
       GenericEvent eventRead = null;
+      
+      List<ArtifactBasicMetadata> qList = new ArrayList<ArtifactBasicMetadata>( query.size() );
+      qList.addAll( query );
   
       for( RepositoryReader rr : _repositoryReaders )
       try 
       {
+        // all found
+        if( qList.isEmpty() )
+          break;
+
         if( _eventManager!= null )
           eventRead = new GenericEvent( MercuryEvent.EventTypeEnum.virtualRepositoryReader, EVENT_READ_VERSIONS_FROM_REPO, rr.getRepository().getId() );
           
-        ArtifactBasicResults repoRes = rr.readVersions( query );
+        ArtifactBasicResults repoRes = rr.readVersions( qList );
         
         if( repoRes != null && repoRes.hasResults() )
+        {
           for( ArtifactBasicMetadata key : repoRes.getResults().keySet() )
           {
             List<ArtifactBasicMetadata> rorRes = repoRes.getResult(key);
@@ -273,9 +284,29 @@
             else
               res.add( key, rorRes );
             
-            if( _eventManager!= null )
-              eventRead.setTag( eventRead.getTag()+", found: "+rorRes.toString() );
+            String keyVersion = key.getVersion();
+            VersionRange keyVersionRange = null;
+            try
+            {
+              keyVersionRange = VersionRangeFactory.create( key.getVersion() );
+            }
+            catch( VersionException e )
+            {
+              throw new RepositoryException( _lang.getMessage( "query.element.bad.version", key.toString(), e.getMessage() ) );
+            }
+            
+            if( keyVersionRange.isSingleton() )
+            {
+              Quality keyQuality = new Quality(keyVersion);
+              if( keyQuality.compareTo( Quality.RELEASE_QUALITY ) == 0 )
+                // fixed release is found - no more scanning
+                qList.remove( key );
+            }
           }
+        }
+        
+        if( _eventManager!= null )
+          eventRead.setResult( "repo done" );
       }
       finally
       {

Modified: maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/java/org/apache/maven/mercury/repository/virtual/VirtualRepositoryReaderTest.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/java/org/apache/maven/mercury/repository/virtual/VirtualRepositoryReaderTest.java?rev=720033&r1=720032&r2=720033&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/java/org/apache/maven/mercury/repository/virtual/VirtualRepositoryReaderTest.java (original)
+++ maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/java/org/apache/maven/mercury/repository/virtual/VirtualRepositoryReaderTest.java Sun Nov 23 11:02:14 2008
@@ -11,6 +11,7 @@
 import org.apache.maven.mercury.artifact.Artifact;
 import org.apache.maven.mercury.artifact.ArtifactBasicMetadata;
 import org.apache.maven.mercury.artifact.DefaultArtifact;
+import org.apache.maven.mercury.repository.api.ArtifactBasicResults;
 import org.apache.maven.mercury.repository.api.ArtifactResults;
 import org.apache.maven.mercury.repository.api.LocalRepository;
 import org.apache.maven.mercury.repository.api.RemoteRepository;
@@ -19,6 +20,10 @@
 import org.apache.maven.mercury.repository.remote.m2.RemoteRepositoryM2;
 import org.apache.maven.mercury.transport.api.Server;
 import org.apache.maven.mercury.util.FileUtil;
+import org.apache.maven.mercury.util.event.EventManager;
+import org.apache.maven.mercury.util.event.MercuryEvent;
+import org.apache.maven.mercury.util.event.MercuryEventListener;
+import org.apache.maven.mercury.util.event.MercuryEvent.EventMask;
 
 /**
  *
@@ -39,7 +44,10 @@
   String _remoteUrl = "http://people.apache.org/~ogusakov/repos/test";
   String _artifactCoordSn = "org.apache.maven.mercury:mercury-repo-virtual:1.0.0-alpha-2-SNAPSHOT";
   String _artifactCoordLatest = "org.apache.maven.mercury:mercury-repo-virtual:1.0.0-alpha-2-LATEST";
-  String _artifactCoordRelease = "org.apache.maven.mercury:mercury-repo-virtual:1.0.0-alpha-2-RELEASE";
+  String _artifactCoordRelease = "ant:ant:1.6.5";
+  
+  String _localRepoId = "localRepo";
+  String _remoteRepoId = "remoteRepo";
   
   @Override
   protected void setUp()
@@ -48,13 +56,14 @@
     _testBase = new File( "./target/repo" );
     FileUtil.delete( _testBase );
     _testBase.mkdirs();
+    FileUtil.copy( new File("./src/test/resources/repo"), _testBase, false );
     
     if( !_testBase.exists() || !_testBase.isDirectory() )
       throw new Exception( "cannot create clean folder " + _testBase.getAbsolutePath() );
     
-    _localRepo = new LocalRepositoryM2( "localRepo", _testBase );
+    _localRepo = new LocalRepositoryM2( _localRepoId, _testBase );
     
-    _server = new Server( "remoteRepo", new URL(_remoteUrl) );
+    _server = new Server( _remoteRepoId, new URL(_remoteUrl) );
     
     _remoteRepo = new RemoteRepositoryM2( _server.getId(), _server );
     
@@ -127,4 +136,62 @@
     assertEquals( 4, af.length() );
     
   }
+  
+  public void testReadRelease()
+  throws Exception
+  {
+    ArtifactBasicMetadata bmd = new ArtifactBasicMetadata( _artifactCoordRelease );
+    List<ArtifactBasicMetadata> q = new ArrayList<ArtifactBasicMetadata>();
+    q.add( bmd );
+    
+    Listener l = new Listener();
+    _vr.register( l );
+    
+    ArtifactBasicResults res = _vr.readVersions( q );
+    
+    assertNotNull( res );
+    
+    assertFalse( res.hasExceptions() );
+    
+    assertTrue( res.hasResults() );
+    
+    assertTrue( res.hasResults( bmd ) );
+    
+    // let events propagate
+    Thread.sleep( 2000L );
+    
+    assertTrue( l.localEventCount > 0 );
+    
+    assertEquals( 0, l.remoteEventCount );
+    
+  }
+  
+  class Listener
+  implements MercuryEventListener
+  {
+
+    int localEventCount = 0;
+    int remoteEventCount = 0;
+      
+    public void fire( MercuryEvent event )
+    {
+      String tag = event.getTag();
+      
+      if( _localRepoId.equals( tag ) )
+        ++localEventCount;
+      else if( _remoteRepoId.equals( tag ) )
+        ++remoteEventCount;
+      
+      System.out.println(EventManager.toString( event ));
+      System.out.flush();
+    }
+
+    public EventMask getMask()
+    {
+      return null;
+    }
+    
+  }
+  
 }
+

Added: maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/resources/repo/ant/ant/1.6.5/ant-1.6.5.jar
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/resources/repo/ant/ant/1.6.5/ant-1.6.5.jar?rev=720033&view=auto
==============================================================================
Binary file - no diff available.

Propchange: maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/resources/repo/ant/ant/1.6.5/ant-1.6.5.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/resources/repo/ant/ant/1.6.5/ant-1.6.5.jar.sha1
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/resources/repo/ant/ant/1.6.5/ant-1.6.5.jar.sha1?rev=720033&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/resources/repo/ant/ant/1.6.5/ant-1.6.5.jar.sha1 (added)
+++ maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/resources/repo/ant/ant/1.6.5/ant-1.6.5.jar.sha1 Sun Nov 23 11:02:14 2008
@@ -0,0 +1 @@
+7d18faf23df1a5c3a43613952e0e8a182664564b
\ No newline at end of file

Added: maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/resources/repo/ant/ant/1.6.5/ant-1.6.5.pom
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/resources/repo/ant/ant/1.6.5/ant-1.6.5.pom?rev=720033&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/resources/repo/ant/ant/1.6.5/ant-1.6.5.pom (added)
+++ maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/resources/repo/ant/ant/1.6.5/ant-1.6.5.pom Sun Nov 23 11:02:14 2008
@@ -0,0 +1,26 @@
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache</groupId>
+    <artifactId>apache</artifactId>
+    <version>4</version>
+  </parent>
+  <groupId>ant</groupId>
+  <artifactId>ant</artifactId>
+  <version>1.6.5</version>
+  <!-- Fixed per MEV-531 -->
+  <dependencies>
+    <dependency>
+      <groupId>xerces</groupId>
+      <artifactId>xercesImpl</artifactId>
+      <version>2.6.2</version>
+      <optional>true</optional>
+    </dependency>
+    <dependency>
+      <groupId>xml-apis</groupId>
+      <artifactId>xml-apis</artifactId>
+      <version>1.3.04</version>
+      <optional>true</optional>
+    </dependency>
+  </dependencies>
+</project>

Added: maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/resources/repo/ant/ant/1.6.5/ant-1.6.5.pom.sha1
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/resources/repo/ant/ant/1.6.5/ant-1.6.5.pom.sha1?rev=720033&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/resources/repo/ant/ant/1.6.5/ant-1.6.5.pom.sha1 (added)
+++ maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/test/resources/repo/ant/ant/1.6.5/ant-1.6.5.pom.sha1 Sun Nov 23 11:02:14 2008
@@ -0,0 +1 @@
+1d43acaa1d04c7bf7f716a96a6e6526579109bcc  ant-1.6.5.pom

Modified: maven/mercury/trunk/mercury-util/src/test/java/org/apache/maven/mercury/util/event/EventFrameworkTest.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-util/src/test/java/org/apache/maven/mercury/util/event/EventFrameworkTest.java?rev=720033&r1=720032&r2=720033&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-util/src/test/java/org/apache/maven/mercury/util/event/EventFrameworkTest.java (original)
+++ maven/mercury/trunk/mercury-util/src/test/java/org/apache/maven/mercury/util/event/EventFrameworkTest.java Sun Nov 23 11:02:14 2008
@@ -113,8 +113,8 @@
 
   public void fire( MercuryEvent event )
   {
-    System.out.println( EventManager.toString( event ) );
-    System.out.flush();
+//    System.out.println( EventManager.toString( event ) );
+//    System.out.flush();
     
     if( event.getType().equals( MercuryEvent.EventTypeEnum.localRepository ) )
       ++localRepoCount;