dain        2005/01/26 18:27:59

  Modified:    modules/core/src/java/org/openejb
                        AbstractInterceptorBuilder.java
                        EJBContainerConfiguration.java
                        GenericEJBContainer.java InterceptorBuilder.java
  Log:

  ENC is now passed around as a Map instead of a jndi Context.  This allows the 
ejb container to modify it and inject the kernel and class loader into 
references.
  Changed Stateless and MDB containers to use system chain for ejbCreate and 
ejbRemove invocations.
  Added test to verify that ejbRemove is propertly called from the cache code.
  
  Revision  Changes    Path
  1.11      +4 -12     
openejb/modules/core/src/java/org/openejb/AbstractInterceptorBuilder.java
  
  Index: AbstractInterceptorBuilder.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/AbstractInterceptorBuilder.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- AbstractInterceptorBuilder.java   21 Jan 2005 04:52:12 -0000      1.10
  +++ AbstractInterceptorBuilder.java   26 Jan 2005 23:27:58 -0000      1.11
  @@ -48,11 +48,10 @@
   package org.openejb;
   
   import javax.security.auth.Subject;
  +import javax.naming.Context;
   
  -import org.apache.geronimo.naming.java.ReadOnlyContext;
   import org.apache.geronimo.transaction.TrackedConnectionAssociator;
   import org.apache.geronimo.transaction.context.TransactionContextManager;
  -import org.apache.geronimo.kernel.Kernel;
   import org.openejb.cache.InstanceCache;
   import org.openejb.cache.InstanceFactory;
   import org.openejb.cache.InstancePool;
  @@ -70,7 +69,7 @@
       protected String ejbName;
       protected VirtualOperation[] vtable;
       protected Subject runAs;
  -    protected ReadOnlyContext componentContext;
  +    protected Context componentContext;
       protected TransactionPolicyManager transactionPolicyManager;
       protected PermissionManager permissionManager;
       protected boolean doAsCurrentCaller = false;
  @@ -82,13 +81,6 @@
       protected InstanceCache instanceCache;
       protected InstanceFactory instanceFactory;
   
  -    public void setKernel(Kernel kernel) {
  -        componentContext.setKernel(kernel);
  -    }
  -
  -    public void setClassLoader(ClassLoader classLoader) {
  -        componentContext.setClassLoader(classLoader);
  -    }
       public void setContainerId(Object containerId) {
           assert (containerId != null) : "containerId is null";
           this.containerId = containerId;
  @@ -108,7 +100,7 @@
           this.runAs = runAs;
       }
   
  -    public void setComponentContext(ReadOnlyContext componentContext) {
  +    public void setComponentContext(Context componentContext) {
           assert (componentContext != null) : "componentContext is null";
           this.componentContext = componentContext;
       }
  
  
  
  1.4       +3 -5      
openejb/modules/core/src/java/org/openejb/EJBContainerConfiguration.java
  
  Index: EJBContainerConfiguration.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/EJBContainerConfiguration.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- EJBContainerConfiguration.java    28 Oct 2004 21:21:25 -0000      1.3
  +++ EJBContainerConfiguration.java    26 Jan 2005 23:27:58 -0000      1.4
  @@ -50,14 +50,12 @@
   import java.util.Set;
   
   import javax.security.auth.Subject;
  +import javax.naming.Context;
   
  -import org.apache.geronimo.naming.java.ReadOnlyContext;
   import org.apache.geronimo.transaction.UserTransactionImpl;
   import org.openejb.transaction.TransactionPolicySource;
   
   /**
  - *
  - *
    * @version $Revision$ $Date$
    */
   public class EJBContainerConfiguration {
  @@ -72,7 +70,7 @@
       public String messageEndpointInterfaceName;
       public TransactionDemarcation txnDemarcation;
       public UserTransactionImpl userTransaction;
  -    public ReadOnlyContext componentContext;
  +    public Context componentContext;
       public Set unshareableResources;
       public TransactionPolicySource transactionPolicySource;
       public String contextId;
  
  
  
  1.32      +26 -3     
openejb/modules/core/src/java/org/openejb/GenericEJBContainer.java
  
  Index: GenericEJBContainer.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/GenericEJBContainer.java,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- GenericEJBContainer.java  24 Jan 2005 21:16:48 -0000      1.31
  +++ GenericEJBContainer.java  26 Jan 2005 23:27:58 -0000      1.32
  @@ -52,6 +52,7 @@
   import java.security.Permissions;
   import java.util.Iterator;
   import java.util.Set;
  +import java.util.Map;
   import javax.ejb.EJBHome;
   import javax.ejb.EJBLocalHome;
   import javax.ejb.EJBLocalObject;
  @@ -62,6 +63,7 @@
   import javax.security.jacc.PolicyConfiguration;
   import javax.security.jacc.PolicyConfigurationFactory;
   import javax.security.jacc.PolicyContextException;
  +import javax.naming.Context;
   
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
  @@ -80,6 +82,9 @@
   import org.apache.geronimo.transaction.TrackedConnectionAssociator;
   import org.apache.geronimo.transaction.UserTransactionImpl;
   import org.apache.geronimo.transaction.context.TransactionContextManager;
  +import org.apache.geronimo.naming.java.SimpleReadOnlyContext;
  +import org.apache.geronimo.naming.reference.KernelAwareReference;
  +import org.apache.geronimo.naming.reference.ClassLoaderAwareReference;
   import org.openejb.cache.InstancePool;
   import org.openejb.client.EJBObjectHandler;
   import org.openejb.client.EJBObjectProxy;
  @@ -123,6 +128,7 @@
                                  InstanceContextFactory contextFactory,
                                  InterceptorBuilder interceptorBuilder,
                                  InstancePool pool,
  +                               Map componentContext,
                                  UserTransactionImpl userTransaction,
                                  String[] jndiNames,
                                  String[] localJndiNames,
  @@ -137,6 +143,7 @@
   
           assert (containerId != null);
           assert (ejbName != null && ejbName.length() > 0);
  +        assert (componentContext != null);
           assert (signatures != null);
           assert (interceptorBuilder != null);
           assert (jndiNames != null);
  @@ -156,14 +163,28 @@
           this.proxyInfo = proxyInfo;
           this.proxyFactory = new EJBProxyFactory(this);
   
  +        // create ReadOnlyContext
  +        Context enc = null;
  +        if (componentContext != null) {
  +            for (Iterator iterator = componentContext.values().iterator(); 
iterator.hasNext();) {
  +                Object value = iterator.next();
  +                if (value instanceof KernelAwareReference) {
  +                    ((KernelAwareReference) value).setKernel(kernel);
  +                }
  +                if (value instanceof ClassLoaderAwareReference) {
  +                    ((ClassLoaderAwareReference) 
value).setClassLoader(classLoader);
  +                }
  +            }
  +            enc = new SimpleReadOnlyContext(componentContext);
  +        }
  +        interceptorBuilder.setComponentContext(enc);
  +
           // give the contextFactory a reference to the proxyFactory
           // after this there is no reason to hold on to a reference to the 
contextFactory
           contextFactory.setProxyFactory(proxyFactory);
           SystemMethodIndices systemMethodIndices = 
contextFactory.setSignatures(getSignatures());
   
           // build the interceptor chain
  -        interceptorBuilder.setKernel(kernel);
  -        interceptorBuilder.setClassLoader(classLoader);
           
interceptorBuilder.setTransactionContextManager(transactionContextManager);
           
interceptorBuilder.setTrackedConnectionAssociator(trackedConnectionAssociator);
           interceptorBuilder.setInstancePool(pool);
  @@ -430,6 +451,7 @@
           infoFactory.addAttribute("ContextFactory", 
InstanceContextFactory.class, true);
           infoFactory.addAttribute("InterceptorBuilder", 
InterceptorBuilder.class, true);
           infoFactory.addAttribute("Pool", InstancePool.class, true);
  +        infoFactory.addAttribute("componentContext", Map.class, true);
           infoFactory.addAttribute("UserTransaction", 
UserTransactionImpl.class, true);
           infoFactory.addAttribute("JndiNames", String[].class, true);
           infoFactory.addAttribute("LocalJndiNames", String[].class, true);
  @@ -466,6 +488,7 @@
               "ContextFactory",
               "InterceptorBuilder",
               "Pool",
  +            "componentContext",
               "UserTransaction",
               "JndiNames",
               "LocalJndiNames",
  
  
  
  1.10      +3 -8      
openejb/modules/core/src/java/org/openejb/InterceptorBuilder.java
  
  Index: InterceptorBuilder.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/InterceptorBuilder.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- InterceptorBuilder.java   21 Jan 2005 04:52:13 -0000      1.9
  +++ InterceptorBuilder.java   26 Jan 2005 23:27:58 -0000      1.10
  @@ -17,12 +17,11 @@
   package org.openejb;
   
   import javax.security.auth.Subject;
  +import javax.naming.Context;
   import java.io.Serializable;
   
  -import org.apache.geronimo.naming.java.ReadOnlyContext;
   import org.apache.geronimo.transaction.TrackedConnectionAssociator;
   import org.apache.geronimo.transaction.context.TransactionContextManager;
  -import org.apache.geronimo.kernel.Kernel;
   
   import org.openejb.cache.InstanceCache;
   import org.openejb.cache.InstanceFactory;
  @@ -36,10 +35,6 @@
    * @version $Revision$ $Date$
    */
   public interface InterceptorBuilder extends Serializable {
  -    void setKernel(Kernel kernel);
  -
  -    void setClassLoader(ClassLoader classLoader);
  -
       void setContainerId(Object contextId);
   
       void setEJBName(String ejbName);
  @@ -48,7 +43,7 @@
   
       void setRunAs(Subject runAs);
   
  -    void setComponentContext(ReadOnlyContext componentContext);
  +    void setComponentContext(Context componentContext);
   
       void setTransactionPolicyManager(TransactionPolicyManager 
transactionPolicyManager);
   
  
  
  

Reply via email to