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/20 06:55:41 UTC

svn commit: r719167 - in /maven/mercury/trunk: mercury-it/src/test/java/org/apache/maven/mercury/dependency/tests/ mercury-maven/mercury-compare-mercury/src/main/java/org/sonatype/maven/plugins/mercury/compare/ mercury-md/mercury-md-sat/src/main/java/o...

Author: ogusakov
Date: Wed Nov 19 21:55:38 2008
New Revision: 719167

URL: http://svn.apache.org/viewvc?rev=719167&view=rev
Log:
externalized event dispatch and isolated from client code

Added:
    maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/DumbListener.java
    maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/Messages.properties
Modified:
    maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/dependency/tests/DependencyTreeBuilderTest.java
    maven/mercury/trunk/mercury-maven/mercury-compare-mercury/src/main/java/org/sonatype/maven/plugins/mercury/compare/MercuryResolve.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-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolverTest.java
    maven/mercury/trunk/mercury-plexus/src/test/java/org/apache/maven/mercury/plexus/DefaultPlexusMercuryTest.java
    maven/mercury/trunk/mercury-repo/mercury-repo-cache-fs/src/main/java/org/apache/maven/mercury/repository/cache/fs/MetadataCacheFs.java
    maven/mercury/trunk/mercury-repo/mercury-repo-local-m2/src/test/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryM2Test.java
    maven/mercury/trunk/mercury-repo/mercury-repo-virtual/src/main/java/org/apache/maven/mercury/repository/virtual/VirtualRepositoryReader.java
    maven/mercury/trunk/mercury-transport/mercury-transport-http/src/main/java/org/apache/maven/mercury/spi/http/client/DestinationRealmResolver.java
    maven/mercury/trunk/mercury-transport/mercury-transport-http/src/main/java/org/apache/maven/mercury/spi/http/client/SecureSender.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/GenericEvent.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=719167&r1=719166&r2=719167&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 21:55:38 2008
@@ -27,9 +27,7 @@
 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;
+import org.apache.maven.mercury.util.event.DumbListener;
 
 
 /**
@@ -39,7 +37,6 @@
  */
 public class DependencyTreeBuilderTest
 extends TestCase
-implements MercuryEventListener
 {
   private static final org.slf4j.Logger _log = org.slf4j.LoggerFactory.getLogger( DependencyTreeBuilderTest.class ); 
   
@@ -85,7 +82,7 @@
 //    reps.add(centralRepo);
 
     depBuilder = DependencyBuilderFactory.create( DependencyBuilderFactory.JAVA_DEPENDENCY_MODEL, reps, null, null, null );
-    depBuilder.register( this );
+    depBuilder.register( new DumbListener() );
     
     vReader = new VirtualRepositoryReader( reps );
   }
@@ -255,10 +252,5 @@
     }
   }
   //----------------------------------------------------------------------------------------------
-  public void fire( MercuryEvent event )
-  {
-    System.out.println( "event: "+ EventManager.toString( event ) );
-  }
-  //----------------------------------------------------------------------------------------------
   //----------------------------------------------------------------------------------------------
 }
\ No newline at end of file

