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;
       }
   }
  
  
  

Reply via email to