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/19 23:57:01 UTC

svn commit: r719116 - in /maven/mercury/trunk: mercury-it/src/test/java/org/apache/maven/mercury/dependency/tests/ mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/ mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercu...

Author: ogusakov
Date: Wed Nov 19 14:57:00 2008
New Revision: 719116

URL: http://svn.apache.org/viewvc?rev=719116&view=rev
Log:
intermediate commit for http://jira.codehaus.org/browse/MERCURY-6

Modified:
    maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/dependency/tests/DependencyTreeBuilderTest.java
    maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java
    maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolver.java
    maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/SatSolver.java
    maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/main/java/org/apache/maven/mercury/repository/virtual/VirtualRepositoryReader.java
    maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/TimeUtil.java
    maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/EventGenerator.java
    maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/EventManager.java
    maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/MercuryEvent.java

Modified: maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/dependency/tests/DependencyTreeBuilderTest.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/dependency/tests/DependencyTreeBuilderTest.java?rev=719116&r1=719115&r2=719116&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/dependency/tests/DependencyTreeBuilderTest.java (original)
+++ maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/dependency/tests/DependencyTreeBuilderTest.java Wed Nov 19 14:57:00 2008
@@ -27,6 +27,9 @@
 import org.apache.maven.mercury.repository.remote.m2.RemoteRepositoryM2;
 import org.apache.maven.mercury.repository.virtual.VirtualRepositoryReader;
 import org.apache.maven.mercury.transport.api.Server;
+import org.apache.maven.mercury.util.event.EventManager;
+import org.apache.maven.mercury.util.event.MercuryEvent;
+import org.apache.maven.mercury.util.event.MercuryEventListener;
 
 
 /**
@@ -36,6 +39,7 @@
  */
 public class DependencyTreeBuilderTest
 extends TestCase
+implements MercuryEventListener
 {
   private static final org.slf4j.Logger _log = org.slf4j.LoggerFactory.getLogger( DependencyTreeBuilderTest.class ); 
   
@@ -81,6 +85,7 @@
 //    reps.add(centralRepo);
 
     depBuilder = DependencyBuilderFactory.create( DependencyBuilderFactory.JAVA_DEPENDENCY_MODEL, reps, null, null, null );
+    depBuilder.register( this );
     
     vReader = new VirtualRepositoryReader( reps );
   }
@@ -139,7 +144,7 @@
     System.out.println("---------------------------------");    
     for( ArtifactMetadata amd : res )
     {
-      System.out.println(amd + ( amd.getTracker() == null ? " [no tracker]" : " ["+((RepositoryReader)amd.getTracker()).getRepository().getServer().toString()+"]" ) );
+      System.out.println(amd + ( amd.getTracker() == null ? " [no tracker]" : " ["+((RepositoryReader)amd.getTracker()).getRepository().getId()+"]" ) );
     }
     System.out.println("---------------------------------");    
 
@@ -249,6 +254,11 @@
         System.out.println( a.toString()+" -> "+a.getFile() );
     }
   }
- //----------------------------------------------------------------------------------------------
+  //----------------------------------------------------------------------------------------------
+  public void fire( MercuryEvent event )
+  {
+    System.out.println( "event: "+ EventManager.toString( event ) );
+  }
+  //----------------------------------------------------------------------------------------------
   //----------------------------------------------------------------------------------------------
 }
\ No newline at end of file

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=719116&r1=719115&r2=719116&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 Wed Nov 19 14:57:00 2008
@@ -99,6 +99,7 @@
     
     try
     {
+      _reader.setEventManager( _eventManager );
       _reader.setProcessors( _processors );
       _reader.init();
     }

Modified: maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolver.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolver.java?rev=719116&r1=719115&r2=719116&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolver.java (original)
+++ maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolver.java Wed Nov 19 14:57:00 2008
@@ -11,16 +11,16 @@
 
 import org.apache.maven.mercury.artifact.ArtifactBasicMetadata;
 import org.apache.maven.mercury.artifact.ArtifactMetadata;
