You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jm...@apache.org on 2006/04/12 04:36:56 UTC

svn commit: r393369 [3/4] - in /incubator/tuscany/java/sca: containers/container.java/src/main/java/org/apache/tuscany/container/java/context/ containers/container.java/src/test/java/org/apache/tuscany/container/java/builder/ containers/container.java/...

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java?rev=393369&r1=393368&r2=393369&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/ModuleScopeContext.java Tue Apr 11 19:36:42 2006
@@ -17,11 +17,15 @@
 package org.apache.tuscany.core.context.scope;
 
 import org.apache.tuscany.core.builder.ContextFactory;
+import org.apache.tuscany.core.context.AtomicContext;
 import org.apache.tuscany.core.context.Context;
+import org.apache.tuscany.core.context.CoreRuntimeException;
 import org.apache.tuscany.core.context.EventContext;
-import org.apache.tuscany.core.context.AtomicContext;
 import org.apache.tuscany.core.context.RuntimeEventListener;
-import org.apache.tuscany.core.context.CoreRuntimeException;
+import org.apache.tuscany.core.context.event.ContextCreatedEvent;
+import org.apache.tuscany.core.context.event.ModuleStartEvent;
+import org.apache.tuscany.core.context.event.ModuleStopEvent;
+import org.apache.tuscany.core.context.event.Event;
 
 import java.util.Map;
 import java.util.Queue;
