Author: emmartins
Date: Tue Mar 17 12:06:43 2009
New Revision: 5100

Added:
trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/EventContextID.java trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/EventContextImpl.java
Removed:
trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/container/service/DeferredServiceStartedEvent.java
Modified:
trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/connector/server/RemoteSleeServiceImpl.java trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/container/deployment/interceptors/DefaultFireEventInterceptor.java trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/container/service/Service.java trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/resource/ResourceAdaptorEntity.java trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/resource/SleeEndpointImpl.java trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/activity/ActivityContext.java trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/activity/ActivityContextInterfaceImpl.java trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/DeferredActivityEndEvent.java trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/DeferredEvent.java trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/EventRouter.java trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/EventRouterActivity.java trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/EventRouterImpl.java trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/routingtask/EventRoutingTask.java trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/routingtask/NextSbbEntityFinder.java trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/facilities/TimerFacilityTimerTask.java trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/facilities/nullactivity/NullActivityContext.java trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/sbbentity/SbbEntity.java

Log:
slee 1.1 event context implementation, its storage in cmp and passing it in event handler method still needs to be handled

Modified: trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/connector/server/RemoteSleeServiceImpl.java
==============================================================================
--- trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/connector/server/RemoteSleeServiceImpl.java (original) +++ trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/connector/server/RemoteSleeServiceImpl.java Tue Mar 17 12:06:43 2009
@@ -8,6 +8,7 @@
 import javax.slee.UnrecognizedEventException;
 import javax.slee.connection.ExternalActivityHandle;
 import javax.slee.management.SleeState;
+import javax.slee.resource.EventFlags;

 import org.apache.log4j.Logger;
 import org.mobicents.slee.container.SleeContainer;
@@ -15,7 +16,6 @@
 import org.mobicents.slee.runtime.activity.ActivityContext;
 import org.mobicents.slee.runtime.activity.ActivityContextHandle;
 import org.mobicents.slee.runtime.activity.ActivityContextHandlerFactory;
-import org.mobicents.slee.runtime.eventrouter.DeferredEvent;
import org.mobicents.slee.runtime.facilities.nullactivity.NullActivityHandle;
 import org.mobicents.slee.runtime.transaction.SleeTransactionManager;

@@ -104,7 +104,7 @@
                                if(ac == null) {
                                        throw new 
UnrecognizedActivityException(activityHandle);
                                }
- ac.fireEvent(new DeferredEvent(eventType,event,ac,address,sleeContainer));
+                               
ac.fireEvent(eventType,event,address,null,EventFlags.NO_FLAGS);
                                rollback = false;
                        } catch (Throwable ex) {
                                log.error("Exception in fireEvent!", ex);

Modified: trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/container/deployment/interceptors/DefaultFireEventInterceptor.java
==============================================================================
--- trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/container/deployment/interceptors/DefaultFireEventInterceptor.java (original) +++ trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/container/deployment/interceptors/DefaultFireEventInterceptor.java Tue Mar 17 12:06:43 2009
@@ -19,13 +19,11 @@
 import javax.slee.Address;
 import javax.slee.EventTypeID;
 import javax.slee.SLEEException;
+import javax.slee.resource.EventFlags;

 import org.apache.log4j.Logger;
 import org.mobicents.slee.container.SleeContainer;
 import org.mobicents.slee.runtime.activity.ActivityContext;
-import org.mobicents.slee.runtime.activity.ActivityContextState;
-import org.mobicents.slee.runtime.eventrouter.DeferredEvent;
-import org.mobicents.slee.runtime.facilities.nullactivity.NullActivityContext;
 import org.mobicents.slee.runtime.sbb.SbbObjectState;
 import org.mobicents.slee.runtime.sbbentity.SbbEntity;
 import org.mobicents.slee.runtime.transaction.SleeTransactionManager;
@@ -103,7 +101,7 @@
EventTypeID eventID = sbbEntity.getSbbComponent().getDescriptor().getEventTypeID(eventName);

         // fire the event
- ac.fireEvent(new DeferredEvent(eventID,args[0],ac,(Address)args[2],sleeContainer)); + ac.fireEvent(eventID,args[0],(Address)args[2],null,EventFlags.NO_FLAGS);

         return null;
     }

Modified: trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/container/service/Service.java
==============================================================================
--- trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/container/service/Service.java (original) +++ trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/container/service/Service.java Tue Mar 17 12:06:43 2009
@@ -8,6 +8,7 @@
 import javax.slee.ServiceID;
 import javax.slee.management.ServiceState;
 import javax.slee.resource.ActivityAlreadyExistsException;
+import javax.slee.resource.EventFlags;
 import javax.transaction.SystemException;

 import org.apache.log4j.Logger;
@@ -45,6 +46,8 @@

        private final ServiceComponent serviceComponent;

