OW2 Consortium
Search OW2 Mail Archive: 

Advanced Search - Powered by Google


Mail Archive Home | gotm-commits List | July 2005 Index

<--  Date Index  --> <--  Thread Index  -->

CVS update of gotm (53 files)


    Date: Monday, July 11, 2005 @ 10:27:05
  Author: rouvoy
    Path: /cvsroot/gotm/gotm

   Added: lib/howl/howl.jar
          
src/fractal/org/objectweb/gotm/lib/coordination/TpCommitEngine.fractal
          
          src/fractal/org/objectweb/gotm/lib/logging/TpLoggingHOWL.fractal
          src/java/org/objectweb/gotm/lib/coordination/TimeoutAttribute.java
           src/java/org/objectweb/gotm/lib/coordination/TimeoutImpl.java
          src/java/org/objectweb/gotm/lib/event/PublishASyncThread.java
          src/java/org/objectweb/gotm/lib/event/PublishSimple.java
          src/java/org/objectweb/gotm/lib/event/PublishSyncThread.java
          src/java/org/objectweb/gotm/lib/event/PublishThreadPool.java
          src/java/org/objectweb/gotm/lib/event/SubscriberPool.java
          src/java/org/objectweb/gotm/lib/event/SubscriberProvider.java
          src/java/org/objectweb/gotm/lib/logging/GenericLogger.java
          src/java/org/objectweb/gotm/lib/logging/HOWLoggerProvider.java
          
src/java/org/objectweb/gotm/lib/logging/LoggerAttributeController.java
           src/java/org/objectweb/gotm/lib/logging/LoggerManager.java
          src/java/org/objectweb/gotm/lib/logging/LoggerProvider.java
          
src/java/org/objectweb/gotm/lib/logging/LoggerProviderAttributeController.java
           src/java/org/objectweb/gotm/lib/logging/SimpleLogger.java
          
src/java/org/objectweb/gotm/lib/resource/NoActionAvailableException.java
          
          src/java/org/objectweb/gotm/lib/resource/ResourceManagerASync.java
          
          
src/java/org/objectweb/gotm/lib/resource/ResourceManagerWithPool.java
          
          
src/java/org/objectweb/gotm/lib/resource/ResourceManagerWithThread.java
          
          
src/java/org/objectweb/gotm/lib/transaction/InvalidStateException.java
          
          
src/java/org/objectweb/gotm/lib/transaction/InvalidTransitionException.java
           src/java/org/objectweb/gotm/lib/xid/XidFeature.java
          src/java/org/objectweb/gotm/lib/xid/XidImpl.java
Modified: .classpath .settings/org.eclipse.core.resources.prefs
          src/fractal/org/objectweb/gotm/lib/coordination/Tp2PC.fractal
          src/fractal/org/objectweb/gotm/lib/event/TpEventBus.fractal
          src/java/org/objectweb/gotm/GoTMException.java
          src/java/org/objectweb/gotm/lib/CurrentHandler.java
          src/java/org/objectweb/gotm/lib/coordination/AbortFeature.java
          
src/java/org/objectweb/gotm/lib/coordination/AbstractCoordinationFeature.java
           src/java/org/objectweb/gotm/lib/coordination/CommitFeature.java
          src/java/org/objectweb/gotm/lib/coordination/TwoPCFeature.java
          src/java/org/objectweb/gotm/lib/event/PublishState.java
          src/java/org/objectweb/gotm/lib/event/SubscribablePrimitive.java
          src/java/org/objectweb/gotm/lib/resource/AbstractActionProvider.java
          
          
src/java/org/objectweb/gotm/lib/resource/AbstractResourceManager.java
           src/java/org/objectweb/gotm/lib/resource/ActionProvider.java
          src/java/org/objectweb/gotm/lib/resource/ResourceManagerImpl.java
          
          
src/java/org/objectweb/gotm/lib/transaction/TransactionStateAuto.java
          
          
src/java/org/objectweb/gotm/lib/transaction/TransactionStateImpl.java
 Removed: 
src/java/org/objectweb/gotm/lib/coordination/AutoAbortAttributeController.java
           src/java/org/objectweb/gotm/lib/coordination/AutoAbortImpl.java
          src/java/org/objectweb/gotm/lib/coordination/StatusChecker.java
          src/java/org/objectweb/gotm/lib/event/EventEngineSimple.java
          src/java/org/objectweb/gotm/lib/event/EventEngineThreadPool.java
          src/java/org/objectweb/gotm/lib/resource/ResourceWithPool.java
          src/java/org/objectweb/gotm/lib/resource/ResourceWithThread.java
          
src/java/org/objectweb/gotm/lib/transaction/StatusNotAllowedException.java
           src/java/org/objectweb/gotm/lib/xid/XidStateImpl.java

* Adding XA interfaces support,
* Adding adaptive commit protocol support,
* Adding logging support,
* Cosmetic updates.


--------------------------------------------------------------------------------+
 .classpath                                                                   
  |    1 
 .settings/org.eclipse.core.resources.prefs                                   
  |   14 
 lib/howl/howl.jar                                                            
  |    <<Binary file>>
 src/fractal/org/objectweb/gotm/lib/coordination/Tp2PC.fractal                
  |   37 +-
 src/fractal/org/objectweb/gotm/lib/coordination/TpCommitEngine.fractal       
  |   53 +++
 src/fractal/org/objectweb/gotm/lib/event/TpEventBus.fractal                  
  |   28 +
 src/fractal/org/objectweb/gotm/lib/logging/TpLoggingHOWL.fractal             
  |   36 ++
 src/java/org/objectweb/gotm/GoTMException.java                               
  |   11 
 src/java/org/objectweb/gotm/lib/CurrentHandler.java                          
  |  174 ++++++----
 src/java/org/objectweb/gotm/lib/coordination/AbortFeature.java               
  |   14 
 
src/java/org/objectweb/gotm/lib/coordination/AbstractCoordinationFeature.java 
 |   21 -
 
src/java/org/objectweb/gotm/lib/coordination/AutoAbortAttributeController.java
 |   53 ---
 src/java/org/objectweb/gotm/lib/coordination/AutoAbortImpl.java              
  |  129 -------
 src/java/org/objectweb/gotm/lib/coordination/CommitFeature.java              
  |   27 -
 src/java/org/objectweb/gotm/lib/coordination/StatusChecker.java              
  |   70 ----
 src/java/org/objectweb/gotm/lib/coordination/TimeoutAttribute.java           
  |   54 +++
 src/java/org/objectweb/gotm/lib/coordination/TimeoutImpl.java                
  |  128 +++++++
 src/java/org/objectweb/gotm/lib/coordination/TwoPCFeature.java               
  |   40 +-
 src/java/org/objectweb/gotm/lib/event/EventEngineSimple.java                 
  |  131 -------
 src/java/org/objectweb/gotm/lib/event/EventEngineThreadPool.java             
  |  153 --------
 src/java/org/objectweb/gotm/lib/event/PublishASyncThread.java                
  |  102 +++++
 src/java/org/objectweb/gotm/lib/event/PublishSimple.java                     
  |   74 ++++
 src/java/org/objectweb/gotm/lib/event/PublishState.java                      
  |    9 
 src/java/org/objectweb/gotm/lib/event/PublishSyncThread.java                 
  |   74 ++++
 src/java/org/objectweb/gotm/lib/event/PublishThreadPool.java                 
  |  106 ++++++
 src/java/org/objectweb/gotm/lib/event/SubscribablePrimitive.java             
  |   11 
 src/java/org/objectweb/gotm/lib/event/SubscriberPool.java                    
  |  117 ++++++
 src/java/org/objectweb/gotm/lib/event/SubscriberProvider.java                
  |   52 ++
 src/java/org/objectweb/gotm/lib/logging/GenericLogger.java                   
  |  156 ++++++++
 src/java/org/objectweb/gotm/lib/logging/HOWLoggerProvider.java               
  |  144 ++++++++
 src/java/org/objectweb/gotm/lib/logging/LoggerAttributeController.java       
  |   50 ++
 src/java/org/objectweb/gotm/lib/logging/LoggerManager.java                   
  |   74 ++++
 src/java/org/objectweb/gotm/lib/logging/LoggerProvider.java                  
  |   50 ++
 
src/java/org/objectweb/gotm/lib/logging/LoggerProviderAttributeController.java
 |   62 +++
 src/java/org/objectweb/gotm/lib/logging/SimpleLogger.java                    
  |   59 +++
 src/java/org/objectweb/gotm/lib/resource/AbstractActionProvider.java         
  |   22 -
 src/java/org/objectweb/gotm/lib/resource/AbstractResourceManager.java        
  |   36 +-
 src/java/org/objectweb/gotm/lib/resource/ActionProvider.java                 
  |   12 
 src/java/org/objectweb/gotm/lib/resource/NoActionAvailableException.java     
  |   47 ++
 src/java/org/objectweb/gotm/lib/resource/ResourceManagerASync.java           
  |   63 +++
 src/java/org/objectweb/gotm/lib/resource/ResourceManagerImpl.java            
  |   16 
 src/java/org/objectweb/gotm/lib/resource/ResourceManagerWithPool.java        
  |   81 ++++
 src/java/org/objectweb/gotm/lib/resource/ResourceManagerWithThread.java      
  |   77 ++++
 src/java/org/objectweb/gotm/lib/resource/ResourceWithPool.java               
  |   79 ----
 src/java/org/objectweb/gotm/lib/resource/ResourceWithThread.java             
  |   75 ----
 src/java/org/objectweb/gotm/lib/transaction/InvalidStateException.java       
  |   56 +++
 src/java/org/objectweb/gotm/lib/transaction/InvalidTransitionException.java  
  |   65 +++
 src/java/org/objectweb/gotm/lib/transaction/StatusNotAllowedException.java   
  |   55 ---
 src/java/org/objectweb/gotm/lib/transaction/TransactionStateAuto.java        
  |    9 
 src/java/org/objectweb/gotm/lib/transaction/TransactionStateImpl.java        
  |   23 +
 src/java/org/objectweb/gotm/lib/xid/XidFeature.java                          
  |   50 ++
 src/java/org/objectweb/gotm/lib/xid/XidImpl.java                             
  |   92 +++++
 src/java/org/objectweb/gotm/lib/xid/XidStateImpl.java                        
  |  160 ---------
 53 files changed, 2245 insertions(+), 1087 deletions(-)


Index: gotm/.classpath
diff -u gotm/.classpath:1.9 gotm/.classpath:1.10
--- gotm/.classpath:1.9 Fri Jul  1 18:27:48 2005
+++ gotm/.classpath     Mon Jul 11 10:27:05 2005
@@ -13,5 +13,6 @@
        <classpathentry kind="lib" 
path="/fractal-import/lib/julia/julia-mixins.jar"/>
        <classpathentry kind="lib" 
path="/fractal-import/lib/julia/julia-runtime.jar"/>
        <classpathentry kind="src" path="/fractal-template"/>
+       <classpathentry kind="lib" path="lib/howl/howl.jar"/>
        <classpathentry kind="output" path="output/eclipse"/>
 </classpath>
Index: gotm/.settings/org.eclipse.core.resources.prefs
diff -u gotm/.settings/org.eclipse.core.resources.prefs:1.3 
gotm/.settings/org.eclipse.core.resources.prefs:1.4
--- gotm/.settings/org.eclipse.core.resources.prefs:1.3 Mon May 23 13:20:55 
2005
+++ gotm/.settings/org.eclipse.core.resources.prefs     Mon Jul 11 10:27:04 
2005
@@ -1,6 +1,8 @@
-#Wed Apr 20 19:34:07 CEST 2005
-eclipse.preferences.version=1
-encoding//src/fractal/org/objectweb/gotm/lib/coordination/Tp2PC.fractal=ISO-8859-1
-encoding//src/fractal/org/objectweb/gotm/lib/event/TpEventBus.fractal=ISO-8859-1
-encoding//src/fractal/org/objectweb/gotm/lib/event/TpEventBusWithPool.fractal=ISO-8859-1
-encoding//src/fractal/org/objectweb/gotm/lib/event/TpEventBusWithThread.fractal=ISO-8859-1
+#Fri Jul 08 18:16:18 CEST 2005
+eclipse.preferences.version=1
+encoding//src/fractal/org/objectweb/gotm/lib/coordination/Tp2PC.fractal=ISO-8859-1
+encoding//src/fractal/org/objectweb/gotm/lib/coordination/TpCommitEngine.fractal=ISO-8859-1
+encoding//src/fractal/org/objectweb/gotm/lib/event/TpEventBus.fractal=ISO-8859-1
+encoding//src/fractal/org/objectweb/gotm/lib/event/TpEventBusWithPool.fractal=ISO-8859-1
+encoding//src/fractal/org/objectweb/gotm/lib/event/TpEventBusWithThread.fractal=ISO-8859-1
+encoding//src/fractal/org/objectweb/gotm/lib/logging/TpLoggingHOWL.fractal=ISO-8859-1
Index: gotm/lib/howl/howl.jar
cvs rdiff: failed to read diff file header /tmp/cvsrx9VS1 for howl.jar,v: end 
of file
Index: gotm/src/fractal/org/objectweb/gotm/lib/coordination/Tp2PC.fractal
diff -u 
gotm/src/fractal/org/objectweb/gotm/lib/coordination/Tp2PC.fractal:1.2 
gotm/src/fractal/org/objectweb/gotm/lib/coordination/Tp2PC.fractal:1.3
--- gotm/src/fractal/org/objectweb/gotm/lib/coordination/Tp2PC.fractal:1.2    
  Fri Jul  1 18:27:49 2005
+++ gotm/src/fractal/org/objectweb/gotm/lib/coordination/Tp2PC.fractal  Mon 
Jul 11 10:27:04 2005
@@ -9,32 +9,33 @@
   <interface name="abort" role="server"
         
signature="org.objectweb.transaction.api.coordination.CoordinationFeature"/>
 
-  <interface name="publish" role="client"
+  <interface name="sync-publish" role="client"
+        signature="org.objectweb.transaction.api.event.PublishFeature"/>
+  <interface name="async-publish" role="client"
         signature="org.objectweb.transaction.api.event.PublishFeature"/>
   <interface name="tx-state" role="client"
         
signature="org.objectweb.transaction.api.transaction.TransactionState"/>
+  <interface name="xid-provider" role="client"
+        signature="org.objectweb.gotm.lib.xid.XidFeature"/>
 
-  <component name="Fc2PC" 
-       definition="org.objectweb.gotm.lib.coordination.TpTwoPCFeature"/>
-  <component name="FcCommit"
-       definition="org.objectweb.gotm.lib.coordination.TpCommitFeature"/>
-  <component name="FcAbort"
-       definition="org.objectweb.gotm.lib.coordination.TpAbortFeature"/>
+  <component name="FcCommitEngine" 
+       definition="org.objectweb.gotm.lib.coordination.TpCommitEngine"/>
+  <component name="FcLogger"
+       definition="org.objectweb.gotm.lib.logging.TpLoggingHOWL"/>
 