-import org.apache.maven.mercury.artifact.ArtifactScopeEnum;
 import org.apache.maven.mercury.logging.IMercuryLogger;
 import org.apache.maven.mercury.logging.MercuryLoggerManager;
 import org.apache.maven.mercury.metadata.MetadataTreeNode;
 import org.apache.maven.mercury.metadata.MetadataTreeNodeGAComparator;
 import org.apache.maven.mercury.metadata.MetadataTreeNodeGAVComparator;
 import org.apache.maven.mercury.util.event.EventManager;
+import org.apache.maven.mercury.util.event.GenericEvent;
+import org.apache.maven.mercury.util.event.MercuryEventListener;
 import org.codehaus.plexus.lang.DefaultLanguage;
 import org.codehaus.plexus.lang.Language;
-import org.omg.stub.java.rmi._Remote_Stub;
 import org.sat4j.core.Vec;
 import org.sat4j.core.VecInt;
 import org.sat4j.pb.IPBSolver;
@@ -68,28 +68,43 @@
   throws SatException
   {
     this._eventManager = eventManager;
+    GenericEvent event = null;
     
     if( tree == null)
       throw new SatException("cannot create a solver for an empty [null] tree");
     
-    if( tree.getId() == 0 )
-      MetadataTreeNode.reNumber( tree, 1 );
-    
-    int nNodes = tree.countDistinctNodes();
-
-_log.debug( "SatContext: # of variables: "+nNodes );
-
-    _context = new SatContext( nNodes );
-    _solver.newVar( tree.countNodes() );
-    _root = tree;
-    
     try
     {
-      addNode( tree );
+      if( _eventManager != null )
+        event = new GenericEvent( "create.sat.solver", tree.toString() );
+        
+      if( tree.getId() == 0 )
+        MetadataTreeNode.reNumber( tree, 1 );
+      
+      int nNodes = tree.countDistinctNodes();
+  
+  _log.debug( "SatContext: # of variables: "+nNodes );
+  
+      _context = new SatContext( nNodes );
+      _solver.newVar( tree.countNodes() );
+      _root = tree;
+      
+      try
+      {
+        addNode( tree );
+      }
+      catch (ContradictionException e)
+      {
+        throw new SatException(e);
+      }
     }
-    catch (ContradictionException e)
+    finally
     {
-      throw new SatException(e);
+      if( _eventManager != null )
+      {
+        event.stop();
+        _eventManager.fireEvent( event );
+      }
     }
   }
   //-----------------------------------------------------------------------
@@ -145,10 +160,10 @@
       for( int i=0; i<bucketSize; i++ )
       {
         MetadataTreeNode n  = bucket.get(i);
+
 if( _log.isDebugEnabled() )
   _log.debug( n.toString() );
 
-        ArtifactMetadata md = n.getMd();
         SatVar var = _context.findOrAdd(n);
         int varLiteral = var.getLiteral(); 
         
@@ -165,7 +180,6 @@
           if( _log.isDebugEnabled() )
             _log.debug( "    "+cf+" x"+var.getLiteral() );
         }
-        
 
       }
 
