djencks 2005/02/14 13:32:31
Modified: modules/core/src/java/org/openejb/slsb
StatelessInstanceContext.java
StatelessSessionContext.java
Log:
implement the amazing rules on when getTimerService() and the TimerService
and Timer methods are available
Revision Changes Path
1.11 +5 -1
openejb/modules/core/src/java/org/openejb/slsb/StatelessInstanceContext.java
Index: StatelessInstanceContext.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/slsb/StatelessInstanceContext.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- StatelessInstanceContext.java 5 Feb 2005 02:36:25 -0000 1.10
+++ StatelessInstanceContext.java 14 Feb 2005 18:32:31 -0000 1.11
@@ -106,6 +106,10 @@
sessionContext.setState(operation);
}
+ public boolean setTimerState(EJBOperation operation) {
+ return sessionContext.setTimerState(operation);
+ }
+
public void ejbCreate() throws Throwable {
assert(getInstance() != null);
systemChain.invoke(ejbCreateInvocation);
1.7 +27 -1
openejb/modules/core/src/java/org/openejb/slsb/StatelessSessionContext.java
Index: StatelessSessionContext.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/slsb/StatelessSessionContext.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- StatelessSessionContext.java 1 Feb 2005 22:27:51 -0000 1.6
+++ StatelessSessionContext.java 14 Feb 2005 18:32:31 -0000 1.7
@@ -60,6 +60,7 @@
import org.openejb.EJBContextImpl;
import org.openejb.EJBInstanceContext;
import org.openejb.EJBOperation;
+import org.openejb.timer.TimerState;
import org.apache.geronimo.transaction.UserTransactionImpl;
import org.apache.geronimo.transaction.context.TransactionContextManager;
@@ -88,6 +89,13 @@
userTransaction.setOnline(false);
}
}
+
context.setTimerServiceAvailable(timerServiceAvailable[operation.getOrdinal()]);
+ }
+
+ public boolean setTimerState(EJBOperation operation) {
+ boolean oldTimerState = TimerState.getTimerState();
+
TimerState.setTimerState(timerMethodsAvailable[operation.getOrdinal()]);
+ return oldTimerState;
}
public MessageContext getMessageContext() throws IllegalStateException {
@@ -232,5 +240,23 @@
states[EJBOperation.BIZMETHOD.getOrdinal()] = BIZ_INTERFACE;
states[EJBOperation.ENDPOINT.getOrdinal()] = BIZ_WSENDPOINT;
states[EJBOperation.TIMEOUT.getOrdinal()] = EJBTIMEOUT;
+ }
+
+ private static final boolean timerServiceAvailable[] = new
boolean[EJBOperation.MAX_ORDINAL];
+
+ static {
+ timerServiceAvailable[EJBOperation.EJBCREATE.getOrdinal()] = true;
+ timerServiceAvailable[EJBOperation.EJBREMOVE.getOrdinal()] = true;
+ timerServiceAvailable[EJBOperation.BIZMETHOD.getOrdinal()] = true;
+ timerServiceAvailable[EJBOperation.ENDPOINT.getOrdinal()] = true;
+ timerServiceAvailable[EJBOperation.TIMEOUT.getOrdinal()] = true;
+ }
+
+ private static final boolean timerMethodsAvailable[] = new
boolean[EJBOperation.MAX_ORDINAL];
+
+ static {
+ timerMethodsAvailable[EJBOperation.BIZMETHOD.getOrdinal()] = true;
+ timerMethodsAvailable[EJBOperation.ENDPOINT.getOrdinal()] = true;
+ timerMethodsAvailable[EJBOperation.TIMEOUT.getOrdinal()] = true;
}
}