-  <binding client="this.commit" server="Fc2PC.coord-process"/>
-  <binding client="this.abort"  server="FcAbort.coord-process"/>
+  <binding client="this.commit" server="FcCommitEngine.commit"/>
+  <binding client="this.abort"  server="FcCommitEngine.abort"/>
 
-  <binding client="Fc2PC.commit"   server="FcCommit.coord-process"/>
-  <binding client="Fc2PC.abort"    server="FcAbort.coord-process"/>
-  <binding client="Fc2PC.publish"  server="this.publish"/>
-  <binding client="Fc2PC.tx-state" server="this.tx-state"/>
+  <binding client="FcCommitEngine.tx-state"         server="this.tx-state"/>
+  <binding client="FcLogger.xid-provider"           
server="this.xid-provider"/>
 
-  <binding client="FcCommit.publish"  server="this.publish"/>
-  <binding client="FcCommit.tx-state" server="this.tx-state"/>
-  <binding client="FcCommit.abort"    server="FcAbort.coord-process"/>
+  <binding client="FcCommitEngine.commit-decision"  
server="this.sync-publish"/>
+  <binding client="FcCommitEngine.prepare-decision" 
server="this.async-publish"/>
+  <binding client="FcCommitEngine.abort-decision"   
server="this.async-publish"/>
 
-  <binding client="FcAbort.publish"  server="this.publish"/>
-  <binding client="FcAbort.tx-state" server="this.tx-state"/>
+  <binding client="FcCommitEngine.prepare-log" server="FcLogger.empty"/>
+  <binding client="FcCommitEngine.commit-log"  server="FcLogger.empty"/>
+  <binding client="FcCommitEngine.abort-log"   server="FcLogger.empty"/>
 
   <template-controller desc="compositeTemplate" />
 </definition>
Index: 
gotm/src/fractal/org/objectweb/gotm/lib/coordination/TpCommitEngine.fractal
diff -u /dev/null 
gotm/src/fractal/org/objectweb/gotm/lib/coordination/TpCommitEngine.fractal:1.1
--- /dev/null   Mon Jul 11 10:27:05 2005
+++ 
gotm/src/fractal/org/objectweb/gotm/lib/coordination/TpCommitEngine.fractal 
Mon Jul 11 10:27:04 2005
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE definition PUBLIC 
+          "-//objectweb.org//DTD Fractal ADL 2.0//EN" 
+          "classpath://org/objectweb/fractal/adl/xml/basic.dtd">
+
+<definition name="org.objectweb.gotm.lib.coordination.TpCommitEngine">
+  <interface name="commit" role="server"
+        
signature="org.objectweb.transaction.api.coordination.CoordinationFeature"/>
+  <interface name="abort" role="server"
+        
signature="org.objectweb.transaction.api.coordination.CoordinationFeature"/>
+
+  <interface name="prepare-decision" role="client"
+        signature="org.objectweb.transaction.api.event.PublishFeature"/>
+  <interface name="commit-decision" role="client"
+        signature="org.objectweb.transaction.api.event.PublishFeature"/>
+  <interface name="abort-decision" role="client"
+        signature="org.objectweb.transaction.api.event.PublishFeature"/>
+  <interface name="tx-state" role="client"
+        
signature="org.objectweb.transaction.api.transaction.TransactionState"/>
+  <interface name="prepare-log" role="client"
+        signature="org.objectweb.transaction.api.logging.LoggerFeature"/>
+  <interface name="commit-log" role="client"
+        signature="org.objectweb.transaction.api.logging.LoggerFeature"/>
+  <interface name="abort-log" role="client"
+        signature="org.objectweb.transaction.api.logging.LoggerFeature"/>
+
+  <component name="Fc2PC" 
+       definition="org.objectweb.gotm.lib.coordination.TpTwoPCFeature"/>
+  <component name="FcCommit"
+       definition="org.objectweb.gotm.lib.coordination.TpCommitFeature"/>
+  <component name="FcAbort"
+       definition="org.objectweb.gotm.lib.coordination.TpAbortFeature"/>
+
+  <binding client="this.commit" server="Fc2PC.coord-process"/>
+  <binding client="this.abort"  server="FcAbort.coord-process"/>
+
+  <binding client="Fc2PC.commit"   server="FcCommit.coord-process"/>
+  <binding client="Fc2PC.tx-state" server="this.tx-state"/>
+  <binding client="Fc2PC.abort"    server="FcAbort.coord-process"/>
+  <binding client="Fc2PC.publish"  server="this.prepare-decision"/>
+  <binding client="Fc2PC.log"      server="this.prepare-log"/>
+
+  <binding client="FcCommit.tx-state" server="this.tx-state"/>
+  <binding client="FcCommit.abort"    server="FcAbort.coord-process"/>
+  <binding client="FcCommit.publish"  server="this.commit-decision"/>
+  <binding client="FcCommit.log"      server="this.commit-log"/>
+
+  <binding client="FcAbort.tx-state" server="this.tx-state"/>
+  <binding client="FcAbort.publish"  server="this.abort-decision"/>
+  <binding client="FcAbort.log"      server="this.abort-log"/>
+
+  <template-controller desc="compositeTemplate" />
+</definition>
Index: gotm/src/fractal/org/objectweb/gotm/lib/event/TpEventBus.fractal
diff -u gotm/src/fractal/org/objectweb/gotm/lib/event/TpEventBus.fractal:1.1 
gotm/src/fractal/org/objectweb/gotm/lib/event/TpEventBus.fractal:1.2
--- gotm/src/fractal/org/objectweb/gotm/lib/event/TpEventBus.fractal:1.1      
  Mon May 23 13:20:54 2005
+++ gotm/src/fractal/org/objectweb/gotm/lib/event/TpEventBus.fractal    Mon 
Jul 11 10:27:05 2005
@@ -6,16 +6,30 @@
 <definition name="org.objectweb.gotm.lib.event.TpEventBus">
   <interface name="subscribe" role="server"
         signature="org.objectweb.transaction.api.event.SubscribeFeature"/>
-  <interface name="publish" role="server"
+  <interface name="sync-publish" role="server"
+        signature="org.objectweb.transaction.api.event.PublishFeature"/>
+  <interface name="async-publish" role="server"
         signature="org.objectweb.transaction.api.event.PublishFeature"/>
 
-  <component name="FcTopics"
-       definition="org.objectweb.gotm.lib.event.TpEventEngineSimple"/>
-
+  <component name="FcSubscribers"
+       definition="org.objectweb.gotm.lib.event.TpSubscriberPool"/>
+  <component name="FcSyncPublish"
+       definition="org.objectweb.gotm.lib.event.TpPublishSimple"/>
+  <component name="FcASyncPublish"
+       definition="org.objectweb.gotm.lib.event.TpPublishASyncThread"/>
+  
   <binding client="this.subscribe" 
-           server="FcTopics.subscribe"/>
-  <binding client="this.publish" 
-           server="FcTopics.publish"/>
+           server="FcSubscribers.subscribe"/>
+
+  <binding client="this.sync-publish" 
+           server="FcSyncPublish.publish"/>
+  <binding client="FcSyncPublish.subscriber-provider" 
+           server="FcSubscribers.subscriber-provider"/>
+
+  <binding client="this.async-publish" 
+           server="FcASyncPublish.publish"/>
+  <binding client="FcASyncPublish.subscriber-provider" 
+           server="FcSubscribers.subscriber-provider"/>
          
   <template-controller desc="compositeTemplate" />
 </definition>
Index: gotm/src/fractal/org/objectweb/gotm/lib/logging/TpLoggingHOWL.fractal
diff -u /dev/null 
gotm/src/fractal/org/objectweb/gotm/lib/logging/TpLoggingHOWL.fractal:1.1
--- /dev/null   Mon Jul 11 10:27:05 2005
+++ gotm/src/fractal/org/objectweb/gotm/lib/logging/TpLoggingHOWL.fractal     
  Mon Jul 11 10:27:05 2005
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE definition PUBLIC 
+          "-//objectweb.org//DTD Fractal ADL 2.0//EN" 
+          "classpath://org/objectweb/fractal/adl/xml/basic.dtd">
+
+<definition name="org.objectweb.gotm.lib.logging.TpLoggingHOWL">
+  <interface name="force" role="server"
+        signature="org.objectweb.transaction.api.logging.LoggerFeature"/>
+  <interface name="no-force" role="server"
+        signature="org.objectweb.transaction.api.logging.LoggerFeature"/>
+  <interface name="empty" role="server"
+        signature="org.objectweb.transaction.api.logging.LoggerFeature"/>
+  <interface name="xid-provider" role="client"
+        signature="org.objectweb.gotm.lib.xid.XidFeature"/>
+  
+  <component name="FcProvider"
+       
definition="org.objectweb.gotm.lib.logging.TpHOWLoggerProvider(log.txt,.)"/>
+  <component name="FcForceLogger"
+       definition="org.objectweb.gotm.lib.logging.TpGenericLogger(true)"/>
+  <component name="FcNoForceLogger"
+       definition="org.objectweb.gotm.lib.logging.TpGenericLogger(false)"/>
+  <component name="FcEmptyLogger"
+       definition="org.objectweb.gotm.lib.logging.TpSimpleLogger"/>
+
+  <binding client="this.force"                    
server="FcForceLogger.log"/>
+  <binding client="FcForceLogger.logger-provider" 
server="FcProvider.logger-provider"/>
+  <binding client="FcForceLogger.xid-provider"    
server="this.xid-provider"/>
+
+  <binding client="this.no-force"                   
server="FcNoForceLogger.log"/>
+  <binding client="FcNoForceLogger.logger-provider" 
server="FcProvider.logger-provider"/>
+  <binding client="FcNoForceLogger.xid-provider"    
server="this.xid-provider"/>
+
+  <binding client="this.empty" server="FcEmptyLogger.log"/>
+  
+  <template-controller desc="compositeTemplate" />
+</definition>
Index: gotm/src/java/org/objectweb/gotm/GoTMException.java
diff -u gotm/src/java/org/objectweb/gotm/GoTMException.java:1.3 
gotm/src/java/org/objectweb/gotm/GoTMException.java:1.4
--- gotm/src/java/org/objectweb/gotm/GoTMException.java:1.3     Mon Jan 10 
17:16:06 2005
+++ gotm/src/java/org/objectweb/gotm/GoTMException.java Mon Jul 11 10:27:05 
2005
@@ -23,7 +23,7 @@
 Contributor(s): .
 
 ---------------------------------------------------------------------
-$Id: GoTMException.java,v 1.3 2005/01/10 16:16:06 rouvoy Exp $
+$Id: GoTMException.java,v 1.4 2005/07/11 08:27:05 rouvoy Exp $
 ====================================================================*/
 
 package org.objectweb.gotm;