@@ -518,9 +532,13 @@
   throws SatException
   {
     List<ArtifactMetadata> res = null;
+    GenericEvent event = null;
     
     try
     {
+      if( _eventManager != null )
+        event = new GenericEvent( "solve", _root.toString() );
+      
       if( _solver.isSatisfiable() )
       {
         res = new ArrayList<ArtifactMetadata>( _root.countNodes() );
@@ -551,6 +569,14 @@
     {
       throw new SatException( e );
     }
+    finally
+    {
+      if( _eventManager != null )
+      {
+        event.stop();
+        _eventManager.fireEvent( event );
+      }
+    }
     return res;
   }
   //-----------------------------------------------------------------------
@@ -589,5 +615,23 @@
     
   }
   //-----------------------------------------------------------------------
+  public void register( MercuryEventListener listener )
+  {
+    if( _eventManager == null )
+      _eventManager = new EventManager();
+
+    _eventManager.register( listener );
+  }
+
+  public void setEventManager( EventManager eventManager )
+  {
+    _eventManager = eventManager;
+  }
+
+  public void unRegister( MercuryEventListener listener )
+  {
+    if( _eventManager != null )
+      _eventManager.unRegister( listener );
+  }
   //-----------------------------------------------------------------------
 }

Modified: maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/SatSolver.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/SatSolver.java?rev=719116&r1=719115&r2=719116&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/SatSolver.java (original)
+++ maven/mercury/trunk/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/sat/SatSolver.java Wed Nov 19 14:57:00 2008
@@ -5,11 +5,13 @@
 
 import org.apache.maven.mercury.artifact.ArtifactMetadata;
 import org.apache.maven.mercury.metadata.MetadataTreeNode;
+import org.apache.maven.mercury.util.event.EventGenerator;
 
 /**
  * @author <a href="oleg@codehaus.org">Oleg Gusakov</a>
  */
 public interface SatSolver