@@ -30,7 +34,7 @@
 
 /**
  * Manages component contexts whose implementations are module scoped
- * 
+ *
  * @version $Rev$ $Date$
  */
 public class ModuleScopeContext extends AbstractScopeContext implements RuntimeEventListener {
@@ -40,40 +44,60 @@
 
     private Queue<AtomicContext> destroyableContexts;
 
-     public ModuleScopeContext(EventContext eventContext) {
+    public ModuleScopeContext(EventContext eventContext) {
         super(eventContext);
         setName("Module Scope");
     }
 
-     public void onEvent(int type, Object key) {
-         switch(type){
-             case EventContext.MODULE_START:
-                lifecycleState = RUNNING;
-                initComponentContexts();
-                break;
-            case EventContext.MODULE_STOP:
-                notifyInstanceShutdown(key);
-                break;
-            case EventContext.CONTEXT_CREATED:
-                checkInit();
-                if (key instanceof AtomicContext) {
-                    AtomicContext serviceContext = (AtomicContext) key;
-                    // Queue the context to have its implementation instance released if destroyable
-                    if (serviceContext.isDestroyable()) {
-                        destroyableContexts.add(serviceContext);
-                    }
+//    public void onEvent(int type, Object key) {
+ //       throw new UnsupportedOperationException();
+//         switch(type){
+//             case EventContext.MODULE_START:
+//                lifecycleState = RUNNING;
+//                initComponentContexts();
+//                break;
+//            case EventContext.MODULE_STOP:
+//                notifyInstanceShutdown(key);
+//                break;
+//            case EventContext.CONTEXT_CREATED:
+//                checkInit();
+//                if (key instanceof AtomicContext) {
+//                    AtomicContext serviceContext = (AtomicContext) key;
+//                    // Queue the context to have its implementation instance released if destroyable
+//                    if (serviceContext.isDestroyable()) {
+//                        destroyableContexts.add(serviceContext);
+//                    }
+//                }
+//                break;
+//        }
+//    }
+
+    public void onEvent(Event event) {
+        if (event instanceof ModuleStartEvent) {
+            lifecycleState = RUNNING;
+            initComponentContexts();
+        } else if (event instanceof ModuleStopEvent) {
+            notifyInstanceShutdown(null);
+        } else if (event instanceof ContextCreatedEvent) {
+            checkInit();
+            if (event.getSource() instanceof AtomicContext) {
+                AtomicContext serviceContext = (AtomicContext) event.getSource();
+                // Queue the context to have its implementation instance released if destroyable
+                if (serviceContext.isDestroyable()) {
+                    destroyableContexts.add(serviceContext);
                 }
-                break;
+            }
         }
     }
 
-   public synchronized void start() {
+    public synchronized void start() {
         if (lifecycleState != UNINITIALIZED) {
             throw new IllegalStateException("Scope must be in UNINITIALIZED state [" + lifecycleState + "]");
         }
     }
 
-    public synchronized void stop() {
+    public synchronized void stop
+            () {
         if (lifecycleState != RUNNING) {
             throw new IllegalStateException("Scope in wrong state [" + lifecycleState + "]");
         }
@@ -82,28 +106,37 @@
         lifecycleState = STOPPED;
     }
 
-   public boolean isCacheable() {
+    public boolean isCacheable
+            () {
         return true;
     }
 
-    public void registerFactory(ContextFactory<Context> configuration) {
+    public void registerFactory
+            (ContextFactory<Context> configuration) {
         contextFactorys.put(configuration.getName(), configuration);
         if (lifecycleState == RUNNING) {
             componentContexts.put(configuration.getName(), configuration.createContext());
         }
     }
 
-    public Context getContext(String ctxName) {
+    public Context getContext
+            (String
+                    ctxName) {
         checkInit();
         return componentContexts.get(ctxName);
     }
 
-    public Context getContextByKey(String ctxName, Object key) {
+    public Context getContextByKey
+            (String
+                    ctxName, Object
+                    key) {
         checkInit();
         return componentContexts.get(ctxName);
     }
 
-    public void removeContext(String ctxName) {
+    public void removeContext
+            (String
+                    ctxName) {
         checkInit();
         Context context = componentContexts.remove(ctxName);
         if (context != null) {
@@ -111,7 +144,10 @@
         }
     }
 
-    public void removeContextByKey(String ctxName, Object key) {
+    public void removeContextByKey
+            (String
+                    ctxName, Object
+                    key) {
         checkInit();
         removeContext(ctxName);
     }
@@ -119,7 +155,9 @@
     /**
      * Returns an array of {@link AtomicContext}s representing components that need to be notified of scope shutdown.
      */
-    protected Context[] getShutdownContexts(Object key) {
+    protected Context[] getShutdownContexts
+            (Object
+                    key) {
         if (destroyableContexts != null) {
             // create 0-length array since Queue.size() has O(n) traversal
             return destroyableContexts.toArray(new Context[0]);
@@ -128,9 +166,10 @@
         }
     }
 
-    private synchronized void initComponentContexts() throws CoreRuntimeException {
+    private synchronized void initComponentContexts
+            () throws CoreRuntimeException {
         if (componentContexts == null) {
-            componentContexts = new ConcurrentHashMap<String, Context> ();
+            componentContexts = new ConcurrentHashMap<String, Context>();
             destroyableContexts = new ConcurrentLinkedQueue<AtomicContext>();
             for (ContextFactory<Context> config : contextFactorys.values()) {
                 Context context = config.createContext();

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeContext.java?rev=393369&r1=393368&r2=393369&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeContext.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/RequestScopeContext.java Tue Apr 11 19:36:42 2006
@@ -22,6 +22,10 @@
 import org.apache.tuscany.core.context.RuntimeEventListener;
 import org.apache.tuscany.core.context.AtomicContext;
 import org.apache.tuscany.core.context.CoreRuntimeException;
+import org.apache.tuscany.core.context.event.RequestEndEvent;
+import org.apache.tuscany.core.context.event.ContextCreatedEvent;
+import org.apache.tuscany.core.context.event.Event;
+import org.apache.tuscany.core.context.event.HttpSessionEvent;
 
 import java.util.Map;
 import java.util.Queue;
@@ -47,19 +51,43 @@
         setName("Request Scope");
     }
 
-    public void onEvent(int type, Object key) {
+//    public void onEvent(int type, Object key) {
+//        throw new UnsupportedOperationException();
+//        /* clean up current context for pooled threads */
+//        switch(type){
+//            case EventContext.REQUEST_END:
+//                checkInit();
+//                getEventContext().clearIdentifier(EventContext.SESSION);
+//                notifyInstanceShutdown(Thread.currentThread());
+//                destroyContext();
+//                break;
+//            case EventContext.CONTEXT_CREATED:
+//                checkInit();
+//                assert(key instanceof Context): "Context must be passed on created event";
+//                Context context = (Context)key;
+//                if (context instanceof AtomicContext) {
+//                    AtomicContext simpleCtx = (AtomicContext)context;
+//                    // Queue the context to have its implementation instance released if destroyable
+//                    if (simpleCtx.isDestroyable()) {
+//                        Queue<AtomicContext> collection = destroyComponents.get(Thread.currentThread());
+//                        collection.add(simpleCtx);
+//                    }
+//                }
+//                break;
+//        }
+//    }
+
+    public void onEvent(Event event){
         /* clean up current context for pooled threads */
-        switch(type){
-            case EventContext.REQUEST_END:
+        if (event instanceof RequestEndEvent){
                 checkInit();
-                getEventContext().clearIdentifier(EventContext.HTTP_SESSION);
+                getEventContext().clearIdentifier(HttpSessionEvent.HTTP_IDENTIFIER);
                 notifyInstanceShutdown(Thread.currentThread());
                 destroyContext();
-                break;
-            case EventContext.CONTEXT_CREATED:
+        }else if (event instanceof ContextCreatedEvent){
                 checkInit();
-                assert(key instanceof Context): "Context must be passed on created event";
-                Context context = (Context)key;
+                assert(event.getSource() instanceof Context): "Context must be passed on created event";
+                Context context = (Context)event.getSource();
                 if (context instanceof AtomicContext) {
                     AtomicContext simpleCtx = (AtomicContext)context;
                     // Queue the context to have its implementation instance released if destroyable
@@ -68,10 +96,8 @@
                         collection.add(simpleCtx);
                     }
                 }
-                break;
         }
     }
-
     public synchronized void start() {
         if (lifecycleState != UNINITIALIZED) {
             throw new IllegalStateException("Scope must be in UNINITIALIZED state [" + lifecycleState + "]");

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/SessionScopeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/SessionScopeContext.java?rev=393369&r1=393368&r2=393369&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/SessionScopeContext.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/SessionScopeContext.java Tue Apr 11 19:36:42 2006
@@ -23,6 +23,10 @@
 import org.apache.tuscany.core.context.EventContext;
 import org.apache.tuscany.core.context.RuntimeEventListener;
 import org.apache.tuscany.core.context.ScopeRuntimeException;
+import org.apache.tuscany.core.context.event.HttpSessionEndEvent;
+import org.apache.tuscany.core.context.event.ContextCreatedEvent;
+import org.apache.tuscany.core.context.event.Event;
+import org.apache.tuscany.core.context.event.HttpSessionEvent;
 
 import java.util.Map;
 import java.util.Queue;
@@ -66,23 +70,19 @@
         lifecycleState = STOPPED;
     }
 
-    public void onEvent(int type, Object key) {
-        if (key == null) {
-            return;
-        }
-        switch(type){
-            case EventContext.SESSION_END:
+    public void onEvent(Event event) {
+        if (event instanceof HttpSessionEndEvent){
                 checkInit();
+                Object key = ((HttpSessionEndEvent)event).getId();
                 notifyInstanceShutdown(key);
                 destroyComponentContext(key);
-                break;
-            case EventContext.CONTEXT_CREATED:
+        }else if(event instanceof ContextCreatedEvent){
                 checkInit();
-                if (key instanceof AtomicContext) {
-                     AtomicContext simpleCtx = (AtomicContext)key;
+                if (event.getSource() instanceof AtomicContext) {
+                     AtomicContext simpleCtx = (AtomicContext)event.getSource();
                      // if destroyable, queue the context to have its component implementation instance released
                      if (simpleCtx.isDestroyable()) {
-                         Object sessionKey = getEventContext().getIdentifier(EventContext.HTTP_SESSION);
+                         Object sessionKey = getEventContext().getIdentifier(HttpSessionEvent.HTTP_IDENTIFIER);
                          Queue<AtomicContext> comps = destroyableContexts.get(sessionKey);
                          if (comps == null) {
                              ScopeRuntimeException e = new ScopeRuntimeException("Shutdown queue not found for key");
@@ -92,7 +92,6 @@
                          comps.add(simpleCtx);
                      }
                 }
-                break;
         }
     }
 
@@ -142,7 +141,7 @@
 
     public void removeContext(String ctxName) {
         checkInit();
-        Object key = getEventContext().getIdentifier(EventContext.HTTP_SESSION);
+        Object key = getEventContext().getIdentifier(HttpSessionEvent.HTTP_IDENTIFIER);
         removeContextByKey(ctxName, key);
     }
 
@@ -178,20 +177,15 @@
         if (queue != null) {
             // create 0-length array since Queue.size() has O(n) traversal
             return queue.toArray(new AtomicContext[0]);
-        } else {
-            return null;
         }
+        return null;
     }
 
-    // ----------------------------------
-    // Private methods
-    // ----------------------------------
-
     /**
      * Returns and, if necessary, creates a context for the current sesion
      */
     private Map<String, Context> getSessionContext() throws CoreRuntimeException {
-        Object key = getEventContext().getIdentifier(EventContext.HTTP_SESSION);
+        Object key = getEventContext().getIdentifier(HttpSessionEvent.HTTP_IDENTIFIER);
         if (key == null) {
             throw new ScopeRuntimeException("Session key not set in request context");
         }

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeContext.java?rev=393369&r1=393368&r2=393369&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeContext.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/context/scope/StatelessScopeContext.java Tue Apr 11 19:36:42 2006
@@ -21,6 +21,7 @@
 import org.apache.tuscany.core.context.Context;
 import org.apache.tuscany.core.context.RuntimeEventListener;
 import org.apache.tuscany.core.context.CoreRuntimeException;
+import org.apache.tuscany.core.context.event.Event;
 
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
@@ -64,7 +65,7 @@
 
     }
 
-    public void onEvent(int type, Object key) {
+    public void onEvent(Event event){
         // do nothing
     }
 

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContextImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContextImpl.java?rev=393369&r1=393368&r2=393369&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContextImpl.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/runtime/RuntimeContextImpl.java Tue Apr 11 19:36:42 2006
@@ -27,7 +27,7 @@
 import org.apache.tuscany.core.context.RuntimeEventListener;
 import org.apache.tuscany.core.context.SystemCompositeContext;
 import org.apache.tuscany.core.context.CompositeContext;
-import org.apache.tuscany.core.context.AbstractContext;
+import org.apache.tuscany.core.context.impl.AbstractContext;
 import org.apache.tuscany.core.context.CoreRuntimeException;
 import org.apache.tuscany.core.context.EventException;
 import org.apache.tuscany.core.context.QualifiedName;
@@ -58,7 +58,7 @@
     // the top-level wire builder in the runtime
     private final HierarchicalWireBuilder wireBuilder;
 
-    private final List<RuntimeEventListener> listeners = new ArrayList<RuntimeEventListener>(1);
+    //private final List<RuntimeEventListener> listeners = new ArrayList<RuntimeEventListener>(1);
 
     private final CompositeContext rootContext;
 
@@ -177,20 +177,13 @@
         }
     }
 
-    public void addListener(RuntimeEventListener listener) {
-        assert (listener != null) : "Listener cannot be null";
-        listeners.add(listener);
-    }
-
-    public void fireEvent(int eventType, Object message) throws EventException {
-        checkRunning();
-        for (RuntimeEventListener listener : listeners) {
-            listener.onEvent(eventType, message);
-        }
-    }
-
     public CompositeContext getParent() {
         return null; // there is no parent
+    }
+
+    //TODO remove
+    public void fireEvent(int pEventType, Object pMessage) throws EventException {
+        throw new UnsupportedOperationException();
     }
 
     public Object locateService(QualifiedName serviceName) {

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemComponentContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemComponentContext.java?rev=393369&r1=393368&r2=393369&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemComponentContext.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemComponentContext.java Tue Apr 11 19:36:42 2006
@@ -21,12 +21,13 @@
 import org.apache.tuscany.core.injection.ObjectCallbackException;
 import org.apache.tuscany.core.injection.ObjectCreationException;
 import org.apache.tuscany.core.context.AtomicContext;
-import org.apache.tuscany.core.context.AbstractContext;
+import org.apache.tuscany.core.context.impl.AbstractContext;
 import org.apache.tuscany.core.context.TargetException;
 import org.apache.tuscany.core.context.QualifiedName;
 import org.apache.tuscany.core.context.ContextInitException;
 import org.apache.tuscany.core.context.EventContext;
 import org.apache.tuscany.core.context.RuntimeEventListener;
+import org.apache.tuscany.core.context.event.ContextCreatedEvent;
 
 /**
  * Manages system component implementation instances
@@ -49,10 +50,6 @@
     // responsible for creating a new implementation instance with injected references and properties
     private ObjectFactory objectFactory;
 
-    // ----------------------------------
-    // Constructors
-    // ----------------------------------
-
     public SystemComponentContext(String name, ObjectFactory objectFactory, boolean eagerInit, EventInvoker<Object> initInvoker,
                                   EventInvoker<Object> destroyInvoker, boolean stateless) {
         super(name);
@@ -68,10 +65,6 @@
         this.stateless = stateless;
     }
 
-    // ----------------------------------
-    // Methods
-    // ----------------------------------
-
     public void setName(String name) {
         super.setName(name);
     }
@@ -107,9 +100,11 @@
                 Object instance = objectFactory.getInstance();
                 startInstance(instance);
                 if (notify) {
-                    for (RuntimeEventListener listener : listeners) {
-                        listener.onEvent(EventContext.CONTEXT_CREATED,this);
-                    }
+                    publish(new ContextCreatedEvent(this));
+                    //TODO remove
+                    //for (RuntimeEventListener listener : listeners) {
+                    //    listener.onEvent(EventContext.CONTEXT_CREATED,this);
+                    //}
                 }
                 lifecycleState = RUNNING;
                 if (stateless) {
@@ -141,10 +136,6 @@
         return (destroyInvoker != null);
     }
 
-    // ----------------------------------
-    // Lifecycle methods
-    // ----------------------------------
-
     public void start() throws ContextInitException {
         if (getLifecycleState() != UNINITIALIZED && getLifecycleState() != STOPPED) {
             throw new IllegalStateException("Component must be in UNINITIALIZED state [" + getLifecycleState() + "]");
@@ -171,9 +162,6 @@
         lifecycleState = STOPPED;
     }
 
-    // ----------------------------------
-    // Private methods
-    // ----------------------------------
     private void startInstance(Object instance) throws TargetException {
         try {
             // handle @Init

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContextImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContextImpl.java?rev=393369&r1=393368&r2=393369&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContextImpl.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemCompositeContextImpl.java Tue Apr 11 19:36:42 2006
@@ -22,7 +22,6 @@
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
@@ -30,7 +29,6 @@
 import org.apache.tuscany.core.builder.BuilderConfigException;
 import org.apache.tuscany.core.builder.ContextFactory;
 import org.apache.tuscany.core.config.ConfigurationException;
-import org.apache.tuscany.core.context.AbstractContext;
 import org.apache.tuscany.core.context.AutowireContext;
 import org.apache.tuscany.core.context.AutowireResolutionException;
 import org.apache.tuscany.core.context.CompositeContext;
@@ -41,18 +39,18 @@
 import org.apache.tuscany.core.context.DuplicateNameException;
 import org.apache.tuscany.core.context.EntryPointContext;
 import org.apache.tuscany.core.context.EventContext;
-import static org.apache.tuscany.core.context.EventContext.HTTP_SESSION;
-import static org.apache.tuscany.core.context.EventContext.REQUEST_END;
-import static org.apache.tuscany.core.context.EventContext.SESSION_NOTIFY;
-import org.apache.tuscany.core.context.EventException;
 import org.apache.tuscany.core.context.MissingContextFactoryException;
 import org.apache.tuscany.core.context.MissingScopeException;
 import org.apache.tuscany.core.context.QualifiedName;
-import org.apache.tuscany.core.context.RuntimeEventListener;
 import org.apache.tuscany.core.context.ScopeContext;
 import org.apache.tuscany.core.context.ScopeStrategy;
 import org.apache.tuscany.core.context.SystemCompositeContext;
 import org.apache.tuscany.core.context.TargetException;
+import org.apache.tuscany.core.context.event.RequestEndEvent;
+import org.apache.tuscany.core.context.event.Event;
+import org.apache.tuscany.core.context.event.SessionBoundEvent;
+import org.apache.tuscany.core.context.event.HttpSessionEvent;
+import org.apache.tuscany.core.context.impl.AbstractContext;
 import org.apache.tuscany.core.context.impl.EventContextImpl;
 import org.apache.tuscany.core.invocation.jdk.JDKProxyFactoryFactory;
 import org.apache.tuscany.core.invocation.spi.ProxyFactory;
@@ -78,6 +76,7 @@
 import org.apache.tuscany.model.assembly.Service;
 import org.apache.tuscany.model.assembly.impl.AssemblyFactoryImpl;
 
+
 /**
  * Implements an composite context for system components. By default a system context uses the scopes specified by
  * {@link org.apache.tuscany.core.system.context.SystemScopeStrategy}. In addition, it implements an autowire policy
@@ -119,9 +118,6 @@
     // A component context name to scope context index
     protected Map<String, ScopeContext> scopeIndex;
 
-    // Listeners for context events
-    protected List<RuntimeEventListener> listeners = new CopyOnWriteArrayList<RuntimeEventListener>();
-
     // Blocking latch to ensure the module is initialized exactly once prior to servicing requests
     protected CountDownLatch initializeLatch = new CountDownLatch(1);
 
@@ -136,10 +132,6 @@
     @Autowire(required = false)
     private AutowireContext autowireContext;
 
-    // ----------------------------------
-    // Constructors
-    // ----------------------------------
-
     public SystemCompositeContextImpl() {
         super();
         scopeIndex = new ConcurrentHashMap<String, ScopeContext>();
@@ -247,7 +239,7 @@
                 if (scope.getLifecycleState() == ScopeContext.RUNNING) {
                     scope.stop();
                 }
-        }
+            }
         }
         scopeContexts = null;
         scopeIndex.clear();
@@ -413,23 +405,17 @@
 
     }
 
-    public void addListener(RuntimeEventListener listener) {
-        assert (listener != null) : "Listener cannot be null";
-        listeners.add(listener);
-    }
-
-    public void fireEvent(int eventType, Object message) throws EventException {
+    public void publish(Event event) {
         checkInit();
-        if (eventType == SESSION_NOTIFY) {
+        if (event instanceof SessionBoundEvent) {
             // update context
-            eventContext.setIdentifier(HTTP_SESSION, message);
-        } else if (eventType == REQUEST_END) {
+            SessionBoundEvent sessionEvent = ((SessionBoundEvent) event);
+            eventContext.setIdentifier(sessionEvent.getSessionTypeIdentifier(), sessionEvent.getId());
+        } else if (event instanceof RequestEndEvent) {
             // be very careful with pooled threads, ensuring threadlocals are cleaned up
-            eventContext.clearIdentifier(HTTP_SESSION);
-        }
-        for (RuntimeEventListener listener : listeners) {
-            listener.onEvent(eventType, message);
+            eventContext.clearIdentifier(HttpSessionEvent.HTTP_IDENTIFIER);
         }
+        super.publish(event);
     }
 
     public Context getContext(String componentName) {
@@ -493,10 +479,6 @@
         }
     }
 
-    // ----------------------------------
-    // AutowireContext methods
-    // ----------------------------------
-
     // FIXME These should be removed and configured
     private static final MessageFactory messageFactory = new MessageFactoryImpl();
 
@@ -553,7 +535,7 @@
                         Class interfaze = ep.getConfiguredService().getService().getServiceContract().getInterface();
                         NameToScope nts = autowireIndex.get(interfaze);
                         if (nts == null || !nts.isEntryPoint()) { // handle special case where two entry points with
-                                                                    // same interface register: first wins
+                            // same interface register: first wins
                             ScopeContext scope = scopeContexts.get(((ContextFactory) ep.getConfiguredReference()
                                     .getContextFactory()).getScope());
                             if (scope == null) {
@@ -578,7 +560,7 @@
                                 ScopeContext scope = scopeContexts.get(Scope.AGGREGATE);
                                 // only register if an impl has not already been registered, ensuring it is not visible outside the containment
                                 NameToScope mapping = new NameToScope(new QualifiedName(component.getName()
-                                        + QualifiedName.NAME_SEPARATOR + ep.getName()), scope, false, false); 
+                                        + QualifiedName.NAME_SEPARATOR + ep.getName()), scope, false, false);
                                 autowireIndex.put(interfaze, mapping);
                             }
                         }
@@ -612,7 +594,7 @@
     }
 
     public void connect(ProxyFactory sourceFactory, ProxyFactory targetFactory, Class targetType, boolean downScope,
-            ScopeContext targetScopeContext) throws BuilderConfigException {
+                        ScopeContext targetScopeContext) throws BuilderConfigException {
         if (configurationContext != null) {
             try {
                 configurationContext.connect(sourceFactory, targetFactory, targetType, downScope, targetScopeContext);
@@ -641,7 +623,7 @@
 
     /**
      * Maps a context name to a scope
-     * 
+     * <p/>
      * TODO this is a duplicate of composite context
      */
     private class NameToScope {

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemEntryPointContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemEntryPointContext.java?rev=393369&r1=393368&r2=393369&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemEntryPointContext.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemEntryPointContext.java Tue Apr 11 19:36:42 2006
@@ -14,7 +14,7 @@
 package org.apache.tuscany.core.system.context;
 
 import org.apache.tuscany.core.builder.ContextResolver;
-import org.apache.tuscany.core.context.AbstractContext;
+import org.apache.tuscany.core.context.impl.AbstractContext;
 import org.apache.tuscany.core.context.Context;
 import org.apache.tuscany.core.context.CoreRuntimeException;
 import org.apache.tuscany.core.context.EntryPointContext;

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemExternalServiceContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemExternalServiceContext.java?rev=393369&r1=393368&r2=393369&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemExternalServiceContext.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/system/context/SystemExternalServiceContext.java Tue Apr 11 19:36:42 2006
@@ -14,7 +14,7 @@
 package org.apache.tuscany.core.system.context;
 
 import org.apache.tuscany.core.builder.ObjectFactory;
-import org.apache.tuscany.core.context.AbstractContext;
+import org.apache.tuscany.core.context.impl.AbstractContext;
 import org.apache.tuscany.core.context.ExternalServiceContext;
 import org.apache.tuscany.core.context.QualifiedName;
 import org.apache.tuscany.core.context.TargetException;

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/webapp/TuscanyRequestFilter.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/webapp/TuscanyRequestFilter.java?rev=393369&r1=393368&r2=393369&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/webapp/TuscanyRequestFilter.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/webapp/TuscanyRequestFilter.java Tue Apr 11 19:36:42 2006
@@ -17,7 +17,9 @@
 package org.apache.tuscany.core.webapp;
 
 import org.apache.tuscany.core.context.CompositeContext;
-import org.apache.tuscany.core.context.EventContext;
+import org.apache.tuscany.core.context.event.HttpSessionBoundEvent;
+import org.apache.tuscany.core.context.event.RequestStartEvent;
+import org.apache.tuscany.core.context.event.RequestEndEvent;
 import org.osoa.sca.CurrentModuleContext;
 import org.osoa.sca.ModuleContext;
 
@@ -65,16 +67,16 @@
                 if (((HttpServletRequest) request).getSession(false) != null) {
 
                     // A session is already active
-                    moduleContext.fireEvent(EventContext.SESSION_NOTIFY, ((HttpServletRequest) request).getSession(true));
+                    moduleContext.publish(new HttpSessionBoundEvent(this, ((HttpServletRequest) request).getSession(true)));
                 } else {
                     // Create a lazy wrapper since a session is not yet active
-                    moduleContext.fireEvent(EventContext.SESSION_NOTIFY, new LazyHTTPSessionId((HttpServletRequest) request));
+                    moduleContext.publish(new HttpSessionBoundEvent(this, new LazyHTTPSessionId((HttpServletRequest) request)));
                 }
             } else {
-                moduleContext.fireEvent(EventContext.SESSION_NOTIFY, request);
+                moduleContext.publish(new HttpSessionBoundEvent(this, request));
             }
             // Start processing the request
-            moduleContext.fireEvent(EventContext.REQUEST_START, request);
+            moduleContext.publish(new RequestStartEvent(this, request));
             // Dispatch to the next filter
             filterChain.doFilter(request, response);
         } catch (Exception e) {
@@ -83,7 +85,7 @@
         } finally {
             try {
                 // End processing the request
-                moduleContext.fireEvent(EventContext.REQUEST_END, request);
+                moduleContext.publish(new RequestEndEvent(this, request));
             } catch (Exception e) {
                 throw new ServletException(e);
             }

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/webapp/TuscanyServletListener.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/webapp/TuscanyServletListener.java?rev=393369&r1=393368&r2=393369&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/webapp/TuscanyServletListener.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/webapp/TuscanyServletListener.java Tue Apr 11 19:36:42 2006
@@ -24,8 +24,10 @@
 import org.apache.tuscany.core.config.ConfigurationException;
 import org.apache.tuscany.core.config.ModuleComponentConfigurationLoader;
 import org.apache.tuscany.core.context.CompositeContext;
-import org.apache.tuscany.core.context.EventContext;
 import org.apache.tuscany.core.context.SystemCompositeContext;
+import org.apache.tuscany.core.context.event.ModuleStopEvent;
+import org.apache.tuscany.core.context.event.ModuleStartEvent;
+import org.apache.tuscany.core.context.event.HttpSessionEndEvent;
 import org.apache.tuscany.core.runtime.RuntimeContext;
 import org.apache.tuscany.core.runtime.RuntimeContextImpl;
 import org.apache.tuscany.model.assembly.AssemblyModelContext;
@@ -74,10 +76,10 @@
     }
 
     public void contextDestroyed(ServletContextEvent servletContextEvent) {
-        moduleContext.fireEvent(EventContext.MODULE_STOP, null);
+        moduleContext.publish(new ModuleStopEvent(this));
         moduleContext.stop();
         SystemCompositeContext systemContext = runtime.getSystemContext();
-        systemContext.fireEvent(EventContext.MODULE_STOP, null);
+        systemContext.publish(new ModuleStopEvent(this));
         systemContext.stop();
         runtime.stop();
         servletContextEvent.getServletContext().removeAttribute(MODULE_COMPONENT_NAME);
@@ -93,7 +95,7 @@
         ModuleContext oldContext = CurrentModuleContext.getContext();
         try {
             ContextBinder.BINDER.setContext((ModuleContext) moduleContext);
-            moduleContext.fireEvent(EventContext.SESSION_END, event.getSession());
+            moduleContext.publish(new HttpSessionEndEvent(this, event.getSession()));
         } finally{
             ContextBinder.BINDER.setContext(oldContext);
         }
@@ -116,13 +118,13 @@
         ModuleComponentConfigurationLoader loader = BootstrapHelper.getConfigurationLoader(systemContext, modelContext);
         ModuleComponent systemModuleComponent = loader.loadSystemModuleComponent(SYSTEM_MODULE_COMPONENT, SYSTEM_MODULE_COMPONENT);
         CompositeContext context = BootstrapHelper.registerModule(systemContext, systemModuleComponent);
-        context.fireEvent(EventContext.MODULE_START, null);
+        context.publish(new ModuleStartEvent(this));
 
         // Load the SCDL configuration of the application module
         CompositeContext rootContext = runtime.getRootContext();
         ModuleComponent moduleComponent = loader.loadModuleComponent(name, uri);
         moduleContext = BootstrapHelper.registerModule(rootContext, moduleComponent);
 
-        moduleContext.fireEvent(EventContext.MODULE_START, null);
+        moduleContext.publish(new ModuleStartEvent(this));
     }
 }

Modified: incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/context/AbstractCompositeHierarchyTests.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/context/AbstractCompositeHierarchyTests.java?rev=393369&r1=393368&r2=393369&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/context/AbstractCompositeHierarchyTests.java (original)
+++ incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/context/AbstractCompositeHierarchyTests.java Tue Apr 11 19:36:42 2006
@@ -19,6 +19,8 @@
 import org.apache.tuscany.core.context.impl.CompositeContextImpl;
 import org.apache.tuscany.core.context.impl.EventContextImpl;
 import org.apache.tuscany.core.context.scope.DefaultScopeStrategy;
+import org.apache.tuscany.core.context.event.ModuleStartEvent;
+import org.apache.tuscany.core.context.event.ModuleStopEvent;
 import org.apache.tuscany.core.mock.MockConfigContext;
 import org.apache.tuscany.core.mock.MockFactory;
 import org.apache.tuscany.core.mock.component.ModuleScopeSystemComponent;
@@ -48,8 +50,8 @@
         parent.registerModelObject(component);
         EntryPoint ep = MockFactory.createEPSystemBinding("TestService1EP", ModuleScopeSystemComponent.class, "TestService1", component);
         parent.registerModelObject(ep);
-        parent.fireEvent(EventContext.MODULE_START, null);
-        child.fireEvent(EventContext.MODULE_START, null);
+        parent.publish(new ModuleStartEvent(this));
+        child.publish(new ModuleStartEvent(this));
         Assert.assertNotNull(parent.getContext("TestService1EP").getInstance(null));
         try {
             ((ModuleContext) child).locateService("TestService1EP");
@@ -57,8 +59,8 @@
         } catch (ServiceNotFoundException e) {
             // expect exception to be thrown
         }
-        parent.fireEvent(EventContext.MODULE_STOP, null);
-        child.fireEvent(EventContext.MODULE_STOP, null);
+        parent.publish(new ModuleStopEvent(this));
+        child.publish(new ModuleStopEvent(this));
         parent.stop();
 
     }

Modified: incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/context/CompositeContextRegisterTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/context/CompositeContextRegisterTestCase.java?rev=393369&r1=393368&r2=393369&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/context/CompositeContextRegisterTestCase.java (original)
+++ incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/context/CompositeContextRegisterTestCase.java Tue Apr 11 19:36:42 2006
@@ -19,6 +19,8 @@
 import org.apache.tuscany.core.context.impl.CompositeContextImpl;
 import org.apache.tuscany.core.context.impl.EventContextImpl;
 import org.apache.tuscany.core.context.scope.DefaultScopeStrategy;
+import org.apache.tuscany.core.context.event.ModuleStartEvent;
+import org.apache.tuscany.core.context.event.ModuleStopEvent;
 import org.apache.tuscany.core.mock.MockConfigContext;
 import org.apache.tuscany.core.mock.MockFactory;
 import org.apache.tuscany.core.mock.component.GenericSystemComponent;
@@ -46,12 +48,12 @@
         Module module = MockFactory.createSystemModule();
         moduleContext.registerModelObject(module);
         moduleContext.start();
-        moduleContext.fireEvent(EventContext.MODULE_START, null);
+        moduleContext.publish(new ModuleStartEvent(this));
         GenericSystemComponent component = (GenericSystemComponent) moduleContext.getContext("TestService1").getInstance(null);
         Assert.assertNotNull(component);
         GenericSystemComponent ep = (GenericSystemComponent) moduleContext.getContext("TestService1EP").getInstance(null);
         Assert.assertNotNull(ep);
-        moduleContext.fireEvent(EventContext.MODULE_STOP, null);
+        moduleContext.publish(new ModuleStopEvent(this));
         moduleContext.stop();
     }
 
@@ -60,12 +62,12 @@
         moduleContext.start();
         Module module = MockFactory.createSystemModule();
         moduleContext.registerModelObject(module);
-        moduleContext.fireEvent(EventContext.MODULE_START, null);
+        moduleContext.publish(new ModuleStartEvent(this));
         GenericSystemComponent component = (GenericSystemComponent) moduleContext.getContext("TestService1").getInstance(null);
         Assert.assertNotNull(component);
         GenericSystemComponent ep = (GenericSystemComponent) moduleContext.getContext("TestService1EP").getInstance(null);
         Assert.assertNotNull(ep);
-        moduleContext.fireEvent(EventContext.MODULE_STOP, null);
+        moduleContext.publish(new ModuleStopEvent(this));
         moduleContext.stop();
     }
 
@@ -76,12 +78,12 @@
         EntryPoint ep = MockFactory.createEPSystemBinding("TestService1EP", ModuleScopeSystemComponent.class, "TestService1", component);
         moduleContext.registerModelObject(ep);
         moduleContext.start();
-        moduleContext.fireEvent(EventContext.MODULE_START, null);
+        moduleContext.publish(new ModuleStartEvent(this));
         GenericSystemComponent test = (GenericSystemComponent) moduleContext.getContext("TestService1").getInstance(null);
         Assert.assertNotNull(test);
         GenericSystemComponent testEP = (GenericSystemComponent) moduleContext.getContext("TestService1EP").getInstance(null);
         Assert.assertNotNull(testEP);
-        moduleContext.fireEvent(EventContext.MODULE_STOP, null);
+        moduleContext.publish(new ModuleStopEvent(this));
         moduleContext.stop();
     }
 
@@ -92,12 +94,12 @@
         moduleContext.registerModelObject(component);
         EntryPoint ep = MockFactory.createEPSystemBinding("TestService1EP", ModuleScopeSystemComponent.class, "TestService1", component);
         moduleContext.registerModelObject(ep);
-        moduleContext.fireEvent(EventContext.MODULE_START, null);
+        moduleContext.publish(new ModuleStartEvent(this));
         GenericSystemComponent test = (GenericSystemComponent) moduleContext.getContext("TestService1").getInstance(null);
         Assert.assertNotNull(test);
         GenericSystemComponent testEP = (GenericSystemComponent) moduleContext.getContext("TestService1EP").getInstance(null);
         Assert.assertNotNull(testEP);
-        moduleContext.fireEvent(EventContext.MODULE_STOP, null);
+        moduleContext.publish(new ModuleStopEvent(this));
         moduleContext.stop();
     }
 
@@ -106,14 +108,14 @@
         Component component = factory.createSystemComponent("TestService1", ModuleScopeSystemComponent.class, ModuleScopeSystemComponentImpl.class, Scope.MODULE);
         moduleContext.start();
         moduleContext.registerModelObject(component);
-        moduleContext.fireEvent(EventContext.MODULE_START, null);
+        moduleContext.publish(new ModuleStartEvent(this));
         GenericSystemComponent test = (GenericSystemComponent) moduleContext.getContext("TestService1").getInstance(null);
         Assert.assertNotNull(test);
         EntryPoint ep = MockFactory.createEPSystemBinding("TestService1EP", ModuleScopeSystemComponent.class, "TestService1", component);
         moduleContext.registerModelObject(ep);
         GenericSystemComponent testEP = (GenericSystemComponent) moduleContext.getContext("TestService1EP").getInstance(null);
         Assert.assertNotNull(testEP);
-        moduleContext.fireEvent(EventContext.MODULE_STOP, null);
+        moduleContext.publish(new ModuleStopEvent(this));
         moduleContext.stop();
     }
 

Modified: incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/context/CompositeHierarchyTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/context/CompositeHierarchyTestCase.java?rev=393369&r1=393368&r2=393369&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/context/CompositeHierarchyTestCase.java (original)
+++ incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/context/CompositeHierarchyTestCase.java Tue Apr 11 19:36:42 2006
@@ -18,6 +18,8 @@
 import org.apache.tuscany.core.context.impl.CompositeContextImpl;
 import org.apache.tuscany.core.context.impl.EventContextImpl;
 import org.apache.tuscany.core.context.scope.DefaultScopeStrategy;
+import org.apache.tuscany.core.context.event.ModuleStopEvent;
+import org.apache.tuscany.core.context.event.ModuleStartEvent;
 import org.apache.tuscany.core.mock.MockConfigContext;
 import org.apache.tuscany.core.mock.MockFactory;
 import org.apache.tuscany.core.mock.component.ModuleScopeSystemComponent;
@@ -49,8 +51,8 @@
         Component component = factory.createSystemComponent("TestService1", ModuleScopeSystemComponent.class, ModuleScopeSystemComponentImpl.class, Scope.MODULE);
         component.initialize(new AssemblyModelContextImpl(factory, null, null));
         child.registerModelObject(component);
-        parent.fireEvent(EventContext.MODULE_START, null);
-        child.fireEvent(EventContext.MODULE_START, null);
+        parent.publish(new ModuleStartEvent(this));
+        child.publish(new ModuleStartEvent(this));
         Assert.assertNotNull(child.getContext("TestService1").getInstance(null));
         try {
             ((ModuleContext) parent).locateService("test.child/TestService1");
@@ -75,8 +77,8 @@
         parent.registerModelObject(parentEp);
         Assert.assertNotNull(parent.getContext("TestService1EP").getInstance(null));
 
-        parent.fireEvent(EventContext.MODULE_STOP, null);
-        child.fireEvent(EventContext.MODULE_STOP, null);
+        parent.publish(new ModuleStopEvent(this));
+        child.publish(new ModuleStopEvent(this));
         parent.stop();
     }
 

Modified: incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/integration/IntraCompositeWireIntegrationTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/integration/IntraCompositeWireIntegrationTestCase.java?rev=393369&r1=393368&r2=393369&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/integration/IntraCompositeWireIntegrationTestCase.java (original)
+++ incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/integration/IntraCompositeWireIntegrationTestCase.java Tue Apr 11 19:36:42 2006
@@ -17,8 +17,9 @@
 import junit.framework.TestCase;
 import org.apache.tuscany.core.config.ConfigurationException;
 import org.apache.tuscany.core.context.CompositeContext;
-import org.apache.tuscany.core.context.EventContext;
 import org.apache.tuscany.core.context.AtomicContext;
+import org.apache.tuscany.core.context.event.ModuleStopEvent;
+import org.apache.tuscany.core.context.event.ModuleStartEvent;
 import org.apache.tuscany.core.mock.MockFactory;
 import org.apache.tuscany.core.mock.component.Source;
 import org.apache.tuscany.core.mock.component.Target;
@@ -48,7 +49,7 @@
         moduleComponent.setModuleImplementation(module);
         runtime.getSystemContext().registerModelObject(moduleComponent);
         CompositeContext context = (CompositeContext) runtime.getSystemContext().getContext("test.system");
-        context.fireEvent(EventContext.MODULE_START, null);
+        context.publish(new ModuleStartEvent(this));
         //context.registerModelObject(module);
         Source source = (Source) ((AtomicContext)context.getContext("source")).getTargetInstance();
         Assert.assertNotNull(source);
@@ -58,7 +59,7 @@
         Assert.assertSame(target, targetRef);
         Source source2 = (Source) ((AtomicContext)context.getContext("source")).getTargetInstance();
         Assert.assertSame(target, source2.getTarget());
-        context.fireEvent(EventContext.MODULE_STOP, null);
+        context.publish(new ModuleStopEvent(this));
         context.stop();
     }
 
@@ -89,7 +90,7 @@
         runtime.getSystemContext().registerModelObject(MockFactory.createSystemCompositeComponent("test.system"));
         CompositeContext context = (CompositeContext) runtime.getSystemContext().getContext("test.system");
 
-        context.fireEvent(EventContext.MODULE_START, null);
+        context.publish(new ModuleStartEvent(this));
         context.registerModelObject(MockFactory.createSystemModuleWithWiredComponents("system.module",Scope.MODULE,Scope.MODULE));
         Source source = (Source) ((AtomicContext)context.getContext("source")).getTargetInstance();
         Assert.assertNotNull(source);
@@ -99,7 +100,7 @@
         Assert.assertSame(target, targetRef);
         Source source2 = (Source) ((AtomicContext)context.getContext("source")).getTargetInstance();
         Assert.assertSame(target, source2.getTarget());
-        context.fireEvent(EventContext.MODULE_STOP, null);
+        context.publish(new ModuleStopEvent(this));
         context.stop();
     }
 }

Modified: incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/invocation/mock/MockScopeContext.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/invocation/mock/MockScopeContext.java?rev=393369&r1=393368&r2=393369&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/invocation/mock/MockScopeContext.java (original)
+++ incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/invocation/mock/MockScopeContext.java Tue Apr 11 19:36:42 2006
@@ -24,7 +24,8 @@
 import org.apache.tuscany.core.context.ScopeRuntimeException;
 import org.apache.tuscany.core.context.QualifiedName;
 import org.apache.tuscany.core.context.Context;
-import org.apache.tuscany.core.context.EventException;
+import org.apache.tuscany.core.context.EventFilter;
+import org.apache.tuscany.core.context.event.Event;
 import org.apache.tuscany.model.assembly.SimpleComponent;
 
 import java.util.HashMap;
@@ -45,16 +46,24 @@
         components = instances;
     }
 
-    
+
     public void start() {
     }
 
     public void stop() {
     }
 
+    public void publish(Event object) {
+        //To change body of implemented methods use File | Settings | File Templates.
+    }
+
     public void addListener(RuntimeEventListener listener) throws ContextRuntimeException {
     }
 
+    public void addListener(EventFilter filter, RuntimeEventListener listener) {
+        //To change body of implemented methods use File | Settings | File Templates.
+    }
+
     public void removeListener(RuntimeEventListener listener) throws ContextRuntimeException {
     }
 
@@ -95,16 +104,13 @@
         return null;
     }
 
-    public void onEvent(int type, Object message) throws EventException {
-    }
-
 
     public void registerFactories(List<ContextFactory<Context>> configurations) {
-    } 
+    }
 
     public void registerFactory(ContextFactory<Context> configuration) {
-    } 
-    
+    }
+
     public int getLifecycleState(){
         return RUNNING;
     }
@@ -118,6 +124,8 @@
     }
 
 
-
+    public void onEvent(Event event) {
+        //To change body of implemented methods use File | Settings | File Templates.
+    }
 }
 

Modified: incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/runtime/RuntimeBootTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/runtime/RuntimeBootTestCase.java?rev=393369&r1=393368&r2=393369&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/runtime/RuntimeBootTestCase.java (original)
+++ incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/runtime/RuntimeBootTestCase.java Tue Apr 11 19:36:42 2006
@@ -18,8 +18,9 @@
 import org.apache.tuscany.common.monitor.impl.NullMonitorFactory;
 import org.apache.tuscany.core.builder.ContextFactoryBuilder;
 import org.apache.tuscany.core.context.CompositeContext;
-import org.apache.tuscany.core.context.EventContext;
 import org.apache.tuscany.core.context.Context;
+import org.apache.tuscany.core.context.event.ModuleStopEvent;
+import org.apache.tuscany.core.context.event.ModuleStartEvent;
 import org.apache.tuscany.core.mock.MockFactory;
 
 import java.util.List;
@@ -68,14 +69,14 @@
         // register system components
         system.registerModelObject(MockFactory.createSystemModule());
         // start the module scope
-        system.fireEvent(EventContext.MODULE_START, null);
+        system.publish(new ModuleStartEvent(this));
         // register the first module
         
         // register the second module
 
         // start the modules
 
-        system.fireEvent(EventContext.MODULE_STOP, null);
+        system.publish(new ModuleStopEvent(this));
         runtimeContext.stop();
         Assert.assertEquals(Context.STOPPED,system.getLifecycleState());
     }

Modified: incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/runtime/RuntimeContextImplTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/runtime/RuntimeContextImplTestCase.java?rev=393369&r1=393368&r2=393369&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/runtime/RuntimeContextImplTestCase.java (original)
+++ incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/runtime/RuntimeContextImplTestCase.java Tue Apr 11 19:36:42 2006
@@ -20,7 +20,8 @@
 import org.apache.tuscany.core.config.ConfigurationException;
 import org.apache.tuscany.core.context.CompositeContext;
 import org.apache.tuscany.core.context.Context;
-import org.apache.tuscany.core.context.EventContext;
+import org.apache.tuscany.core.context.event.ModuleStartEvent;
+import org.apache.tuscany.core.context.event.ModuleStopEvent;
 import org.apache.tuscany.core.context.impl.CompositeContextImpl;
 import org.apache.tuscany.core.mock.MockFactory;
 import org.apache.tuscany.core.mock.component.ModuleScopeSystemComponent;
@@ -81,7 +82,7 @@
         inter.setInterface(ModuleScopeSystemComponentImpl.class);
         service.setServiceContract(inter);
         system.registerModelObject(ep);
-        system.fireEvent(EventContext.MODULE_START, null);
+        system.publish(new ModuleStartEvent(this));
         Assert.assertNotNull(system.getContext("TestService1").getInstance(null));
         Assert.assertNotNull(system.getContext("TestService2EP").getInstance(null));
 
@@ -92,11 +93,11 @@
         Assert.assertNotNull(moduleContext);
         ExternalService es = MockFactory.createESSystemBinding("TestService2ES", "tuscany.system/TestService2EP");
         moduleContext.registerModelObject(es);
-        moduleContext.fireEvent(EventContext.MODULE_START, null);
+        moduleContext.publish(new ModuleStartEvent(this));
         Assert.assertNotNull(moduleContext.getContext("TestService2ES").getInstance(null));
 
-        moduleContext.fireEvent(EventContext.MODULE_STOP, null);
-        system.fireEvent(EventContext.MODULE_STOP, null);
+        moduleContext.publish(new ModuleStopEvent(this));
+        system.publish(new ModuleStopEvent(this));
         runtime.stop();
     }
 
@@ -123,13 +124,13 @@
         ExternalService es = MockFactory.createAutowirableExternalService("TestService2ES", ModuleScopeSystemComponent.class);
         moduleContext.registerModelObject(es);
 
-        system.fireEvent(EventContext.MODULE_START, null);
-        moduleContext.fireEvent(EventContext.MODULE_START, null);
+        system.publish(new ModuleStartEvent(this));
+        moduleContext.publish(new ModuleStartEvent(this));
         // test that the autowire was resolved
         Assert.assertNotNull(moduleContext.getContext("TestService2ES").getInstance(null));
 
-        moduleContext.fireEvent(EventContext.MODULE_STOP, null);
-        system.fireEvent(EventContext.MODULE_STOP, null);
+        moduleContext.publish(new ModuleStopEvent(this));
+        system.publish(new ModuleStopEvent(this));
         runtime.stop();
     }
 
@@ -141,14 +142,14 @@
         Component moduleComponent = MockFactory.createCompositeComponent("module");
         runtime.registerModelObject(moduleComponent);
         CompositeContextImpl moduleContext = (CompositeContextImpl) runtime.getContext("module");
-        moduleContext.fireEvent(EventContext.MODULE_START, null);
+        moduleContext.publish(new ModuleStartEvent(this));
         try {
             moduleContext.locateService("TestService");
             fail("Expected " + ServiceUnavailableException.class.getName());
         } catch (ServiceUnavailableException e) {
             // expected
         }
-        moduleContext.fireEvent(EventContext.MODULE_STOP, null);
+        moduleContext.publish(new ModuleStopEvent(this));
         runtime.stop();
     }
 
@@ -165,16 +166,16 @@
         moduleContext.registerModelObject(es);
 
         // start the modules and test inter-module system wires
-        system.fireEvent(EventContext.MODULE_START, null);
-        moduleContext.fireEvent(EventContext.MODULE_START, null);
+        system.publish(new ModuleStartEvent(this));
+        moduleContext.publish(new ModuleStartEvent(this));
         try {
             moduleContext.locateService("TestServiceES");
             fail("Expected " + ServiceUnavailableException.class.getName());
         } catch (ServiceUnavailableException e) {
             // expected
         }
-        moduleContext.fireEvent(EventContext.MODULE_STOP, null);
-        system.fireEvent(EventContext.MODULE_STOP, null);
+        moduleContext.publish(new ModuleStopEvent(this));
+        system.publish(new ModuleStopEvent(this));
         runtime.stop();
     }
 