@@ -31,11 +31,18 @@
 /**
  * Exception wrapper for GoTM.
  * @author <a href="mailto:Romain.Rouvoy@xxxxxxx";>Romain Rouvoy</a>
- * @version $Revision: 1.3 $
+ * @version $Revision: 1.4 $
  */
 public class GoTMException 
      extends RuntimeException 
 {
+    /**
+     * @param msg the message specified when catching the initial exception.
+     */
+    public GoTMException(String msg) {
+        super(msg);
+    }
+    
     /**
      * @param ex the delegated exception.
      */
Index: gotm/src/java/org/objectweb/gotm/lib/CurrentHandler.java
diff -u gotm/src/java/org/objectweb/gotm/lib/CurrentHandler.java:1.3 
gotm/src/java/org/objectweb/gotm/lib/CurrentHandler.java:1.4
--- gotm/src/java/org/objectweb/gotm/lib/CurrentHandler.java:1.3        Mon 
May 23 13:20:55 2005
+++ gotm/src/java/org/objectweb/gotm/lib/CurrentHandler.java    Mon Jul 11 
10:27:05 2005
@@ -1,115 +1,142 @@
 /*====================================================================
 
-GoTM: GoTM is an open Transaction Monitor
-Copyright (C) 2003-2005 INRIA - Jacquard & USTL - LIFL - GOAL
-Contact: gotm-team@xxxxxxxxxxxxx
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Lesser General Public
-License as published by the Free Software Foundation; either
-version 2.1 of the License, or any later version.
-
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
-USA
-
-Initial developer(s): Romain Rouvoy.
-Contributor(s): .
-
----------------------------------------------------------------------
-$Id: CurrentHandler.java,v 1.3 2005/05/23 11:20:55 rouvoy Exp $
-====================================================================*/
+ GoTM: GoTM is an open Transaction Monitor
+ Copyright (C) 2003-2005 INRIA - Jacquard & USTL - LIFL - GOAL
+ Contact: gotm-team@xxxxxxxxxxxxx
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
+ USA
+
+ Initial developer(s): Romain Rouvoy.
+ Contributor(s): .
+
+ ---------------------------------------------------------------------
+ $Id: CurrentHandler.java,v 1.4 2005/07/11 08:27:05 rouvoy Exp $
+ ====================================================================*/
 package org.objectweb.gotm.lib;
 
-
 import org.objectweb.fractal.api.Component;
 import org.objectweb.fractal.api.NoSuchInterfaceException;
+import org.objectweb.fractal.api.control.IllegalCacheException;
 import org.objectweb.fractal.api.control.IllegalLifeCycleException;
 import org.objectweb.fractal.api.control.LifeCycleController;
 import org.objectweb.fractal.api.factory.Factory;
 import org.objectweb.fractal.api.factory.InstantiationException;
 import org.objectweb.fractal.lib.BindablePrimitive;
+import org.objectweb.fractal.pool.util.FcCache;
 import org.objectweb.fractal.util.Fractal;
 
 /**
  * @author <a href="mailto:Romain.Rouvoy@xxxxxxx";>Romain Rouvoy</a>
  * @created 1 févr. 2005
- * @modified $Date: 2005/05/23 11:20:55 $
- * @version $Revision: 1.3 $
- * @fractal.itf name="factory" role="client" 
signature="org.objectweb.fractal.api.Component"
+ * @modified $Date: 2005/07/11 08:27:05 $
+ * @version $Revision: 1.4 $
+ * @fractal.itf name="factory" role="client"
+ *              signature="org.objectweb.fractal.api.Component"
  */
 public class CurrentHandler
-extends BindablePrimitive 
-implements CurrentManager, LifeCycleController
-{
+        extends BindablePrimitive
+        implements CurrentManager, LifeCycleController {
     /** Fractal ADL Identifier for the <code>FACTORY</code> interface. */
     public static final String FACTORY = "factory";
-    
+
     /** <code>current</code> . */
     private Component current = null;
+
     private Component cleared = null;
-    
-    /* (non-Javadoc)
+
+    /*
+     * (non-Javadoc)
+     * 
      * @see org.objectweb.fractal.lib.BindablePrimitive#clientFc()
      */
     protected String[] clientFc() {
-        return new String[] {FACTORY};
+        return new String[] { FACTORY };
     }
-    
+
     /**
      * @return the transaction factory.
      */
     private Factory getFactory() {
         Component cpt = (Component) fcBindings.get(FACTORY);
         try {
-            return  (Factory) cpt.getFcInterface("factory");
+            return (Factory) cpt.getFcInterface("factory");
         } catch (NoSuchInterfaceException e) {
             if (getLogger().isLoggable(ERROR))
-                getLogger().log(ERROR,e.getMessage());
-            return null ;
+                getLogger().log(ERROR, e.getMessage());
+            return null;
         }
     }
-    
+
     private Component getCleared() {
         if (this.cleared == null) {
             try {
                 this.cleared = getFactory().newFcInstance();
+                Fractal.getLifeCycleController(this.cleared).startFc();
             } catch (InstantiationException e) {
                 e.printStackTrace();
+            } catch (IllegalLifeCycleException e) {
+                if (getLogger().isLoggable(ERROR))
+                    getLogger().log(ERROR, e.getMessage());
+            } catch (NoSuchInterfaceException e) {
+                if (getLogger().isLoggable(ERROR))
+                    getLogger().log(ERROR, e.getMessage());
             }
         }
-        return this.cleared ;
+        return this.cleared;
     }
-    
-    /* (non-Javadoc)
+
+    /*
+     * (non-Javadoc)
+     * 
      * @see org.objectweb.gotm.lib.CurrentManager#getCurrentFc()
      */
     public Component getCurrentFc() {
         return this.current;
     }
-    
-    /* (non-Javadoc)
+
+    /*
+     * (non-Javadoc)
+     * 
      * @see org.objectweb.gotm.lib.CurrentManager#createCurrentFc()
      */
     public void createCurrentFc() {
+        // try {
+        // this.current = this.cleared ;
+        // Fractal.getLifeCycleController(this.current).startFc();
+        // } catch (IllegalLifeCycleException e) {
+        // if (getLogger().isLoggable(ERROR))
+        // getLogger().log(ERROR,e.getMessage());
+        // } catch (NoSuchInterfaceException e) {
+        // // Ignored
+        // }
         try {
-            this.current = this.cleared ;
-            Fractal.getLifeCycleController(this.current).startFc();
-        } catch (IllegalLifeCycleException e) {
+            this.current = this.cleared;
+            FcCache.getCacheController(this.current).initFc();
+        } catch (IllegalCacheException e) {
             if (getLogger().isLoggable(ERROR))
-                getLogger().log(ERROR,e.getMessage());
+                getLogger().log(ERROR, e.getMessage());
         } catch (NoSuchInterfaceException e) {
-            // Ignored
+            if (getLogger().isLoggable(ERROR))
+                getLogger().log(ERROR, e.getMessage());
         }
     }
 
-    /* (non-Javadoc)
+    /*
+     * (non-Javadoc)
+     * 
      * @see 
org.objectweb.gotm.lib.CurrentManager#setCurrentFc(org.objectweb.fractal.api.Component)
      */
     public void setCurrentFc(Component c) {
@@ -117,36 +144,62 @@
         this.cleared = c;
     }
 
-    /* (non-Javadoc)
+    /*
+     * (non-Javadoc)
+     * 
      * @see org.objectweb.gotm.lib.CurrentManager#clearCurrentFc()
      */
     public void clearCurrentFc() {
+        // try {
+        // Fractal.getLifeCycleController(this.current).stopFc();
+        // } catch (IllegalLifeCycleException e) {
+        // getLogger().log(ERROR,e.getMessage());
+        // } catch (NoSuchInterfaceException e) {
+        // // Ignored
+        // }
         try {
-            Fractal.getLifeCycleController(this.current).stopFc();
-        } catch (IllegalLifeCycleException e) {
-            getLogger().log(ERROR,e.getMessage());
+            FcCache.getCacheController(this.current).clearFc();
+        } catch (IllegalCacheException e) {
+            if (getLogger().isLoggable(ERROR))
+                getLogger().log(ERROR, e.getMessage());
         } catch (NoSuchInterfaceException e) {
-            // Ignored
+            if (getLogger().isLoggable(ERROR))
+                getLogger().log(ERROR, e.getMessage());
         }
         this.current = null;
     }
 
-    /* (non-Javadoc)
+    /*
+     * (non-Javadoc)
+     * 
      * @see 
org.objectweb.fractal.api.control.LifeCycleController#getFcState()
      */
-    public String getFcState() { return null; }
+    public String getFcState() {
+        return null;
+    }
 
-    /* (non-Javadoc)
+    /*
+     * (non-Javadoc)
+     * 
      * @see org.objectweb.fractal.api.control.LifeCycleController#startFc()
      */
     public void startFc() {
         getCleared();
     }
 
-    /* (non-Javadoc)
+    /*
+     * (non-Javadoc)
+     * 
      * @see org.objectweb.fractal.api.control.LifeCycleController#stopFc()
      */
     public void stopFc() {
+        try {
+            Fractal.getLifeCycleController(this.current).stopFc();
+        } catch (IllegalLifeCycleException e) {
+            getLogger().log(ERROR, e.getMessage());
+        } catch (NoSuchInterfaceException e) {
+            // Ignored
+        }
         this.cleared = null;
     }
 }
Index: gotm/src/java/org/objectweb/gotm/lib/coordination/AbortFeature.java
diff -u 
gotm/src/java/org/objectweb/gotm/lib/coordination/AbortFeature.java:1.1 
gotm/src/java/org/objectweb/gotm/lib/coordination/AbortFeature.java:1.2
--- gotm/src/java/org/objectweb/gotm/lib/coordination/AbortFeature.java:1.1   
  Mon May 23 13:20:54 2005
+++ gotm/src/java/org/objectweb/gotm/lib/coordination/AbortFeature.java Mon 
Jul 11 10:27:04 2005
@@ -23,11 +23,13 @@
 Contributor(s): .
 
 ---------------------------------------------------------------------
-$Id: AbortFeature.java,v 1.1 2005/05/23 11:20:54 rouvoy Exp $
+$Id: AbortFeature.java,v 1.2 2005/07/11 08:27:04 rouvoy Exp $
 ====================================================================*/
 
 package org.objectweb.gotm.lib.coordination;
 
+import java.util.Map;
+
 import org.objectweb.transaction.lib.resource.ResourceEventRollback;
 import org.objectweb.transaction.lib.transaction.TransactionStatusRolledBack;
 import 
org.objectweb.transaction.lib.transaction.TransactionStatusRollingBack;
@@ -35,20 +37,22 @@
 /**
  * Implementation of the cancel process.
  * @author <a href="mailto:Romain.Rouvoy@xxxxxxx";>Romain Rouvoy</a>
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
  * @fractal.itf
  */
 public class AbortFeature 
      extends AbstractCoordinationFeature 
 {
     /* (non-Javadoc)
-     * @see 
org.objectweb.transaction.api.coordination.CoordinationFeature#process()
+     * @see 
org.objectweb.transaction.api.coordination.CoordinationFeature#process(java.util.Map)
      */
-    public void process() {
+    public void process(Map context) {
         if (getLogger().isLoggable(DEBUG))
             getLogger().log(DEBUG,"Processing Abort.");
         getTxState().setStatus(TransactionStatusRollingBack.status);
-        getPublisher().notify(ResourceEventRollback.event.hashCode(),null);
+        
getLog().log(TransactionStatusRollingBack.status.getLabel().getBytes());
+        getPublisher().notify(ResourceEventRollback.event,context);
+        
getLog().log(TransactionStatusRolledBack.status.getLabel().getBytes());
         getTxState().setStatus(TransactionStatusRolledBack.status);
     }
 }
Index: 
gotm/src/java/org/objectweb/gotm/lib/coordination/AbstractCoordinationFeature.java
diff -u 
gotm/src/java/org/objectweb/gotm/lib/coordination/AbstractCoordinationFeature.java:1.6
 
gotm/src/java/org/objectweb/gotm/lib/coordination/AbstractCoordinationFeature.java:1.7
--- 
gotm/src/java/org/objectweb/gotm/lib/coordination/AbstractCoordinationFeature.java:1.6
      Mon May 23 13:20:54 2005
+++ 
gotm/src/java/org/objectweb/gotm/lib/coordination/AbstractCoordinationFeature.java
  Mon Jul 11 10:27:04 2005
@@ -23,13 +23,14 @@
  Contributor(s): .
  
  ---------------------------------------------------------------------
- $Id: AbstractCoordinationFeature.java,v 1.6 2005/05/23 11:20:54 rouvoy Exp $
+ $Id: AbstractCoordinationFeature.java,v 1.7 2005/07/11 08:27:04 rouvoy Exp $
  ====================================================================*/
 
 package org.objectweb.gotm.lib.coordination;
 
 import org.objectweb.transaction.api.coordination.CoordinationFeature;
 import org.objectweb.transaction.api.event.PublishFeature;
+import org.objectweb.transaction.api.logging.LoggerFeature;
 import org.objectweb.transaction.api.transaction.TransactionState;
 
 import org.objectweb.fractal.lib.BindablePrimitive;
@@ -38,10 +39,11 @@
  * Abstract implementation of a validation engine.
  * @author <a href="mailto:Romain.Rouvoy@xxxxxxx";>Romain Rouvoy</a>
  * @created 5 janv. 2005
- * @modified $Date: 2005/05/23 11:20:54 $
- * @version $Revision: 1.6 $
+ * @modified $Date: 2005/07/11 08:27:04 $
+ * @version $Revision: 1.7 $
  * @fractal.itf name="publish" role="client" 
signature="org.objectweb.transaction.api.event.PublishFeature"
  * @fractal.itf name="tx-state" role="client" 
signature="org.objectweb.transaction.api.transaction.TransactionState"
+ * @fractal.itf name="log" role="client" 
signature="org.objectweb.transaction.api.logging.LoggerFeature"
  */
 public abstract class AbstractCoordinationFeature 
               extends BindablePrimitive
@@ -53,7 +55,8 @@
     protected String[] clientFc() {
         return new String[] {
                 PublishFeature.PUBLISH_FEATURE,
-                TransactionState.TRANSACTION_STATE
+                TransactionState.TRANSACTION_STATE,
+                LoggerFeature.LOGGER
         };
     }
     
@@ -64,7 +67,17 @@
         return (PublishFeature) 
fcBindings.get(PublishFeature.PUBLISH_FEATURE);
     }
     
+    /**
+     * @return the transaction state.
+     */
     protected final TransactionState getTxState() {
         return (TransactionState) 
fcBindings.get(TransactionState.TRANSACTION_STATE);
+    }
+    
+    /**
+     * @return the recovery logger.
+     */
+    protected final LoggerFeature getLog() {
+        return (LoggerFeature) fcBindings.get(LoggerFeature.LOGGER);
     }
 }
Index: 
gotm/src/java/org/objectweb/gotm/lib/coordination/AutoAbortAttributeController.java
diff -u 
gotm/src/java/org/objectweb/gotm/lib/coordination/AutoAbortAttributeController.java:1.1
 
gotm/src/java/org/objectweb/gotm/lib/coordination/AutoAbortAttributeController.java:removed
--- 
gotm/src/java/org/objectweb/gotm/lib/coordination/AutoAbortAttributeController.java:1.1
     Mon May 23 13:20:54 2005
+++ 
gotm/src/java/org/objectweb/gotm/lib/coordination/AutoAbortAttributeController.java
 Mon Jul 11 10:27:05 2005
@@ -1,54 +0,0 @@
-/*====================================================================
-
-GoTM: GoTM is an open Transaction Monitor
-Copyright (C) 2000-2004 INRIA & USTL - LIFL - GOAL
-Contact: gotm-team@xxxxxxxxxxxxx
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Lesser General Public
-License as published by the Free Software Foundation; either
-version 2.1 of the License, or any later version.
-
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
-USA
-
-Initial developer(s): Romain Rouvoy.
-Contributor(s): .
-
----------------------------------------------------------------------
-$Id: AutoAbortAttributeController.java,v 1.1 2005/05/23 11:20:54 rouvoy Exp $
-====================================================================*/
-
-package org.objectweb.gotm.lib.coordination;
-
-import org.objectweb.fractal.api.control.AttributeController;
-
-/**
- * @author <a href="mailto:Romain.Rouvoy@xxxxxxx";>Romain Rouvoy</a>
- * @created 5 janv. 2005
- * @modified $Date: 2005/05/23 11:20:54 $
- * @version $Revision: 1.1 $
- * @fractal.controller name="attribute"
- */
-public interface AutoAbortAttributeController 
-         extends AttributeController 
-{
-    /**
-     * Defines the delay before autocompletion.
-     * @param delay to apply in seconds (0 -> no delay).
-     */
-    public void setTimeout(int delay);
-
-    /**
-     * Provides the value of the autocompletion delay.
-     * @return the delay applied (0 -> no delay).
-     */
-    public int getTimeout();
-}
Index: gotm/src/java/org/objectweb/gotm/lib/coordination/AutoAbortImpl.java
diff -u 
gotm/src/java/org/objectweb/gotm/lib/coordination/AutoAbortImpl.java:1.1 
gotm/src/java/org/objectweb/gotm/lib/coordination/AutoAbortImpl.java:removed
--- gotm/src/java/org/objectweb/gotm/lib/coordination/AutoAbortImpl.java:1.1  
  Mon May 23 13:20:54 2005
+++ gotm/src/java/org/objectweb/gotm/lib/coordination/AutoAbortImpl.java      
  Mon Jul 11 10:27:05 2005
@@ -1,129 +0,0 @@
-/*====================================================================
- 
- GoTM: GoTM is an open Transaction Monitor
- Copyright (C) 2000-2004 INRIA & USTL - LIFL - GOAL
- Contact: gotm-team@xxxxxxxxxxxxx
- 
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or any later version.
- 
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- Lesser General Public License for more details.
- 
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
- USA
- 
- Initial developer(s): Romain Rouvoy.
- Contributor(s): .
- 
- ---------------------------------------------------------------------
- $Id: AutoAbortImpl.java,v 1.1 2005/05/23 11:20:54 rouvoy Exp $
- ====================================================================*/
-
-package org.objectweb.gotm.lib.coordination;
-
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.Map;
-
-import javax.swing.Timer;
-
-import org.objectweb.gotm.lib.event.SubscribablePrimitive;
-import org.objectweb.transaction.api.coordination.CoordinationFeature;
-import org.objectweb.transaction.api.event.SubscribeFeature;
-import org.objectweb.transaction.lib.transaction.TransactionStatusCommitted;
-import 
org.objectweb.transaction.lib.transaction.TransactionStatusNoTransaction;
-import org.objectweb.transaction.lib.transaction.TransactionStatusRolledBack;
-import 
org.objectweb.transaction.lib.transaction.TransactionStatusTransactionActive;
-
-/**
- * @author <a href="mailto:Romain.Rouvoy@xxxxxxx";>Romain Rouvoy</a>
- * @version $Revision: 1.1 $
- * @fractal.itf name="coord-process" role="client" 
signature="org.objectweb.transaction.api.coordination.CoordinationFeature"
- */
-public class AutoAbortImpl 
-extends SubscribablePrimitive
-implements AutoAbortAttributeController
-{
-    /**
-     * @fractal.attr argument="timeout"
-     */
-    private int timeout = 0;
-    
-    private Timer daemon ;
-    
-    /**
-     * Default Constructor.
-     */
-    public AutoAbortImpl() {
-        ActionListener taskPerformer = new ActionListener() {
-            public void actionPerformed(ActionEvent evt) {
-                AutoAbortImpl.this.getTerminator().process();
-            }
-        };
-        this.daemon = new Timer(this.timeout, taskPerformer);
-        this.daemon.setRepeats(false);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.objectweb.gotm.lib.BindingFeature#clientFc()
-     */
-    protected String[] clientFc() {
-        return new String[] {
-                SubscribeFeature.SUBSCRIBE_FEATURE, 
-                CoordinationFeature.PROCESS_FEATURE
-        };
-    }
-
-    /* (non-Javadoc)
-     * @see org.objectweb.gotm.lib.SubscribablePrimitive#getEvents()
-     */
-    protected int[] getEvents() {
-        return new int[] {
-                TransactionStatusTransactionActive.status.hashCode(),
-                TransactionStatusNoTransaction.status.hashCode(),
-                TransactionStatusRolledBack.status.hashCode(),
-                TransactionStatusCommitted.status.hashCode()
-        };
-    }
-
-    protected CoordinationFeature getTerminator() {
-            return (CoordinationFeature) 
fcBindings.get(CoordinationFeature.PROCESS_FEATURE);
-    }
-    
-    /* (non-Javadoc)
-     * @see 
org.objectweb.gotm.lib.coordination.AutoAbortAttributeController#setTimeout(int)
-     */
-    public void setTimeout(int delay) {
-        this.timeout = delay ;
-        this.daemon.setInitialDelay(this.timeout*1000);
-    }
-    
-    /* (non-Javadoc)
-     * @see 
org.objectweb.gotm.lib.coordination.AutoAbortAttributeController#getTimeout()
-     */
-    public int getTimeout() {
-        return this.timeout;
-    }
-    
-    /* (non-Javadoc)
-     * @see 
org.objectweb.gotm.lib.topic.PublishFeature#notify(java.lang.String, 
java.util.Map)
-     */
-    public void notify(int topic, Map context) {
-        if (topic == TransactionStatusTransactionActive.status.hashCode()) {
-            if (getTimeout() != 0) {
-                //getTrace().debug("Starting timeout for "+getTimeout()+".");
-                this.daemon.start();
-            }
-        } else if (getTimeout() != 0) {
-                //getTrace().debug("Stopping timeout.");
-                this.daemon.stop();
-        }
-    }
-}
Index: gotm/src/java/org/objectweb/gotm/lib/coordination/CommitFeature.java
diff -u 
gotm/src/java/org/objectweb/gotm/lib/coordination/CommitFeature.java:1.2 
gotm/src/java/org/objectweb/gotm/lib/coordination/CommitFeature.java:1.3
--- gotm/src/java/org/objectweb/gotm/lib/coordination/CommitFeature.java:1.2  
  Fri Jul  1 18:27:48 2005
+++ gotm/src/java/org/objectweb/gotm/lib/coordination/CommitFeature.java      
  Mon Jul 11 10:27:04 2005
@@ -23,14 +23,17 @@
  Contributor(s): .
  
  ---------------------------------------------------------------------
- $Id: CommitFeature.java,v 1.2 2005/07/01 16:27:48 rouvoy Exp $
+ $Id: CommitFeature.java,v 1.3 2005/07/11 08:27:04 rouvoy Exp $
  ====================================================================*/
 
 package org.objectweb.gotm.lib.coordination;
 
-import org.objectweb.gotm.lib.transaction.StatusNotAllowedException;
+import java.util.Map;
+
+import org.objectweb.gotm.lib.transaction.InvalidTransitionException;
 import org.objectweb.transaction.api.coordination.CoordinationFeature;
 import org.objectweb.transaction.api.event.PublishFeature;
+import org.objectweb.transaction.api.logging.LoggerFeature;
 import org.objectweb.transaction.api.transaction.TransactionState;
 import org.objectweb.transaction.lib.resource.ResourceEventCommit;
 import org.objectweb.transaction.lib.transaction.TransactionStatusCommitted;
@@ -40,7 +43,7 @@
 /**
  * One phase validation process.
  * @author <a href="mailto:Romain.Rouvoy@xxxxxxx";>Romain Rouvoy</a>
- * @version $Revision: 1.2 $
+ * @version $Revision: 1.3 $
  * @fractal.itf name="abort" role="client" 
signature="org.objectweb.transaction.api.coordination.CoordinationFeature"
  */
 public class CommitFeature 
@@ -56,6 +59,7 @@
         return new String[] {
                 PublishFeature.PUBLISH_FEATURE,
                 TransactionState.TRANSACTION_STATE,
+                LoggerFeature.LOGGER,
                 ABORT
         };
     }
@@ -66,20 +70,21 @@
     protected CoordinationFeature abort() {
         return (CoordinationFeature) fcBindings.get(ABORT);
     }
-
     
     /* (non-Javadoc)
-     * @see org.objectweb.gotm.api.engine.ValidationFeature#validate()
+     * @see 
org.objectweb.transaction.api.coordination.CoordinationFeature#process(java.util.Map)
      */
-    public void process() {
+    public void process(Map context) {
         if (getLogger().isLoggable(DEBUG))
             getLogger().log(DEBUG,"Processing Commit.");
         try {
-        getTxState().setStatus(TransactionStatusCommitting.status);
-        getPublisher().notify(ResourceEventCommit.event.hashCode(),null);
-        getTxState().setStatus(TransactionStatusCommitted.status);
-        } catch (StatusNotAllowedException e) {
-            abort().process();
+            getTxState().setStatus(TransactionStatusCommitting.status);
+            
getLog().log(TransactionStatusCommitting.status.getLabel().getBytes());
+            getPublisher().notify(ResourceEventCommit.event,context);
+            
getLog().log(TransactionStatusCommitted.status.getLabel().getBytes());
+            getTxState().setStatus(TransactionStatusCommitted.status);
+        } catch (InvalidTransitionException e) {
+            abort().process(context);
         }
     }
 }
Index: gotm/src/java/org/objectweb/gotm/lib/coordination/StatusChecker.java
diff -u 
gotm/src/java/org/objectweb/gotm/lib/coordination/StatusChecker.java:1.4 
gotm/src/java/org/objectweb/gotm/lib/coordination/StatusChecker.java:removed
--- gotm/src/java/org/objectweb/gotm/lib/coordination/StatusChecker.java:1.4  
  Mon May 23 13:20:54 2005
+++ gotm/src/java/org/objectweb/gotm/lib/coordination/StatusChecker.java      
  Mon Jul 11 10:27:05 2005
@@ -1,71 +0,0 @@
-/*====================================================================
-
-GoTM: GoTM is an open Transaction Monitor
-Copyright (C) 2000-2004 INRIA & USTL - LIFL - GOAL
-Contact: gotm-team@xxxxxxxxxxxxx
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Lesser General Public
-License as published by the Free Software Foundation; either
-version 2.1 of the License, or any later version.
-
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
-USA
-
-Initial developer(s): Romain Rouvoy.
-Contributor(s): .
-
----------------------------------------------------------------------
-$Id: StatusChecker.java,v 1.4 2005/05/23 11:20:54 rouvoy Exp $
-====================================================================*/
-
-package org.objectweb.gotm.lib.coordination;
-
-import org.objectweb.fractal.lib.BindablePrimitive;
-import org.objectweb.transaction.api.coordination.CoordinationFeature;
-import org.objectweb.transaction.api.transaction.TransactionStatusFeature;
-import 
org.objectweb.transaction.lib.transaction.TransactionStatusMarkedRollback;
-
-/**
- * @author <a href="mailto:Romain.Rouvoy@xxxxxxx";>Romain Rouvoy</a>
- * @version $Revision: 1.4 $
- * @fractal.itf name="tx-status" role="client" 
signature="org.objectweb.transaction.api.transaction.TransactionStatusFeature"
- * @fractal.itf name="commit" role="client" 
signature="org.objectweb.transaction.api.coordination.CoordinationFeature"
- * @fractal.itf name="rollback" role="client" 
signature="org.objectweb.transaction.api.coordination.CoordinationFeature"
- */
-public class StatusChecker 
-     extends BindablePrimitive
-  implements CoordinationFeature 
-{
-    /** Comment for <code>COMMIT</code>. */
-    public static final String COMMIT = "commit";
-    /** Comment for <code>ROLLBACK</code>. */
-    public static final String ROLLBACK = "rollback";
-    
-    /* (non-Javadoc)
-     * @see org.objectweb.gotm.lib.BindingFeature#clientFc()
-     */
-    protected String[] clientFc() {
-        return new String[] {
-                TransactionStatusFeature.TX_STATUS,
-                COMMIT,
-                ROLLBACK
-        };
-    }
-
-    /* (non-Javadoc)
-     * @see 
org.objectweb.transaction.api.coordination.CoordinationFeature#process()
-     */
-    public void process() {
-        TransactionStatusFeature status = (TransactionStatusFeature) 
fcBindings.get(TransactionStatusFeature.TX_STATUS);
-        CoordinationFeature delegate = (CoordinationFeature) 
((status.getStatus()==TransactionStatusMarkedRollback.status)?fcBindings.get(ROLLBACK):fcBindings.get(COMMIT));
 
-        delegate.process();
-    }
-}
Index: gotm/src/java/org/objectweb/gotm/lib/coordination/TimeoutAttribute.java
diff -u /dev/null 
gotm/src/java/org/objectweb/gotm/lib/coordination/TimeoutAttribute.java:1.1
--- /dev/null   Mon Jul 11 10:27:05 2005
+++ gotm/src/java/org/objectweb/gotm/lib/coordination/TimeoutAttribute.java   
  Mon Jul 11 10:27:04 2005
@@ -0,0 +1,54 @@
+/*====================================================================
+
+GoTM: GoTM is an open Transaction Monitor
+Copyright (C) 2000-2004 INRIA & USTL - LIFL - GOAL
+Contact: gotm-team@xxxxxxxxxxxxx
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
+USA
+
+Initial developer(s): Romain Rouvoy.
+Contributor(s): .
+
+---------------------------------------------------------------------
+$Id: TimeoutAttribute.java,v 1.1 2005/07/11 08:27:04 rouvoy Exp $
+====================================================================*/
+
+package org.objectweb.gotm.lib.coordination;
+
+/**
+ * @author <a href="mailto:Romain.Rouvoy@xxxxxxx";>Romain Rouvoy</a>
+ * @created 5 janv. 2005
+ * @modified $Date: 2005/07/11 08:27:04 $
+ * @version $Revision: 1.1 $
+ * @fractal.itf name="timeout-attr"
+ */
+public interface TimeoutAttribute 
+{
+    /** Fractal ADL Identifier for the <code>TimeoutAttribute</code> 
interface. */
+    public static final String TIMEOUT_ATTRIBUTE = "timeout-attr";
+    
+    /**
+     * Defines the delay before autocompletion.
+     * @param delay to apply in seconds (0 -> no delay).
+     */
+    public void setTimeout(int delay);
+
+    /**
+     * Provides the value of the autocompletion delay.
+     * @return the delay applied (0 -> no delay).
+     */
+    public int getTimeout();
+}
Index: gotm/src/java/org/objectweb/gotm/lib/coordination/TimeoutImpl.java
diff -u /dev/null 
gotm/src/java/org/objectweb/gotm/lib/coordination/TimeoutImpl.java:1.1
--- /dev/null   Mon Jul 11 10:27:05 2005
+++ gotm/src/java/org/objectweb/gotm/lib/coordination/TimeoutImpl.java  Mon 
Jul 11 10:27:04 2005
@@ -0,0 +1,128 @@
+/*====================================================================
+ 
+ GoTM: GoTM is an open Transaction Monitor
+ Copyright (C) 2000-2004 INRIA & USTL - LIFL - GOAL
+ Contact: gotm-team@xxxxxxxxxxxxx
+ 
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or any later version.
+ 
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ Lesser General Public License for more details.
+ 
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
+ USA
+ 
+ Initial developer(s): Romain Rouvoy.
+ Contributor(s): .
+ 
+ ---------------------------------------------------------------------
+ $Id: TimeoutImpl.java,v 1.1 2005/07/11 08:27:04 rouvoy Exp $
+ ====================================================================*/
+
+package org.objectweb.gotm.lib.coordination;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.swing.Timer;
+
+import org.objectweb.gotm.lib.event.SubscribablePrimitive;
+import org.objectweb.transaction.api.coordination.CoordinationFeature;
+import org.objectweb.transaction.api.event.Event;
+import org.objectweb.transaction.api.event.SubscribeFeature;
+import org.objectweb.transaction.lib.transaction.TransactionStatusCommitted;
+import 
org.objectweb.transaction.lib.transaction.TransactionStatusNoTransaction;
+import org.objectweb.transaction.lib.transaction.TransactionStatusRolledBack;
+import 
org.objectweb.transaction.lib.transaction.TransactionStatusTransactionActive;
+
+/**
+ * @author <a href="mailto:Romain.Rouvoy@xxxxxxx";>Romain Rouvoy</a>
+ * @version $Revision: 1.1 $
+ * @fractal.itf name="coord-process" role="client" 
signature="org.objectweb.transaction.api.coordination.CoordinationFeature"
+ */
+public class TimeoutImpl 
+extends SubscribablePrimitive
+implements TimeoutAttribute
+{
+    private int timeout = 60;
+    
+    private Timer daemon ;
+    
+    /**
+     * Default Constructor.
+     */
+    public TimeoutImpl() {
+        ActionListener taskPerformer = new ActionListener() {
+            public void actionPerformed(ActionEvent evt) {
+                TimeoutImpl.this.getTerminator().process(new HashMap());
+            }
+        };
+        this.daemon = new Timer(this.timeout, taskPerformer);
+        this.daemon.setRepeats(false);
+    }
+    
+    /* (non-Javadoc)
+     * @see org.objectweb.gotm.lib.BindingFeature#clientFc()
+     */
+    protected String[] clientFc() {
+        return new String[] {
+                SubscribeFeature.SUBSCRIBE_FEATURE, 
+                CoordinationFeature.PROCESS_FEATURE
+        };
+    }
+
+    /* (non-Javadoc)
+     * @see org.objectweb.gotm.lib.SubscribablePrimitive#getEvents()
+     */
+    protected Event[] getEvents() {
+        return new Event[] {
+                TransactionStatusTransactionActive.status,
+                TransactionStatusNoTransaction.status,
+                TransactionStatusRolledBack.status,
+                TransactionStatusCommitted.status
+        };
+    }
+
+    protected CoordinationFeature getTerminator() {
+            return (CoordinationFeature) 
fcBindings.get(CoordinationFeature.PROCESS_FEATURE);
+    }
+    
+    /* (non-Javadoc)
+     * @see 
org.objectweb.gotm.lib.coordination.TimeoutAttribute#setTimeout(int)
+     */
+    public void setTimeout(int delay) {
+        this.timeout = delay ;
+        this.daemon.setInitialDelay(this.timeout*1000);
+    }
+    
+    /* (non-Javadoc)
+     * @see org.objectweb.gotm.lib.coordination.TimeoutAttribute#getTimeout()
+     */
+    public int getTimeout() {
+        return this.timeout;
+    }
+    
+    /* (non-Javadoc)
+     * @see 
org.objectweb.gotm.lib.topic.PublishFeature#notify(java.lang.String, 
java.util.Map)
+     */
+    public void notify(Event topic, Map context) {
+        if (topic == TransactionStatusTransactionActive.status) {
+            if (getTimeout() != 0) {
+                //getTrace().debug("Starting timeout for "+getTimeout()+".");
+                this.daemon.start();
+            }
+        } else if (getTimeout() != 0) {
+                //getTrace().debug("Stopping timeout.");
+                this.daemon.stop();
+        }
+    }
+}
Index: gotm/src/java/org/objectweb/gotm/lib/coordination/TwoPCFeature.java
diff -u 
gotm/src/java/org/objectweb/gotm/lib/coordination/TwoPCFeature.java:1.2 
gotm/src/java/org/objectweb/gotm/lib/coordination/TwoPCFeature.java:1.3
--- gotm/src/java/org/objectweb/gotm/lib/coordination/TwoPCFeature.java:1.2   
  Fri Jul  1 18:27:48 2005
+++ gotm/src/java/org/objectweb/gotm/lib/coordination/TwoPCFeature.java Mon 
Jul 11 10:27:04 2005
@@ -23,19 +23,20 @@
  Contributor(s): .
  
  ---------------------------------------------------------------------
- $Id: TwoPCFeature.java,v 1.2 2005/07/01 16:27:48 rouvoy Exp $
+ $Id: TwoPCFeature.java,v 1.3 2005/07/11 08:27:04 rouvoy Exp $
  ====================================================================*/
 
 package org.objectweb.gotm.lib.coordination;
 
-import java.util.HashMap;
+import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 
-import org.objectweb.gotm.lib.transaction.StatusNotAllowedException;
+import org.objectweb.gotm.lib.transaction.InvalidTransitionException;
 import org.objectweb.transaction.api.coordination.CoordinationFeature;
 import org.objectweb.transaction.api.event.PublishFeature;
+import org.objectweb.transaction.api.logging.LoggerFeature;
 import org.objectweb.transaction.api.transaction.TransactionState;
 import org.objectweb.transaction.lib.resource.ResourceEventVote;
 import org.objectweb.transaction.lib.resource.ResourceVoteCommit;
@@ -49,8 +50,8 @@
  * Implementation of a Two-Phase Commit Protocol.
  * @author <a href="mailto:Romain.Rouvoy@xxxxxxx";>Romain Rouvoy</a>
  * @created 5 janv. 2005
- * @modified $Date: 2005/07/01 16:27:48 $
- * @version $Revision: 1.2 $
+ * @modified $Date: 2005/07/11 08:27:04 $
+ * @version $Revision: 1.3 $
  * @fractal.itf name="commit" role="client" 
signature="org.objectweb.transaction.api.coordination.CoordinationFeature"
  */
 public class TwoPCFeature
@@ -66,6 +67,7 @@
         return new String[] {
                 PublishFeature.PUBLISH_FEATURE,
                 TransactionState.TRANSACTION_STATE,
+                LoggerFeature.LOGGER,
                 COMMIT,
                 ABORT
         };
@@ -79,30 +81,32 @@
     }
 
     /* (non-Javadoc)
-     * @see 
org.objectweb.transaction.api.coordination.CoordinationFeature#process()
+     * @see 
org.objectweb.transaction.api.coordination.CoordinationFeature#process(java.util.Map)
      */
