djencks     2004/07/18 18:32:25

  Modified:    modules/core/src/java/org/openejb/slsb
                        StatelessContainerBuilder.java
                        StatelessInstanceContext.java
                        StatelessInstanceContextFactory.java
                        StatelessInterceptorBuilder.java
  Log:

  Add timer support to session and mdbs. (entities still todo). Adapt to 
TransactionContextManager. Adapt to deploying with external plan.
  
  Revision  Changes    Path
  1.9       +19 -2     
openejb/modules/core/src/java/org/openejb/slsb/StatelessContainerBuilder.java
  
  Index: StatelessContainerBuilder.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/slsb/StatelessContainerBuilder.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- StatelessContainerBuilder.java    7 Jul 2004 22:17:35 -0000       1.8
  +++ StatelessContainerBuilder.java    18 Jul 2004 22:32:25 -0000      1.9
  @@ -50,14 +50,22 @@
   import java.lang.reflect.Method;
   import java.util.LinkedHashMap;
   
  +import javax.ejb.TimedObject;
  +import javax.ejb.Timer;
  +import javax.management.ObjectName;
  +
   import org.openejb.AbstractContainerBuilder;
   import org.openejb.EJBComponentType;
   import org.openejb.InterceptorBuilder;
  +import org.openejb.transaction.TransactionPolicy;
  +import org.openejb.transaction.ContainerPolicy;
  +import org.openejb.timer.TimerServiceImpl;
   import org.openejb.cache.InstancePool;
   import org.openejb.dispatch.InterfaceMethodSignature;
   import org.openejb.dispatch.MethodHelper;
   import org.openejb.dispatch.MethodSignature;
   import org.openejb.dispatch.VirtualOperation;
  +import org.openejb.dispatch.EJBTimeoutOperation;
   import org.openejb.slsb.dispatch.EJBActivateOperation;
   import org.openejb.slsb.dispatch.EJBPassivateOperation;
   import org.openejb.slsb.dispatch.SetSessionContextOperation;
  @@ -90,10 +98,13 @@
           // build the pool
           InstancePool pool = createInstancePool(instanceFactory);
   
  +        ObjectName timerName = getTimerName(beanClass);
  +
           if (buildContainer) {
  +            //TODO add timer to sig.
               return createContainer(signatures, contextFactory, interceptorBuilder, 
pool);
           } else {
  -            return createConfiguration(classLoader, signatures, contextFactory, 
interceptorBuilder, pool);
  +            return createConfiguration(classLoader, signatures, contextFactory, 
interceptorBuilder, pool, timerName);
           }
       }
   
  @@ -119,6 +130,12 @@
                   continue;
               }
               String name = beanMethod.getName();
  +            if (TimedObject.class.isAssignableFrom(beanClass)) {
  +                MethodSignature signature = new MethodSignature("ejbTimeout", new 
Class[]{Timer.class});
  +                vopMap.put(
  +                        MethodHelper.translateToInterface(signature)
  +                        , EJBTimeoutOperation.INSTANCE);
  +            }
               MethodSignature signature = new MethodSignature(beanMethod);
               if (name.equals("ejbActivate")) {
                   vopMap.put(
  
  
  
  1.6       +5 -3      
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.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- StatelessInstanceContext.java     7 Jul 2004 22:17:35 -0000       1.5
  +++ StatelessInstanceContext.java     18 Jul 2004 22:32:25 -0000      1.6
  @@ -55,6 +55,7 @@
   import org.apache.geronimo.transaction.UserTransactionImpl;
   import org.openejb.AbstractInstanceContext;
   import org.openejb.EJBOperation;
  +import org.openejb.timer.TimerServiceImpl;
   import org.openejb.dispatch.SystemMethodIndices;
   import org.openejb.proxy.EJBProxyFactory;
   
  @@ -67,8 +68,8 @@
       private final Object containerId;
       private final StatelessSessionContext sessionContext;
   
  -    public StatelessInstanceContext(Object containerId, SessionBean instance, 
EJBProxyFactory proxyFactory, UserTransactionImpl userTransaction, SystemMethodIndices 
systemMethodIndices, Interceptor systemChain, Set unshareableResources, Set 
applicationManagedSecurityResources) {
  -        super(systemMethodIndices, systemChain, unshareableResources, 
applicationManagedSecurityResources, instance, proxyFactory);
  +    public StatelessInstanceContext(Object containerId, SessionBean instance, 
EJBProxyFactory proxyFactory, UserTransactionImpl userTransaction, SystemMethodIndices 
systemMethodIndices, Interceptor systemChain, Set unshareableResources, Set 
applicationManagedSecurityResources, TimerServiceImpl timerService) {
  +        super(systemMethodIndices, systemChain, unshareableResources, 
applicationManagedSecurityResources, instance, proxyFactory, timerService);
           this.containerId = containerId;
           this.sessionContext = new StatelessSessionContext(this, userTransaction);
           setContextInvocation = systemMethodIndices.getSetContextInvocation(this, 
sessionContext);
  @@ -98,4 +99,5 @@
       public void setOperation(EJBOperation operation) {
           sessionContext.setState(operation);
       }
  +
   }
  
  
  
  1.7       +11 -4     
openejb/modules/core/src/java/org/openejb/slsb/StatelessInstanceContextFactory.java
  
  Index: StatelessInstanceContextFactory.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/slsb/StatelessInstanceContextFactory.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- StatelessInstanceContextFactory.java      7 Jul 2004 22:17:35 -0000       1.6
  +++ StatelessInstanceContextFactory.java      18 Jul 2004 22:32:25 -0000      1.7
  @@ -58,6 +58,7 @@
   import org.openejb.EJBInstanceFactory;
   import org.openejb.EJBInstanceFactoryImpl;
   import org.openejb.InstanceContextFactory;
  +import org.openejb.timer.TimerServiceImpl;
   import org.openejb.dispatch.InterfaceMethodSignature;
   import org.openejb.dispatch.SystemMethodIndices;
   import org.openejb.proxy.EJBProxyFactory;
  @@ -74,8 +75,9 @@
       private final Set unshareableResources;
       private final Set applicationManagedSecurityResources;
       private EJBProxyFactory proxyFactory;
  -    private SystemMethodIndices systemMethodIndices;
  +    private transient SystemMethodIndices systemMethodIndices;
       private Interceptor systemChain;
  +    private transient TimerServiceImpl timerService;
   
       public StatelessInstanceContextFactory(Object containerId, Class beanClass, 
UserTransactionImpl userTransaction, Set unshareableResources, Set 
applicationManagedSecurityResources) {
           this.containerId = containerId;
  @@ -93,8 +95,13 @@
           this.systemChain = systemChain;
       }
   
  -    public void setSignatures(InterfaceMethodSignature[] signatures) {
  +    public SystemMethodIndices setSignatures(InterfaceMethodSignature[] signatures) 
{
           systemMethodIndices = 
SystemMethodIndices.createSystemMethodIndices(signatures, "setSessionContext", 
SessionContext.class.getName(), "unsetSessionContext");
  +        return systemMethodIndices;
  +    }
  +
  +    public void setTimerService(TimerServiceImpl timerService) {
  +        this.timerService = timerService;
       }
   
       public InstanceContext newInstance() throws Exception {
  @@ -107,6 +114,6 @@
                   proxyFactory,
                   userTransaction,
                   systemMethodIndices, systemChain, unshareableResources,
  -                applicationManagedSecurityResources);
  +                applicationManagedSecurityResources, timerService);
       }
   }
  
  
  
  1.5       +3 -3      
openejb/modules/core/src/java/org/openejb/slsb/StatelessInterceptorBuilder.java
  
  Index: StatelessInterceptorBuilder.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/slsb/StatelessInterceptorBuilder.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- StatelessInterceptorBuilder.java  7 Jul 2004 22:17:35 -0000       1.4
  +++ StatelessInterceptorBuilder.java  18 Jul 2004 22:32:25 -0000      1.5
  @@ -67,7 +67,7 @@
   public class StatelessInterceptorBuilder extends AbstractInterceptorBuilder {
   
       public TwoChains buildInterceptorChains() {
  -        if (transactionManager == null) {
  +        if (transactionContextManager == null) {
               throw new IllegalStateException("Transaction manager must be set before 
building the interceptor chain");
           }
           if (instancePool == null) {
  @@ -84,7 +84,7 @@
               firstInterceptor = new ConnectionTrackingInterceptor(firstInterceptor, 
trackedConnectionAssociator);
           }
           Interceptor systemChain = firstInterceptor;
  -        firstInterceptor = new TransactionContextInterceptor(firstInterceptor, 
transactionManager, transactionPolicyManager);
  +        firstInterceptor = new TransactionContextInterceptor(firstInterceptor, 
transactionContextManager, transactionPolicyManager);
           if (securityEnabled) {
               firstInterceptor = new EJBSecurityInterceptor(firstInterceptor, 
containerId, permissionManager);
           }
  
  
  

Reply via email to