djencks     2005/03/15 00:27:03

  Modified:    modules/core/src/java/org/openejb/corba Adapter.java
                        AdapterEntity.java AdapterStateful.java
                        AdapterStateless.java CSSBean.java TSSBean.java
  Log:

  Make transaction policy mapping more generic and implement the 
no-distributed-transactions corba tx propagation polices.  CORBA operation name 
to method signature mapping is not yet really implemented
  
  Revision  Changes    Path
  1.7       +34 -10    
openejb/modules/core/src/java/org/openejb/corba/Adapter.java
  
  Index: Adapter.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/corba/Adapter.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Adapter.java      8 Mar 2005 04:08:26 -0000       1.6
  +++ Adapter.java      15 Mar 2005 05:27:03 -0000      1.7
  @@ -45,10 +45,12 @@
   package org.openejb.corba;
   
   import java.rmi.Remote;
  +import java.util.Map;
   import javax.rmi.CORBA.Tie;
  -import javax.rmi.CORBA.Util;
   
   import org.omg.CORBA.ORB;
  +import org.omg.CORBA.Policy;
  +import org.omg.CORBA.Any;
   import org.omg.CosNaming.NameComponent;
   import org.omg.CosNaming.NamingContext;
   import org.omg.CosNaming.NamingContextExt;
  @@ -58,9 +60,14 @@
   import org.omg.CosNaming.NamingContextPackage.NotFound;
   import org.omg.PortableServer.POA;
   import org.omg.PortableServer.Servant;
  -
  +import org.omg.PortableServer.LifespanPolicyValue;
  +import org.omg.PortableServer.RequestProcessingPolicyValue;
  +import org.omg.PortableServer.ServantRetentionPolicyValue;
  +import org.omg.PortableServer.IdAssignmentPolicyValue;
  +import org.omg.PortableServer.ImplicitActivationPolicyValue;
   import org.openejb.EJBContainer;
   import org.openejb.corba.util.TieLoader;
  +import org.openejb.corba.transaction.ServerTransactionPolicyFactory;
   import org.openejb.proxy.ProxyInfo;
   
   
  @@ -69,8 +76,9 @@
    */
   public abstract class Adapter implements RefGenerator {
   
  -    private final EJBContainer container;
  +    private final EJBContainer container;                                    
                    
       private final POA parentPOA;
  +    protected final POA homePOA;
       private final NamingContextExt initialContext;
       private final TieLoader tieLoader;
       private final byte[] home_id;
  @@ -82,9 +90,21 @@
           this.tieLoader = tieLoader;
           this.home_id = container.getContainerID().toString().getBytes();
   
  +        Any any = orb.create_any();
  +        any.insert_Value(container.getHomeTxPolicyConfig());
  +
           try {
  -            org.omg.CORBA.Object obj = 
orb.resolve_initial_references("NameService");
  -            initialContext = NamingContextExtHelper.narrow(obj);
  +            Policy[] policies = new Policy[]{
  +                
orb.create_policy(ServerTransactionPolicyFactory.POLICY_TYPE, any),
  +                
parentPOA.create_lifespan_policy(LifespanPolicyValue.TRANSIENT),
  +                
parentPOA.create_request_processing_policy(RequestProcessingPolicyValue.USE_ACTIVE_OBJECT_MAP_ONLY),
  +                
parentPOA.create_servant_retention_policy(ServantRetentionPolicyValue.RETAIN),
  +                
parentPOA.create_id_assignment_policy(IdAssignmentPolicyValue.USER_ID),
  +                
parentPOA.create_implicit_activation_policy(ImplicitActivationPolicyValue.NO_IMPLICIT_ACTIVATION),
  +            };
  +            homePOA = 
parentPOA.create_POA(container.getContainerID().toString(), 
parentPOA.the_POAManager(), policies);
  +
  +            homePOA.the_POAManager().activate();
   
   
               Servant servant = 
tieLoader.loadTieClass(container.getProxyInfo().getHomeInterface(),  
container.getClassLoader());
  @@ -95,9 +115,11 @@
                   ((Tie) servant).setTarget(remote);
               }
   
  -            parentPOA.activate_object_with_id(home_id, servant);
  -            homeReference = parentPOA.servant_to_reference(servant);
  +            homePOA.activate_object_with_id(home_id, servant);
  +            homeReference = homePOA.servant_to_reference(servant);
   
  +            org.omg.CORBA.Object obj = 
orb.resolve_initial_references("NameService");
  +            initialContext = NamingContextExtHelper.narrow(obj);
               String[] names = container.getJndiNames();
               for (int i = 0; i < names.length; i++) {
                   NameComponent[] nameComponent = 
initialContext.to_name(names[i]);
  @@ -118,6 +140,7 @@
           } catch (Exception e) {
               throw new CORBAException(e);
           }
  +
       }
   
       public EJBContainer getContainer() {
  @@ -155,7 +178,8 @@
                   }
               }
   
  -            parentPOA.deactivate_object(home_id);
  +            homePOA.deactivate_object(home_id);
  +            homePOA.destroy(true, true);
           } catch (Exception e) {
               throw new CORBAException(e);
           }
  
  
  
  1.7       +15 -9     