-    public void process() {
+    public void process(Map context) {
         if (getLogger().isLoggable(DEBUG))
             getLogger().log(DEBUG,"Processing Atomic 2 Phases Validation");
         try {
             getTxState().setStatus(TransactionStatusPreparing.status);
-            Map votes = new HashMap();
-            votes.put(ResourceVoteRollback.vote, new LinkedList());
-            votes.put(ResourceVoteCommit.vote, new LinkedList());
-            votes.put(ResourceVoteReadOnly.vote, new LinkedList());
-            getPublisher().notify(ResourceEventVote.event.hashCode(), votes);
+            context.put(ResourceVoteRollback.vote, 
Collections.synchronizedList(new LinkedList()));
+            context.put(ResourceVoteCommit.vote, 
Collections.synchronizedList(new LinkedList()));
+            context.put(ResourceVoteReadOnly.vote, 
Collections.synchronizedList(new LinkedList()));
+
+            
getLog().log(TransactionStatusPreparing.status.getLabel().getBytes());
+            getPublisher().notify(ResourceEventVote.event, context);
             getTxState().setStatus(TransactionStatusPrepared.status);
+            
getLog().log(TransactionStatusPrepared.status.getLabel().getBytes());
             
-            List enf_rollback = (List) votes.get(ResourceVoteRollback.vote);
-            //List enf_commit = (List) votes.get(ResourceVoteCommit.vote);
+            List enf_rollback = (List) 
context.get(ResourceVoteRollback.vote);
+            //List enf_commit = (List) context.get(ResourceVoteCommit.vote);
             if (enf_rollback.size() == 0) {
                 // if (enf_commit.length != 0)
-                commit().process();
+                commit().process(context);
             } else {
-                abort().process();
+                abort().process(context);
             }
-        } catch (StatusNotAllowedException e) {
-            abort().process();
+        } catch (InvalidTransitionException e) {
+            abort().process(context);
         }
     }
 }