@@ -193,14 +194,14 @@
         EntryPoint epSystemBinding = MockFactory.createEPSystemBinding("TestServiceEP", ModuleScopeSystemComponent.class, "NoReference", component);
         moduleContext.registerModelObject(epSystemBinding);
 
-        moduleContext.fireEvent(EventContext.MODULE_START, null);
+        moduleContext.publish(new ModuleStartEvent(this));
         try {
             moduleContext.locateService("TestServiceEP");
             fail("Expected " + ServiceUnavailableException.class.getName());
         } catch (ServiceUnavailableException e) {
             // expected
         }
-        moduleContext.fireEvent(EventContext.MODULE_STOP, null);
+        moduleContext.publish(new ModuleStopEvent(this));
         runtime.stop();
     }
 
@@ -234,8 +235,8 @@
         moduleContext2.registerModelObject(entryPoint2);
         moduleContext2.registerModelObject(externalService2);
 
-        moduleContext1.fireEvent(EventContext.MODULE_START, null);
-        moduleContext2.fireEvent(EventContext.MODULE_START, null);
+        moduleContext1.publish(new ModuleStartEvent(this));
+        moduleContext2.publish(new ModuleStartEvent(this));
         Assert.assertNotNull(moduleContext2.getContext("ExternalService2").getInstance(null));
         Assert.assertNotNull(moduleContext1.getContext("ExternalService1").getInstance(null));
         runtime.stop();