Modified: maven/mercury/trunk/mercury-maven/mercury-compare-mercury/src/main/java/org/sonatype/maven/plugins/mercury/compare/MercuryResolve.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-maven/mercury-compare-mercury/src/main/java/org/sonatype/maven/plugins/mercury/compare/MercuryResolve.java?rev=719167&r1=719166&r2=719167&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-maven/mercury-compare-mercury/src/main/java/org/sonatype/maven/plugins/mercury/compare/MercuryResolve.java (original)
+++ maven/mercury/trunk/mercury-maven/mercury-compare-mercury/src/main/java/org/sonatype/maven/plugins/mercury/compare/MercuryResolve.java Wed Nov 19 21:55:38 2008
@@ -4,7 +4,6 @@
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileWriter;
-import java.io.StringWriter;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;

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=719167&r1=719166&r2=719167&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 21:55:38 2008
@@ -76,14 +76,14 @@
     try
     {
       if( _eventManager != null )
-        event = new GenericEvent( "create.sat.solver", tree.toString() );
+        event = new GenericEvent( EVENT_CREATE_SOLVER, tree.toString() );
         
       if( tree.getId() == 0 )
         MetadataTreeNode.reNumber( tree, 1 );
       
       int nNodes = tree.countDistinctNodes();
   
-  _log.debug( "SatContext: # of variables: "+nNodes );
+      _log.debug( "SatContext: # of variables: "+nNodes );
   
       _context = new SatContext( nNodes );
       _solver.newVar( tree.countNodes() );
@@ -537,7 +537,7 @@
     try
     {
       if( _eventManager != null )
-        event = new GenericEvent( "solve", _root.toString() );
+        event = new GenericEvent( EVENT_SOLVE, _root.toString() );
       
       if( _solver.isSatisfiable() )
       {

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=719167&r1=719166&r2=719167&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 21:55:38 2008
@@ -15,6 +15,9 @@
 {
   public static final int DEFAULT_TREE_SIZE = 128; //nodes
   
+  public static final String EVENT_SOLVE = "solve";
+  public static final String EVENT_CREATE_SOLVER = "create.sat.solver";
+  
   /**
    * 
    * @param sorts - policies expressed as sorted list of node sorters - from most important to the least

Modified: maven/mercury/trunk/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolverTest.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolverTest.java?rev=719167&r1=719166&r2=719167&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolverTest.java (original)
+++ maven/mercury/trunk/mercury-md/mercury-md-sat/src/test/java/org/apache/maven/mercury/metadata/sat/DefaultSatSolverTest.java Wed Nov 19 21:55:38 2008
@@ -1,7 +1,6 @@
 package org.apache.maven.mercury.metadata.sat;
 
 import java.io.IOException;
-import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.HashMap;
@@ -12,11 +11,8 @@
 
 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.metadata.ClassicDepthComparator;
 import org.apache.maven.mercury.metadata.ClassicVersionComparator;
-import org.apache.maven.mercury.metadata.DependencyBuilder;
-import org.apache.maven.mercury.metadata.DependencyBuilderFactory;
 import org.apache.maven.mercury.metadata.MetadataTreeNode;
 
 /**

Modified: maven/mercury/trunk/mercury-plexus/src/test/java/org/apache/maven/mercury/plexus/DefaultPlexusMercuryTest.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-plexus/src/test/java/org/apache/maven/mercury/plexus/DefaultPlexusMercuryTest.java?rev=719167&r1=719166&r2=719167&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-plexus/src/test/java/org/apache/maven/mercury/plexus/DefaultPlexusMercuryTest.java (original)
+++ maven/mercury/trunk/mercury-plexus/src/test/java/org/apache/maven/mercury/plexus/DefaultPlexusMercuryTest.java Wed Nov 19 21:55:38 2008
@@ -13,14 +13,12 @@
 import org.apache.maven.mercury.artifact.ArtifactBasicMetadata;
 import org.apache.maven.mercury.artifact.ArtifactExclusionList;
 import org.apache.maven.mercury.artifact.ArtifactMetadata;
-import org.apache.maven.mercury.artifact.ArtifactMetadataList;
 import org.apache.maven.mercury.artifact.ArtifactQueryList;
 import org.apache.maven.mercury.artifact.ArtifactScopeEnum;
 import org.apache.maven.mercury.artifact.DefaultArtifact;
 import org.apache.maven.mercury.crypto.api.StreamVerifierFactory;
 import org.apache.maven.mercury.crypto.pgp.PgpStreamVerifierFactory;
 import org.apache.maven.mercury.crypto.sha.SHA1VerifierFactory;
-import org.apache.maven.mercury.repository.api.ArtifactResults;
 import org.apache.maven.mercury.repository.api.Repository;
 import org.apache.maven.mercury.repository.api.RepositoryException;
 import org.apache.maven.mercury.repository.local.m2.LocalRepositoryM2;

Modified: maven/mercury/trunk/mercury-repo/mercury-repo-cache-fs/src/main/java/org/apache/maven/mercury/repository/cache/fs/MetadataCacheFs.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-cache-fs/src/main/java/org/apache/maven/mercury/repository/cache/fs/MetadataCacheFs.java?rev=719167&r1=719166&r2=719167&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-repo/mercury-repo-cache-fs/src/main/java/org/apache/maven/mercury/repository/cache/fs/MetadataCacheFs.java (original)
+++ maven/mercury/trunk/mercury-repo/mercury-repo-cache-fs/src/main/java/org/apache/maven/mercury/repository/cache/fs/MetadataCacheFs.java Wed Nov 19 21:55:38 2008
@@ -11,8 +11,6 @@
 import org.apache.maven.mercury.artifact.ArtifactCoordinates;
 import org.apache.maven.mercury.artifact.Quality;
 import org.apache.maven.mercury.artifact.version.DefaultArtifactVersion;
-import org.apache.maven.mercury.logging.IMercuryLogger;
-import org.apache.maven.mercury.logging.MercuryLoggerManager;
 import org.apache.maven.mercury.repository.api.MetadataCacheException;
 import org.apache.maven.mercury.repository.api.MetadataCorruptionException;
 import org.apache.maven.mercury.repository.api.RepositoryGAMetadata;

Modified: maven/mercury/trunk/mercury-repo/mercury-repo-local-m2/src/test/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryM2Test.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-repo/mercury-repo-local-m2/src/test/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryM2Test.java?rev=719167&r1=719166&r2=719167&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-repo/mercury-repo-local-m2/src/test/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryM2Test.java (original)
+++ maven/mercury/trunk/mercury-repo/mercury-repo-local-m2/src/test/java/org/apache/maven/mercury/repository/local/m2/LocalRepositoryM2Test.java Wed Nov 19 21:55:38 2008
@@ -4,12 +4,11 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import junit.framework.TestCase;
+
 import org.apache.maven.mercury.artifact.Artifact;
 import org.apache.maven.mercury.artifact.ArtifactBasicMetadata;
 import org.apache.maven.mercury.repository.api.ArtifactResults;
-import org.apache.maven.mercury.repository.api.RepositoryException;
-
-import junit.framework.TestCase;
 
 /**
  *

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=719167&r1=719166&r2=719167&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 21:55:38 2008
@@ -57,6 +57,9 @@
   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_DEPENDENCIES = "vr.read.dependencies";
+  public static final String EVENT_READ_DEPENDENCIES_FROM_REPO = "vr.read.dependencies.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";
   
@@ -213,47 +216,82 @@
     
     init();
     
-    int qSize = query.size();
-
-    ArtifactBasicResults res = null;
-    ArtifactListProcessor tp = _processors == null ? null : _processors.get( ArtifactListProcessor.FUNCTION_TP );
-
-    for( RepositoryReader rr : _repositoryReaders )
+    GenericEvent event = null;
+    
+    try
     {
-      ArtifactBasicResults repoRes = rr.readVersions( query );
       
-      if( repoRes != null && repoRes.hasResults() )
-        for( ArtifactBasicMetadata key : repoRes.getResults().keySet() )
-        {
-          List<ArtifactBasicMetadata> rorRes = repoRes.getResult(key);
+      if( _eventManager != null )
+        event = new GenericEvent( EVENT_READ_VERSIONS );
+      
+      ArtifactBasicResults res = null;
+      ArtifactListProcessor tp = _processors == null ? null : _processors.get( ArtifactListProcessor.FUNCTION_TP );
+      
+      GenericEvent eventRead = null;
+  
+      for( RepositoryReader rr : _repositoryReaders )
+      try 
+      {
+        if( _eventManager!= null )
+          eventRead = new GenericEvent( EVENT_READ_VERSIONS_FROM_REPO, rr.getRepository().getId() );
           
-          if( tp != null )
+        ArtifactBasicResults repoRes = rr.readVersions( query );
+        
+        if( repoRes != null && repoRes.hasResults() )
+          for( ArtifactBasicMetadata key : repoRes.getResults().keySet() )
           {
-            try
+            List<ArtifactBasicMetadata> rorRes = repoRes.getResult(key);
+            
+            if( tp != null )
             {
-              tp.configure( key );
-              rorRes = tp.process( rorRes );
+              try
+              {
+                tp.configure( key );
+                rorRes = tp.process( rorRes );
+              }
+              catch( ArtifactListProcessorException e )
+              {
+                throw new RepositoryException(e);
+              }
             }
-            catch( ArtifactListProcessorException e )
+            
+            if( Util.isEmpty( rorRes ) )
             {
-              throw new RepositoryException(e);
+              eventRead.setError( "none found" );
+              continue;
             }
+            
+            for( ArtifactBasicMetadata bmd : rorRes )
+              bmd.setTracker(  rr );
+            
+            if( res == null )
+              res = new ArtifactBasicResults( key, rorRes );
+            else
+              res.add( key, rorRes );
+            
+            if( _eventManager!= null )
+              eventRead.setTag( eventRead.getTag()+", found: "+rorRes.toString() );
           }
-          
-          if( Util.isEmpty( rorRes ) )
-            continue;
-          
-          for( ArtifactBasicMetadata bmd : rorRes )
-            bmd.setTracker(  rr );
-          
-          if( res == null )
-            res = new ArtifactBasicResults( key, rorRes );
-          else
-            res.add( key, rorRes );
+      }
+      finally
+      {
+        if( _eventManager != null )
+        {
+          eventRead.stop();
+          _eventManager.fireEvent( eventRead );
         }
+      }
+      
+      return res;
+    }
+    finally
+    {
+      if( _eventManager != null )
+      {
+        event.stop();
+        _eventManager.fireEvent( event );
+      }
     }
-    
-    return res;
   }
   //----------------------------------------------------------------------------------------------------------------------------
   public ArtifactMetadata readDependencies( ArtifactBasicMetadata bmd )
@@ -262,36 +300,75 @@
     if( bmd == null )
       throw new IllegalArgumentException("null bmd supplied");
     
-    init();
-    
-    List<ArtifactBasicMetadata> query = new ArrayList<ArtifactBasicMetadata>(1);
-    query.add( bmd );
-    
-    ArtifactMetadata md = new ArtifactMetadata( bmd );
-    
-    RepositoryReader [] repos = _repositoryReaders;
-    
-    Object tracker =  bmd.getTracker();
+    GenericEvent event = null;
     
-    // do we know where this metadata came from ?
-    if( tracker != null && RepositoryReader.class.isAssignableFrom( tracker.getClass() ) )
+    try
     {
-      repos = new RepositoryReader [] { (RepositoryReader)tracker };
+      
+      if( _eventManager != null )
+        event = new GenericEvent(EVENT_READ_DEPENDENCIES, bmd.toString() );
+      
+      init();
+      
+      List<ArtifactBasicMetadata> query = new ArrayList<ArtifactBasicMetadata>(1);
+      query.add( bmd );
+      
+      ArtifactMetadata md = new ArtifactMetadata( bmd );
+      
+      RepositoryReader [] repos = _repositoryReaders;
+      
+      Object tracker =  bmd.getTracker();
+      
+      // do we know where this metadata came from ?
+      if( tracker != null && RepositoryReader.class.isAssignableFrom( tracker.getClass() ) )
+      {
+        repos = new RepositoryReader [] { (RepositoryReader)tracker };
+      }
+      
+      GenericEvent eventRead = null;
+      
+      for( RepositoryReader rr : repos )
+      try 
+      {
+        
+        if( _eventManager != null )
+          eventRead = new GenericEvent( EVENT_READ_DEPENDENCIES_FROM_REPO, rr.getRepository().getId() );
+        
+        ArtifactBasicResults res = rr.readDependencies( query );
+        
+        if( res != null && res.hasResults( bmd ) )
+        {
+          md.setDependencies( res.getResult( bmd ) );
+          md.setTracker( rr );
+          
+          if( _eventManager != null )
+            eventRead.setTag( eventRead.getTag()+", found: "+md.getDependencies() );
+          
+          return md;
+        }
+      }
+      finally
+      {
+        if( _eventManager != null )
+        {
+          eventRead.stop();
+          _eventManager.fireEvent( eventRead );
+        }
+      }
+      
+      if( _eventManager != null )
+        event.setError( "not found" );
+      
+      return md;
     }
-    
-    for( RepositoryReader rr : repos )
+    finally
     {
-      ArtifactBasicResults res = rr.readDependencies( query );
-      
-      if( res != null && res.hasResults( bmd ) )
+      if( _eventManager != null )
       {
-        md.setDependencies( res.getResult( bmd ) );
-        md.setTracker( rr );
-        return md;
+        event.stop();
+        _eventManager.fireEvent( event );
       }
     }
-    
-    return md;
   }
   //----------------------------------------------------------------------------------------------------------------------------
   /**
@@ -503,6 +580,7 @@
   {
     
     GenericEvent event = null;
+    String eventTag = null; 
     
     if( _log.isDebugEnabled() )
       _log.debug( "request for "+bmd+", classifier="+classifier+", type="+type );
@@ -512,7 +590,14 @@
     
     try
     {
-      event = new GenericEvent( EVENT_READ_RAW, "" );
+      if( _eventManager!= null )
+      {
+        eventTag = bmd.toString()
+                  + (Util.isEmpty( classifier )?"":", classifier="+classifier)
+                  + (Util.isEmpty( type )?"":", type="+type)
+                    ;
+        event = new GenericEvent( EVENT_READ_RAW, eventTag );
+      }
       
       ArtifactBasicMetadata bmdQuery = bmd;
       
@@ -578,16 +663,22 @@
         try
         {
           if( _eventManager != null )
-            eventRead = new GenericEvent( EVENT_READ_RAW_FROM_REPO, rr.getRepository().getId() );
+            eventRead = new GenericEvent( EVENT_READ_RAW_FROM_REPO, rr.getRepository().getId()+": "+eventTag );
           
           res = rr.readRawData( bmdQuery, classifier, type );
           if( res != null )
           {
             if( _log.isDebugEnabled() )
               _log.debug( bmdQuery+" found in "+rr.getRepository().getServer() );
+
+            if( _eventManager != null )
+              eventRead.setTag( eventRead.getTag() );
             
             return res;
           }
+          
+          if( _eventManager != null )
+            eventRead.setError( "not found" );
         }
         finally
         {

Modified: maven/mercury/trunk/mercury-transport/mercury-transport-http/src/main/java/org/apache/maven/mercury/spi/http/client/DestinationRealmResolver.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-transport/mercury-transport-http/src/main/java/org/apache/maven/mercury/spi/http/client/DestinationRealmResolver.java?rev=719167&r1=719166&r2=719167&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-transport/mercury-transport-http/src/main/java/org/apache/maven/mercury/spi/http/client/DestinationRealmResolver.java (original)
+++ maven/mercury/trunk/mercury-transport/mercury-transport-http/src/main/java/org/apache/maven/mercury/spi/http/client/DestinationRealmResolver.java Wed Nov 19 21:55:38 2008
@@ -19,7 +19,6 @@
 package org.apache.maven.mercury.spi.http.client;
 
 import java.io.IOException;
-import java.net.InetSocketAddress;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Set;

Modified: maven/mercury/trunk/mercury-transport/mercury-transport-http/src/main/java/org/apache/maven/mercury/spi/http/client/SecureSender.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-transport/mercury-transport-http/src/main/java/org/apache/maven/mercury/spi/http/client/SecureSender.java?rev=719167&r1=719166&r2=719167&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-transport/mercury-transport-http/src/main/java/org/apache/maven/mercury/spi/http/client/SecureSender.java (original)
+++ maven/mercury/trunk/mercury-transport/mercury-transport-http/src/main/java/org/apache/maven/mercury/spi/http/client/SecureSender.java Wed Nov 19 21:55:38 2008
@@ -19,7 +19,6 @@
 
 package org.apache.maven.mercury.spi.http.client;
 
-import java.net.InetSocketAddress;
 import java.net.URI;
 import java.net.URL;
 

Added: maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/DumbListener.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/DumbListener.java?rev=719167&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/DumbListener.java (added)
+++ maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/DumbListener.java Wed Nov 19 21:55:38 2008
@@ -0,0 +1,44 @@
+package org.apache.maven.mercury.util.event;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+
+/**
+ *
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ *
+ */
+public class DumbListener
+implements MercuryEventListener
+{
+  
+  Writer wr;
+  
+  public DumbListener()
+  {
+    this( System.out );
+  }
+  
+  public DumbListener( OutputStream os )
+  {
+    wr = new OutputStreamWriter( os );
+  }
+
+  public void fire( MercuryEvent event )
+  {
+    try
+    {
+      wr.write( "mercury event: "+EventManager.toString( event )+"\n" );
+      wr.flush();
+    }
+    catch( IOException e )
+    {
+      e.printStackTrace();
+    }
+  }
+
+}

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=719167&r1=719166&r2=719167&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 21:55:38 2008
@@ -3,9 +3,18 @@
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.LinkedBlockingQueue;
+
+import org.apache.maven.mercury.logging.IMercuryLogger;
+import org.apache.maven.mercury.logging.MercuryLoggerManager;
+import org.apache.maven.mercury.util.Util;
+import org.codehaus.plexus.lang.DefaultLanguage;
+import org.codehaus.plexus.lang.Language;
 
 /**
- *
+ * event queue dispatcher. It registers/unregisters listeners, dispatches events
  *
  * @author Oleg Gusakov
  * @version $Id$
@@ -13,8 +22,24 @@
  */
 public class EventManager
 {
+  private static final IMercuryLogger _log = MercuryLoggerManager.getLogger( EventManager.class );
+  private static final Language _lang = new DefaultLanguage( EventManager.class );
+  
+  public static final int THREAD_COUNT = 4;
+  
   List<MercuryEventListener> listeners = new ArrayList<MercuryEventListener>(8);
   
+  final LinkedBlockingQueue<UnitOfWork> queue = new LinkedBlockingQueue<UnitOfWork>( 512 );
+  
+  ExecutorService execService;
+  
+  public EventManager()
+  {
+    execService = Executors.newFixedThreadPool( THREAD_COUNT );
+    for( int i = 0; i < THREAD_COUNT; i++ )
+      execService.execute( new Runner( queue ) );
+  }
+  
   public void register( MercuryEventListener listener )
   {
     listeners.add( listener );
@@ -28,12 +53,69 @@
   public void fireEvent( MercuryEvent event )
   {
     for( MercuryEventListener listener : listeners )
-      listener.fire( event );
+      queue.add( new UnitOfWork( listener, event ) );
   }
-  
+
   public static final String toString( MercuryEvent event )
   {
-    return new Date( event.getStart() )+", dur: "+ event.getDuration()+" millis : ["+ event.getType()+"] "+event.getTag();
+    return new Date( event.getStart() )+", dur: "+ event.getDuration()+" millis :"
+    		   + " ["+ event.getType()+"] "
+    		   + ( Util.isEmpty( event.getTag() ) ? "" : ", tag: "+event.getTag() )
+           + ( Util.isEmpty( event.getError() ) ? "" : ", error: "+event.getError() )
+    ;
+  }
+
+  class UnitOfWork
+  {
+    MercuryEventListener listener;
+    MercuryEvent event;
+    
+    public UnitOfWork( MercuryEventListener listener, MercuryEvent event )
+    {
+      this.listener = listener;
+      this.event = event;
+    }
+    
+    void execute()
+    {
+      try
+      {
+        listener.fire( event );
+      }
+      catch( Throwable th )
+      {
+        _log.error( _lang.getMessage( "listener.error", th.getMessage() ) );
+      }
+    }
+  }
+  
+  class Runner
+  implements Runnable
+  {
+    final LinkedBlockingQueue<UnitOfWork> queue;
+
+    public Runner( LinkedBlockingQueue<UnitOfWork> queue )
+    {
+      this.queue = queue;
+    }
+
+    public void run()
+    {
+      UnitOfWork uow;
+
+      for(;;)
+        try
+        {
+          uow = queue.take();
+          uow.execute();
+        }
+        catch( InterruptedException e )
+        {
+          return;
+        }
+    }
+    
   }
 
 }
+

Modified: maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/GenericEvent.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/GenericEvent.java?rev=719167&r1=719166&r2=719167&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/GenericEvent.java (original)
+++ maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/GenericEvent.java Wed Nov 19 21:55:38 2008
@@ -21,4 +21,9 @@
     super( type, tag );
   }
 
+  public void setTag( String tag )
+  {
+    this.tag = tag;
+  }
+
 }

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=719167&r1=719166&r2=719167&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 21:55:38 2008
@@ -24,6 +24,7 @@
    * @return
    */
   String getTag();
+  void setTag( String tag );
   
   /**
    * get the event start time as UTC timestapm

Added: maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/Messages.properties
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/Messages.properties?rev=719167&view=auto
==============================================================================
--- maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/Messages.properties (added)
+++ maven/mercury/trunk/mercury-util/src/main/java/org/apache/maven/mercury/util/event/Messages.properties Wed Nov 19 21:55:38 2008
@@ -0,0 +1 @@
+listener.error=event listener threw an exception: {0}