Index: gotm/src/java/org/objectweb/gotm/lib/event/EventEngineSimple.java
diff -u gotm/src/java/org/objectweb/gotm/lib/event/EventEngineSimple.java:1.6 
gotm/src/java/org/objectweb/gotm/lib/event/EventEngineSimple.java:removed
--- gotm/src/java/org/objectweb/gotm/lib/event/EventEngineSimple.java:1.6     
  Wed Jun 29 09:41:15 2005
+++ gotm/src/java/org/objectweb/gotm/lib/event/EventEngineSimple.java   Mon 
Jul 11 10:27:05 2005
@@ -1,132 +0,0 @@
-/*====================================================================
-
-GoTM: GoTM is an open Transaction Monitor
-Copyright (C) 2003-2005 INRIA - Jacquard & USTL - LIFL - GOAL
-Contact: gotm-team@xxxxxxxxxxxxx
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Lesser General Public
-License as published by the Free Software Foundation; either
-version 2.1 of the License, or any later version.
-
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
-USA
-
-Initial developer(s): Romain Rouvoy.
-Contributor(s): .
-
----------------------------------------------------------------------
-$Id: EventEngineSimple.java,v 1.6 2005/06/29 07:41:15 rouvoy Exp $
-====================================================================*/
-package org.objectweb.gotm.lib.event;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.objectweb.fractal.api.control.CacheController;
-import org.objectweb.fractal.lib.LoggablePrimitive;
-import org.objectweb.transaction.api.event.PublishFeature;
-import org.objectweb.transaction.api.event.SubscribeFeature;
-
-/**
- * @author <a href="mailto:Romain.Rouvoy@xxxxxxx";>Romain Rouvoy</a>
- * @created 12 janv. 2005
- * @modified $Date: 2005/06/29 07:41:15 $
- * @version $Revision: 1.6 $
- * @fractal.itf
- */
-public class EventEngineSimple
-     extends LoggablePrimitive
-  implements SubscribeFeature, PublishFeature, CacheController
-{
-        /**
-         * Map containing all the available <code>topics</code>.
-         */
-        private Map topics = new HashMap();
-
-        /**
-         * @param topic the identifier of the requested topic
-         * @return the requested topic.
-         */
-        protected Collection getTopic(int topic) {
-            Collection set = (Collection) this.topics.get(new 
Integer(topic)) ;
-            if (set != null) return set;
-            set = new ArrayList();
-            this.topics.put(new Integer(topic),set);
-            return set;
-        }
-        
-        /* (non-Javadoc)
-         * @see 
org.objectweb.fractal.api.control.CacheController#getCacheState()
-         */
-        public String getCacheState() { return null; }
-        
-        /* (non-Javadoc)
-         * @see org.objectweb.fractal.api.control.CacheController#initFc()
-         */
-        public void initFc() {
-            // Ignored
-        }
-
-        /* (non-Javadoc)
-         * @see org.objectweb.fractal.api.control.CacheController#clearFc()
-         */
-        public void clearFc() {
-            this.topics.clear() ;
-        }
-        
-        /* (non-Javadoc)
-         * @see 
org.objectweb.gotm.lib.topic.SubscribeFeature#suscribe(java.lang.String, 
org.objectweb.gotm.lib.topic.PublishFeature)
-         */
-        public void subscribe(int topic, PublishFeature suscriber) {
-            getTopic(topic).add(suscriber);
-        }
-        
-        /* (non-Javadoc)
-         * @see 
org.objectweb.gotm.lib.topic.SubscribeFeature#unsuscribe(java.lang.String, 
org.objectweb.gotm.lib.topic.PublishFeature)
-         */
-        public void unsubscribe(int topic, PublishFeature suscriber) {
-            getTopic(topic).remove(suscriber);
-        }
-        
-        /* (non-Javadoc)
-         * @see 
org.objectweb.gotm.lib.topic.PublishFeature#notify(java.lang.String, 
java.util.Map)
-         */
-        public void notify(int topic, Map context) {
-            if (getLogger().isLoggable(DEBUG))
-                getLogger().log(DEBUG,"Notifying of topic "+topic);
-//            Object[] listeners = getTopic(topic).toArray(); // Iterators 
are less performing than arrays
-//            for(int i=0 ; i <listeners.length;i++)
-//                ((PublishFeature)listeners[i]).notify(topic, context);
-          for(Iterator i=getTopic(topic).iterator() ; i.hasNext();)
-              ((PublishFeature)i.next()).notify(topic, context);
-        }
-
-        /* (non-Javadoc)
-         * @see 
org.objectweb.transaction.api.event.SubscribeFeature#subscribe(java.lang.String[],
 org.objectweb.transaction.api.event.PublishFeature)
-         */
-        public void subscribe(int[] topic, PublishFeature suscriber) {
-            for(int i=0;i<topic.length;i++) {
-                subscribe(topic[i],suscriber);
-            }
-        }
-
-        /* (non-Javadoc)
-         * @see 
org.objectweb.transaction.api.event.SubscribeFeature#unsubscribe(java.lang.String[],
 org.objectweb.transaction.api.event.PublishFeature)
-         */
-        public void unsubscribe(int[] topic, PublishFeature suscriber) {
-            for(int i=0;i<topic.length;i++) {
-                unsubscribe(topic[i],suscriber);
-            }
-        }
-    }
Index: gotm/src/java/org/objectweb/gotm/lib/event/EventEngineThreadPool.java
diff -u 
gotm/src/java/org/objectweb/gotm/lib/event/EventEngineThreadPool.java:1.4 
gotm/src/java/org/objectweb/gotm/lib/event/EventEngineThreadPool.java:removed
--- gotm/src/java/org/objectweb/gotm/lib/event/EventEngineThreadPool.java:1.4 
  Wed Jun 29 09:41:15 2005
+++ gotm/src/java/org/objectweb/gotm/lib/event/EventEngineThreadPool.java     
  Mon Jul 11 10:27:05 2005