+extends EventGenerator
 {
   public static final int DEFAULT_TREE_SIZE = 128; //nodes
   

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=719116&r1=719115&r2=719116&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 Wed Nov 19 14:57:00 2008
@@ -31,6 +31,10 @@
 import org.apache.maven.mercury.repository.api.RepositoryWriter;
 import org.apache.maven.mercury.repository.cache.fs.MetadataCacheFs;
 import org.apache.maven.mercury.util.Util;
+import org.apache.maven.mercury.util.event.EventGenerator;
+import org.apache.maven.mercury.util.event.EventManager;
+import org.apache.maven.mercury.util.event.GenericEvent;
+import org.apache.maven.mercury.util.event.MercuryEventListener;
 import org.codehaus.plexus.lang.DefaultLanguage;
 import org.codehaus.plexus.lang.Language;
 
@@ -43,8 +47,19 @@
  *
  */
 public class VirtualRepositoryReader
-implements MetadataReader
+implements MetadataReader, EventGenerator
 {
+  public static final String EVENT_READ_ARTIFACTS = "vr.read.artifacts";
+  public static final String EVENT_READ_ARTIFACTS_FROM_REPO = "vr.read.artifacts.from.repo";
+  public static final String EVENT_READ_ARTIFACTS_FROM_REPO_QUALIFIED = "vr.read.artifacts.from.repo.qualified";
+  public static final String EVENT_READ_ARTIFACTS_FROM_REPO_UNQUALIFIED = "vr.read.artifacts.from.repo.unqualified";
+  
+  public static final String EVENT_READ_VERSIONS = "vr.read.versions";
+  public static final String EVENT_READ_VERSIONS_FROM_REPO = "vr.read.versions.from.repo";
+  
+  public static final String EVENT_READ_RAW = "vr.read.raw";
+  public static final String EVENT_READ_RAW_FROM_REPO = "vr.read.raw.from.repo";
+  
   /** file system cache subfolder */
   public static final String METADATA_CACHE_DIR = ".cache";
   
@@ -68,6 +83,8 @@
   private Map<String,ArtifactListProcessor>   _processors;
   
   private boolean _initialized = false;
+  
+  private EventManager _eventManager;
   //----------------------------------------------------------------------------------------------------------------------------
   public VirtualRepositoryReader( Collection<Repository> repositories )
   throws RepositoryException
@@ -334,90 +351,138 @@
   public ArtifactResults readArtifacts( Collection<? extends ArtifactBasicMetadata> query )
   throws RepositoryException
   {
-    ArtifactResults res = null;
-    
-    if( Util.isEmpty( query ) )
-      return res;
-    
-    Map< RepositoryReader, List<ArtifactBasicMetadata> > buckets = sortByRepo( query );
+    GenericEvent event = null;
     
-    List<ArtifactBasicMetadata> rejects = buckets == null ? null : buckets.get( RepositoryReader.NULL_READER );
-
-    if( buckets == null )
-      throw new RepositoryException( _lang.getMessage( "internal.error.sorting.query", query.toString() ) ); 
-      
-    init();
-    
-    // first read repository-qualified Artifacts
-    for( RepositoryReader rr : buckets.keySet() )
+    try
     {
-      if( RepositoryReader.NULL_READER.equals( rr ) )
-        continue;
-      
-      String repoId = rr.getRepository().getId();
+      ArtifactResults res = null;
+
+      if( _eventManager != null )
+        event = new GenericEvent( EVENT_READ_ARTIFACTS, "" );
       
-      List<ArtifactBasicMetadata> rrQuery = buckets.get( rr );
+      if( Util.isEmpty( query ) )
+        return res;
       
-      ArtifactResults rrRes = rr.readArtifacts( rrQuery );
+      Map< RepositoryReader, List<ArtifactBasicMetadata> > buckets = sortByRepo( query );
       
-      if( rrRes.hasExceptions() )
-        throw new RepositoryException( _lang.getMessage( "error.reading.existing.artifact", rrRes.getExceptions().toString(), rr.getRepository().getId() ) );
+      List<ArtifactBasicMetadata> rejects = buckets == null ? null : buckets.get( RepositoryReader.NULL_READER );
+  
+      if( buckets == null )
+        throw new RepositoryException( _lang.getMessage( "internal.error.sorting.query", query.toString() ) ); 
+        
+      init();
       
-      if( rrRes.hasResults() )
-        for( ArtifactBasicMetadata bm : rrRes.getResults().keySet() )
-        {
-          List<Artifact> al = rrRes.getResults( bm ); 
-          
-          if( res == null )
-            res = new ArtifactResults();
-
-          res.addAll( bm, al );
-          
-          // don't write local artifacts back to the same repo
-          if( _localRepository != null && repoId.equals( _localRepository.getId() ) )
-            continue;
-
-          if( _localRepositoryWriter != null )
-            _localRepositoryWriter.writeArtifacts( al );
-        }
-    }
-    
-    // then search all repos for unqualified Artifacts
-    if( !Util.isEmpty( rejects ) )
-    {
-      for( RepositoryReader rr : _repositoryReaders )
+      // first read repository-qualified Artifacts
+      for( RepositoryReader rr : buckets.keySet() )
       {
-        if( rejects.isEmpty() )
-          break;
+        if( RepositoryReader.NULL_READER.equals( rr ) )
+          continue;
         
         String repoId = rr.getRepository().getId();
         
-        ArtifactResults rrRes = rr.readArtifacts( rejects );
+        GenericEvent eventRead = null;
         
-        if( rrRes.hasResults() )
-          for( ArtifactBasicMetadata bm : rrRes.getResults().keySet() )
+        try
+        {
+          if( _eventManager != null )
+            eventRead = new GenericEvent( EVENT_READ_ARTIFACTS_FROM_REPO_QUALIFIED, repoId );
+          
+          List<ArtifactBasicMetadata> rrQuery = buckets.get( rr );
+          
+          ArtifactResults rrRes = rr.readArtifacts( rrQuery );
+          
+          if( rrRes.hasExceptions() )
+            throw new RepositoryException( _lang.getMessage( "error.reading.existing.artifact", rrRes.getExceptions().toString(), rr.getRepository().getId() ) );
+          
+          if( rrRes.hasResults() )
+            for( ArtifactBasicMetadata bm : rrRes.getResults().keySet() )
+            {
+              List<Artifact> al = rrRes.getResults( bm ); 
+              
+              if( res == null )
+                res = new ArtifactResults();
+    
+              res.addAll( bm, al );
+              
+              // don't write local artifacts back to the same repo
+              if( _localRepository != null && repoId.equals( _localRepository.getId() ) )
+                continue;
+    
+              if( _localRepositoryWriter != null )
+                _localRepositoryWriter.writeArtifacts( al );
+            }
+        }
+        finally
+        {
+          if( _eventManager != null )
           {
-            List<Artifact> al = rrRes.getResults( bm ); 
-
-            if( res == null )
-              res = new ArtifactResults();
-            
-            res.addAll( bm, al );
+            eventRead.stop();
+            _eventManager.fireEvent( eventRead );
+          }
+        }
+      }
+      
+      // then search all repos for unqualified Artifacts
+      if( !Util.isEmpty( rejects ) )
+      {
+        for( RepositoryReader rr : _repositoryReaders )
+        {
+          if( rejects.isEmpty() )
+            break;
+          
+          String repoId = rr.getRepository().getId();
+          
+          GenericEvent eventRead = null;
+          
+          try
+          {
+            if( _eventManager != null )
+              eventRead = new GenericEvent( EVENT_READ_ARTIFACTS_FROM_REPO_UNQUALIFIED, repoId );
             
-            rejects.remove( bm );
+            ArtifactResults rrRes = rr.readArtifacts( rejects );
             
-            // don't write local artifacts back to the same repo
-            if( _localRepository != null && repoId.equals( _localRepository.getId() ) )
-              continue;
-
-            if( _localRepositoryWriter != null )
-              _localRepositoryWriter.writeArtifacts( al );
-
+            if( rrRes.hasResults() )
+              for( ArtifactBasicMetadata bm : rrRes.getResults().keySet() )
+              {
+                List<Artifact> al = rrRes.getResults( bm ); 
+    
+                if( res == null )
+                  res = new ArtifactResults();
+                
+                res.addAll( bm, al );
+                
+                rejects.remove( bm );
+                
+                // don't write local artifacts back to the same repo
+                if( _localRepository != null && repoId.equals( _localRepository.getId() ) )
+                  continue;
+    
+                if( _localRepositoryWriter != null )
+                  _localRepositoryWriter.writeArtifacts( al );
+  
+            }
+          }
+          finally
+          {
+            if( _eventManager != null )
+            {
+              eventRead.stop();
+              _eventManager.fireEvent( eventRead );
+            }
           }
+        }
+      }
+      
+      return res;
+    }
+    finally
+    {
+      if( _eventManager != null )
+      {
+        event.stop();
+        _eventManager.fireEvent( event );
       }
     }
-    
-    return res;
   }
   //----------------------------------------------------------------------------------------------------------------------------
   // MetadataReader implementation
@@ -437,85 +502,135 @@
   throws MetadataReaderException
   {
     
+    GenericEvent event = null;
+    
     if( _log.isDebugEnabled() )
       _log.debug( "request for "+bmd+", classifier="+classifier+", type="+type );
     
     if( bmd == null )
       throw new IllegalArgumentException("null bmd supplied");
     
-    ArtifactBasicMetadata bmdQuery = bmd;
-    
     try
     {
-      init();
-    }
-    catch( RepositoryException e )
-    {
-      throw new MetadataReaderException(e);
-    }
-    
-    byte [] res = null;
-    Quality vq = new Quality( bmd.getVersion() );
-    
-    if( _log.isDebugEnabled() )
-      _log.debug( "quality calculated as "+vq.getQuality() == null ? "null" :vq.getQuality().name() );
-    
-    if( Quality.SNAPSHOT_QUALITY.equals( vq ) )
-    {
-      List<ArtifactBasicMetadata> query = new ArrayList<ArtifactBasicMetadata>(1);
-      query.add( bmd );
+      event = new GenericEvent( EVENT_READ_RAW, "" );
+      
+      ArtifactBasicMetadata bmdQuery = bmd;
       
       try
       {
-        ArtifactBasicResults vRes = readVersions( query );
-        if( Util.isEmpty( vRes ) )
+        init();
+      }
+      catch( RepositoryException e )
+      {
+        throw new MetadataReaderException(e);
+      }
+      
+      byte [] res = null;
+      Quality vq = new Quality( bmd.getVersion() );
+      
+      if( _log.isDebugEnabled() )
+        _log.debug( "quality calculated as "+vq.getQuality() == null ? "null" :vq.getQuality().name() );
+      
+      if( Quality.SNAPSHOT_QUALITY.equals( vq ) )
+      {
+        List<ArtifactBasicMetadata> query = new ArrayList<ArtifactBasicMetadata>(1);
+        query.add( bmd );
+        
+        try
         {
-          if( _log.isDebugEnabled() )
-            _log.debug( "no snapshots found - throw exception" );
-          
-          throw new MetadataReaderException( _lang.getMessage( "no.snapshots", bmd.toString(), classifier, type ) );
+          ArtifactBasicResults vRes = readVersions( query );
+          if( Util.isEmpty( vRes ) )
+          {
+            if( _log.isDebugEnabled() )
+              _log.debug( "no snapshots found - throw exception" );
+            
+            throw new MetadataReaderException( _lang.getMessage( "no.snapshots", bmd.toString(), classifier, type ) );
+          }
+            
+            
+          if( vRes.hasResults( bmd ) )
+          {
+            List<ArtifactBasicMetadata> versions = vRes.getResult( bmd );
+            
+            TreeSet<ArtifactBasicMetadata> snapshots = new TreeSet<ArtifactBasicMetadata>( new MetadataVersionComparator() );
+            snapshots.addAll( versions );
+            
+            bmdQuery = snapshots.last();
+          }
+          else
+          {
+            if( _log.isDebugEnabled() )
+              _log.debug( "no snapshots found - throw exception" );
+            
+            throw new MetadataReaderException( _lang.getMessage( "no.snapshots", bmd.toString(), classifier, type ) );
+          }
         }
-          
-          
-        if( vRes.hasResults( bmd ) )
+        catch( Exception e )
         {
-          List<ArtifactBasicMetadata> versions = vRes.getResult( bmd );
-          
-          TreeSet<ArtifactBasicMetadata> snapshots = new TreeSet<ArtifactBasicMetadata>( new MetadataVersionComparator() );
-          snapshots.addAll( versions );
-          
-          bmdQuery = snapshots.last();
+          throw new MetadataReaderException(e);
         }
-        else
+      }
+      
+      for( RepositoryReader rr : _repositoryReaders )
+      {
+        GenericEvent eventRead = null;
+        
+        try
         {
-          if( _log.isDebugEnabled() )
-            _log.debug( "no snapshots found - throw exception" );
+          if( _eventManager != null )
+            eventRead = new GenericEvent( EVENT_READ_RAW_FROM_REPO, rr.getRepository().getId() );
           
-          throw new MetadataReaderException( _lang.getMessage( "no.snapshots", bmd.toString(), classifier, type ) );
+          res = rr.readRawData( bmdQuery, classifier, type );
+          if( res != null )
+          {
+            if( _log.isDebugEnabled() )
+              _log.debug( bmdQuery+" found in "+rr.getRepository().getServer() );
+            
+            return res;
+          }
+        }
+        finally
+        {
+          if( _eventManager != null )
+          {
+            eventRead.stop();
+            _eventManager.fireEvent( eventRead );
+          }
         }
       }
-      catch( Exception e )
-      {
-        throw new MetadataReaderException(e);
-      }
+      
+      if( _log.isDebugEnabled() )
+        _log.debug( "no data found, returning null" );
+      
+      return null;
     }
-    
-    for( RepositoryReader rr : _repositoryReaders )
+    finally
     {
-      res = rr.readRawData( bmdQuery, classifier, type );
-      if( res != null )
+      if( _eventManager != null )
       {
-        if( _log.isDebugEnabled() )
-          _log.debug( bmdQuery+" found in "+rr.getRepository().getServer() );
-        
-        return res;
+        event.stop();
+        _eventManager.fireEvent( event );
       }
     }
-    
-    if( _log.isDebugEnabled() )
-      _log.debug( "no data found, returning null" );
-    
-    return null;
+  }
+  //----------------------------------------------------------------------------------------------------------------------------
+  public void register( MercuryEventListener listener )
+  {
+    if( _eventManager == null )
+      _eventManager = new EventManager();
+
+    _eventManager.register( listener );
+  }
+
+  public void setEventManager( EventManager eventManager )
+  {
+    _eventManager = eventManager;
+  }
+
+  public void unRegister( MercuryEventListener listener )
+  {
+    if( _eventManager != null )
+      _eventManager.unRegister( listener );
   }
   //----------------------------------------------------------------------------------------------------------------------------
   //----------------------------------------------------------------------------------------------------------------------------

Modified: maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/TimeUtil.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/TimeUtil.java?rev=719116&r1=719115&r2=719116&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/TimeUtil.java (original)
+++ maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/TimeUtil.java Wed Nov 19 14:57:00 2008
@@ -83,5 +83,4 @@
     
     return dts.getTime();
   }
-
 }