@@ -283,12 +284,12 @@
         CompositeContext system = runtime.getSystemContext();
         Component builder = factory.createSystemComponent("TestBuilder", ContextFactoryBuilder.class, TestBuilder.class, Scope.MODULE);
         system.registerModelObject(builder);
-        system.fireEvent(EventContext.MODULE_START, null);
+        system.publish(new ModuleStartEvent(this));
         Component module1 = MockFactory.createCompositeComponent("module1");
         runtime.registerModelObject(module1);
         runtime.getContext("module1");
         Assert.assertTrue(((TestBuilder) system.getContext("TestBuilder").getInstance(null)).invoked());
-        system.fireEvent(EventContext.MODULE_STOP, null);
+        system.publish(new ModuleStopEvent(this));
         runtime.stop();
 
     }

Modified: incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/runtime/SystemBootstrapTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/runtime/SystemBootstrapTestCase.java?rev=393369&r1=393368&r2=393369&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/runtime/SystemBootstrapTestCase.java (original)
+++ incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/runtime/SystemBootstrapTestCase.java Tue Apr 11 19:36:42 2006
@@ -19,7 +19,8 @@
 import org.apache.tuscany.core.builder.ContextFactoryBuilder;
 import org.apache.tuscany.core.context.AutowireContext;
 import org.apache.tuscany.core.context.CompositeContext;