@@ -1,153 +0,0 @@
-/*====================================================================
- 
- GoTM: GoTM is an open Transaction Monitor
- Copyright (C) 2003-2005 INRIA - Jacquard & USTL - LIFL - GOAL
- Contact: gotm-team@xxxxxxxxxxxxx
- 
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or any later version.
- 
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- Lesser General Public License for more details.
- 
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
- USA
- 
- Initial developer(s): Romain Rouvoy.
- Contributor(s): .
- 
- ---------------------------------------------------------------------
- $Id: EventEngineThreadPool.java,v 1.4 2005/06/29 07:41:15 rouvoy Exp $
- ====================================================================*/
-
-package org.objectweb.gotm.lib.event;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.objectweb.fractal.lib.BindablePrimitive;
-import org.objectweb.transaction.api.event.PublishFeature;
-import org.objectweb.transaction.api.event.SubscribeFeature;
-import org.objectweb.util.thread.api.RunnableManager;
-
-/**
- * @author <a href="mailto:Romain.Rouvoy@xxxxxxx";>Romain Rouvoy</a>
- * @created 5 janv. 2005
- * @modified $Date: 2005/06/29 07:41:15 $
- * @version $Revision: 1.4 $
- * @fractal.itf name="runnable-manager" role="client" 
signature="org.objectweb.util.thread.api.RunnableManager"
- */
-public class EventEngineThreadPool 
-extends BindablePrimitive
-implements SubscribeFeature, PublishFeature
-{
-    /**
-     * Map containing all the available <code>topics</code>.
-     */
-    private final Map topics = new HashMap();
-    
-    /* (non-Javadoc)
-     * @see org.objectweb.fractal.lib.BindablePrimitive#clientFc()
-     */
-    protected String[] clientFc() {
-        return new String[] {RunnableManager.RUNNABLE_MANAGER};
-    }
-
-    /**
-     * @return the runnable manager bound to the current component
-     */
-    protected final RunnableManager getRunnableManager() {
-        return (RunnableManager) 
fcBindings.get(RunnableManager.RUNNABLE_MANAGER);
-    }
-    
-    
-    /**
-     * @param topic the identifier of the requested topic
-     * @return the requested topic.
-     */
-    protected Collection getTopic(int topic) {
-        Collection set = (Collection) this.topics.get(new Integer(topic)) ;
-        if (set != null) return set;
-        set = new ArrayList();
-        this.topics.put(new Integer(topic),set);
-        return set;
-    }
-    
-    /* (non-Javadoc)
-     * @see 
org.objectweb.gotm.lib.topic.SubscribeFeature#suscribe(java.lang.String, 
org.objectweb.gotm.lib.topic.PublishFeature)
-     */
-    public void subscribe(int topic, PublishFeature suscriber) {
-        if (getLogger().isLoggable(DEBUG))
-            getLogger().log(DEBUG,"Subscription of "+suscriber+" to the 
"+topic+" topic.");
-        getTopic(topic).add(suscriber);
-    }
-    
-    /* (non-Javadoc)
-     * @see 
org.objectweb.gotm.lib.topic.SubscribeFeature#unsuscribe(java.lang.String, 
org.objectweb.gotm.lib.topic.PublishFeature)
-     */
-    public void unsubscribe(int topic, PublishFeature suscriber) {
-        if (getLogger().isLoggable(DEBUG))
-            getLogger().log(DEBUG,"Unsubscription of "+suscriber+" from the 
"+topic+" topic.");
-        getTopic(topic).remove(suscriber);
-    }
-    
-    /* (non-Javadoc)
-     * @see 
org.objectweb.gotm.lib.topic.PublishFeature#notify(java.lang.String, 
java.util.Map)
-     */
-    public void notify(int topic, Map context) {
-        if (getLogger().isLoggable(DEBUG))
-            getLogger().log(DEBUG,"Notification of the "+topic+" topic.");
-//        Object[] listeners = getTopic(topic).toArray(); // Iterators are 
less performing than arrays
-//        for(int i=0 ; i <listeners.length;i++)
-        for (Iterator i = getTopic(topic).iterator(); i.hasNext();)
-            getRunnableManager().submitRunnable(new 
NotifyAction((PublishFeature)i.next(),topic,context));
-    }
-
-    /* (non-Javadoc)
-     * @see 
org.objectweb.transaction.api.event.SubscribeFeature#subscribe(java.lang.String[],
 org.objectweb.transaction.api.event.PublishFeature)
-     */
-    public void subscribe(int[] topic, PublishFeature suscriber) {
-        for(int i=0;i<topic.length;i++)
-            subscribe(topic[i],suscriber);
-    }
-
-    /* (non-Javadoc)
-     * @see 
org.objectweb.transaction.api.event.SubscribeFeature#unsubscribe(java.lang.String[],
 org.objectweb.transaction.api.event.PublishFeature)
-     */
-    public void unsubscribe(int[] topic, PublishFeature suscriber) {
-        for(int i=0;i<topic.length;i++)
-            unsubscribe(topic[i],suscriber);
-    }
-    
-    private final class NotifyAction implements Runnable {
-        private int topic ;
-        private Map context ;
-        private PublishFeature suscriber ;
-        /**
-         * @param suscriber
-         * @param topic
-         * @param context
-         */
-        public NotifyAction(PublishFeature suscriber, int topic, Map 
context) {
-            this.topic = topic ;
-            this.context = context ;
-            this.suscriber = suscriber;
-        }
-
-        /* (non-Javadoc)
-         * @see java.lang.Runnable#run()
-         */
-        public void run() {
-            this.suscriber.notify(this.topic,this.context);
-        }
-    }
-}
Index: gotm/src/java/org/objectweb/gotm/lib/event/PublishASyncThread.java
diff -u /dev/null 
gotm/src/java/org/objectweb/gotm/lib/event/PublishASyncThread.java:1.1
--- /dev/null   Mon Jul 11 10:27:05 2005
+++ gotm/src/java/org/objectweb/gotm/lib/event/PublishASyncThread.java  Mon 
Jul 11 10:27:04 2005
@@ -0,0 +1,102 @@
+/*====================================================================
+
+GoTM: GoTM is an open Transaction Monitor
+Copyright (C) 2003-2005 INRIA - Jacquard & USTL - LIFL - GOAL
+Contact: gotm-team@xxxxxxxxxxxxx
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
+USA
+
+Initial developer(s): Romain Rouvoy.
+Contributor(s): .
+
+---------------------------------------------------------------------
+$Id: PublishASyncThread.java,v 1.1 2005/07/11 08:27:04 rouvoy Exp $
+====================================================================*/
+package org.objectweb.gotm.lib.event;
+
+import java.util.Iterator;
+import java.util.Map;
+
+import org.objectweb.fractal.lib.BindablePrimitive;
+import org.objectweb.transaction.api.event.Event;
+import org.objectweb.transaction.api.event.PublishFeature;
+
+/**
+ * @author <a href="mailto:Romain.Rouvoy@xxxxxxx";>Romain Rouvoy</a>
+ * @created 11 juil. 2005
+ * @modified $Date: 2005/07/11 08:27:04 $
+ * @version $Revision: 1.1 $
+ * @fractal.itf name="subscriber-provider" role="client" 
signature="org.objectweb.gotm.lib.event.SubscriberProvider"
+ */
+public class PublishASyncThread
+        extends BindablePrimitive
+        implements PublishFeature {
+    /* (non-Javadoc)
+     * @see org.objectweb.fractal.lib.BindablePrimitive#clientFc()
+     */
+    protected String[] clientFc() {
+        return new String[] {SubscriberProvider.SUBSCRIBER_PROVIDER};
+    }
+    
+    /**
+     * @return the subscriber provider.
+     */
+    protected SubscriberProvider getProvider() {
+        return (SubscriberProvider) 
fcBindings.get(SubscriberProvider.SUBSCRIBER_PROVIDER);
+    }
+
+
+    /* (non-Javadoc)
+     * @see 
org.objectweb.transaction.api.event.PublishFeature#notify(org.objectweb.transaction.api.event.Event,
 java.util.Map)
+     */
+    public void notify(Event topic, Map context) {
+        if (getLogger().isLoggable(DEBUG))
+            getLogger().log(DEBUG,"Notification of the "+topic+" topic.");
+        for (Iterator i = getProvider().getTopic(topic).iterator(); 
i.hasNext();) {
+            new NotifyAction((PublishFeature)i.next(),topic,context).start();
+        }
+    }
+    
+    /**
+     * @author <a href="mailto:Romain.Rouvoy@xxxxxxx";>Romain Rouvoy</a>
+     * @created 11 juil. 2005
+     * @modified $Date: 2005/07/11 08:27:04 $
+     * @version $Revision: 1.1 $
+     * @fractal.itf 
+     */
+    protected final class NotifyAction extends Thread {
+        private Event topic ;
+        private Map context ;
+        private PublishFeature suscriber ;
+        /**
+         * @param suscriber
+         * @param topic
+         * @param context
+         */
+        public NotifyAction(PublishFeature suscriber, Event topic, Map 
context) {
+            this.topic = topic ;
+            this.context = context ;
+            this.suscriber = suscriber;
+        }
+
+        /* (non-Javadoc)
+         * @see java.lang.Runnable#run()
+         */
+        public void run() {
+            this.suscriber.notify(this.topic,this.context);
+        }
+    }
+}
Index: gotm/src/java/org/objectweb/gotm/lib/event/PublishSimple.java
diff -u /dev/null 
gotm/src/java/org/objectweb/gotm/lib/event/PublishSimple.java:1.1
--- /dev/null   Mon Jul 11 10:27:05 2005
+++ gotm/src/java/org/objectweb/gotm/lib/event/PublishSimple.java       Mon 
Jul 11 10:27:04 2005
@@ -0,0 +1,74 @@
+/*====================================================================
+
+ GoTM: GoTM is an open Transaction Monitor
+ Copyright (C) 2003-2005 INRIA - Jacquard & USTL - LIFL - GOAL
+ Contact: gotm-team@xxxxxxxxxxxxx
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
+ USA
+
+ Initial developer(s): Romain Rouvoy.
+ Contributor(s): .
+
+ ---------------------------------------------------------------------
+ $Id: PublishSimple.java,v 1.1 2005/07/11 08:27:04 rouvoy Exp $
+ ====================================================================*/
+package org.objectweb.gotm.lib.event;
+
+import java.util.Iterator;
+import java.util.Map;
+
+import org.objectweb.fractal.lib.BindablePrimitive;
+import org.objectweb.transaction.api.event.Event;
+import org.objectweb.transaction.api.event.PublishFeature;
+
+/**
+ * @author <a href="mailto:Romain.Rouvoy@xxxxxxx";>Romain Rouvoy</a>
+ * @created 12 janv. 2005
+ * @modified $Date: 2005/07/11 08:27:04 $
+ * @version $Revision: 1.1 $
+ * @fractal.itf name="subscriber-provider" role="client" 
signature="org.objectweb.gotm.lib.event.SubscriberProvider"
+ */
+public class PublishSimple
+        extends BindablePrimitive
+        implements PublishFeature {
+    
+    /* (non-Javadoc)
+     * @see org.objectweb.fractal.lib.BindablePrimitive#clientFc()
+     */
+    protected String[] clientFc() {
+        return new String[] {SubscriberProvider.SUBSCRIBER_PROVIDER};
+    }
+    
+    /**
+     * @return the subscriber provider.
+     */
+    protected SubscriberProvider getProvider() {
+        return (SubscriberProvider) 
fcBindings.get(SubscriberProvider.SUBSCRIBER_PROVIDER);
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see 
org.objectweb.gotm.lib.topic.PublishFeature#notify(java.lang.String,
+     *      java.util.Map)
+     */
+    public void notify(Event topic, Map context) {
+        if (getLogger().isLoggable(DEBUG))
+            getLogger().log(DEBUG, "Notifying of topic " + topic);
+        for (Iterator i = getProvider().getTopic(topic).iterator(); 
i.hasNext();)
+            ((PublishFeature) i.next()).notify(topic, context);
+    }
+}
\ No newline at end of file
Index: gotm/src/java/org/objectweb/gotm/lib/event/PublishState.java
diff -u gotm/src/java/org/objectweb/gotm/lib/event/PublishState.java:1.2 
gotm/src/java/org/objectweb/gotm/lib/event/PublishState.java:1.3
--- gotm/src/java/org/objectweb/gotm/lib/event/PublishState.java:1.2    Mon 
May 23 13:20:55 2005
+++ gotm/src/java/org/objectweb/gotm/lib/event/PublishState.java        Mon 
Jul 11 10:27:04 2005
@@ -23,7 +23,7 @@
 Contributor(s): .
 
 ---------------------------------------------------------------------
-$Id: PublishState.java,v 1.2 2005/05/23 11:20:55 rouvoy Exp $
+$Id: PublishState.java,v 1.3 2005/07/11 08:27:04 rouvoy Exp $
 ====================================================================*/
 
 package org.objectweb.gotm.lib.event;
@@ -34,8 +34,8 @@
 /**
  * @author <a href="mailto:Romain.Rouvoy@xxxxxxx";>Romain Rouvoy</a>
  * @created 5 janv. 2005
- * @modified $Date: 2005/05/23 11:20:55 $
- * @version $Revision: 1.2 $
+ * @modified $Date: 2005/07/11 08:27:04 $
+ * @version $Revision: 1.3 $
  * @fractal.itf name="publish" role="client" 
signature="org.objectweb.transaction.api.event.PublishFeature"
  */
 public abstract class PublishState 
@@ -56,5 +56,4 @@
     protected final PublishFeature getPublisher() {
         return (PublishFeature) 
fcBindings.get(PublishFeature.PUBLISH_FEATURE);
     }
-
-}
+}
\ No newline at end of file
Index: gotm/src/java/org/objectweb/gotm/lib/event/PublishSyncThread.java
diff -u /dev/null 
gotm/src/java/org/objectweb/gotm/lib/event/PublishSyncThread.java:1.1
--- /dev/null   Mon Jul 11 10:27:05 2005
+++ gotm/src/java/org/objectweb/gotm/lib/event/PublishSyncThread.java   Mon 
Jul 11 10:27:04 2005
@@ -0,0 +1,74 @@
+/*====================================================================
+
+ GoTM: GoTM is an open Transaction Monitor
+ Copyright (C) 2003-2005 INRIA - Jacquard & USTL - LIFL - GOAL
+ Contact: gotm-team@xxxxxxxxxxxxx
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
+ USA
+
+ Initial developer(s): Romain Rouvoy.
+ Contributor(s): .
+
+ ---------------------------------------------------------------------
+ $Id: PublishSyncThread.java,v 1.1 2005/07/11 08:27:04 rouvoy Exp $
+ ====================================================================*/
+package org.objectweb.gotm.lib.event;
+
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Vector;
+
+import org.objectweb.gotm.GoTMException;
+import org.objectweb.transaction.api.event.Event;
+import org.objectweb.transaction.api.event.PublishFeature;
+
+/**
+ * @author <a href="mailto:Romain.Rouvoy@xxxxxxx";>Romain Rouvoy</a>
+ * @created 11 juil. 2005
+ * @modified $Date: 2005/07/11 08:27:04 $
+ * @version $Revision: 1.1 $
+ * @fractal.itf
+ */
+public class PublishSyncThread
+        extends PublishASyncThread {
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see 
org.objectweb.transaction.api.event.PublishFeature#notify(org.objectweb.transaction.api.event.Event,
+     *      java.util.Map)
+     */
+    public void notify(Event topic, Map context) {
+        if (getLogger().isLoggable(DEBUG))
+            getLogger().log(DEBUG, "Notification of the " + topic + " 
topic.");
+        Vector actions = new Vector();
+        for (Iterator i = getProvider().getTopic(topic).iterator(); 
i.hasNext();) {
+            Thread action = new NotifyAction((PublishFeature) i.next(), 
topic,
+                    context);
+            actions.add(action);
+            action.start();
+        }
+        for (Iterator i = actions.iterator(); i.hasNext();) {
+            try {
+                ((Thread) i.next()).join();
+            } catch (InterruptedException e) {
+                if (getLogger().isLoggable(ERROR))
+                    getLogger().log(ERROR, e);
+                throw new GoTMException(e);
+            }
+        }
+    }
+}
\ No newline at end of file
Index: gotm/src/java/org/objectweb/gotm/lib/event/PublishThreadPool.java
diff -u /dev/null 
gotm/src/java/org/objectweb/gotm/lib/event/PublishThreadPool.java:1.1
--- /dev/null   Mon Jul 11 10:27:05 2005
+++ gotm/src/java/org/objectweb/gotm/lib/event/PublishThreadPool.java   Mon 
Jul 11 10:27:04 2005
@@ -0,0 +1,106 @@
+/*====================================================================
+ 
+ GoTM: GoTM is an open Transaction Monitor
+ Copyright (C) 2003-2005 INRIA - Jacquard & USTL - LIFL - GOAL
+ Contact: gotm-team@xxxxxxxxxxxxx
+ 
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or any later version.
+ 
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ Lesser General Public License for more details.
+ 
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
+ USA
+ 
+ Initial developer(s): Romain Rouvoy.
+ Contributor(s): .
+ 
+ ---------------------------------------------------------------------
+ $Id: PublishThreadPool.java,v 1.1 2005/07/11 08:27:04 rouvoy Exp $
+ ====================================================================*/
+
+package org.objectweb.gotm.lib.event;
+
+import java.util.Iterator;
+import java.util.Map;
+
+import org.objectweb.fractal.lib.BindablePrimitive;
+import org.objectweb.transaction.api.event.Event;
+import org.objectweb.transaction.api.event.PublishFeature;
+import org.objectweb.util.thread.api.RunnableManager;
+
+/**
+ * @author <a href="mailto:Romain.Rouvoy@xxxxxxx";>Romain Rouvoy</a>
+ * @created 5 janv. 2005
+ * @modified $Date: 2005/07/11 08:27:04 $
+ * @version $Revision: 1.1 $
+ * @fractal.itf name="runnable-manager" role="client" 
signature="org.objectweb.util.thread.api.RunnableManager"
+ * @fractal.itf name="subscriber-provider" role="client" 
signature="org.objectweb.gotm.lib.event.SubscriberProvider"
+ */
+public class PublishThreadPool 
+extends BindablePrimitive
+implements PublishFeature
+{
+    /* (non-Javadoc)
+     * @see org.objectweb.fractal.lib.BindablePrimitive#clientFc()
+     */
+    protected String[] clientFc() {
+        return new String[] {SubscriberProvider.SUBSCRIBER_PROVIDER, 
RunnableManager.RUNNABLE_MANAGER};
+    }
+
+    /**
+     * @return the runnable manager bound to the current component
+     */
+    protected final RunnableManager getRunnableManager() {
+        return (RunnableManager) 
fcBindings.get(RunnableManager.RUNNABLE_MANAGER);
+    }
+    
+    /**
+     * @return the subscriber provider.
+     */
+    protected SubscriberProvider getProvider() {
+        return (SubscriberProvider) 
fcBindings.get(SubscriberProvider.SUBSCRIBER_PROVIDER);
+    }
+
+    /* (non-Javadoc)
+     * @see 
org.objectweb.gotm.lib.topic.PublishFeature#notify(java.lang.String, 
java.util.Map)
+     */
+    public void notify(Event topic, Map context) {
+        if (getLogger().isLoggable(DEBUG))
+            getLogger().log(DEBUG,"Notification of the "+topic+" topic.");
+//        Object[] listeners = getTopic(topic).toArray(); // Iterators are 
less performing than arrays
+//        for(int i=0 ; i <listeners.length;i++)
+        for (Iterator i = getProvider().getTopic(topic).iterator(); 
i.hasNext();)
+            getRunnableManager().submitRunnable(new 
NotifyAction((PublishFeature)i.next(),topic,context));
+    }
+    
+    private final class NotifyAction implements Runnable {
+        private Event topic ;
+        private Map context ;
+        private PublishFeature suscriber ;
+        /**
+         * @param suscriber
+         * @param topic
+         * @param context
+         */
+        public NotifyAction(PublishFeature suscriber, Event topic, Map 
context) {
+            this.topic = topic ;
+            this.context = context ;
+            this.suscriber = suscriber;
+        }
+
+        /* (non-Javadoc)
+         * @see java.lang.Runnable#run()
+         */
+        public void run() {
+            this.suscriber.notify(this.topic,this.context);
+        }
+    }
+}
Index: gotm/src/java/org/objectweb/gotm/lib/event/SubscribablePrimitive.java
diff -u 
gotm/src/java/org/objectweb/gotm/lib/event/SubscribablePrimitive.java:1.2 
gotm/src/java/org/objectweb/gotm/lib/event/SubscribablePrimitive.java:1.3
--- gotm/src/java/org/objectweb/gotm/lib/event/SubscribablePrimitive.java:1.2 
  Mon May 23 13:20:55 2005