Modified: maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/EventGenerator.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/EventGenerator.java?rev=719116&r1=719115&r2=719116&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/EventGenerator.java (original)
+++ maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/EventGenerator.java Wed Nov 19 14:57:00 2008
@@ -31,10 +31,4 @@
    */
   void setEventManager( EventManager eventManager );
   
-  /**
-   * send this event to all listeners
-   * 
-   * @param event
-   */
-  void fireEvent( MercuryEvent event );
 }

Modified: maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/EventManager.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/EventManager.java?rev=719116&r1=719115&r2=719116&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/EventManager.java (original)
+++ maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/EventManager.java Wed Nov 19 14:57:00 2008
@@ -1,6 +1,7 @@
 package org.apache.maven.mercury.util.event;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -29,5 +30,10 @@
     for( MercuryEventListener listener : listeners )
       listener.fire( event );
   }
+  
+  public static final String toString( MercuryEvent event )
+  {
+    return new Date( event.getStart() )+", dur: "+ event.getDuration()+" millis : ["+ event.getType()+"] "+event.getTag();
+  }
 
 }

Modified: maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/MercuryEvent.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/MercuryEvent.java?rev=719116&r1=719115&r2=719116&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/MercuryEvent.java (original)
+++ maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/MercuryEvent.java Wed Nov 19 14:57:00 2008
@@ -88,7 +88,4 @@
    * @param value
    */
   void setPayload( String name, Object value );
-  
-  
-  
 }



Re: svn commit: r719116 - in /maven/mercury/trunk: mercury-it/src/test/java/org/apache/maven/mercury/dependency/tests/ mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/ mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercu...

Posted by Brett Porter <br...@apache.org>.
On 20/11/2008, at 9:57 AM, ogusakov@apache.org wrote:

> Author: ogusakov
> Date: Wed Nov 19 14:57:00 2008
> New Revision: 719116
>
> URL: http://svn.apache.org/viewvc?rev=719116&view=rev
> Log:
> intermediate commit for http://jira.codehaus.org/browse/MERCURY-6

Would you mind describing what's happening in the commit so later  
cross-checking isn't needed to figure out what MERCURY-6 was?

The convention that seems to have stuck has been:

[MERCURY-6] description of what this commit was all about
(Submitted by: xyz)
(Merged from: rABC)

Thanks,
Brett

--
Brett Porter
brett@apache.org
http://blogs.exist.com/bporter/


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org