-import org.apache.tuscany.core.context.EventContext;
+import org.apache.tuscany.core.context.event.ModuleStartEvent;
+import org.apache.tuscany.core.context.event.ModuleStopEvent;
 import org.apache.tuscany.core.context.impl.CompositeContextImpl;
 import org.apache.tuscany.core.mock.MockFactory;
 import org.apache.tuscany.core.mock.component.GenericSystemComponent;
@@ -68,8 +69,8 @@
         moduleContext.registerModelObject(es);
 
         // start the modules and test inter-module system wires
-        systemContext.fireEvent(EventContext.MODULE_START, null);
-        moduleContext.fireEvent(EventContext.MODULE_START, null);
+        systemContext.publish(new ModuleStartEvent(this));
+        moduleContext.publish(new ModuleStartEvent(this));
 
         Assert.assertNotNull(systemContext.getContext("TestService1EP").getInstance(null));
         GenericSystemComponent testService = (GenericSystemComponent) systemContext.getContext("TestService1").getInstance(null);
@@ -99,7 +100,7 @@
         service.setServiceContract(inter);
         ep.getConfiguredReference().getTargetConfiguredServices().get(0).setService(service);
         system.registerModelObject(ep);
-        system.fireEvent(EventContext.MODULE_START, null);
+        system.publish(new ModuleStartEvent(this));
         Assert.assertNotNull(system.getContext("TestService1").getInstance(null));
         Assert.assertNotNull(system.getContext("TestService2EP").getInstance(null));
 