+++ gotm/src/java/org/objectweb/gotm/lib/event/SubscribablePrimitive.java     
  Mon Jul 11 10:27:04 2005
@@ -23,21 +23,22 @@
 Contributor(s): .
 
 ---------------------------------------------------------------------
-$Id: SubscribablePrimitive.java,v 1.2 2005/05/23 11:20:55 rouvoy Exp $
+$Id: SubscribablePrimitive.java,v 1.3 2005/07/11 08:27:04 rouvoy Exp $
 ====================================================================*/
 package org.objectweb.gotm.lib.event;
 
 
 import org.objectweb.fractal.api.control.CacheController;
 import org.objectweb.fractal.lib.BindablePrimitive;
+import org.objectweb.transaction.api.event.Event;
 import org.objectweb.transaction.api.event.PublishFeature;
 import org.objectweb.transaction.api.event.SubscribeFeature;
 
 /**
  * @author <a href="mailto:Romain.Rouvoy@xxxxxxx";>Romain Rouvoy</a>
  * @created 12 janv. 2005
- * @modified $Date: 2005/05/23 11:20:55 $
- * @version $Revision: 1.2 $
+ * @modified $Date: 2005/07/11 08:27:04 $
+ * @version $Revision: 1.3 $
  * @fractal.itf name="subscribe" role="client" 
signature="org.objectweb.transaction.api.event.SubscribeFeature"
  */
 public abstract class SubscribablePrimitive
@@ -48,7 +49,7 @@
      * Provides the set of events handled by the component.
      * @return the events handled by the current component.
      */
-    protected abstract int[] getEvents() ;
+    protected abstract Event[] getEvents() ;
     
     /* (non-Javadoc)
      * @see org.objectweb.fractal.lib.BindablePrimitive#clientFc()
@@ -81,4 +82,4 @@
      * @see org.objectweb.fractal.api.control.CacheController#getLoadState()
      */
     public String getCacheState() { return null; }