+       private final ServiceID serviceID;
+       
        private final ServiceCacheData cacheData;
        
        /**
@@ -69,6 +72,7 @@
                        }

                        this.serviceComponent = serviceComponent;
+                       this.serviceID = serviceComponent.getServiceID();
this.defaultPriority = serviceComponent.getDescriptor().getMService().getDefaultPriority(); this.cacheData = sleeContainer.getCache().getServiceCacheData(serviceComponent.getServiceID());
                        if (initCachedData && !cacheData.exists()) {
@@ -102,7 +106,7 @@
         * was created.
         */
        public ServiceID getServiceID() {
-               return this.serviceComponent.getServiceID();
+               return this.serviceID;
        }

        /**
@@ -280,7 +284,7 @@
                                        .debug("starting service activity for "
                                                        + serviceComponent);
                }
- ac.fireEvent(new DeferredServiceStartedEvent(ac, new ServiceStartedEventImpl(getServiceID()),sleeContainer)); + ac.fireEvent(ServiceStartedEventImpl.EVENT_TYPE_ID,new ServiceStartedEventImpl(getServiceID()),null,serviceID,EventFlags.NO_FLAGS);
        }

        /**

Modified: trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/resource/ResourceAdaptorEntity.java
==============================================================================
--- trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/resource/ResourceAdaptorEntity.java (original) +++ trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/resource/ResourceAdaptorEntity.java Tue Mar 17 12:06:43 2009
@@ -9,9 +9,7 @@
 import javax.slee.InvalidStateException;
 import javax.slee.SLEEException;
 import javax.slee.ServiceID;
-import javax.slee.UnrecognizedEventException;
 import javax.slee.facilities.AlarmFacility;
-import javax.slee.facilities.FacilityException;
 import javax.slee.management.NotificationSource;
 import javax.slee.management.ResourceAdaptorEntityNotification;
 import javax.slee.management.ResourceAdaptorEntityState;
@@ -31,9 +29,9 @@
 import org.mobicents.slee.container.component.ResourceAdaptorComponent;
 import org.mobicents.slee.container.component.ResourceAdaptorTypeComponent;
import org.mobicents.slee.container.component.deployment.jaxb.descriptors.common.references.MEventTypeRef;
+import org.mobicents.slee.container.management.jmx.ResourceUsageMBeanImpl;
 import org.mobicents.slee.runtime.eventrouter.DeferredEvent;
 import org.mobicents.slee.runtime.facilities.AlarmFacilityImpl;
-import org.mobicents.slee.container.management.jmx.ResourceUsageMBeanImpl;

 /**
  *
@@ -471,14 +469,7 @@
         * @param deferredEvent
         */
        public void eventProcessingSucceed(DeferredEvent deferredEvent) {
-               FireableEventType eventType = null;
-               try {
- eventType = resourceAdaptorContext.getEventLookupFacility().getFireableEventType(deferredEvent.getEventTypeId());
-               } catch (Throwable e) {
-                       logger.error(e.getMessage(), e);
-               }
- object.eventProcessingSuccessful(deferredEvent.getActivityContextHandle().getActivityHandle(), eventType, deferredEvent.getEvent(), deferredEvent.getAddress(), deferredEvent.getReceivableService(), deferredEvent.getEventFlags());
-               
+ object.eventProcessingSuccessful(deferredEvent.getActivityContextHandle().getActivityHandle(), getFireableEventType(deferredEvent), deferredEvent.getEvent(), deferredEvent.getAddress(), getReceivableService(deferredEvent), deferredEvent.getEventFlags());
        }

        /**
@@ -490,12 +481,26 @@
         */
        public void eventProcessingFailed(DeferredEvent deferredEvent,
                        FailureReason failureReason) {
+ object.eventProcessingFailed(deferredEvent.getActivityContextHandle().getActivityHandle(), getFireableEventType(deferredEvent), deferredEvent.getEvent(), deferredEvent.getAddress(), getReceivableService(deferredEvent), deferredEvent.getEventFlags(),failureReason);
+       }
+       
+ private FireableEventType getFireableEventType(DeferredEvent deferredEvent) {
                FireableEventType eventType = null;
                try {
eventType = resourceAdaptorContext.getEventLookupFacility().getFireableEventType(deferredEvent.getEventTypeId());
                } catch (Throwable e) {
                        logger.error(e.getMessage(), e);
                }
- object.eventProcessingFailed(deferredEvent.getActivityContextHandle().getActivityHandle(), eventType, deferredEvent.getEvent(), deferredEvent.getAddress(), deferredEvent.getReceivableService(), deferredEvent.getEventFlags(),failureReason);
+               return eventType;
+       }
+       
+ private ReceivableService getReceivableService(DeferredEvent deferredEvent) {
+               ReceivableService receivableService = null;
+               try {
+ receivableService = resourceAdaptorContext.getServiceLookupFacility().getReceivableService(deferredEvent.getService());
+               } catch (Throwable e) {
+                       logger.error(e.getMessage(), e);
+               }
+               return receivableService;
        }
 }

Modified: trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/resource/SleeEndpointImpl.java
==============================================================================
--- trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/resource/SleeEndpointImpl.java (original) +++ trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/resource/SleeEndpointImpl.java Tue Mar 17 12:06:43 2009
@@ -25,7 +25,6 @@
 import org.mobicents.slee.runtime.activity.ActivityContextHandle;
 import org.mobicents.slee.runtime.activity.ActivityContextHandlerFactory;
 import org.mobicents.slee.runtime.eventrouter.ActivityEventQueueManager;
-import org.mobicents.slee.runtime.eventrouter.DeferredEvent;
 import org.mobicents.slee.runtime.transaction.SleeTransactionManager;
 import org.mobicents.slee.runtime.transaction.TransactionalAction;

@@ -352,7 +351,7 @@
                throw new UnrecognizedActivityException(handle);
        }
        else {                  
- ac.fireEvent(new DeferredEvent(eventType.getEventType(),event,ac,address,receivableService,eventFlags,sleeContainer)); + ac.fireEvent(eventType.getEventType(),event,address,receivableService.getService(),eventFlags);
        }
        }
        

Modified: trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/activity/ActivityContext.java
==============================================================================
--- trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/activity/ActivityContext.java (original) +++ trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/activity/ActivityContext.java Tue Mar 17 12:06:43 2009
@@ -9,7 +9,10 @@
 import java.util.TreeMap;
 import java.util.concurrent.ConcurrentHashMap;

+import javax.slee.Address;
+import javax.slee.EventTypeID;
 import javax.slee.SLEEException;
+import javax.slee.ServiceID;
 import javax.slee.facilities.TimerID;
 import javax.slee.resource.ActivityFlags;
 import javax.slee.resource.ActivityIsEndingException;
@@ -22,6 +25,7 @@
 import org.mobicents.slee.runtime.eventrouter.CommitDeferredEventAction;
 import org.mobicents.slee.runtime.eventrouter.DeferredActivityEndEvent;
 import org.mobicents.slee.runtime.eventrouter.DeferredEvent;