@@ -111,11 +112,11 @@
         Assert.assertNotNull(moduleContext);
         ExternalService es = MockFactory.createESSystemBinding("TestService2ES", "tuscany.system/TestService2EP");
         moduleContext.registerModelObject(es);
-        moduleContext.fireEvent(EventContext.MODULE_START, null);
+        moduleContext.publish(new ModuleStartEvent(this));
         Assert.assertNotNull(moduleContext.getContext("TestService2ES").getInstance(null));
 
-        moduleContext.fireEvent(EventContext.MODULE_STOP, null);
-        system.fireEvent(EventContext.MODULE_STOP, null);
+        moduleContext.publish(new ModuleStopEvent(this));
+        system.publish(new ModuleStopEvent(this));
         runtime.stop();
     }
 

Modified: incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/context/AutowireTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/context/AutowireTestCase.java?rev=393369&r1=393368&r2=393369&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/context/AutowireTestCase.java (original)
+++ incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/context/AutowireTestCase.java Tue Apr 11 19:36:42 2006
@@ -16,8 +16,9 @@
 
 import junit.framework.TestCase;
 import org.apache.tuscany.core.context.CompositeContext;
-import org.apache.tuscany.core.context.EventContext;
 import org.apache.tuscany.core.context.SystemCompositeContext;
+import org.apache.tuscany.core.context.event.ModuleStopEvent;
+import org.apache.tuscany.core.context.event.ModuleStartEvent;
 import org.apache.tuscany.core.mock.MockFactory;
 import org.apache.tuscany.core.mock.component.AutowireSourceImpl;
 import org.apache.tuscany.core.mock.component.Source;
@@ -74,15 +75,15 @@
         CompositeContext root = runtime.getRootContext();
         SystemCompositeContext system = runtime.getSystemContext();
         CompositeContext system1 = (CompositeContext) system.getContext("system1");
-        system1.fireEvent(EventContext.MODULE_START, null);
+        system1.publish(new ModuleStartEvent(this));
         Target target = (Target) system.getContext("target.system.ep").getInstance(null);
         assertNotNull(target);
         CompositeContext app1 = (CompositeContext) root.getContext("app1");
