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();