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}