-        app1.fireEvent(EventContext.MODULE_START, null);
+        app1.publish(new ModuleStartEvent(this));
         CompositeContext app1a = (CompositeContext) app1.getContext("app1a");
-        app1a.fireEvent(EventContext.MODULE_START, null);
-        app1a.fireEvent(EventContext.MODULE_STOP, null);
-        app1.fireEvent(EventContext.MODULE_STOP, null);
+        app1a.publish(new ModuleStartEvent(this));
+        app1a.publish(new ModuleStopEvent(this));
+        app1.publish(new ModuleStopEvent(this));
         Source source = (Source) app1a.getContext("source").getInstance(null);
         assertEquals(target, source.getTarget());
         source.getTarget().getString();
@@ -97,11 +98,11 @@
         RuntimeContext runtime = createScenario2Runtime();
         CompositeContext root = runtime.getRootContext();
         CompositeContext app1 = (CompositeContext) root.getContext("app1");
-        app1.fireEvent(EventContext.MODULE_START, null);
+        app1.publish(new ModuleStartEvent(this));
         CompositeContext app1b = (CompositeContext) app1.getContext("app1b");
-        app1b.fireEvent(EventContext.MODULE_START, null);
+        app1b.publish(new ModuleStartEvent(this));
         CompositeContext app1a = (CompositeContext) app1.getContext("app1a");
-        app1a.fireEvent(EventContext.MODULE_START, null);
+        app1a.publish(new ModuleStartEvent(this));
         Target target = (Target) app1b.getContext("target.ep").getInstance(null);
         assertNotNull(target);
         Source source = (Source) app1a.getContext("source").getInstance(null);
@@ -119,14 +120,14 @@
         SystemCompositeContext system = runtime.getSystemContext();
 
         CompositeContext system2 = (CompositeContext) system.getContext("system2");
-        system2.fireEvent(EventContext.MODULE_START, null);
+        system2.publish(new ModuleStartEvent(this));
         Target target = (Target) system2.getContext("target.ep").getInstance(null);
         assertNotNull(target);
 
         CompositeContext system1 = (CompositeContext) system.getContext("system1");
-        system1.fireEvent(EventContext.MODULE_START, null);
+        system1.publish(new ModuleStartEvent(this));
         CompositeContext system1a = (CompositeContext) system1.getContext("system1a");
-        system1a.fireEvent(EventContext.MODULE_START, null);
+        system1a.publish(new ModuleStartEvent(this));
 
         Source source = (Source) system1a.getContext("source").getInstance(null);
         assertEquals(target, source.getTarget());
@@ -142,11 +143,11 @@
         RuntimeContext runtime = createScenario4Runtime();
         SystemCompositeContext system = runtime.getSystemContext();
         CompositeContext system1 = (CompositeContext) system.getContext("system1");
-        system1.fireEvent(EventContext.MODULE_START, null);
+        system1.publish(new ModuleStartEvent(this));
         Target target = (Target) system1.getContext("target").getInstance(null);
         assertNotNull(target);
         CompositeContext system1a = (CompositeContext) system1.getContext("system1a");
-        system1a.fireEvent(EventContext.MODULE_START, null);
+        system1a.publish(new ModuleStartEvent(this));
 
         Source source = (Source) system1a.getContext("source").getInstance(null);
         assertEquals(target, source.getTarget());
@@ -162,11 +163,11 @@
         RuntimeContext runtime = createScenario5Runtime();
         SystemCompositeContext system = runtime.getSystemContext();
         CompositeContext system1 = (CompositeContext) system.getContext("system1");
-        system1.fireEvent(EventContext.MODULE_START, null);
+        system1.publish(new ModuleStartEvent(this));
         Target target = (Target) system.getContext("target").getInstance(null);
         assertNotNull(target);
         CompositeContext system1a = (CompositeContext) system1.getContext("system1a");
-        system1a.fireEvent(EventContext.MODULE_START, null);
+        system1a.publish(new ModuleStartEvent(this));
 
         Source source = (Source) system1a.getContext("source").getInstance(null);
         assertEquals(target, source.getTarget());
@@ -202,7 +203,7 @@
         app1Component.getModuleImplementation().getComponents().add(app1aComponent);
         CompositeContext root = runtime.getRootContext();
         root.registerModelObject(app1Component);
-        system.fireEvent(EventContext.MODULE_START, null);
+        system.publish(new ModuleStartEvent(this));
         return runtime;
     }
 
@@ -251,7 +252,7 @@
         Component source = MockFactory.createSystemComponent("source", Source.class, AutowireSourceImpl.class, Scope.MODULE);
         system1aComponent.getModuleImplementation().getComponents().add(source);
         system.registerModelObject(system1Component);
-        system.fireEvent(EventContext.MODULE_START, null);
+        system.publish(new ModuleStartEvent(this));
         return runtime;
     }
 
@@ -269,7 +270,7 @@
         Component source = MockFactory.createSystemComponent("source", Source.class, AutowireSourceImpl.class, Scope.MODULE);
         system1aComponent.getModuleImplementation().getComponents().add(source);
         system.registerModelObject(system1Component);
-        system.fireEvent(EventContext.MODULE_START, null);
+        system.publish(new ModuleStartEvent(this));
         return runtime;
     }
 
@@ -287,7 +288,7 @@
         Component source = MockFactory.createSystemComponent("source", Source.class, AutowireSourceImpl.class, Scope.MODULE);
         system1aComponent.getModuleImplementation().getComponents().add(source);
         system.registerModelObject(system1Component);
-        system.fireEvent(EventContext.MODULE_START, null);
+        system.publish(new ModuleStartEvent(this));
         return runtime;
     }
 

Modified: incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/context/CompositeNestingTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/context/CompositeNestingTestCase.java?rev=393369&r1=393368&r2=393369&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/context/CompositeNestingTestCase.java (original)
+++ incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/context/CompositeNestingTestCase.java Tue Apr 11 19:36:42 2006
@@ -16,7 +16,7 @@
 import junit.framework.Assert;
 import junit.framework.TestCase;
 import org.apache.tuscany.core.context.CompositeContext;
-import org.apache.tuscany.core.context.EventContext;
+import org.apache.tuscany.core.context.event.ModuleStartEvent;
 import org.apache.tuscany.core.mock.MockFactory;
 import org.apache.tuscany.core.mock.component.Source;
 import org.apache.tuscany.core.mock.component.Target;
@@ -40,15 +40,15 @@
         runtime.getSystemContext().registerModelObject(child1);
         CompositeContext child1Ctx = (CompositeContext) runtime.getSystemContext().getContext("child1");
         Assert.assertNotNull(child1Ctx);
-        child1Ctx.fireEvent(EventContext.MODULE_START, null);
+        child1Ctx.publish(new ModuleStartEvent(this));
         analyzeLeafComponents(child1Ctx);
         CompositeContext child2Ctx = (CompositeContext) child1Ctx.getContext("child2");
         Assert.assertNotNull(child2Ctx);
-        child2Ctx.fireEvent(EventContext.MODULE_START, null);
+        child2Ctx.publish(new ModuleStartEvent(this));
         analyzeLeafComponents(child2Ctx);
         CompositeContext child3Ctx = (CompositeContext) child2Ctx.getContext("child3");
         Assert.assertNotNull(child3Ctx);
-        child3Ctx.fireEvent(EventContext.MODULE_START, null);
+        child3Ctx.publish(new ModuleStartEvent(this));
         analyzeLeafComponents(child3Ctx);
         
         Assert.assertNull(child1Ctx.getContext("child3")); // sanity check
@@ -63,15 +63,15 @@
         runtime.getRootContext().registerModelObject(child1);
         CompositeContext child1Ctx = (CompositeContext) runtime.getRootContext().getContext("child1");
         Assert.assertNotNull(child1Ctx);
-        child1Ctx.fireEvent(EventContext.MODULE_START, null);
+        child1Ctx.publish(new ModuleStartEvent(this));
         analyzeLeafComponents(child1Ctx);
         CompositeContext child2Ctx = (CompositeContext) child1Ctx.getContext("child2");
         Assert.assertNotNull(child2Ctx);
-        child2Ctx.fireEvent(EventContext.MODULE_START, null);
+        child2Ctx.publish(new ModuleStartEvent(this));
         analyzeLeafComponents(child2Ctx);
         CompositeContext child3Ctx = (CompositeContext) child2Ctx.getContext("child3");
         Assert.assertNotNull(child3Ctx);
-        child3Ctx.fireEvent(EventContext.MODULE_START, null);
+        child3Ctx.publish(new ModuleStartEvent(this));
         analyzeLeafComponents(child3Ctx);
         
         Assert.assertNull(child1Ctx.getContext("child3")); // sanity check

Modified: incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/context/IntraCompositeWireTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/context/IntraCompositeWireTestCase.java?rev=393369&r1=393368&r2=393369&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/context/IntraCompositeWireTestCase.java (original)
+++ incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/context/IntraCompositeWireTestCase.java Tue Apr 11 19:36:42 2006
@@ -15,9 +15,10 @@
 
 import junit.framework.Assert;
 import junit.framework.TestCase;
-import org.apache.tuscany.core.context.EventContext;
 import org.apache.tuscany.core.context.AtomicContext;
 import org.apache.tuscany.core.context.SystemCompositeContext;
+import org.apache.tuscany.core.context.event.ModuleStartEvent;
+import org.apache.tuscany.core.context.event.ModuleStopEvent;
 import org.apache.tuscany.core.mock.MockConfigContext;
 import org.apache.tuscany.core.mock.MockFactory;
 import org.apache.tuscany.core.mock.component.Source;
@@ -37,7 +38,7 @@
         SystemCompositeContext context = createContext();
         context.start();
         context.registerModelObject(MockFactory.createSystemModuleWithWiredComponents("system.module",Scope.MODULE, Scope.MODULE));