+import org.mobicents.slee.runtime.eventrouter.EventRouterActivity;
 import org.mobicents.slee.runtime.eventrouter.PendingAttachementsMonitor;
 import org.mobicents.slee.runtime.eventrouter.RollbackDeferredEventAction;
import org.mobicents.slee.runtime.facilities.ActivityContextNamingFacilityImpl;
@@ -334,50 +338,6 @@
        }

        /**
-        * Add the sbb entity id to our delivered set
-        *
-        * @param sbbEid --
-        *            sbb entity id to add to the set.
-        *
-        */
-/*
-       public void addToDeliveredSet(String sbbEid) {
-               Set ds = (Set) 
cacheData.getObject(NODE_MAP_KEY_DELIVERED_SBB_SET);
-               if (ds == null) {
-                       ds = new HashSet();
-                       cacheData.putObject(NODE_MAP_KEY_DELIVERED_SBB_SET,ds);
-               }
-               ds.add(sbbEid);
-       }
-       */
-       /**
-        * return true if the delviered set contains a given SbbEntity ID.
-        *
-        * @param sbbEntityId
-        * @return
-        */
-       /*
-       public Set getDeliveredSet() {
-               Set ds = (Set) 
cacheData.getObject(NODE_MAP_KEY_DELIVERED_SBB_SET);
-               return ds == null ? emptySet : ds;
-       }
-       private static final Set emptySet = new HashSet(0);
-       
-       public void clearDeliveredSet() {
-               Set ds = (Set) 
cacheData.removeObject(NODE_MAP_KEY_DELIVERED_SBB_SET);
-       }
-
-       public boolean removeFromDeliveredSet(String sbbEntityId) {
-               Set ds = (Set) 
cacheData.getObject(NODE_MAP_KEY_DELIVERED_SBB_SET);
-               if (ds != null) {
-                       return ds.remove(sbbEntityId);
-               }
-               else {
-                       return false;
-               }
-       }       
-*/
-       /**
         * attach an sbb entity to this AC.
         *
         * @param sbbEntity --
@@ -396,7 +356,7 @@

                boolean attached = cacheData.attachSbbEntity(sbbEntityId);
                if (attached) {
- PendingAttachementsMonitor pendingAttachementsMonitor = sleeContainer.getEventRouter().getEventRouterActivity(activityContextId).getPendingAttachementsMonitor(); + PendingAttachementsMonitor pendingAttachementsMonitor = getEventRouterActivity().getPendingAttachementsMonitor();
                        if (pendingAttachementsMonitor != null) {
                                try {
                                        
pendingAttachementsMonitor.txAttaching();
@@ -421,7 +381,7 @@

                cacheData.detachSbbEntity(sbbEntityId);
                
- PendingAttachementsMonitor pendingAttachementsMonitor = sleeContainer.getEventRouter().getEventRouterActivity(activityContextId).getPendingAttachementsMonitor(); + PendingAttachementsMonitor pendingAttachementsMonitor = getEventRouterActivity().getPendingAttachementsMonitor();
                if (pendingAttachementsMonitor != null) {
                        try {
                                pendingAttachementsMonitor.txDetaching();
@@ -643,24 +603,23 @@
        public static String dumpState() {
                return "\n+-- AC Timestamps Map size: "+timeStamps.size();
        }
-       
+               
        /**
         * Fires an event on this AC
-        *
-        * @param eventTypeID
+        * @param eventTypeId
         * @param event
         * @param address
-        * @param receivableService
+        * @param serviceID
         * @param eventFlags
         * @throws ActivityIsEndingException
-        * @throws SystemException
+        * @throws SLEEException
         */