openejb/modules/core/src/java/org/openejb/corba/AdapterEntity.java
  
  Index: AdapterEntity.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/corba/AdapterEntity.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- AdapterEntity.java        12 Mar 2005 17:04:53 -0000      1.6
  +++ AdapterEntity.java        15 Mar 2005 05:27:03 -0000      1.7
  @@ -58,6 +58,7 @@
   import org.omg.CORBA.OBJECT_NOT_EXIST;
   import org.omg.CORBA.ORB;
   import org.omg.CORBA.Policy;
  +import org.omg.CORBA.Any;
   import org.omg.PortableServer.IdAssignmentPolicyValue;
   import org.omg.PortableServer.ImplicitActivationPolicyValue;
   import org.omg.PortableServer.LifespanPolicyValue;
  @@ -70,6 +71,7 @@
   
   import org.openejb.EJBContainer;
   import org.openejb.corba.util.TieLoader;
  +import org.openejb.corba.transaction.ServerTransactionPolicyFactory;
   import org.openejb.proxy.ProxyInfo;
   
   
  @@ -87,16 +89,20 @@
       public AdapterEntity(EJBContainer container, ORB orb, POA parentPOA, 
TieLoader tieLoader, Policy securityPolicy) throws CORBAException {
           super(container, orb, parentPOA, tieLoader);
   
  +        Any any = orb.create_any();
  +        any.insert_Value(container.getRemoteTxPolicyConfig());
  +
           try {
               Policy[] policies = new Policy[]{
                   securityPolicy,
  -                
parentPOA.create_lifespan_policy(LifespanPolicyValue.PERSISTENT),
  -                
parentPOA.create_request_processing_policy(RequestProcessingPolicyValue.USE_SERVANT_MANAGER),
  -                
parentPOA.create_servant_retention_policy(ServantRetentionPolicyValue.NON_RETAIN),
  -                
parentPOA.create_id_assignment_policy(IdAssignmentPolicyValue.USER_ID),
  -                
parentPOA.create_implicit_activation_policy(ImplicitActivationPolicyValue.NO_IMPLICIT_ACTIVATION),
  +                
orb.create_policy(ServerTransactionPolicyFactory.POLICY_TYPE, any),
  +                
homePOA.create_lifespan_policy(LifespanPolicyValue.PERSISTENT),
  +                
homePOA.create_request_processing_policy(RequestProcessingPolicyValue.USE_SERVANT_MANAGER),
  +                
homePOA.create_servant_retention_policy(ServantRetentionPolicyValue.NON_RETAIN),
  +                
homePOA.create_id_assignment_policy(IdAssignmentPolicyValue.USER_ID),
  +                
homePOA.create_implicit_activation_policy(ImplicitActivationPolicyValue.NO_IMPLICIT_ACTIVATION),
               };
  -            poa = 
parentPOA.create_POA(container.getContainerID().toString(), 
parentPOA.the_POAManager(), policies);
  +            poa = homePOA.create_POA(container.getContainerID().toString(), 
homePOA.the_POAManager(), policies);
               poa.set_servant_manager(new ObjectActivator());
   
               poa.the_POAManager().activate();
  @@ -115,8 +121,8 @@
       }
   
       public void stop() throws CORBAException {
  -        super.stop();
           poa.destroy(true, true);
  +        super.stop();
       }
   
       public org.omg.CORBA.Object genObjectReference(ProxyInfo proxyInfo) 
throws CORBAException {
  
  
  
  1.7       +15 -9     
openejb/modules/core/src/java/org/openejb/corba/AdapterStateful.java
  
  Index: AdapterStateful.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/corba/AdapterStateful.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- AdapterStateful.java      12 Mar 2005 17:04:53 -0000      1.6
  +++ AdapterStateful.java      15 Mar 2005 05:27:03 -0000      1.7
  @@ -58,6 +58,7 @@
   import org.omg.CORBA.OBJECT_NOT_EXIST;
   import org.omg.CORBA.ORB;
   import org.omg.CORBA.Policy;
  +import org.omg.CORBA.Any;
   import org.omg.PortableServer.IdAssignmentPolicyValue;
   import org.omg.PortableServer.ImplicitActivationPolicyValue;
   import org.omg.PortableServer.LifespanPolicyValue;
  @@ -70,6 +71,7 @@
   
   import org.openejb.EJBContainer;
   import org.openejb.corba.util.TieLoader;
  +import org.openejb.corba.transaction.ServerTransactionPolicyFactory;
   import org.openejb.proxy.ProxyInfo;
   
   
  @@ -87,16 +89,20 @@
       public AdapterStateful(EJBContainer container, ORB orb, POA parentPOA, 
TieLoader tieLoader, Policy securityPolicy) throws CORBAException {
           super(container, orb, parentPOA, tieLoader);
   
  +        Any any = orb.create_any();
  +        any.insert_Value(container.getRemoteTxPolicyConfig());
  +
           try {
               Policy[] policies = new Policy[]{
                   securityPolicy,
  -                
parentPOA.create_lifespan_policy(LifespanPolicyValue.TRANSIENT),
  -                
parentPOA.create_request_processing_policy(RequestProcessingPolicyValue.USE_SERVANT_MANAGER),
  -                
parentPOA.create_servant_retention_policy(ServantRetentionPolicyValue.NON_RETAIN),
  -                
parentPOA.create_id_assignment_policy(IdAssignmentPolicyValue.USER_ID),
  -                
parentPOA.create_implicit_activation_policy(ImplicitActivationPolicyValue.NO_IMPLICIT_ACTIVATION),
  +                
orb.create_policy(ServerTransactionPolicyFactory.POLICY_TYPE, any),
  +                
homePOA.create_lifespan_policy(LifespanPolicyValue.TRANSIENT),
  +                
homePOA.create_request_processing_policy(RequestProcessingPolicyValue.USE_SERVANT_MANAGER),
  +                
homePOA.create_servant_retention_policy(ServantRetentionPolicyValue.NON_RETAIN),
  +                
homePOA.create_id_assignment_policy(IdAssignmentPolicyValue.USER_ID),
  +                
homePOA.create_implicit_activation_policy(ImplicitActivationPolicyValue.NO_IMPLICIT_ACTIVATION),
               };
  -            poa = 
parentPOA.create_POA(container.getContainerID().toString(), 
parentPOA.the_POAManager(), policies);
  +            poa = homePOA.create_POA(container.getContainerID().toString(), 
homePOA.the_POAManager(), policies);
               poa.set_servant_manager(new ObjectActivator());
   
               poa.the_POAManager().activate();
  @@ -115,8 +121,8 @@
       }
   
       public void stop() throws CORBAException {
  -        super.stop();
           poa.destroy(true, true);
  +        super.stop();
       }
   
       public org.omg.CORBA.Object genObjectReference(ProxyInfo proxyInfo) 
throws CORBAException {
  
  
  
  1.7       +14 -9     
openejb/modules/core/src/java/org/openejb/corba/AdapterStateless.java
  
  Index: AdapterStateless.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/corba/AdapterStateless.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- AdapterStateless.java     12 Mar 2005 17:04:53 -0000      1.6
  +++ AdapterStateless.java     15 Mar 2005 05:27:03 -0000      1.7
  @@ -49,6 +49,7 @@
   
   import org.omg.CORBA.ORB;
   import org.omg.CORBA.Policy;
  +import org.omg.CORBA.Any;
   import org.omg.PortableServer.IdAssignmentPolicyValue;
   import org.omg.PortableServer.ImplicitActivationPolicyValue;
   import org.omg.PortableServer.LifespanPolicyValue;
  @@ -61,6 +62,7 @@
   
   import org.openejb.EJBContainer;
   import org.openejb.corba.util.TieLoader;
  +import org.openejb.corba.transaction.ServerTransactionPolicyFactory;
   import org.openejb.proxy.ProxyInfo;
   
   
  @@ -75,17 +77,20 @@
   
       public AdapterStateless(EJBContainer container, ORB orb, POA parentPOA, 
TieLoader tieLoader, Policy securityPolicy) throws CORBAException {
           super(container, orb, parentPOA, tieLoader);
  +        Any any = orb.create_any();
  +        any.insert_Value(container.getRemoteTxPolicyConfig());
   
           try {
               Policy[] policies = new Policy[]{
                   securityPolicy,
  -                
parentPOA.create_lifespan_policy(LifespanPolicyValue.TRANSIENT),
  -                
parentPOA.create_request_processing_policy(RequestProcessingPolicyValue.USE_ACTIVE_OBJECT_MAP_ONLY),
  -                
parentPOA.create_servant_retention_policy(ServantRetentionPolicyValue.RETAIN),
  -                
parentPOA.create_id_assignment_policy(IdAssignmentPolicyValue.USER_ID),
  -                
parentPOA.create_implicit_activation_policy(ImplicitActivationPolicyValue.NO_IMPLICIT_ACTIVATION),
  +                
orb.create_policy(ServerTransactionPolicyFactory.POLICY_TYPE, any),
  +                
homePOA.create_lifespan_policy(LifespanPolicyValue.TRANSIENT),
  +                
homePOA.create_request_processing_policy(RequestProcessingPolicyValue.USE_ACTIVE_OBJECT_MAP_ONLY),
  +                
homePOA.create_servant_retention_policy(ServantRetentionPolicyValue.RETAIN),
  +                
homePOA.create_id_assignment_policy(IdAssignmentPolicyValue.USER_ID),
  +                
homePOA.create_implicit_activation_policy(ImplicitActivationPolicyValue.NO_IMPLICIT_ACTIVATION),
               };
  -            poa = 
parentPOA.create_POA(container.getContainerID().toString(), 
parentPOA.the_POAManager(), policies);
  +            poa = homePOA.create_POA(container.getContainerID().toString(), 
homePOA.the_POAManager(), policies);
   
               poa.the_POAManager().activate();
   
  @@ -107,9 +112,9 @@
   
       public void stop() throws CORBAException {
           try {
  -            super.stop();
               poa.deactivate_object(object_id);
               poa.destroy(true, true);
  +            super.stop();
           } catch (ObjectNotActive e) {
               throw new CORBAException(e);
           } catch (WrongPolicy e) {
  
  
  
  1.3       +36 -20    
openejb/modules/core/src/java/org/openejb/corba/CSSBean.java
  
  Index: CSSBean.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/corba/CSSBean.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- CSSBean.java      12 Mar 2005 17:04:53 -0000      1.2
  +++ CSSBean.java      15 Mar 2005 05:27:03 -0000      1.3
  @@ -51,25 +51,27 @@
   import EDU.oswego.cs.dl.util.concurrent.Executor;
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
  +import org.apache.geronimo.gbean.GBeanInfo;
  +import org.apache.geronimo.gbean.GBeanInfoBuilder;
  +import org.apache.geronimo.gbean.GBeanLifecycle;
  +import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
  +import org.apache.geronimo.transaction.context.TransactionContextManager;
  +import org.omg.CORBA.Any;
   import org.omg.CORBA.ORB;
  -import org.omg.CORBA.UserException;
  +import org.omg.CORBA.Policy;
   import org.omg.CORBA.PolicyManager;
   import org.omg.CORBA.PolicyManagerHelper;
  -import org.omg.CORBA.Any;
  -import org.omg.CORBA.Policy;
   import org.omg.CORBA.SetOverrideType;
  +import org.omg.CORBA.UserException;
   import org.omg.CosNaming.NameComponent;
   import org.omg.CosNaming.NamingContextExt;
   import org.omg.CosNaming.NamingContextExtHelper;
  -
  -import org.apache.geronimo.gbean.GBeanInfo;
  -import org.apache.geronimo.gbean.GBeanInfoBuilder;
  -import org.apache.geronimo.gbean.GBeanLifecycle;
  -import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
  -
  +import org.openejb.corba.security.ClientPolicyFactory;
   import org.openejb.corba.security.config.ConfigAdapter;
   import org.openejb.corba.security.config.css.CSSConfig;
  -import org.openejb.corba.security.ClientPolicyFactory;
  +import org.openejb.corba.transaction.ClientTransactionPolicyConfig;
  +import org.openejb.corba.transaction.ClientTransactionPolicyFactory;
  +import 
org.openejb.corba.transaction.nodistributedtransactions.NoDTxClientTransactionPolicyConfig;
   
   
   /**
  @@ -82,6 +84,7 @@
       private final ClassLoader classLoader;
       private final Executor threadPool;
       private final ConfigAdapter configAdapter;
  +    private final TransactionContextManager transactionContextManager;
       private String description;
       private CSSConfig nssConfig;
       private CSSConfig cssConfig;
  @@ -96,11 +99,13 @@
           this.classLoader = null;
           this.threadPool = null;
           this.configAdapter = null;
  +        this.transactionContextManager = null;
       }
   
  -    public CSSBean(ClassLoader classLoader, Executor threadPool, String 
configAdapter) throws ClassNotFoundException, IllegalAccessException, 
InstantiationException {
  +    public CSSBean(String configAdapter, Executor threadPool, 
TransactionContextManager transactionContextManager, ClassLoader classLoader) 
throws ClassNotFoundException, IllegalAccessException, InstantiationException {
           this.classLoader = classLoader;
           this.threadPool = threadPool;
  +        this.transactionContextManager = transactionContextManager;
           this.configAdapter = (ConfigAdapter) 
classLoader.loadClass(configAdapter).newInstance();
       }
   
  @@ -181,8 +186,9 @@
               return cssORB.string_to_object(beanIOR);
           } catch (UserException ue) {
               // do nothing
  +            throw new RuntimeException(ue);
           }
  -        return null;
  +//        return null;
       }
   
       public void doStart() throws Exception {
  @@ -213,10 +219,14 @@
               org.omg.CORBA.Object ref = 
cssORB.resolve_initial_references("ORBPolicyManager");
               PolicyManager pm = PolicyManagerHelper.narrow(ref);
   
  -            Any any = cssORB.create_any();
  -            any.insert_Value(cssConfig);
  +            Any cssany = cssORB.create_any();
  +            cssany.insert_Value(cssConfig);
  +
  +            Any txany = cssORB.create_any();
  +            txany.insert_Value(buildClientTransactionPolicyConfig());
   
  -            pm.set_policy_overrides(new 
Policy[]{cssORB.create_policy(ClientPolicyFactory.POLICY_TYPE, any)}, 
SetOverrideType.ADD_OVERRIDE);
  +            pm.set_policy_overrides(new 
Policy[]{cssORB.create_policy(ClientPolicyFactory.POLICY_TYPE, cssany),
  +                                                 
cssORB.create_policy(ClientTransactionPolicyFactory.POLICY_TYPE, txany)}, 
SetOverrideType.ADD_OVERRIDE);
   
               threadPool.execute(new Runnable() {
                   public void run() {
  @@ -230,6 +240,10 @@
           log.info("Started CORBA Client Security Server - " + description);
       }
   
  +    private ClientTransactionPolicyConfig 
buildClientTransactionPolicyConfig() {
  +        return new 
NoDTxClientTransactionPolicyConfig(transactionContextManager);
  +    }
  +
       public void doStop() throws Exception {
   
           nssORB.shutdown(true);
  @@ -246,8 +260,6 @@
       static {
           GBeanInfoBuilder infoFactory = new GBeanInfoBuilder(CSSBean.class);
   
  -        infoFactory.addAttribute("classLoader", ClassLoader.class, false);
  -        infoFactory.addReference("ThreadPool", Executor.class, 
NameFactory.GERONIMO_SERVICE);
           infoFactory.addAttribute("configAdapter", String.class, true);
           infoFactory.addAttribute("description", String.class, true);
           infoFactory.addAttribute("nssConfig", CSSConfig.class, true);
  @@ -259,7 +271,11 @@
           infoFactory.addAttribute("cssProps", Properties.class, true);
           infoFactory.addOperation("getHome", new Class[]{URI.class, 
String.class});
   
  -        infoFactory.setConstructor(new String[]{"classLoader", "ThreadPool", 
"configAdapter"});
  +        infoFactory.addReference("ThreadPool", Executor.class, 
NameFactory.GERONIMO_SERVICE);
  +        infoFactory.addReference("TransactionContextManager", 
TransactionContextManager.class, NameFactory.JTA_RESOURCE);
  +        infoFactory.addAttribute("classLoader", ClassLoader.class, false);
  +
  +        infoFactory.setConstructor(new String[]{"configAdapter", 
"ThreadPool", "TransactionContextManager", "classLoader"});
   
           GBEAN_INFO = infoFactory.getBeanInfo();
       }
  
  
  
  1.5       +7 -3      
openejb/modules/core/src/java/org/openejb/corba/TSSBean.java
  
  Index: TSSBean.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/corba/TSSBean.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- TSSBean.java      12 Mar 2005 17:04:53 -0000      1.4
  +++ TSSBean.java      15 Mar 2005 05:27:03 -0000      1.5
  @@ -132,6 +132,11 @@
           ref.addReferenceCollectionListener(this);
   
           this.containers = containers;
  +        for (Iterator iterator = ref.iterator(); iterator.hasNext();) {
  +            Object o = iterator.next();
  +            ReferenceCollectionEvent event = new 
ReferenceCollectionEvent(null, o);
  +            memberAdded(event);
  +        }
       }
   
       public TieLoader getTieLoader() {
  @@ -250,7 +255,6 @@
   
       public void memberAdded(ReferenceCollectionEvent event) {
           EJBContainer container = (EJBContainer) event.getMember();
  -
           containerMap.put(container.getContainerID(), container);
   
           if (localPOA != null) {
  
  
  

Reply via email to