-}
+}
\ No newline at end of file
Index: gotm/src/java/org/objectweb/gotm/lib/event/SubscriberPool.java
diff -u /dev/null 
gotm/src/java/org/objectweb/gotm/lib/event/SubscriberPool.java:1.1
--- /dev/null   Mon Jul 11 10:27:05 2005
+++ gotm/src/java/org/objectweb/gotm/lib/event/SubscriberPool.java      Mon 
Jul 11 10:27:04 2005
@@ -0,0 +1,117 @@
+/*====================================================================
+
+GoTM: GoTM is an open Transaction Monitor
+Copyright (C) 2003-2005 INRIA - Jacquard & USTL - LIFL - GOAL
+Contact: gotm-team@xxxxxxxxxxxxx
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
+USA
+
+Initial developer(s): Romain Rouvoy.
+Contributor(s): .
+
+---------------------------------------------------------------------
+$Id: SubscriberPool.java,v 1.1 2005/07/11 08:27:04 rouvoy Exp $
+====================================================================*/
+package org.objectweb.gotm.lib.event;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.objectweb.fractal.api.control.CacheController;
+import org.objectweb.fractal.lib.LoggablePrimitive;
+import org.objectweb.transaction.api.event.Event;
+import org.objectweb.transaction.api.event.PublishFeature;
+import org.objectweb.transaction.api.event.SubscribeFeature;
+
+/**
+ * @author <a href="mailto:Romain.Rouvoy@xxxxxxx";>Romain Rouvoy</a>
+ * @created 11 juil. 2005
+ * @modified $Date: 2005/07/11 08:27:04 $
+ * @version $Revision: 1.1 $
+ * @fractal.itf 
+ */
+public class SubscriberPool
+        extends LoggablePrimitive
+        implements SubscriberProvider, SubscribeFeature, CacheController {
+    /**
+     * Map containing all the available <code>topics</code>.
+     */
+    private Map topics = new HashMap();
+
+    /* (non-Javadoc)
+     * @see org.objectweb.fractal.api.control.CacheController#getCacheState()
+     */
+    public String getCacheState() { return null; }
+    
+    /* (non-Javadoc)
+     * @see org.objectweb.fractal.api.control.CacheController#initFc()
+     */
+    public void initFc() {
+        // Ignored
+    }
+
+    /* (non-Javadoc)
+     * @see org.objectweb.fractal.api.control.CacheController#clearFc()
+     */
+    public void clearFc() {
+        this.topics.clear() ;
+    }
+
+    /* (non-Javadoc)
+     * @see 
org.objectweb.gotm.lib.event.SubscriberProvider#getTopic(org.objectweb.transaction.api.event.Event)
+     */
+    public Collection getTopic(Event topic) {
+        Collection set = (Collection) this.topics.get(topic) ;
+        if (set != null) return set;
+        set = new ArrayList();
+        this.topics.put(topic,set);
+        return set;
+    }
+
+    /* (non-Javadoc)
+     * @see 
org.objectweb.transaction.api.event.SubscribeFeature#subscribe(org.objectweb.transaction.api.event.Event,
 org.objectweb.transaction.api.event.PublishFeature)
+     */
+    public void subscribe(Event topic, PublishFeature suscriber) {
+        getTopic(topic).add(suscriber);
+    }
+
+    /* (non-Javadoc)
+     * @see 
org.objectweb.transaction.api.event.SubscribeFeature#unsubscribe(org.objectweb.transaction.api.event.Event,
 org.objectweb.transaction.api.event.PublishFeature)
+     */
+    public void unsubscribe(Event topic, PublishFeature suscriber) {
+        getTopic(topic).remove(suscriber);
+    }
+
+    /* (non-Javadoc)
+     * @see 
org.objectweb.transaction.api.event.SubscribeFeature#subscribe(org.objectweb.transaction.api.event.Event[],
 org.objectweb.transaction.api.event.PublishFeature)
+     */
+    public void subscribe(Event[] topic, PublishFeature suscriber) {
+        for(int i=0;i<topic.length;i++) {
+            subscribe(topic[i],suscriber);
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see 
org.objectweb.transaction.api.event.SubscribeFeature#unsubscribe(org.objectweb.transaction.api.event.Event[],
 org.objectweb.transaction.api.event.PublishFeature)
+     */
+    public void unsubscribe(Event[] topic, PublishFeature suscriber) {
+        for(int i=0;i<topic.length;i++) {
+            unsubscribe(topic[i],suscriber);
+        }
+    }
+}
\ No newline at end of file
Index: gotm/src/java/org/objectweb/gotm/lib/event/SubscriberProvider.java
diff -u /dev/null 
gotm/src/java/org/objectweb/gotm/lib/event/SubscriberProvider.java:1.1
--- /dev/null   Mon Jul 11 10:27:05 2005
+++ gotm/src/java/org/objectweb/gotm/lib/event/SubscriberProvider.java  Mon 
Jul 11 10:27:04 2005
@@ -0,0 +1,52 @@
+/*====================================================================
+
+GoTM: GoTM is an open Transaction Monitor
+Copyright (C) 2003-2005 INRIA - Jacquard & USTL - LIFL - GOAL
+Contact: gotm-team@xxxxxxxxxxxxx
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
+USA
+
+Initial developer(s): Romain Rouvoy.
+Contributor(s): .
+
+---------------------------------------------------------------------
+$Id: SubscriberProvider.java,v 1.1 2005/07/11 08:27:04 rouvoy Exp $
+====================================================================*/
+package org.objectweb.gotm.lib.event;
+
+import java.util.Collection;
+
+import org.objectweb.transaction.api.Feature;
+import org.objectweb.transaction.api.event.Event;
+
+/**
+ * @author <a href="mailto:Romain.Rouvoy@xxxxxxx";>Romain Rouvoy</a>
+ * @created 11 juil. 2005
+ * @modified $Date: 2005/07/11 08:27:04 $
+ * @version $Revision: 1.1 $
+ * @fractal.itf name="subscriber-provider"
+ */
+public interface SubscriberProvider
+        extends Feature {
+    /** Fractal ADL Identifier for the <code>SubscriberProvider</code> 
interface. */
+    public static final String SUBSCRIBER_PROVIDER = "subscriber-provider";
+    
+    /**
+     * @param topic the identifier of the requested topic
+     * @return the requested topic.
+     */
+    Collection getTopic(Event topic);
+}
\ No newline at end of file
Index: gotm/src/java/org/objectweb/gotm/lib/logging/GenericLogger.java
diff -u /dev/null 
gotm/src/java/org/objectweb/gotm/lib/logging/GenericLogger.java:1.1
--- /dev/null   Mon Jul 11 10:27:05 2005
+++ gotm/src/java/org/objectweb/gotm/lib/logging/GenericLogger.java     Mon 
Jul 11 10:27:05 2005
@@ -0,0 +1,156 @@
+/*====================================================================
+
+GoTM: GoTM is an open Transaction Monitor
+Copyright (C) 2003-2005 INRIA - Jacquard & USTL - LIFL - GOAL
+Contact: gotm-team@xxxxxxxxxxxxx
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
+USA
+
+Initial developer(s): Romain Rouvoy.
+Contributor(s): .
+
+---------------------------------------------------------------------
+$Id: GenericLogger.java,v 1.1 2005/07/11 08:27:05 rouvoy Exp $
+====================================================================*/
+package org.objectweb.gotm.lib.logging;
+
+
+import javax.transaction.xa.Xid;
+
+import org.objectweb.fractal.lib.BindablePrimitive;
+import org.objectweb.gotm.GoTMException;
+import org.objectweb.gotm.lib.xid.XidFeature;
+import org.objectweb.transaction.api.logging.LoggerFeature;
+
+/**
+ * @author <a href="mailto:Romain.Rouvoy@xxxxxxx";>Romain Rouvoy</a>
+ * @created 7 juil. 2005
+ * @modified $Date: 2005/07/11 08:27:05 $
+ * @version $Revision: 1.1 $
+ * @fractal.itf name="logger-provider" role="client" 
signature="org.objectweb.gotm.lib.logging.LoggerProvider"
+ * @fractal.itf name="xid-provider" role="client" 
signature="org.objectweb.gotm.lib.xid.XidFeature"
+ */
+public class GenericLogger
+        extends BindablePrimitive
+        implements LoggerFeature, LoggerAttributeController {
+
+    /**
+     * @fractal.attr argument="force" 
+     */
+    protected boolean force ;
+    
+    /* (non-Javadoc)
+     * @see org.objectweb.fractal.lib.BindablePrimitive#clientFc()
+     */
+    protected String[] clientFc() {
+        return new String[] {
+                LoggerProvider.LOGGER_PROVIDER,
+                XidFeature.XID_PROVIDER
+        };
+    }
+    
+    /**
+     * @return the HOWL LoggerProvider interface.
+     */
+    protected org.objectweb.howl.log.Logger logging() {
+        return 
((LoggerProvider)fcBindings.get(LoggerProvider.LOGGER_PROVIDER)).getLogging();
+    }
+
+    /**
+     * @return the XID object.
+     */
+    protected Xid xid() {
+        return ((XidFeature)fcBindings.get(XidFeature.XID_PROVIDER)).xid();
+    }
+    
+    /* (non-Javadoc)
+     * @see 
org.objectweb.gotm.lib.logging.LoggerAttributeController#setForce(boolean)
+     */
+    public void setForce(boolean value) {
+        this.force = value;
+        System.out.println("--> force="+value);
+    }
+
+    /* (non-Javadoc)
+     * @see 
org.objectweb.gotm.lib.logging.LoggerAttributeController#getForce()
+     */
+    public boolean getForce() {
+        return this.force;
+    }
+    
+    /**
+     * @param formatId 
+     * @return the byte conversion of the formatId.
+     */
+    private byte[] intToBytes(int formatId) {
+        byte[] buffer = new byte[4];
+        buffer[0] = (byte) (formatId >> 24);
+        buffer[1] = (byte) (formatId >> 16);
+        buffer[2] = (byte) (formatId >> 8);
+        buffer[3] = (byte) (formatId >> 0);
+        return buffer;
+    }
+    
+    /**
+     * @param data
+     * @return a byte array with xid information computed.
+     */
+    protected byte[][] compute(byte[][] data) {
+        byte[][] result = new byte[3 + data.length][];
+        result[0] = intToBytes(xid().getFormatId());
+        result[1] = xid().getGlobalTransactionId();
+        result[2] = xid().getBranchQualifier();
+        for (int i=3 ; i<result.length ; i++) {
+            result[i] = data[i-3];
+        }
+        return result;
+    }
+    
+    /* (non-Javadoc)
+     * @see org.objectweb.transaction.api.logging.LoggerFeature#log(byte[][])
+     */
+    public void log(byte[][] data) {
+        try {
+            logging().put(compute(data), this.force);
+        } catch (Exception e) {
+            throw new GoTMException(e);
+        }
+    }
+
+    /**
+     * @param data
+     * @return a byte array with xid information computed.
+     */
+    protected byte[][] compute(byte[] data) {
+        byte[][] result = new byte[4][];
+        result[0] = intToBytes(xid().getFormatId());
+        result[1] = xid().getGlobalTransactionId();
+        result[2] = xid().getBranchQualifier();
+        result[3] = data;
+        return result;
+    }
+
+    /* (non-Javadoc)
+     * @see org.objectweb.transaction.api.logging.LoggerFeature#log(byte[])
+     */
+    public void log(byte[] data) {
+        try {
+            logging().put(compute(data), this.force);
+        } catch (Exception e) {
+            throw new GoTMException(e);
+        }
+    }
+}
Index: gotm/src/java/org/objectweb/gotm/lib/logging/HOWLoggerProvider.java
diff -u /dev/null 
gotm/src/java/org/objectweb/gotm/lib/logging/HOWLoggerProvider.java:1.1
--- /dev/null   Mon Jul 11 10:27:05 2005
+++ gotm/src/java/org/objectweb/gotm/lib/logging/HOWLoggerProvider.java Mon 
Jul 11 10:27:05 2005
@@ -0,0 +1,144 @@
+/*====================================================================
+
+GoTM: GoTM is an open Transaction Monitor
+Copyright (C) 2003-2005 INRIA - Jacquard & USTL - LIFL - GOAL
+Contact: gotm-team@xxxxxxxxxxxxx
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
+USA
+
+Initial developer(s): Romain Rouvoy.
+Contributor(s): .
+
+---------------------------------------------------------------------
+$Id: HOWLoggerProvider.java,v 1.1 2005/07/11 08:27:05 rouvoy Exp $
+====================================================================*/
+package org.objectweb.gotm.lib.logging;
+
+import java.io.IOException;
+
+import org.objectweb.fractal.api.control.IllegalLifeCycleException;
+import org.objectweb.fractal.api.control.LifeCycleController;
+import org.objectweb.fractal.lib.LoggablePrimitive;
+import org.objectweb.howl.log.Configuration;
+import org.objectweb.howl.log.InvalidFileSetException;
+import org.objectweb.howl.log.InvalidLogBufferException;
+import org.objectweb.howl.log.LogConfigurationException;
+import org.objectweb.howl.log.Logger;
+
+/**
+ * @author <a href="mailto:Romain.Rouvoy@xxxxxxx";>Romain Rouvoy</a>
+ * @created 7 juil. 2005
+ * @modified $Date: 2005/07/11 08:27:05 $
+ * @version $Revision: 1.1 $
+ * @fractal.itf
+ */
+public class HOWLoggerProvider
+        extends LoggablePrimitive
+        implements 
LoggerManager,LoggerProvider,LoggerProviderAttributeController,LifeCycleController
 {
+
+    /**
+     * @fractal.attr argument="file"
+     */
+    protected String filename ;
+    
+    /**
+     * @fractal.attr argument="dir"
+     */
+    protected String dirpath ;
+    
+    protected Logger logger ;
+
+    
+    /* (non-Javadoc)
+     * @see 
org.objectweb.gotm.lib.logging.LoggerProviderAttributeController#setFilename(java.lang.String)
+     */
+    public void setFilename(String name) {
+        this.filename = name;
+    }
+
+    /* (non-Javadoc)
+     * @see 
org.objectweb.gotm.lib.logging.LoggerProviderAttributeController#getFilename()
+     */
+    public String getFilename() {
+        return this.filename;
+    }
+    
+    /* (non-Javadoc)
+     * @see 
org.objectweb.gotm.lib.logging.LoggerProviderAttributeController#setDirpath(java.lang.String)
+     */
+    public void setDirpath(String path) {
+        this.dirpath = path ;
+    }
+
+    /* (non-Javadoc)
+     * @see 
org.objectweb.gotm.lib.logging.LoggerProviderAttributeController#getDirpath()
+     */
+    public String getDirpath() {
+        return this.dirpath ;
+    }
+
+    /* (non-Javadoc)
+     * @see 
org.objectweb.fractal.api.control.LifeCycleController#getFcState()
+     */
+    public String getFcState() { return null; }
+
+    /* (non-Javadoc)
+     * @see org.objectweb.fractal.api.control.LifeCycleController#startFc()
+     */
+    public void startFc() throws IllegalLifeCycleException {
+        Configuration cfg = new Configuration();
+        cfg.setLogFileName(this.filename);
+        cfg.setLogFileDir(this.dirpath);
+        try {
+            this.logger = new Logger(cfg);
+            this.open() ;
+        } catch (Exception e) {
+            throw new IllegalLifeCycleException(e.getMessage());
+        } 
+    }
+
+    /* (non-Javadoc)
+     * @see org.objectweb.fractal.api.control.LifeCycleController#stopFc()
+     */
+    public void stopFc() throws IllegalLifeCycleException {
+        try {
+            this.close() ;
+        } catch (Exception e) {
+            throw new IllegalLifeCycleException(e.getMessage());
+        } 
+    }
+
+    /* (non-Javadoc)
+     * @see org.objectweb.gotm.lib.logging.LoggerManager#close()
+     */
+    public void close() throws IOException, InterruptedException {
+        this.logger.close() ;
+    }
+
+    /* (non-Javadoc)
+     * @see org.objectweb.gotm.lib.logging.LoggerManager#open()
+     */
+    public void open() throws InvalidFileSetException, IOException, 
LogConfigurationException, InvalidLogBufferException, InterruptedException {
+        this.logger.open() ;
+    }
+    
+    /* (non-Javadoc)
+     * @see org.objectweb.gotm.lib.logging.LoggerProvider#getLogging()
+     */
+    public Logger getLogging() {
+        return this.logger;
+    }
+}
Index: 
gotm/src/java/org/objectweb/gotm/lib/logging/LoggerAttributeController.java
diff -u /dev/null 
gotm/src/java/org/objectweb/gotm/lib/logging/LoggerAttributeController.java:1.1
--- /dev/null   Mon Jul 11 10:27:05 2005
+++ 
gotm/src/java/org/objectweb/gotm/lib/logging/LoggerAttributeController.java 
Mon Jul 11 10:27:05 2005
@@ -0,0 +1,50 @@
+/*====================================================================
+
+ GoTM: GoTM is an open Transaction Monitor
+ Copyright (C) 2003-2005 INRIA - Jacquard & USTL - LIFL - GOAL
+ Contact: gotm-team@xxxxxxxxxxxxx
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
+ USA
+
+ Initial developer(s): Romain Rouvoy.
+ Contributor(s): .
+
+ ---------------------------------------------------------------------
+ $Id: LoggerAttributeController.java,v 1.1 2005/07/11 08:27:05 rouvoy Exp $
+ ====================================================================*/
+package org.objectweb.gotm.lib.logging;
+
+import org.objectweb.fractal.api.control.AttributeController;
+
+/**
+ * @author <a href="mailto:Romain.Rouvoy@xxxxxxx";>Romain Rouvoy</a>
+ * @created 7 juil. 2005
+ * @modified $Date: 2005/07/11 08:27:05 $
+ * @version $Revision: 1.1 $
+ * @fractal.controller
+ */
+public interface LoggerAttributeController
+        extends AttributeController {
+    /**
+     * @param value the force tag to associate to the logger.
+     */
+    void setForce(boolean value);
+    
+    /**
+     * @return the force tag associated to the logger.
+     */
+    boolean getForce();
+}
Index: gotm/src/java/org/objectweb/gotm/lib/logging/LoggerManager.java
diff -u /dev/null 
gotm/src/java/org/objectweb/gotm/lib/logging/LoggerManager.java:1.1
--- /dev/null   Mon Jul 11 10:27:05 2005
+++ gotm/src/java/org/objectweb/gotm/lib/logging/LoggerManager.java     Mon 
Jul 11 10:27:05 2005
@@ -0,0 +1,74 @@
+/*====================================================================
+
+GoTM: GoTM is an open Transaction Monitor
+Copyright (C) 2003-2005 INRIA - Jacquard & USTL - LIFL - GOAL
+Contact: gotm-team@xxxxxxxxxxxxx
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
+USA
+
+Initial developer(s): Romain Rouvoy.
+Contributor(s): .
+
+---------------------------------------------------------------------
+$Id: LoggerManager.java,v 1.1 2005/07/11 08:27:05 rouvoy Exp $
+====================================================================*/
+package org.objectweb.gotm.lib.logging;
+
+import java.io.IOException;
+
+import org.objectweb.howl.log.InvalidFileSetException;
+import org.objectweb.howl.log.InvalidLogBufferException;
+import org.objectweb.howl.log.LogConfigurationException;
+import org.objectweb.transaction.api.Feature;
+
+/**
+ * @author <a href="mailto:serrano@xxxxxxx";>Patricia Serrano-Alvarado</a>
+ * @author <a href="mailto:Romain.Rouvoy@xxxxxxx";>Romain Rouvoy</a>
+ * @created 7 juil. 2005
+ * @modified $Date: 2005/07/11 08:27:05 $
+ * @version $Revision: 1.1 $
+ * @fractal.itf name="logger-manager"
+ */
+public interface LoggerManager
+        extends Feature {
+    
+    /** Fractal ADL Identifier for the <code>LoggerManager</code> 
interface.*/
+    public static final String LOGGER_MANAGER = "logging-manager";
+    
+    /**
+     * close the Log files and perform necessary cleanup tasks.
+     * 
+     * @throws IOException
+     * @throws InterruptedException
+     */
+    public void close() throws IOException, InterruptedException;
+
+    /**
+     * open Log files and perform necessart initialization. TODO: consider
+     * open(String name) to allow named configurations. this would allow 
utility
+     * to open two loggers and copy old records to new files.
+     * 
+     * @throws InvalidFileSetException
+     * @throws IOException
+     * @throws LogConfigurationException
+     * @throws InvalidLogBufferException
+     * @throws InterruptedException
+     */
+    public void open() throws InvalidFileSetException, IOException,
+            LogConfigurationException, InvalidLogBufferException,
+            InterruptedException;
+
+}
Index: gotm/src/java/org/objectweb/gotm/lib/logging/LoggerProvider.java
diff -u /dev/null 
gotm/src/java/org/objectweb/gotm/lib/logging/LoggerProvider.java:1.1
--- /dev/null   Mon Jul 11 10:27:05 2005
+++ gotm/src/java/org/objectweb/gotm/lib/logging/LoggerProvider.java    Mon 
Jul 11 10:27:05 2005
@@ -0,0 +1,50 @@
+/*====================================================================
+
+ GoTM: GoTM is an open Transaction Monitor
+ Copyright (C) 2003-2005 INRIA - Jacquard & USTL - LIFL - GOAL
+ Contact: gotm-team@xxxxxxxxxxxxx
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
+ USA
+
+ Initial developer(s): Romain Rouvoy.
+ Contributor(s): .
+
+ ---------------------------------------------------------------------
+ $Id: LoggerProvider.java,v 1.1 2005/07/11 08:27:05 rouvoy Exp $
+ ====================================================================*/
+package org.objectweb.gotm.lib.logging;
+
+import org.objectweb.howl.log.Logger;
+import org.objectweb.transaction.api.Feature;
+
+/**
+ * @author <a href="mailto:Romain.Rouvoy@xxxxxxx";>Romain Rouvoy</a>
+ * @created 7 juil. 2005
+ * @modified $Date: 2005/07/11 08:27:05 $
+ * @version $Revision: 1.1 $
+ * @fractal.itf name="logger-provider"
+ */
+public interface LoggerProvider
+        extends Feature {
+    
+    /** Fractal ADL Identifier for the <code>LoggerProvider</code> 
interface. */
+    public static final String LOGGER_PROVIDER = "logger-provider";
+
+    /**
+     * @return the logger.
+     */
+    Logger getLogging();
+}
\ No newline at end of file
Index: 
gotm/src/java/org/objectweb/gotm/lib/logging/LoggerProviderAttributeController.java
diff -u /dev/null 
gotm/src/java/org/objectweb/gotm/lib/logging/LoggerProviderAttributeController.java:1.1
--- /dev/null   Mon Jul 11 10:27:05 2005
+++ 
gotm/src/java/org/objectweb/gotm/lib/logging/LoggerProviderAttributeController.java
 Mon Jul 11 10:27:05 2005
@@ -0,0 +1,62 @@
+/*====================================================================
+
+ GoTM: GoTM is an open Transaction Monitor
+ Copyright (C) 2003-2005 INRIA - Jacquard & USTL - LIFL - GOAL
+ Contact: gotm-team@xxxxxxxxxxxxx
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
+ USA
+
+ Initial developer(s): Romain Rouvoy.
+ Contributor(s): .
+
+ ---------------------------------------------------------------------
+ $Id: LoggerProviderAttributeController.java,v 1.1 2005/07/11 08:27:05 
rouvoy Exp $
+ ====================================================================*/
+package org.objectweb.gotm.lib.logging;
+
+import org.objectweb.fractal.api.control.AttributeController;
+
+/**
+ * @author <a href="mailto:Romain.Rouvoy@xxxxxxx";>Romain Rouvoy</a>
+ * @created 7 juil. 2005
+ * @modified $Date: 2005/07/11 08:27:05 $
+ * @version $Revision: 1.1 $
+ * @fractal.controller
+ */
+public interface LoggerProviderAttributeController
+        extends AttributeController {
+    /**
+     * @param name
+     *            the filename.
+     */
+    void setFilename(String name);
+
+    /**
+     * @return the filename.
+     */
+    String getFilename();
+
+    /**
+     * @param path
+     *            the path of the directory.
+     */
+    void setDirpath(String path);
+
+    /**
+     * @return the pa