- public void fireEvent(DeferredEvent dE) throws ActivityIsEndingException, SLEEException { + public void fireEvent(EventTypeID eventTypeId, Object event, Address address, ServiceID serviceID, int eventFlags) throws ActivityIsEndingException, SLEEException {
                if (getState() == ActivityContextState.ENDING) {
throw new ActivityIsEndingException(getActivityContextHandle().toString());
                }
                else {
-                       fireDeferredEvent(dE);                  
+ fireDeferredEvent(new DeferredEvent(eventTypeId,event,this,address,serviceID,eventFlags,getEventRouterActivity(),sleeContainer));
                }
        }
        
@@ -670,15 +629,13 @@
        public void end() {
                if (getState() == ActivityContextState.ACTIVE) {
                        setState(ActivityContextState.ENDING);
-                       fireDeferredEvent(new 
DeferredActivityEndEvent(this,sleeContainer));    
+ fireDeferredEvent(new DeferredActivityEndEvent(this,getEventRouterActivity(),sleeContainer));
                }       
        }
        
        private void fireDeferredEvent(DeferredEvent dE) {
                // put event as pending in ac event queue manager
-               ActivityEventQueueManager aeqm = sleeContainer.getEventRouter()
-                               .getEventRouterActivity(this.activityContextId)
-                               .getEventQueueManager();
+ ActivityEventQueueManager aeqm = dE.getEventRouterActivity().getEventQueueManager();
                if (aeqm != null) {
                        aeqm.pending(dE);
                        // add tx actions to commit or rollback
@@ -696,5 +653,9 @@
                } else {
                        throw new SLEEException("unable to find ACs event queue 
manager");
                }               
+       }
+       
+       private EventRouterActivity getEventRouterActivity() {
+ return sleeContainer.getEventRouter().getEventRouterActivity(this.activityContextId);
        }
 }

Modified: trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/activity/ActivityContextInterfaceImpl.java
==============================================================================
--- trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/activity/ActivityContextInterfaceImpl.java (original) +++ trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/activity/ActivityContextInterfaceImpl.java Tue Mar 17 12:06:43 2009
@@ -135,8 +135,7 @@
// The SLEE delivers the event to an SBB entity that stays attached once. The SLEE may deliver the // event to the same SBB entity more than once if it has been detached and then re -attached.
                        if 
(sleeContainer.getEventRouter().getEventRouterActivity(
-                                       
getActivityContext().getActivityContextId())
-                                       
.getSbbEntitiesThatHandledCurrentEvent().remove(sbbeId)) {
+ getActivityContext().getActivityContextId()).getCurrentEventContext().getSbbEntitiesThatHandledEvent().remove(sbbeId)) {
                                if (logger.isDebugEnabled()) {
                                        logger
                                                        .debug("Removed the SBB 
Entity ["

Modified: trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/DeferredActivityEndEvent.java
==============================================================================
--- trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/DeferredActivityEndEvent.java (original) +++ trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/DeferredActivityEndEvent.java Tue Mar 17 12:06:43 2009
@@ -1,5 +1,7 @@
 package org.mobicents.slee.runtime.eventrouter;

+import javax.slee.resource.EventFlags;
+
 import org.mobicents.slee.container.SleeContainer;
 import org.mobicents.slee.runtime.activity.ActivityContext;

@@ -11,7 +13,7 @@
  */
 public class DeferredActivityEndEvent extends DeferredEvent {

- public DeferredActivityEndEvent(ActivityContext ac, SleeContainer sleeContainer) { - super(ActivityEndEventImpl.EVENT_TYPE_ID,ActivityEndEventImpl.SINGLETON,ac,null,sleeContainer); + public DeferredActivityEndEvent(ActivityContext ac, EventRouterActivity era, SleeContainer sleeContainer) { + super(ActivityEndEventImpl.EVENT_TYPE_ID,ActivityEndEventImpl.SINGLETON,ac,null,null,EventFlags.NO_FLAGS,era,sleeContainer);
        }
 }

Modified: trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/DeferredEvent.java
==============================================================================
--- trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/DeferredEvent.java (original) +++ trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/DeferredEvent.java Tue Mar 17 12:06:43 2009
@@ -3,9 +3,9 @@
 import javax.slee.ActivityContextInterface;
 import javax.slee.Address;
 import javax.slee.EventTypeID;
+import javax.slee.ServiceID;
 import javax.slee.resource.EventFlags;
 import javax.slee.resource.FailureReason;
-import javax.slee.resource.ReceivableService;

 import org.mobicents.slee.container.SleeContainer;
 import org.mobicents.slee.runtime.activity.ActivityContext;
@@ -24,12 +24,13 @@
 public class DeferredEvent {
        
        private final SleeContainer sleeContainer;
+       private final EventRouterActivity era;
        private final EventTypeID eventTypeId;
        private final String acId;
        private final ActivityContextHandle ach;
        private final Object event;
        private final Address address;
-       private final ReceivableService receivableService;
+       private final ServiceID serviceID;
        private final int eventFlags;
                
        /**
@@ -38,19 +39,15 @@
        private ActivityContextInterface loadedAci;

        public DeferredEvent(EventTypeID eventTypeId, Object event,
-                       ActivityContext ac, Address address, SleeContainer 
sleeContainer) {
- this(eventTypeId,event,ac,address,null,EventFlags.NO_FLAGS,sleeContainer);
-       }
-       
-       public DeferredEvent(EventTypeID eventTypeId, Object event,
- ActivityContext ac, Address address, ReceivableService receivableService, int eventFlags,SleeContainer sleeContainer) { + ActivityContext ac, Address address, ServiceID serviceID, int eventFlags, EventRouterActivity era, SleeContainer sleeContainer) {
                this.sleeContainer = sleeContainer;
+               this.era = era;
                this.eventTypeId = eventTypeId;
                this.event = event;
                this.acId = ac.getActivityContextId();
                this.ach = ac.getActivityContextHandle();
                this.address = address;
-               this.receivableService = receivableService;
+               this.serviceID = serviceID;
                this.eventFlags = eventFlags;           
        }

@@ -90,8 +87,12 @@
                return eventFlags;
        }
        
-       public ReceivableService getReceivableService() {
-               return receivableService;
+       public ServiceID getService() {
+               return serviceID;
+       }
+       
+       public EventRouterActivity getEventRouterActivity() {
+               return era;
        }
        
        public ActivityContextInterface getLoadedAci() {

Added: trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/EventContextID.java
==============================================================================
--- (empty file)
+++ trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/EventContextID.java Tue Mar 17 12:06:43 2009
@@ -0,0 +1,47 @@
+package org.mobicents.slee.runtime.eventrouter;
+
+import java.io.Serializable;
+
+/**
+ *
+ * @author martins
+ *
+ */
+public class EventContextID implements Serializable {
+
+       /**
+        *
+        */
+       private static final long serialVersionUID = 1L;
+       
+       /**
+        * the id of the activity context related with the event context
+        */
+       private final String activityContextID;
+       
+       /**
+        * the event object related with the event context
+        */
+       private final Object eventObject;
+       
+       public EventContextID(String activityContextID, Object eventObject) {
+               this.activityContextID = activityContextID;
+               this.eventObject = eventObject;
+       }
+       
+       @Override
+       public int hashCode() {
+               return activityContextID.hashCode()*31+ eventObject.hashCode();
+       }
+       
+       @Override
+       public boolean equals(Object obj) {
+               if (obj != null && obj.getClass() == this.getClass()) {
+                       EventContextID other = (EventContextID) obj;
+ return ((this.eventObject.equals(other.eventObject)) && (this.activityContextID.equals(other.activityContextID)));
+               }
+               else {
+                       return false;
+               }
+       }
+}

Added: trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/EventContextImpl.java
==============================================================================
--- (empty file)
+++ trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/EventContextImpl.java Tue Mar 17 12:06:43 2009
@@ -0,0 +1,245 @@
+package org.mobicents.slee.runtime.eventrouter;
+
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.Set;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import javax.slee.ActivityContextInterface;
+import javax.slee.Address;
+import javax.slee.EventContext;
+import javax.slee.SLEEException;
+import javax.slee.ServiceID;
+import javax.slee.TransactionRequiredLocalException;
+import javax.transaction.SystemException;
+import javax.transaction.Transaction;
+
+import org.mobicents.slee.container.SleeContainer;
+import org.mobicents.slee.runtime.activity.ActivityContextInterfaceImpl;
+import org.mobicents.slee.runtime.transaction.TransactionalAction;
+
+/**
+ * Implementation of SLEE 1.1 Event Context. The usage of this class is not
+ * thread safe.
+ *
+ * @author martins
+ *
+ */
+public class EventContextImpl implements EventContext {
+
+       /**
+        * the event related with this context
+        */
+       private final DeferredEvent deferredEvent;
+
+       /**
+        * the transaction being used to deliver this event
+        */
+       private Transaction transaction;
+
+       /**
+        * the container
+        */
+       private final SleeContainer sleeContainer;
+
+       /**
+        * indicates if the context is suspended or not
+        */
+       private boolean suspended;
+
+       /**
+        * a queue of {...@link DeferredEvent}s barried due to this context 
become
+        * suspended
+        */
+       private LinkedList<DeferredEvent> barriedEvents;
+
+       /**
+        * the set containing all sbb entities that handled the event so far
+        */
+ private final Set<String> sbbEntitiesThatHandledEvent = new HashSet<String>();
+
+       /**
+        * default timeout for a context suspension, 1 min seems appropriate 
since
+        * this will block other events in the activity this could be 
configurable
+        * but since the app can specify its own timeout value ...
+        */
+       private static final int DEFAULT_TIMEOUT = 60000;
+
+       /**
+        * the timer used to control timeouts for event context suspension
+        */
+       private static final Timer timer = new Timer();
+
+       /**
+        * the timer task controlling the suspension timeout
+        */
+       private SuspensionTimerTask timerTask;
+
+       /**
+ * the id of this event context, set to the time when this instance was created, this id will be used
+        */
+       private final EventContextID eventContextID;
+       
+       public EventContextImpl(DeferredEvent deferredEvent,
+                       SleeContainer sleeContainer) {
+               this.deferredEvent = deferredEvent;
+               this.sleeContainer = sleeContainer;
+ this.eventContextID = new EventContextID(deferredEvent.getActivityContextId(),deferredEvent.getEvent());
+       }
+
+       public ActivityContextInterface getActivityContextInterface() {
+               // perhaps we should cache this aci if it becomes frequently 
called
+               return new ActivityContextInterfaceImpl(sleeContainer
+                               .getActivityContextFactory().getActivityContext(
+                                               
deferredEvent.getActivityContextId(), true));
+       }
+
+       public Address getAddress() {
+               return deferredEvent.getAddress();
+       }
+
+       public Object getEvent() {
+               return deferredEvent.getEvent();
+       }
+
+       public ServiceID getService() {
+               return deferredEvent.getService();
+       }
+
+       public boolean isSuspended() throws TransactionRequiredLocalException,
+                       SLEEException {
+               sleeContainer.getTransactionManager().mandateTransaction();
+               return suspended;
+       }
+
+       public void resumeDelivery() throws IllegalStateException,
+                       TransactionRequiredLocalException, SLEEException {
+               if (!isSuspended()) {
+                       throw new IllegalStateException();
+               } else {
+                       TransactionalAction action = new TransactionalAction() {
+                               public void execute() {
+                                       resume();
+                               }
+                       };
+                       try {
+                               
sleeContainer.getTransactionManager().addAfterCommitAction(action);
+                       } catch (SystemException e) {
+                               throw new SLEEException(
+                                               "unable to add tx action to resume 
event context", e);
+                       }
+               }
+       }
+
+       public void suspendDelivery() throws IllegalStateException,
+                       TransactionRequiredLocalException, SLEEException {
+               suspendDelivery(DEFAULT_TIMEOUT);
+       }
+
+       public void suspendDelivery(final int timeout)
+                       throws IllegalArgumentException, IllegalStateException,
+                       TransactionRequiredLocalException, SLEEException {
+               if (!isSuspended()) {
+                       throw new IllegalStateException();
+               } else {
+                       try {
+                               // get transaction
+                               final Transaction transaction = 
sleeContainer.getTransactionManager()
+                                               .getTransaction();
+                               // add action to suspend only after commit
+                               TransactionalAction action = new 
TransactionalAction() {
+                                       public void execute() {
+                                               suspend(timeout,transaction);
+                                       }
+                               };
+                               
sleeContainer.getTransactionManager().addAfterCommitAction(action);
+                       } catch (SystemException e) {
+                               throw new SLEEException(
+                                               "unable to suspend event 
context", e);
+                       }
+               }
+       }
+
+       // ---
+
+       /**
+        * the real logic to suspend the event context
+        */
+       private void suspend(final int timeout, final Transaction transaction) {
+               
+               // create runnable to suspend the event context
+               Runnable runnable = new Runnable() {
+                       public void run() {                             
+                               // put a barrier in the event queue manager for 
this activity, to
+                               // freeze the event routing on this activity at 
that level
+ deferredEvent.getEventRouterActivity().getEventQueueManager().createBarrier(transaction);
+                               // init queue to store events about to be 
routed (after this one),
+                               // which may have passed the barrier
+                               barriedEvents = new LinkedList<DeferredEvent>();
+                               // set state as suspended
+                               suspended = true;
+                               // schedule timer task
+                               timerTask = new SuspensionTimerTask();
+                               // schedule task in timer
+                               timer.schedule(timerTask, 
System.currentTimeMillis() + timeout);
+                       }
+               };
+               // run it using the activity executor service to avoid thread 
concurrency
+ deferredEvent.getEventRouterActivity().getExecutorService().execute(runnable);
+       }
+       
+       /**
+        * the real logic to resume the event context
+        */
+       private void resume() {
+               
+               final EventRouter eventRouter = sleeContainer.getEventRouter();
+               final EventContextImpl eventContextImpl = this;
+               // create runnable to resume the event context
+               Runnable runnable = new Runnable() {
+                       public void run() {
+                               // cancel timer task
+                               timerTask.cancel();
+                               timerTask = null;
+ // send events frozen to event router again, will be processed only after this one ends
+                               for (DeferredEvent deferredEvent : 
barriedEvents) {
+                                       eventRouter.routeEvent(deferredEvent);
+                               }
+                               barriedEvents = null;
+                               // remove barrier on activity event queue
+ deferredEvent.getEventRouterActivity().getEventQueueManager().removeBarrier(transaction);
+                               // remove suspension
+                               suspended = false;
+                               // continue routing the event related with this 
context
+                               
eventRouter.resumeEventContext(eventContextImpl);                               
+                       }
+               };
+               // run it using the activity executor service to avoid thread 
concurrency
+ deferredEvent.getEventRouterActivity().getExecutorService().execute(runnable);
+       }
+
+       public void barrierEvent(DeferredEvent deferredEvent) {
+               barriedEvents.add(deferredEvent);               
+       }
+
+       public DeferredEvent getDeferredEvent() {
+               return deferredEvent;
+       }
+
+       public Set<String> getSbbEntitiesThatHandledEvent() {
+               return sbbEntitiesThatHandledEvent;
+       }
+
+       public EventContextID getEventContextID() {
+               return eventContextID;
+       }
+       
+       private class SuspensionTimerTask extends TimerTask {
+               @Override
+               public void run() {
+                       resume();
+               }
+       }
+       
+}

Modified: trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/EventRouter.java
==============================================================================
--- trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/EventRouter.java (original) +++ trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/EventRouter.java Tue Mar 17 12:06:43 2009
@@ -23,6 +23,15 @@
         * @param dE
         */
        public void routeEvent(DeferredEvent dE);
+       
+       /**
+ * Requests the routing of a {...@link DeferredEvent} to be resumed, after it's + * suspension finished. This operation will be run in the same thread, which
+        * means it must be invoked from the activity executor service
+        *
+        * @param eventContextImpl
+        */
+       public void resumeEventContext(EventContextImpl eventContextImpl);

        /**
* The activity has started so the event router may init related runtime resources
@@ -46,5 +55,7 @@
         */
        public void config(int eventRouterExecutors,
                        boolean monitoringUncommittedAcAttachs);
+
+       

 }

Modified: trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/EventRouterActivity.java
==============================================================================
--- trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/EventRouterActivity.java (original) +++ trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/EventRouterActivity.java Tue Mar 17 12:06:43 2009
@@ -1,7 +1,5 @@
 package org.mobicents.slee.runtime.eventrouter;

-import java.util.HashSet;
-import java.util.Set;
 import java.util.concurrent.ExecutorService;

 import org.mobicents.slee.container.SleeContainer;
@@ -29,15 +27,14 @@
        private final PendingAttachementsMonitor pendingAttachementsMonitor;
        
        /**
- * the set containing all sbb entities that handled the current event being routed
+        * the event context for the event currently being routed
         */
-       private final Set<String> sbbEntitiesThatHandledCurrentEvent;
+       private EventContextImpl currentEventContext;
        
public EventRouterActivity(String acId, PendingAttachementsMonitor pendingAttachementsMonitor, SleeContainer sleeContainer) {
                this.acId = acId;
this.eventQueueManager = new ActivityEventQueueManager(acId,sleeContainer);
                this.pendingAttachementsMonitor = pendingAttachementsMonitor;
-               this.sbbEntitiesThatHandledCurrentEvent = new HashSet<String>();
        }
        
        public ActivityEventQueueManager getEventQueueManager() {
@@ -60,8 +57,12 @@
                return acId;
        }
        
-       public Set<String> getSbbEntitiesThatHandledCurrentEvent() {
-               return sbbEntitiesThatHandledCurrentEvent;
+       public EventContextImpl getCurrentEventContext() {
+               return currentEventContext;
+       }
+       
+       public void setCurrentEventContext(EventContextImpl 
currentEventContext) {
+               this.currentEventContext = currentEventContext;
        }
        
        @Override

Modified: trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/EventRouterImpl.java
==============================================================================
--- trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/EventRouterImpl.java (original) +++ trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/EventRouterImpl.java Tue Mar 17 12:06:43 2009
@@ -60,8 +60,7 @@
                }

                // execute routing of event
- final EventRouterActivity era = activities.get(de.getActivityContextId()); - era.getExecutorService().execute(new EventRoutingTask(container,de,era.getPendingAttachementsMonitor())); + de.getEventRouterActivity().getExecutorService().execute(new EventRoutingTask(container,de));

        }

@@ -120,5 +119,9 @@
        
        public EventRouterActivity getEventRouterActivity(String acId) {        
        
                return activities.get(acId);
+       }
+
+       public void resumeEventContext(EventContextImpl eventContextImpl) {
+               new EventRoutingTask(container,eventContextImpl).run();         
        }
 }

Modified: trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/routingtask/EventRoutingTask.java
==============================================================================
--- trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/routingtask/EventRoutingTask.java (original) +++ trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/routingtask/EventRoutingTask.java Tue Mar 17 12:06:43 2009
@@ -11,6 +11,7 @@
 import org.mobicents.slee.runtime.activity.ActivityContext;
 import org.mobicents.slee.runtime.eventrouter.ActivityEndEventImpl;
 import org.mobicents.slee.runtime.eventrouter.DeferredEvent;
+import org.mobicents.slee.runtime.eventrouter.EventContextImpl;
 import org.mobicents.slee.runtime.eventrouter.EventRouterThreadLocals;
 import org.mobicents.slee.runtime.eventrouter.PendingAttachementsMonitor;
 import org.mobicents.slee.runtime.eventrouter.SbbInvocationState;
@@ -56,16 +57,21 @@
        
        private final SleeContainer container;
        private final DeferredEvent de;
-       private PendingAttachementsMonitor pendingAttachementsMonitor;
+       private EventContextImpl eventContextImpl;
        
- public EventRoutingTask(SleeContainer container, DeferredEvent de, PendingAttachementsMonitor pendingAttachementsMonitor) {
+       public EventRoutingTask(SleeContainer container, DeferredEvent de) {
                super();
                this.de = de;
                this.container = container;
-               this.pendingAttachementsMonitor = pendingAttachementsMonitor;
        }

+ public EventRoutingTask(SleeContainer container, EventContextImpl eventContextImpl) {
+               this(container,eventContextImpl.getDeferredEvent());
+               this.eventContextImpl = eventContextImpl;
+       }
+       
        public void run() {
+ PendingAttachementsMonitor pendingAttachementsMonitor = de.getEventRouterActivity().getPendingAttachementsMonitor();
                if (pendingAttachementsMonitor != null) {
                        
pendingAttachementsMonitor.waitTillNoTxModifyingAttachs();
                }
@@ -93,17 +99,23 @@
                
                try {

-                       // INITIAL EVENT PROCESSING
- EventTypeComponent eventTypeComponent = container.getComponentRepositoryImpl().getComponentByID(de.getEventTypeId());
-                       if (logger.isDebugEnabled()) {
- logger.debug("Active services for event "+de.getEventTypeId()+": "+eventTypeComponent.getActiveServicesWhichDefineEventAsInitial());
-                       }
- for (ServiceComponent serviceComponent : eventTypeComponent.getActiveServicesWhichDefineEventAsInitial()) { - initialEventProcessor.processInitialEvents(serviceComponent, de, txMgr, this.container.getActivityContextFactory());
+                       if (eventContextImpl != null) {
+                               // event context not set, create it
+                               eventContextImpl = new 
EventContextImpl(de,container);
+                               
de.getEventRouterActivity().setCurrentEventContext(eventContextImpl);
+                               // do initial event processing
+ EventTypeComponent eventTypeComponent = container.getComponentRepositoryImpl().getComponentByID(de.getEventTypeId());
+                               if (logger.isDebugEnabled()) {
+ logger.debug("Active services for event "+de.getEventTypeId()+": "+eventTypeComponent.getActiveServicesWhichDefineEventAsInitial());
+                               }
+ for (ServiceComponent serviceComponent : eventTypeComponent.getActiveServicesWhichDefineEventAsInitial()) { + initialEventProcessor.processInitialEvents(serviceComponent, de, txMgr, this.container.getActivityContextFactory());
+                               }
                        }
                        
                        // For each SBB that is attached to this activity 
context.
                        boolean gotSbb = false;
+                       boolean eventContextSuspended = false;
                        do {
                                
                                String rootSbbEntityId = null;
@@ -142,17 +154,14 @@
                                        SbbEntity highestPrioritySbbEntity = 
null;
ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
                                        
-                                       Set<String> 
sbbEntitiesThatHandledCurrentEvent = container
-                                                       
.getEventRouter().getEventRouterActivity(
-                                                                       
de.getActivityContextId())
-                                                       
.getSbbEntitiesThatHandledCurrentEvent();
+ Set<String> sbbEntitiesThatHandledCurrentEvent = eventContextImpl.getSbbEntitiesThatHandledEvent();
                                        
                                        try {
                                        
ac = container.getActivityContextFactory().getActivityContext(de.getActivityContextId(),true);

                                                try {
- highestPrioritySbbEntity = nextSbbEntityFinder.next(ac, de.getEventTypeId()); + highestPrioritySbbEntity = nextSbbEntityFinder.next(ac, de.getEventTypeId(), sbbEntitiesThatHandledCurrentEvent);
                                                } catch (Exception e) {
logger.warn("Failed to find next sbb entity to deliver the event "+de+" in "+ac.getActivityContextId(), e);
                                                        
highestPrioritySbbEntity = null;
@@ -203,7 +212,7 @@
.debug("---> Invoking event handler: ac="+de.getActivityContextId()+" , sbbEntity="+sbbEntity.getSbbEntityId()+" , sbbObject="+sbbObject);
                                                                }
                                                                
-                                                               
sbbEntity.invokeEventHandler(de,ac);
+                                                               
sbbEntity.invokeEventHandler(de,ac,eventContextImpl);

                                                                if 
(logger.isDebugEnabled()) {
                                                                        logger
@@ -213,13 +222,12 @@
                                                                // check to see 
if the transaction is marked for
                                                                // rollback if 
it is then we need to get out of
                                                                // here soon as 
we can.
-                                                               
                                                                if 
(txMgr.getRollbackOnly()) {
                                                                        throw new 
Exception("The transaction is marked for rollback");
                                                                }

                                                                
sbbObject.setSbbInvocationState(SbbInvocationState.NOT_INVOKING);
-
+                                                               
                                                        } else {
                                                                if 
(logger.isDebugEnabled()) {
                                                                        logger
@@ -284,17 +292,23 @@
                                        // ac.DeliveredSet
                                        // is not in the cache.
                                        if (gotSbb) {
-                                               boolean skipAnotherLoop = false;
-                                               try {
-                                                       if 
(nextSbbEntityFinder.next(ac, de.getEventTypeId()) == null) {
+                                               if 
(eventContextImpl.isSuspended()) {
+                                                       gotSbb = false;
+                                               }
+                                               else {
+                                                       boolean skipAnotherLoop 
= false;
+                                                       try {
+ if (nextSbbEntityFinder.next(ac, de.getEventTypeId(),sbbEntitiesThatHandledCurrentEvent) == null) {
+                                                                       
skipAnotherLoop = true;
+                                                               }
+                                                       } catch (Exception e) {
                                                                skipAnotherLoop 
= true;
-                                                       }
-                                               } catch (Exception e) {
-                                                       skipAnotherLoop = true;
-                                               } finally {
-                                                       if (skipAnotherLoop) {
-                                                               gotSbb = false;
-                                                               
sbbEntitiesThatHandledCurrentEvent.clear();
+                                                       } finally {
+                                                               if 
(skipAnotherLoop) {
+                                                                       gotSbb 
= false;
+ // we got to the end of the event routing, remove the event context
+                                                                       
de.getEventRouterActivity().setCurrentEventContext(null);
+                                                               }
                                                        }
                                                }
                                        }

Modified: trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/routingtask/NextSbbEntityFinder.java
==============================================================================
--- trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/routingtask/NextSbbEntityFinder.java (original) +++ trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/eventrouter/routingtask/NextSbbEntityFinder.java Tue Mar 17 12:06:43 2009
@@ -41,12 +41,11 @@
         * @return
         */
        public SbbEntity next(ActivityContext ac,
-                       EventTypeID eventTypeID) {
+ EventTypeID eventTypeID,Set<String> sbbEntitiesThatHandledCurrentEvent) {

                String sbbEntityId = null;
                SbbEntity sbbEntity = null;

- Set<String> sbbEntitiesThatHandledCurrentEvent = sleeContainer.getEventRouter().getEventRouterActivity(ac.getActivityContextId()).getSbbEntitiesThatHandledCurrentEvent();
                // get the highest priority sbb from sbb entities attached to AC
for (Iterator iter = ac.getSortedCopyOfSbbAttachmentSet().iterator(); iter
                                .hasNext();) {

Modified: trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/facilities/TimerFacilityTimerTask.java
==============================================================================
--- trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/facilities/TimerFacilityTimerTask.java (original) +++ trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/facilities/TimerFacilityTimerTask.java Tue Mar 17 12:06:43 2009
@@ -28,11 +28,11 @@
 import javax.slee.facilities.TimerID;
 import javax.slee.facilities.TimerOptions;
 import javax.slee.facilities.TimerPreserveMissed;
+import javax.slee.resource.EventFlags;

 import org.jboss.logging.Logger;
 import org.mobicents.slee.container.SleeContainer;
 import org.mobicents.slee.runtime.activity.ActivityContext;
-import org.mobicents.slee.runtime.eventrouter.DeferredEvent;
 import org.mobicents.slee.runtime.transaction.SleeTransactionManager;

public class TimerFacilityTimerTask extends TimerTask implements Serializable {
@@ -313,7 +313,7 @@
                                                        + remainingRepetitions);
                                }
                                
- ac.fireEvent(new DeferredEvent(TimerEventImpl.EVENT_TYPE_ID,timerEvent,ac,this.address,sleeContainer)); + ac.fireEvent(TimerEventImpl.EVENT_TYPE_ID,timerEvent,this.address,null,EventFlags.NO_FLAGS);
                                
                                rb = false;
                        }

Modified: trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/facilities/nullactivity/NullActivityContext.java
==============================================================================
--- trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/facilities/nullactivity/NullActivityContext.java (original) +++ trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/facilities/nullactivity/NullActivityContext.java Tue Mar 17 12:06:43 2009
@@ -1,6 +1,9 @@
 package org.mobicents.slee.runtime.facilities.nullactivity;

+import javax.slee.Address;
+import javax.slee.EventTypeID;
 import javax.slee.SLEEException;
+import javax.slee.ServiceID;
 import javax.slee.TransactionRequiredLocalException;
 import javax.slee.facilities.TimerID;
 import javax.slee.nullactivity.NullActivity;
@@ -12,7 +15,6 @@
 import org.mobicents.slee.runtime.activity.ActivityContext;
 import org.mobicents.slee.runtime.activity.ActivityContextHandle;
 import org.mobicents.slee.runtime.activity.ActivityContextState;
-import org.mobicents.slee.runtime.eventrouter.DeferredEvent;
 import org.mobicents.slee.runtime.transaction.TransactionalAction;

 /**
@@ -234,10 +236,11 @@
                        }
                }
        }
-               
+       
        @Override
-       public void fireEvent(DeferredEvent de) throws 
ActivityIsEndingException,
-                       SLEEException {
+       public void fireEvent(EventTypeID eventTypeId, Object event,
+                       Address address, ServiceID serviceID, int eventFlags)
+                       throws ActivityIsEndingException, SLEEException {
                if (cacheData.getObject(NODE_MAP_KEY_NullACEnd2ndCheckKey) != 
null) {
                        // we are firing an event thus we need to cancel a 
possible implict end
                        
cacheData.removeObject(NODE_MAP_KEY_NullACEnd2ndCheckKey);
@@ -248,7 +251,7 @@
                                throw new SLEEException(e.getMessage(),e);
                        }
                }
-               super.fireEvent(de);
+               super.fireEvent(eventTypeId,event,address,serviceID,eventFlags);
        }
        
private final static SleeContainer sleeContainer = SleeContainer.lookupFromJndi();

Modified: trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/sbbentity/SbbEntity.java
==============================================================================
--- trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/sbbentity/SbbEntity.java (original) +++ trunk/servers/jain-slee/core/jar/src/main/java/org/mobicents/slee/runtime/sbbentity/SbbEntity.java Tue Mar 17 12:06:43 2009
@@ -73,6 +73,7 @@
 import org.mobicents.slee.runtime.activity.ActivityContextState;
 import org.mobicents.slee.runtime.cache.SbbEntityCacheData;
 import org.mobicents.slee.runtime.eventrouter.DeferredEvent;
+import org.mobicents.slee.runtime.eventrouter.EventContextImpl;
 import org.mobicents.slee.runtime.sbb.SbbConcrete;
 import org.mobicents.slee.runtime.sbb.SbbLocalObjectImpl;
 import org.mobicents.slee.runtime.sbb.SbbObject;
@@ -734,8 +735,11 @@
         * Actually invoke the event handler.
         *
         */
- public void invokeEventHandler(DeferredEvent sleeEvent, ActivityContext ac) throws Exception { + public void invokeEventHandler(DeferredEvent sleeEvent, ActivityContext ac, EventContextImpl eventContextImpl) throws Exception {

+               // FIXME event context
+               .
+               
                // Actually invoke the event handler.
                Method method = getEventHandlerMethod(sleeEvent);
                setServiceActivityFactory();

Reply via email to