-        context.fireEvent(EventContext.MODULE_START, null);
+        context.publish(new ModuleStartEvent(this));
         Source source = (Source) ((AtomicContext) context.getContext("source")).getTargetInstance();
         Assert.assertNotNull(source);
         Target targetRef = source.getTarget();
@@ -45,7 +46,7 @@
         Target target = (Target) ((AtomicContext) context.getContext("target")).getTargetInstance();
         Assert.assertSame(target, targetRef);
         Assert.assertSame(target, source.getTarget());
-        context.fireEvent(EventContext.MODULE_STOP, null);
+        context.publish(new ModuleStopEvent(this));
         context.stop();
     }
 
@@ -53,7 +54,7 @@
         SystemCompositeContext context = createContext();
         context.start();
         context.registerModelObject(MockFactory.createSystemModuleWithWiredComponents("system.module",Scope.INSTANCE, Scope.MODULE));
-        context.fireEvent(EventContext.MODULE_START, null);
+        context.publish(new ModuleStartEvent(this));
         Source source = (Source) ((AtomicContext) context.getContext("source")).getTargetInstance();
         Assert.assertNotNull(source);
         Target targetRef = source.getTarget();
@@ -62,7 +63,7 @@
         Target target = (Target) ((AtomicContext) context.getContext("target")).getTargetInstance();
         Assert.assertSame(target, targetRef);
         Assert.assertSame(target, source.getTarget());
-        context.fireEvent(EventContext.MODULE_STOP, null);
+        context.publish(new ModuleStopEvent(this));
         context.stop();
     }
 
@@ -70,7 +71,7 @@
         SystemCompositeContext context = createContext();
         context.start();
         context.registerModelObject(MockFactory.createSystemModuleWithWiredComponents("system.module",Scope.MODULE, Scope.INSTANCE));
-        context.fireEvent(EventContext.MODULE_START, null);
+        context.publish(new ModuleStartEvent(this));
         Source source = (Source) ((AtomicContext) context.getContext("source")).getTargetInstance();
         Assert.assertNotNull(source);
         Target targetRef = source.getTarget();
@@ -81,7 +82,7 @@
         // should be the same since the module scope component was alreadyy created and the stateless
         // component will be "attached" to it
         Assert.assertSame(source.getTarget(), source2.getTarget());
-        context.fireEvent(EventContext.MODULE_STOP, null);
+        context.publish(new ModuleStopEvent(this));
         context.stop();
     }
 
@@ -89,7 +90,7 @@
         SystemCompositeContext context = createContext();
         context.start();
         context.registerModelObject(MockFactory.createSystemModuleWithWiredComponents("system.module",Scope.MODULE, Scope.MODULE));
-        context.fireEvent(EventContext.MODULE_START, null);
+        context.publish(new ModuleStartEvent(this));
         Source source = (Source) ((AtomicContext) context.getContext("source")).getTargetInstance();
         Assert.assertNotNull(source);
         Target target = (Target) ((AtomicContext) context.getContext("target")).getTargetInstance();

Modified: incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/context/SystemCompositeComponentContextTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/context/SystemCompositeComponentContextTestCase.java?rev=393369&r1=393368&r2=393369&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/context/SystemCompositeComponentContextTestCase.java (original)
+++ incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/context/SystemCompositeComponentContextTestCase.java Tue Apr 11 19:36:42 2006
@@ -17,8 +17,9 @@
 import junit.framework.TestCase;
 import org.apache.tuscany.core.builder.ContextFactoryBuilder;
 import org.apache.tuscany.core.context.CompositeContext;
-import org.apache.tuscany.core.context.EventContext;
 import org.apache.tuscany.core.context.QualifiedName;
+import org.apache.tuscany.core.context.event.ModuleStartEvent;
+import org.apache.tuscany.core.context.event.ModuleStopEvent;
 import org.apache.tuscany.core.context.impl.EventContextImpl;
 import org.apache.tuscany.core.mock.MockConfigContext;
 import org.apache.tuscany.core.mock.MockFactory;
@@ -52,9 +53,9 @@
         EntryPoint ep = MockFactory.createEPSystemBinding("TestService1EP", ModuleScopeSystemComponent.class, "TestService1", component);
         childContext.registerModelObject(component);
         childContext.registerModelObject(ep);
-        childContext.fireEvent(EventContext.MODULE_START, null);
+        childContext.publish(new ModuleStartEvent(this));
         Assert.assertNotNull(system.getContext("system.child").getInstance(new QualifiedName("./TestService1EP")));
-        childContext.fireEvent(EventContext.MODULE_STOP, null);
+        childContext.publish(new ModuleStopEvent(this));
     }
 
     public void testAutowireRegisterBeforeStart() throws Exception {
@@ -63,7 +64,7 @@
         system.registerModelObject(component);
         system.registerModelObject(ep);
         system.start();
-        system.fireEvent(EventContext.MODULE_START, null);
+        system.publish(new ModuleStartEvent(this));
         Assert.assertSame(system.getContext("TestService1EP").getInstance(null), system.resolveInstance(ModuleScopeSystemComponent.class));
     }
 
@@ -71,7 +72,7 @@
         Component component = factory.createSystemComponent("TestService1", ModuleScopeSystemComponent.class, ModuleScopeSystemComponentImpl.class, Scope.MODULE);
         system.registerModelObject(component);
         system.start();
-        system.fireEvent(EventContext.MODULE_START, null);
+        system.publish(new ModuleStartEvent(this));
         EntryPoint ep = MockFactory.createEPSystemBinding("TestService1EP", ModuleScopeSystemComponent.class, "TestService1", component);
         system.registerModelObject(ep);
         Assert.assertSame(system.getContext("TestService1EP").getInstance(null), system.resolveInstance(ModuleScopeSystemComponent.class));
@@ -80,13 +81,13 @@
     public void testAutowireModuleRegisterBeforeStart() throws Exception {
         system.registerModelObject(MockFactory.createSystemModule());
         system.start();
-        system.fireEvent(EventContext.MODULE_START, null);
+        system.publish(new ModuleStartEvent(this));
         Assert.assertSame(system.getContext("TestService1EP").getInstance(null), system.resolveInstance(ModuleScopeSystemComponent.class));
     }
 
     public void testAutowireModuleRegisterAfterStart() throws Exception {
         system.start();
-        system.fireEvent(EventContext.MODULE_START, null);
+        system.publish(new ModuleStartEvent(this));
         system.registerModelObject(MockFactory.createSystemModule());
         Assert.assertSame(system.getContext("TestService1EP").getInstance(null), system.resolveInstance(ModuleScopeSystemComponent.class));
     }
@@ -100,7 +101,7 @@
     }
 
     protected void tearDown() throws Exception {
-        system.fireEvent(EventContext.MODULE_STOP, null);
+        system.publish(new ModuleStopEvent(this));
         system.stop();
         super.tearDown();
     }

Modified: incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/context/SystemObjectRegistrationTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/context/SystemObjectRegistrationTestCase.java?rev=393369&r1=393368&r2=393369&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/context/SystemObjectRegistrationTestCase.java (original)
+++ incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/system/context/SystemObjectRegistrationTestCase.java Tue Apr 11 19:36:42 2006
@@ -19,8 +19,8 @@
 
 import junit.framework.TestCase;
 import org.apache.tuscany.core.config.ConfigurationException;
-import org.apache.tuscany.core.context.EventContext;
 import org.apache.tuscany.core.context.SystemCompositeContext;
+import org.apache.tuscany.core.context.event.ModuleStartEvent;
 import org.apache.tuscany.core.runtime.RuntimeContext;
 import org.apache.tuscany.core.runtime.RuntimeContextImpl;
 
@@ -42,7 +42,7 @@
         runtime = new RuntimeContextImpl();
         runtime.start();
         systemContext = runtime.getSystemContext();
-        systemContext.fireEvent(EventContext.MODULE_START, null);
+        systemContext.publish(new ModuleStartEvent(this));
     }
 
     protected void tearDown() throws Exception {

Modified: incubator/tuscany/java/sca/tomcat/src/main/java/org/apache/tuscany/tomcat/TuscanyContextListener.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sca/tomcat/src/main/java/org/apache/tuscany/tomcat/TuscanyContextListener.java?rev=393369&r1=393368&r2=393369&view=diff
==============================================================================
--- incubator/tuscany/java/sca/tomcat/src/main/java/org/apache/tuscany/tomcat/TuscanyContextListener.java (original)
+++ incubator/tuscany/java/sca/tomcat/src/main/java/org/apache/tuscany/tomcat/TuscanyContextListener.java Tue Apr 11 19:36:42 2006
@@ -36,8 +36,8 @@
 import org.apache.tuscany.core.config.ConfigurationException;
 import org.apache.tuscany.core.config.ModuleComponentConfigurationLoader;
 import org.apache.tuscany.core.context.CompositeContext;
-import org.apache.tuscany.core.context.EventContext;
 import org.apache.tuscany.core.context.EventException;
+import org.apache.tuscany.core.context.event.ModuleStartEvent;
 import org.apache.tuscany.core.runtime.RuntimeContext;
 import org.apache.tuscany.model.assembly.AssemblyFactory;
 import org.apache.tuscany.model.assembly.AssemblyModelContext;
@@ -90,7 +90,7 @@
         }
 
         try {
-            moduleContext.fireEvent(EventContext.MODULE_START, null);
+            moduleContext.publish(new ModuleStartEvent(this));
         } catch (EventException e) {
             log.error(sm.getString("context.moduleStartError"), e);
             // todo unload module component from runtime
@@ -139,7 +139,7 @@
 
     private void stopContext(Context ctx) {
         if (moduleContext!=null) {
-            moduleContext.fireEvent(EventContext.MODULE_START, null);
+            moduleContext.publish(new ModuleStartEvent(this));
         }
         // todo unload module component from runtime
     }