geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Jencks <david_jen...@yahoo.com>
Subject Re: svn commit: r517486 - in /geronimo/server/trunk: configs/openejb/src/plan/ modules/geronimo-connector-builder/src/main/java/org/apache/geronimo/connector/deployment/ modules/geronimo-connector/src/main/java/org/apache/geronimo/connector/ modules/geroni...
Date Tue, 13 Mar 2007 02:27:03 GMT
Is there some reason you didn't use the activationSpecInfo map which  
already had the info you put into messageListenerToActivationSpec map  
and a lot more besides?

I prefer to put this info in the ResourceAdapterModuleimpl which  
represents the rar file rather than the ResourceAdapterWrapper which  
represents an individual instance of a resource adapter specified by  
the rar file to avoid duplication, but it doesn't make a lot of  
difference.

At some point we should make it so only one copy of this data is  
stuffed into gbeans, whether it's the simplified data you have or the  
fuller representation I had, and take it out of whatever gbeans  
aren't being used.

thanks
david jencks

On Mar 12, 2007, at 9:30 PM, dain@apache.org wrote:

> Author: dain
> Date: Mon Mar 12 18:30:24 2007
> New Revision: 517486
>
> URL: http://svn.apache.org/viewvc?view=rev&rev=517486
> Log:
> Add support for MDB deployment
>
> Modified:
>     geronimo/server/trunk/configs/openejb/src/plan/plan.xml
>     geronimo/server/trunk/modules/geronimo-connector-builder/src/ 
> main/java/org/apache/geronimo/connector/deployment/ 
> ConnectorModuleBuilder.java
>     geronimo/server/trunk/modules/geronimo-connector/src/main/java/ 
> org/apache/geronimo/connector/ResourceAdapterWrapper.java
>     geronimo/server/trunk/modules/geronimo-connector/src/main/java/ 
> org/apache/geronimo/connector/ResourceAdapterWrapperGBean.java
>     geronimo/server/trunk/modules/geronimo-openejb-builder/geronimo- 
> openejb.xml
>     geronimo/server/trunk/modules/geronimo-openejb-builder/src/main/ 
> java/org/apache/geronimo/openejb/deployment/EjbModuleBuilder.java
>     geronimo/server/trunk/modules/geronimo-openejb/src/main/java/ 
> org/apache/geronimo/openejb/OpenEjbSystemGBean.java
>     geronimo/server/trunk/modules/geronimo-persistence-jpa10- 
> builder/src/main/java/org/apache/geronimo/persistence/builder/ 
> PersistenceContextRefBuilder.java
>
> Modified: geronimo/server/trunk/configs/openejb/src/plan/plan.xml
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/configs/ 
> openejb/src/plan/plan.xml?view=diff&rev=517486&r1=517485&r2=517486
> ====================================================================== 
> ========
> --- geronimo/server/trunk/configs/openejb/src/plan/plan.xml (original)
> +++ geronimo/server/trunk/configs/openejb/src/plan/plan.xml Mon Mar  
> 12 18:30:24 2007
> @@ -24,6 +24,7 @@
>          <reference name="TransactionManager">
>              <name>TransactionManager</name>
>          </reference>
> +        <reference name="ResourceAdapterWrappers"/>
>      </gbean>
>
>      <gbean name="DefaultStatelessContainer"  
> class="org.apache.geronimo.openejb.EjbContainer">
>
> Modified: geronimo/server/trunk/modules/geronimo-connector-builder/ 
> src/main/java/org/apache/geronimo/connector/deployment/ 
> ConnectorModuleBuilder.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/ 
> geronimo-connector-builder/src/main/java/org/apache/geronimo/ 
> connector/deployment/ConnectorModuleBuilder.java? 
> view=diff&rev=517486&r1=517485&r2=517486
> ====================================================================== 
> ========
> --- geronimo/server/trunk/modules/geronimo-connector-builder/src/ 
> main/java/org/apache/geronimo/connector/deployment/ 
> ConnectorModuleBuilder.java (original)
> +++ geronimo/server/trunk/modules/geronimo-connector-builder/src/ 
> main/java/org/apache/geronimo/connector/deployment/ 
> ConnectorModuleBuilder.java Mon Mar 12 18:30:24 2007
> @@ -33,6 +33,7 @@
>  import java.util.LinkedHashMap;
>  import java.util.Map;
>  import java.util.Set;
> +import java.util.TreeMap;
>  import java.util.jar.JarFile;
>  import java.util.zip.ZipEntry;
>
> @@ -99,7 +100,17 @@
>  import org.apache.geronimo.naming.deployment.ENCConfigBuilder;
>  import org.apache.geronimo.naming.reference.ResourceReference;
>  import org.apache.geronimo.schema.SchemaConversionUtils;
> -import org.apache.geronimo.xbeans.geronimo.*;
> +import  
> org.apache.geronimo.xbeans.geronimo.GerAdminobjectInstanceType;
> +import org.apache.geronimo.xbeans.geronimo.GerAdminobjectType;
> +import  
> org.apache.geronimo.xbeans.geronimo.GerConfigPropertySettingType;
> +import  
> org.apache.geronimo.xbeans.geronimo.GerConnectionDefinitionType;
> +import  
> org.apache.geronimo.xbeans.geronimo.GerConnectiondefinitionInstanceTyp 
> e;
> +import org.apache.geronimo.xbeans.geronimo.GerConnectionmanagerType;
> +import org.apache.geronimo.xbeans.geronimo.GerConnectorDocument;
> +import org.apache.geronimo.xbeans.geronimo.GerConnectorType;
> +import org.apache.geronimo.xbeans.geronimo.GerPartitionedpoolType;
> +import org.apache.geronimo.xbeans.geronimo.GerResourceadapterType;
> +import org.apache.geronimo.xbeans.geronimo.GerSinglepoolType;
>  import org.apache.geronimo.xbeans.j2ee.ActivationspecType;
>  import org.apache.geronimo.xbeans.j2ee.AdminobjectType;
>  import org.apache.geronimo.xbeans.j2ee.ConfigPropertyType;
> @@ -407,6 +418,17 @@
>              GBeanData resourceAdapterGBeanData = setUpDynamicGBean 
> (resourceAdapterInfoBuilder, resourceadapter.getConfigPropertyArray 
> (), cl);
>
>              resourceAdapterGBeanData.setAttribute 
> ("resourceAdapterClass", resourceadapter.getResourceadapterClass 
> ().getStringValue().trim());
> +
> +            // Add map from messageListenerInterface to  
> activationSpec class
> +            Map<String,String> messageListenerToActivationSpecMap  
> = new TreeMap<String,String>();
> +            for (MessagelistenerType messagelistenerType :  
> resourceadapter.getInboundResourceadapter().getMessageadapter 
> ().getMessagelistenerArray()) {
> +                String messageListenerInterface =  
> messagelistenerType.getMessagelistenerType().getStringValue().trim();
> +                ActivationspecType activationspec =  
> messagelistenerType.getActivationspec();
> +                String activationSpecClassName =  
> activationspec.getActivationspecClass().getStringValue().trim();
> +                messageListenerToActivationSpecMap.put 
> (messageListenerInterface, activationSpecClassName);
> +                resourceAdapterGBeanData.setAttribute 
> ("messageListenerToActivationSpecMap",  
> messageListenerToActivationSpecMap);
> +            }
> +
>              resourceAdapterModuleData.setAttribute 
> ("resourceAdapterGBeanData", resourceAdapterGBeanData);
>          }
>
> @@ -439,8 +461,8 @@
>
>          GBeanData jcaResourceData = new GBeanData 
> (jcaResourcejsr77Name, JCAResourceImplGBean.GBEAN_INFO);
>          Map thisModule = new LinkedHashMap(2);
> -        thisModule .put(NameFactory.J2EE_APPLICATION,  
> resourceAdapterModuleName.getNameProperty 
> (NameFactory.J2EE_APPLICATION));
> -        thisModule .put(NameFactory.RESOURCE_ADAPTER_MODULE,  
> resourceAdapterModuleName.getNameProperty(NameFactory.J2EE_NAME));
> +        thisModule.put(NameFactory.J2EE_APPLICATION,  
> resourceAdapterModuleName.getNameProperty 
> (NameFactory.J2EE_APPLICATION));
> +        thisModule.put(NameFactory.RESOURCE_ADAPTER_MODULE,  
> resourceAdapterModuleName.getNameProperty(NameFactory.J2EE_NAME));
>          jcaResourceData.setReferencePattern("ConnectionFactories",  
> new AbstractNameQuery(resourceAdapterModuleName.getArtifact(),  
> thisModule, JCAConnectionFactory.class.getName()));
>          jcaResourceData.setReferencePattern("ResourceAdapters",  
> new AbstractNameQuery(resourceAdapterModuleName.getArtifact(),  
> thisModule, JCAResourceAdapter.class.getName()));
>          jcaResourceData.setReferencePattern("AdminObjects", new  
> AbstractNameQuery(resourceAdapterModuleName.getArtifact(),  
> thisModule, JCAAdminObject.class.getName()));
> @@ -556,7 +578,6 @@
>              }
>          }
>      }
> -
>      private Map getActivationSpecInfoMap(MessagelistenerType[]  
> messagelistenerArray, ClassLoader cl) throws DeploymentException {
>          Map activationSpecInfos = new HashMap();
>          for (int i = 0; i < messagelistenerArray.length; i++) {
>
> Modified: geronimo/server/trunk/modules/geronimo-connector/src/main/ 
> java/org/apache/geronimo/connector/ResourceAdapterWrapper.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/ 
> geronimo-connector/src/main/java/org/apache/geronimo/connector/ 
> ResourceAdapterWrapper.java?view=diff&rev=517486&r1=517485&r2=517486
> ====================================================================== 
> ========
> --- geronimo/server/trunk/modules/geronimo-connector/src/main/java/ 
> org/apache/geronimo/connector/ResourceAdapterWrapper.java (original)
> +++ geronimo/server/trunk/modules/geronimo-connector/src/main/java/ 
> org/apache/geronimo/connector/ResourceAdapterWrapper.java Mon Mar  
> 12 18:30:24 2007
> @@ -25,6 +25,7 @@
>  import javax.resource.spi.ResourceAdapterInternalException;
>  import javax.resource.spi.endpoint.MessageEndpointFactory;
>  import javax.transaction.xa.XAResource;
> +import java.util.Map;
>
>  /**
>   * Dynamic GBean wrapper around a ResourceAdapter object, exposing  
> the config-properties as
> @@ -34,39 +35,63 @@
>   */
>  public class ResourceAdapterWrapper implements ResourceAdapter {
>
> +    private final String name;
> +
>      private final String resourceAdapterClass;
>
>      private final BootstrapContext bootstrapContext;
>
>      protected final ResourceAdapter resourceAdapter;
>
> +    private final Map<String,String>  
> messageListenerToActivationSpecMap;
> +
>
>      /**
>       *  default constructor for enhancement proxy endpoint
>       */
>      public ResourceAdapterWrapper() {
> +        this.name = null;
>          this.resourceAdapterClass = null;
>          this.bootstrapContext = null;
>          this.resourceAdapter = null;
> +        this.messageListenerToActivationSpecMap = null;
>      }
>
> -    public ResourceAdapterWrapper(String resourceAdapterClass,
> +    public ResourceAdapterWrapper(String name,
> +            String resourceAdapterClass,
> +            Map<String,String> messageListenerToActivationSpecMap,
>              BootstrapContext bootstrapContext,
>              ClassLoader cl) throws InstantiationException,  
> IllegalAccessException, ClassNotFoundException {
> +        this.name = name;
>          this.resourceAdapterClass = resourceAdapterClass;
>          this.bootstrapContext = bootstrapContext;
>          Class clazz = cl.loadClass(resourceAdapterClass);
>          resourceAdapter = (ResourceAdapter) clazz.newInstance();
> +        this.messageListenerToActivationSpecMap =  
> messageListenerToActivationSpecMap;
>      }
>
> -    public ResourceAdapterWrapper(ResourceAdapter resourceAdapter,  
> BootstrapContext bootstrapContext) {
> +    public ResourceAdapterWrapper(String name, ResourceAdapter  
> resourceAdapter, Map<String,String>  
> messageListenerToActivationSpecMap, BootstrapContext  
> bootstrapContext) {
> +        this.name = name;
>          this.resourceAdapterClass = resourceAdapter.getClass 
> ().getName();
>          this.bootstrapContext = bootstrapContext;
>          this.resourceAdapter = resourceAdapter;
> +        this.messageListenerToActivationSpecMap =  
> messageListenerToActivationSpecMap;
> +    }
> +
> +    public String getName() {
> +        return name;
>      }
>
>      public String getResourceAdapterClass() {
>          return resourceAdapterClass;
> +    }
> +
> +    public Map<String,String> getMessageListenerToActivationSpecMap 
> () {
> +        return messageListenerToActivationSpecMap;
> +    }
> +
> +    public ResourceAdapter getResourceAdapter() {
> +        return resourceAdapter;
>      }
>
>      public void registerResourceAdapterAssociation(final  
> ResourceAdapterAssociation resourceAdapterAssociation) throws  
> ResourceException {
>
> Modified: geronimo/server/trunk/modules/geronimo-connector/src/main/ 
> java/org/apache/geronimo/connector/ResourceAdapterWrapperGBean.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/ 
> geronimo-connector/src/main/java/org/apache/geronimo/connector/ 
> ResourceAdapterWrapperGBean.java? 
> view=diff&rev=517486&r1=517485&r2=517486
> ====================================================================== 
> ========
> --- geronimo/server/trunk/modules/geronimo-connector/src/main/java/ 
> org/apache/geronimo/connector/ResourceAdapterWrapperGBean.java  
> (original)
> +++ geronimo/server/trunk/modules/geronimo-connector/src/main/java/ 
> org/apache/geronimo/connector/ResourceAdapterWrapperGBean.java Mon  
> Mar 12 18:30:24 2007
> @@ -29,6 +29,7 @@
>  import javax.resource.spi.ResourceAdapterAssociation;
>  import javax.resource.spi.XATerminator;
>  import javax.resource.spi.work.WorkManager;
> +import java.util.Map;
>
>  /**
>   *
> @@ -44,8 +45,8 @@
>          objectName = null;
>      }
>
> -    public ResourceAdapterWrapperGBean(String  
> resourceAdapterClass, WorkManager workManager, XATerminator  
> xaTerminator, ClassLoader cl, String objectName) throws  
> InstantiationException, IllegalAccessException,  
> ClassNotFoundException {
> -        super(resourceAdapterClass, new GeronimoBootstrapContext  
> (workManager, xaTerminator), cl);
> +    public ResourceAdapterWrapperGBean(String  
> resourceAdapterClass, Map<String,String>  
> messageListenerToActivationSpecMap, WorkManager workManager,  
> XATerminator xaTerminator, ClassLoader cl, String objectName)  
> throws InstantiationException, IllegalAccessException,  
> ClassNotFoundException {
> +        super(objectName, resourceAdapterClass,  
> messageListenerToActivationSpecMap, new GeronimoBootstrapContext  
> (workManager, xaTerminator), cl);
>          delegate = new DynamicGBeanDelegate();
>          delegate.addAll(resourceAdapter);
>          this.objectName = objectName;
> @@ -73,7 +74,7 @@
>      }
>
>      public boolean isStatisticsProvider() {
> -        return false;
> +        return false;
>      }
>
>      public boolean isEventProvider() {
> @@ -87,6 +88,7 @@
>          infoBuilder.addAttribute("resourceAdapterClass",  
> String.class, true);
>          infoBuilder.addAttribute("classLoader", ClassLoader.class,  
> false);
>          infoBuilder.addAttribute("objectName", String.class, false);
> +        infoBuilder.addAttribute 
> ("messageListenerToActivationSpecMap", Map.class, true);
>
>          infoBuilder.addReference("WorkManager", WorkManager.class,  
> NameFactory.JCA_WORK_MANAGER);
>          infoBuilder.addReference("XATerminator",  
> XATerminator.class, NameFactory.JCA_WORK_MANAGER);
> @@ -96,7 +98,7 @@
>          infoBuilder.addInterface(ResourceAdapter.class);
>          infoBuilder.addInterface(JCAResourceAdapter.class);
>
> -        infoBuilder.setConstructor(new String[] 
> {"resourceAdapterClass", "WorkManager", "XATerminator",  
> "classLoader", "objectName"});
> +        infoBuilder.setConstructor(new String[] 
> {"resourceAdapterClass", "messageListenerToActivationSpecMap",  
> "WorkManager", "XATerminator", "classLoader", "objectName"});
>
>          GBEAN_INFO = infoBuilder.getBeanInfo();
>      }
>
> Modified: geronimo/server/trunk/modules/geronimo-openejb-builder/ 
> geronimo-openejb.xml
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/ 
> geronimo-openejb-builder/geronimo-openejb.xml? 
> view=diff&rev=517486&r1=517485&r2=517486
> ====================================================================== 
> ========
> --- geronimo/server/trunk/modules/geronimo-openejb-builder/geronimo- 
> openejb.xml (original)
> +++ geronimo/server/trunk/modules/geronimo-openejb-builder/geronimo- 
> openejb.xml Mon Mar 12 18:30:24 2007
> @@ -43,8 +43,287 @@
>                  <artifactId>system-database</artifactId>
>                  <type>car</type>
>              </dependency>
> +            <dependency>
> +                <groupId>org.apache.geronimo.configs</groupId>
> +                <artifactId>activemq</artifactId>
> +                <type>car</type>
> +            </dependency>
>          </dependencies>
>      </environment>
> +    <openejb-jar>
> +      <openejb-jar xmlns="http://www.openejb.org/openejb-jar/1.1">
> +        <ejb-deployment ejb-name="BasicCmpBean" deployment- 
> id="client/tests/entity/cmp/BasicCmpHome" container-id="Default CMP  
> Container">
> +          <query>
> +            <query-method>
> +              <method-name>findByLastName</method-name>
> +              <method-params>
> +                <method-param>java.lang.String</method-param>
> +              </method-params>
> +            </query-method>
> +            <object-ql>SELECT o FROM BasicCmpBeanX o WHERE  
> o.lastName = ?1</object-ql>
> +          </query>
> +          <query>
> +            <query-method>
> +              <method-name>findEmptyCollection</method-name>
> +              <method-params/>
> +            </query-method>
> +            <object-ql>SELECT o FROM BasicCmpBean o WHERE 'true' =  
> 'false'</object-ql>
> +          </query>
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="BasicCmp2Bean" deployment- 
> id="client/tests/entity/cmp2/BasicCmpHome" container-id="Default  
> CMP Container">
> +          <query>
> +            <query-method>
> +              <method-name>findByLastName</method-name>
> +              <method-params>
> +                <method-param>java.lang.String</method-param>
> +              </method-params>
> +            </query-method>
> +            <object-ql>SELECT o FROM BasicCmp2Bean o WHERE  
> o.lastName = ?1</object-ql>
> +          </query>
> +          <query>
> +            <query-method>
> +              <method-name>findEmptyCollection</method-name>
> +              <method-params/>
> +            </query-method>
> +            <object-ql>SELECT o FROM BasicCmp2Bean o WHERE 'true'  
> = 'false'</object-ql>
> +          </query>
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="AOBasicCmpBean" deployment- 
> id="client/tests/entity/cmp/allowed_operations/EntityHome"  
> container-id="Default CMP Container">
> +          <query>
> +            <query-method>
> +              <method-name>findByLastName</method-name>
> +              <method-params>
> +                <method-param>java.lang.String</method-param>
> +              </method-params>
> +            </query-method>
> +            <object-ql>SELECT o FROM AllowedOperationsCmpBean o  
> WHERE o.lastName = ?1</object-ql>
> +          </query>
> +          <query>
> +            <query-method>
> +              <method-name>findEmptyCollection</method-name>
> +              <method-params/>
> +            </query-method>
> +            <object-ql>SELECT o FROM AllowedOperationsCmpBean o  
> WHERE 'true' = 'false'</object-ql>
> +          </query>
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="AOBasicCmp2Bean" deployment- 
> id="client/tests/entity/cmp2/allowed_operations/EntityHome"  
> container-id="Default CMP Container">
> +          <query>
> +            <query-method>
> +              <method-name>findByLastName</method-name>
> +              <method-params>
> +                <method-param>java.lang.String</method-param>
> +              </method-params>
> +            </query-method>
> +            <object-ql>SELECT o FROM AllowedOperationsCmp2Bean o  
> WHERE o.lastName = ?1</object-ql>
> +          </query>
> +          <query>
> +            <query-method>
> +              <method-name>findEmptyCollection</method-name>
> +              <method-params/>
> +            </query-method>
> +            <object-ql>SELECT o FROM AllowedOperationsCmp2Bean o  
> WHERE 'true' = 'false'</object-ql>
> +          </query>
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="EncCmpBean" deployment- 
> id="client/tests/entity/cmp/EncBean" container-id="Default CMP  
> Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="EncCmp2Bean" deployment- 
> id="client/tests/entity/cmp2/EncBean" container-id="Default CMP  
> Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="ContextLookupCmpBean" deployment- 
> id="client/tests/entity/cmp/ContextLookupCmpBean" container- 
> id="Default CMP Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="Cmp RMI-IIOP Bean" deployment- 
> id="client/tests/entity/cmp/RMI-over-IIOP/EJBHome" container- 
> id="Default CMP Container"/>
> +        <ejb-deployment ejb-name="Cmp2 RMI-IIOP Bean" deployment- 
> id="client/tests/entity/cmp2/RMI-over-IIOP/EJBHome" container- 
> id="Default CMP Container"/>
> +        <ejb-deployment ejb-name="OneToOneA" deployment-id="client/ 
> tests/entity/cmr/oneToOne/AHome" container-id="Default CMP  
> Container"/>
> +        <ejb-deployment ejb-name="OneToOneB" deployment-id="client/ 
> tests/entity/cmr/oneToOne/BHome" container-id="Default CMP  
> Container"/>
> +        <ejb-deployment ejb-name="OneToManyA" deployment- 
> id="client/tests/entity/cmr/oneToMany/AHome" container-id="Default  
> CMP Container"/>
> +        <ejb-deployment ejb-name="OneToManyB" deployment- 
> id="client/tests/entity/cmr/oneToMany/BHome" container-id="Default  
> CMP Container"/>
> +        <ejb-deployment ejb-name="OneOwningSideBean" deployment- 
> id="client/tests/entity/cmp2/OneOwningSideBean/EJBHome" container- 
> id="Default CMP Container"/>
> +        <ejb-deployment ejb-name="OneInverseSideBean" deployment- 
> id="client/tests/entity/cmp2/OneInverseSideBean/EJBHome" container- 
> id="Default CMP Container"/>
> +        <ejb-deployment ejb-name="ManyOwningSideBean" deployment- 
> id="client/tests/entity/cmp2/ManyOwningSideBean/EJBHome" container- 
> id="Default CMP Container"/>
> +        <ejb-deployment ejb-name="BasicStatefulBean" deployment- 
> id="client/tests/stateful/BasicStatefulHome" container-id="Default  
> Stateful Container"/>
> +        <ejb-deployment ejb-name="BasicStatefulPojoBean"  
> deployment-id="client/tests/stateful/BasicStatefulPojoHome"  
> container-id="Default Stateful Container"/>
> +        <ejb-deployment ejb-name="Basic BMT StatefulBean"  
> deployment-id="client/tests/stateful/BeanManagedBasicStatefulHome"  
> container-id="Default Stateful Container"/>
> +        <ejb-deployment ejb-name="BMT StatefulBean" deployment- 
> id="client/tests/stateful/BeanManagedTransactionTests/EJBHome"  
> container-id="Default Stateful Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="EncStatefulBean" deployment- 
> id="client/tests/stateful/EncBean" container-id="Default Stateful  
> Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="FieldInjectionStatefulBean"  
> deployment-id="client/tests/stateful/FieldInjectionStatefulBean"  
> container-id="Default Stateful Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="SetterInjectionStatefulBean"  
> deployment-id="client/tests/stateful/SetterInjectionStatefulBean"  
> container-id="Default Stateful Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="PersistenceContextStatefulBean"  
> deployment-id="client/tests/stateful/ 
> PersistenceContextStatefulBean" container-id="Default Stateful  
> Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="ContextLookupStatefulBean"  
> deployment-id="client/tests/stateful/ContextLookupStatefulBean"  
> container-id="Default Stateful Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="ContextLookupStatefulPojoBean"  
> deployment-id="client/tests/stateful/ContextLookupStatefulPojoBean"  
> container-id="Default Stateful Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="Stateful RMI-IIOP Bean"  
> deployment-id="client/tests/stateful/RMI-over-IIOP/EJBHome"  
> container-id="Default Stateful Container"/>
> +        <ejb-deployment ejb-name="BasicStatelessBean" deployment- 
> id="client/tests/stateless/BasicStatelessHome" container- 
> id="Default Stateless Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="BasicStatelessPojoBean"  
> deployment-id="client/tests/stateless/BasicStatelessPojoHome"  
> container-id="Default Stateless Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="Basic BMT StatelessBean"  
> deployment-id="client/tests/stateless/ 
> BeanManagedBasicStatelessHome" container-id="Default Stateless  
> Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="DatabaseBean" deployment- 
> id="client/tools/DatabaseHome" container-id="Default Stateless  
> Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="BMT StatelessBean" deployment- 
> id="client/tests/stateless/BeanManagedTransactionTests/EJBHome"  
> container-id="Default Stateless Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="EncStatelessBean" deployment- 
> id="client/tests/stateless/EncBean" container-id="Default Stateless  
> Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="FieldInjectionStatelessBean"  
> deployment-id="client/tests/stateless/FieldInjectionStatelessBean"  
> container-id="Default Stateless Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="SetterInjectionStatelessBean"  
> deployment-id="client/tests/stateless/SetterInjectionStatelessBean"  
> container-id="Default Stateless Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="ContextLookupStatelessBean"  
> deployment-id="client/tests/stateless/ContextLookupStatelessBean"  
> container-id="Default Stateless Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="ContextLookupStatelessPojoBean"  
> deployment-id="client/tests/stateless/ 
> ContextLookupStatelessPojoBean" container-id="Default Stateless  
> Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="Stateless RMI-IIOP Bean"  
> deployment-id="client/tests/stateless/RMI-over-IIOP/EJBHome"  
> container-id="Default Stateless Container"/>
> +        <ejb-deployment ejb-name="BasicBmpBean" deployment- 
> id="client/tests/entity/bmp/BasicBmpHome" container-id="Default BMP  
> Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="AOBasicBmpBean" deployment- 
> id="client/tests/entity/bmp/allowed_operations/EntityHome"  
> container-id="Default BMP Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="EncBmpBean" deployment- 
> id="client/tests/entity/bmp/EncBean" container-id="Default BMP  
> Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="ContextLookupBmpBean" deployment- 
> id="client/tests/entity/bmp/ContextLookupBmpBean" container- 
> id="Default BMP Container">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="Bmp RMI-IIOP Bean" deployment- 
> id="client/tests/entity/bmp/RMI-over-IIOP/EJBHome" container- 
> id="Default BMP Container"/>
> +        <ejb-deployment ejb-name="BasicMdbBean" deployment- 
> id="client/tests/messagedriven/mdb/BasicMdb">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="Basic BMT Mdb Bean" deployment- 
> id="Basic BMT Mdb Bean">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="EncMdbBean" deployment- 
> id="EncMdbBean">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="ContextLookupMdbBean" deployment- 
> id="ContextLookupMdbBean">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="ContextLookupMdbPojoBean"  
> deployment-id="ContextLookupMdbPojoBean">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="FieldInjectionMdbBean"  
> deployment-id="FieldInjectionMdbBean">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="SetterInjectionMdbBean"  
> deployment-id="SetterInjectionMdbBean">
> +        </ejb-deployment>
> +        <ejb-deployment ejb-name="TimerSyncBean" deployment- 
> id="TimerSyncBean" container-id="Default Stateless Container"/>
> +      </openejb-jar>
> +    </openejb-jar>
> +    <n:resource-ref>
> +        <n:ref-name>jms</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>activemq</n:artifactId>
> +            <n:name>DefaultActiveMQConnectionFactory</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
> +    <n:resource-ref>
> +        <n:ref-name>QueueCF</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>activemq</n:artifactId>
> +            <n:name>DefaultActiveMQConnectionFactory</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
> +    <n:resource-ref>
> +        <n:ref-name>TopicCF</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>activemq</n:artifactId>
> +            <n:name>DefaultActiveMQConnectionFactory</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
> +    <n:resource-ref>
> +        <n:ref-name>connectionFactory</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>activemq</n:artifactId>
> +            <n:name>DefaultActiveMQConnectionFactory</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
> +    <n:resource-ref>
> +        <n:ref-name>queueConnectionFactory</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>activemq</n:artifactId>
> +            <n:name>DefaultActiveMQConnectionFactory</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
> +    <n:resource-ref>
> +        <n:ref-name>topicConnectionFactory</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>activemq</n:artifactId>
> +            <n:name>DefaultActiveMQConnectionFactory</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
> +    <n:resource-ref>
> +        <n:ref- 
> name>org.apache.openejb.test.stateful.AnnotatedFieldInjectionStatefulB 
> ean/coonnectionFactory</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>activemq</n:artifactId>
> +            <n:name>DefaultActiveMQConnectionFactory</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
> +    <n:resource-ref>
> +        <n:ref- 
> name>org.apache.openejb.test.stateful.AnnotatedFieldInjectionStatefulB 
> ean/queueCoonnectionFactory</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>activemq</n:artifactId>
> +            <n:name>DefaultActiveMQConnectionFactory</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
> +    <n:resource-ref>
> +        <n:ref- 
> name>org.apache.openejb.test.stateful.AnnotatedFieldInjectionStatefulB 
> ean/topicCoonnectionFactory</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>activemq</n:artifactId>
> +            <n:name>DefaultActiveMQConnectionFactory</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
> +    <n:resource-ref>
> +        <n:ref- 
> name>org.apache.openejb.test.stateless.AnnotatedFieldInjectionStateles 
> sBean/coonnectionFactory</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>activemq</n:artifactId>
> +            <n:name>DefaultActiveMQConnectionFactory</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
> +    <n:resource-ref>
> +        <n:ref- 
> name>org.apache.openejb.test.stateless.AnnotatedFieldInjectionStateles 
> sBean/queueCoonnectionFactory</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>activemq</n:artifactId>
> +            <n:name>DefaultActiveMQConnectionFactory</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
> +    <n:resource-ref>
> +        <n:ref- 
> name>org.apache.openejb.test.stateless.AnnotatedFieldInjectionStateles 
> sBean/topicCoonnectionFactory</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>activemq</n:artifactId>
> +            <n:name>DefaultActiveMQConnectionFactory</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
> +    <n:resource-ref>
> +        <n:ref- 
> name>org.apache.openejb.test.mdb.AnnotatedFieldInjectionMdbBean/ 
> coonnectionFactory</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>activemq</n:artifactId>
> +            <n:name>DefaultActiveMQConnectionFactory</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
> +    <n:resource-ref>
> +        <n:ref- 
> name>org.apache.openejb.test.mdb.AnnotatedFieldInjectionMdbBean/ 
> queueCoonnectionFactory</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>activemq</n:artifactId>
> +            <n:name>DefaultActiveMQConnectionFactory</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
> +    <n:resource-ref>
> +        <n:ref- 
> name>org.apache.openejb.test.mdb.AnnotatedFieldInjectionMdbBean/ 
> topicCoonnectionFactory</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>activemq</n:artifactId>
> +            <n:name>DefaultActiveMQConnectionFactory</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
>      <n:resource-ref>
>          <n:ref-name>database</n:ref-name>
>          <n:pattern>
> @@ -93,6 +372,14 @@
>              <n:name>SystemDatasource</n:name>
>          </n:pattern>
>      </n:resource-ref>
> +    <n:resource-ref>
> +        <n:ref- 
> name>org.apache.openejb.test.mdb.AnnotatedFieldInjectionMdbBean/ 
> daataSource</n:ref-name>
> +        <n:pattern>
> +            <n:groupId>org.apache.geronimo.configs</n:groupId>
> +            <n:artifactId>system-database</n:artifactId>
> +            <n:name>SystemDatasource</n:name>
> +        </n:pattern>
> +    </n:resource-ref>
>      <n:persistence-context-ref>
>          <n:persistence-context-ref-name>persistence/TestContext</ 
> n:persistence-context-ref-name>
>          <n:persistence-unit-name>openjpa-test-unit</n:persistence- 
> unit-name>
> @@ -103,30 +390,9 @@
>          <n:persistence-unit-name>openjpa-test-unit</n:persistence- 
> unit-name>
>          <n:persistence-context-type>Extended</n:persistence- 
> context-type>
>      </n:persistence-context-ref>
> -    <n:persistence-context-ref>
> -        <n:persistence-context-ref-name>openejb/cmp</n:persistence- 
> context-ref-name>
> -        <n:persistence-unit-name>cmp</n:persistence-unit-name>
> -        <n:persistence-context-type>Transactional</n:persistence- 
> context-type>
> -    </n:persistence-context-ref>
>      <n:persistence-unit-ref>
>          <n:persistence-unit-ref-name>persistence/TestUnit</ 
> n:persistence-unit-ref-name>
>          <n:persistence-unit-name>openjpa-test-unit</n:persistence- 
> unit-name>
>      </n:persistence-unit-ref>
>
> -    <persistence xmlns="http://java.sun.com/xml/ns/persistence"  
> version="1.0">
> -        <persistence-unit transaction-type="JTA" name="cmp">
> -             
> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</ 
> provider>
> -            <jta-data-source>?name=SystemDatasource</jta-data-source>
> -            <non-jta-data-source>?name=NoTxDatasource</non-jta- 
> data-source>
> -            <mapping-file>META-INF/jpa.mapping.xml</mapping-file>
> -             
> <class>org.apache.openejb.test.entity.cmp.BasicCmpBean</class>
> -            <exclude-unlisted-classes>false</exclude-unlisted- 
> classes>
> -        </persistence-unit>
> -        <persistence-unit transaction-type="JTA" name="openjpa- 
> test-unit">
> -             
> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</ 
> provider>
> -            <jta-data-source>?name=SystemDatasource</jta-data-source>
> -            <non-jta-data-source>?name=NoTxDatasource</non-jta- 
> data-source>
> -            <class>org.apache.openejb.test.entity.Customer</class>
> -        </persistence-unit>
> -    </persistence>
>  </ejb-jar>
>
> Modified: geronimo/server/trunk/modules/geronimo-openejb-builder/ 
> src/main/java/org/apache/geronimo/openejb/deployment/ 
> EjbModuleBuilder.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/ 
> geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/ 
> deployment/EjbModuleBuilder.java? 
> view=diff&rev=517486&r1=517485&r2=517486
> ====================================================================== 
> ========
> --- geronimo/server/trunk/modules/geronimo-openejb-builder/src/main/ 
> java/org/apache/geronimo/openejb/deployment/EjbModuleBuilder.java  
> (original)
> +++ geronimo/server/trunk/modules/geronimo-openejb-builder/src/main/ 
> java/org/apache/geronimo/openejb/deployment/EjbModuleBuilder.java  
> Mon Mar 12 18:30:24 2007
> @@ -31,6 +31,7 @@
>
>  import javax.ejb.EntityContext;
>  import javax.ejb.SessionContext;
> +import javax.ejb.MessageDrivenContext;
>  import javax.xml.namespace.QName;
>
>  import org.apache.commons.logging.Log;
> @@ -296,6 +297,8 @@
>                  if (ref.getType().equals 
> (SessionContext.class.getName())) {
>                      iterator.remove();
>                  } else if (ref.getType().equals 
> (EntityContext.class.getName())) {
> +                    iterator.remove();
> +                } else if (ref.getType().equals 
> (MessageDrivenContext.class.getName())) {
>                      iterator.remove();
>                  } else {
>                      ref.setMappedName(null);
>
> Modified: geronimo/server/trunk/modules/geronimo-openejb/src/main/ 
> java/org/apache/geronimo/openejb/OpenEjbSystemGBean.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/ 
> geronimo-openejb/src/main/java/org/apache/geronimo/openejb/ 
> OpenEjbSystemGBean.java?view=diff&rev=517486&r1=517485&r2=517486
> ====================================================================== 
> ========
> --- geronimo/server/trunk/modules/geronimo-openejb/src/main/java/ 
> org/apache/geronimo/openejb/OpenEjbSystemGBean.java (original)
> +++ geronimo/server/trunk/modules/geronimo-openejb/src/main/java/ 
> org/apache/geronimo/openejb/OpenEjbSystemGBean.java Mon Mar 12  
> 18:30:24 2007
> @@ -16,51 +16,69 @@
>   */
>  package org.apache.geronimo.openejb;
>
> -import java.io.IOException;
> -import java.util.Properties;
> -import javax.naming.NamingException;
> -import javax.transaction.TransactionManager;
> -
> +import org.apache.commons.logging.Log;
> +import org.apache.commons.logging.LogFactory;
> +import org.apache.geronimo.connector.ResourceAdapterWrapper;
> +import org.apache.geronimo.gbean.AbstractName;
>  import org.apache.geronimo.gbean.GBeanInfo;
>  import org.apache.geronimo.gbean.GBeanInfoBuilder;
> -import org.apache.geronimo.gbean.AbstractName;
> -import org.apache.geronimo.kernel.Kernel;
> +import org.apache.geronimo.gbean.ReferenceCollection;
> +import org.apache.geronimo.gbean.ReferenceCollectionListener;
> +import org.apache.geronimo.gbean.ReferenceCollectionEvent;
>  import org.apache.geronimo.kernel.GBeanNotFoundException;
> +import org.apache.geronimo.kernel.Kernel;
>  import org.apache.openejb.Container;
>  import org.apache.openejb.DeploymentInfo;
> +import org.apache.openejb.NoSuchApplicationException;
>  import org.apache.openejb.OpenEJBException;
>  import org.apache.openejb.UndeployException;
> -import org.apache.openejb.NoSuchApplicationException;
> -import org.apache.openejb.loader.SystemInstance;
> -import org.apache.openejb.core.ServerFederation;
> -import org.apache.openejb.util.proxy.Jdk13ProxyFactory;
> -import org.apache.openejb.config.ClientModule;
> -import org.apache.openejb.config.ConfigurationFactory;
> -import org.apache.openejb.config.EjbModule;
> -import org.apache.openejb.config.AppModule;
> +import org.apache.openejb.assembler.classic.AppInfo;
>  import org.apache.openejb.assembler.classic.Assembler;
>  import org.apache.openejb.assembler.classic.ClientInfo;
>  import org.apache.openejb.assembler.classic.ContainerInfo;
>  import org.apache.openejb.assembler.classic.EjbJarInfo;
> -import org.apache.openejb.assembler.classic.TransactionServiceInfo;
> +import org.apache.openejb.assembler.classic.MdbContainerInfo;
>  import org.apache.openejb.assembler.classic.ProxyFactoryInfo;
>  import org.apache.openejb.assembler.classic.SecurityServiceInfo;
> -import org.apache.openejb.assembler.classic.AppInfo;
> +import org.apache.openejb.assembler.classic.TransactionServiceInfo;
>  import org.apache.openejb.assembler.dynamic.PassthroughFactory;
> -import org.apache.openejb.spi.ContainerSystem;
> +import org.apache.openejb.config.AppModule;
> +import org.apache.openejb.config.ClientModule;
> +import org.apache.openejb.config.ConfigurationFactory;
> +import org.apache.openejb.config.EjbModule;
> +import org.apache.openejb.core.ServerFederation;
> +import org.apache.openejb.loader.SystemInstance;
>  import org.apache.openejb.spi.ApplicationServer;
> +import org.apache.openejb.spi.ContainerSystem;
> +import org.apache.openejb.util.proxy.Jdk13ProxyFactory;
> +
> +import javax.naming.NamingException;
> +import javax.resource.spi.ResourceAdapter;
> +import javax.transaction.TransactionManager;
> +import javax.management.ObjectName;
> +import javax.management.MalformedObjectNameException;
> +import java.io.IOException;
> +import java.util.Collection;
> +import java.util.Map;
> +import java.util.Properties;
> +import java.util.concurrent.ConcurrentHashMap;
> +import java.util.concurrent.ConcurrentMap;
>
>  /**
>   * @version $Rev$ $Date$
>   */
>  public class OpenEjbSystemGBean implements OpenEjbSystem {
> +    private static final Log log = LogFactory.getLog 
> (OpenEjbSystemGBean.class);
>      private final ConfigurationFactory configurationFactory;
>      private final Assembler assembler;
> +    private final ConcurrentMap<String,ResourceAdapterWrapper>  
> processedResourceAdapterWrappers =  new  
> ConcurrentHashMap<String,ResourceAdapterWrapper>() ;
> +    private final ClassLoader classLoader;
>
>      public OpenEjbSystemGBean(TransactionManager  
> transactionManager) throws Exception {
> -        this(transactionManager, null);
> +        this(transactionManager, null, null,  
> OpenEjbSystemGBean.class.getClassLoader());
>      }
> -    public OpenEjbSystemGBean(TransactionManager  
> transactionManager, Kernel kernel) throws Exception {
> +    public OpenEjbSystemGBean(TransactionManager  
> transactionManager, Collection<ResourceAdapterWrapper>  
> resourceAdapters, Kernel kernel, ClassLoader classLoader) throws  
> Exception {
> +        this.classLoader = classLoader;
>          System.setProperty("duct tape","");
>          SystemInstance systemInstance = SystemInstance.get();
>
> @@ -108,6 +126,9 @@
>
>          // add our thread context listener
>          GeronimoThreadContextListener.init();
> +
> +        // process all resource adapters
> +        processResourceAdapterWrappers(resourceAdapters);
>      }
>
>      @SuppressWarnings({"unchecked"})
> @@ -126,6 +147,97 @@
>          return proxy;
>      }
>
> +    private void processResourceAdapterWrappers 
> (Collection<ResourceAdapterWrapper> resourceAdapterWrappers) {
> +        if (resourceAdapterWrappers == null) {
> +            return;
> +        }
> +
> +        if (resourceAdapterWrappers instanceof ReferenceCollection) {
> +            ReferenceCollection referenceCollection =  
> (ReferenceCollection) resourceAdapterWrappers;
> +            referenceCollection.addReferenceCollectionListener(new  
> ReferenceCollectionListener() {
> +                public void memberAdded(ReferenceCollectionEvent  
> event) {
> +                    addResourceAdapter((ResourceAdapterWrapper)  
> event.getMember());
> +                }
> +
> +                public void memberRemoved(ReferenceCollectionEvent  
> event) {
> +                    removeResourceAdapter((ResourceAdapterWrapper)  
> event.getMember());
> +                }
> +            });
> +        }
> +        for (ResourceAdapterWrapper resourceAdapterWrapper :  
> resourceAdapterWrappers) {
> +            addResourceAdapter(resourceAdapterWrapper);
> +        }
> +
> +    }
> +
> +    private void addResourceAdapter(ResourceAdapterWrapper  
> resourceAdapterWrapper) {
> +        ResourceAdapter resourceAdapter =  
> resourceAdapterWrapper.getResourceAdapter();
> +        if (resourceAdapter == null) {
> +            return;
> +        }
> +
> +        Map<String, String> listenerToActivationSpecMap =  
> resourceAdapterWrapper.getMessageListenerToActivationSpecMap();
> +        if (listenerToActivationSpecMap == null) {
> +            return;
> +        }
> +
> +        ClassLoader oldClassLoader = Thread.currentThread 
> ().getContextClassLoader();
> +        Thread.currentThread().setContextClassLoader(classLoader);
> +        try {
> +            for (Map.Entry<String, String> entry :  
> listenerToActivationSpecMap.entrySet()) {
> +                String messageListenerInterface = entry.getKey();
> +                String activationSpecClass = entry.getValue();
> +
> +                // only process RA if not previously processed
> +                String containerName = getResourceAdapterId 
> (resourceAdapterWrapper) + "-" + messageListenerInterface;
> +                if (processedResourceAdapterWrappers.putIfAbsent 
> (containerName,  resourceAdapterWrapper) == null) {
> +                    try {
> +                        // get default mdb config
> +                        ContainerInfo containerInfo =  
> configurationFactory.configureService(MdbContainerInfo.class);
> +                        containerInfo.id = containerName;
> +                        containerInfo.displayName = containerName;
> +
> +                        // set ra specific properties
> +                        containerInfo.properties.setProperty 
> ("MessageListenerInterface", messageListenerInterface);
> +                        containerInfo.properties.setProperty 
> ("ActivationSpecClass", activationSpecClass);
> +                        containerInfo.properties.put 
> ("ResourceAdapter", resourceAdapter);
> +
> +                        // create the container
> +                        assembler.createContainer(containerInfo);
> +                    } catch (OpenEJBException e) {
> +                        log.error("Unable to deploy mdb container  
> " + containerName, e);
> +                    }
> +                }
> +            }
> +        } finally {
> +            Thread.currentThread().setContextClassLoader 
> (oldClassLoader);
> +        }
> +    }
> +
> +
> +    private void removeResourceAdapter(ResourceAdapterWrapper  
> resourceAdapterWrapper) {
> +        for (String messageListenerInterface :  
> resourceAdapterWrapper.getMessageListenerToActivationSpecMap 
> ().keySet()) {
> +            String containerName = getResourceAdapterId 
> (resourceAdapterWrapper) + "-" + messageListenerInterface;
> +            processedResourceAdapterWrappers.remove(containerName);
> +            assembler.removeContainer(containerName);
> +        }
> +    }
> +
> +    private String getResourceAdapterId(ResourceAdapterWrapper  
> resourceAdapterWrapper) {
> +        String name = resourceAdapterWrapper.getName();
> +        try {
> +            ObjectName objectName = new ObjectName(name);
> +            Map properties = objectName.getKeyPropertyList();
> +            String shortName = (String) properties.get("name");
> +            String moduleName = (String) properties.get 
> ("ResourceAdapterModule");
> +            if (shortName != null && moduleName != null) {
> +                return moduleName + "." + shortName;
> +            }
> +        } catch (Exception ignored) {
> +        }
> +        return name;
> +    }
> +
>      public ContainerSystem getContainerSystem() {
>          return assembler.getContainerSystem();
>      }
> @@ -200,10 +312,14 @@
>      static {
>          GBeanInfoBuilder infoBuilder =  
> GBeanInfoBuilder.createStatic(OpenEjbSystemGBean.class);
>          infoBuilder.addReference("TransactionManager",  
> TransactionManager.class);
> +        infoBuilder.addReference("ResourceAdapterWrappers",  
> ResourceAdapterWrapper.class);
>          infoBuilder.addAttribute("kernel", Kernel.class, false);
> +        infoBuilder.addAttribute("classLoader", ClassLoader.class,  
> false);
>          infoBuilder.setConstructor(new String[] {
>                  "TransactionManager",
> +                "ResourceAdapterWrappers",
>                  "kernel",
> +                "classLoader",
>          });
>          GBEAN_INFO = infoBuilder.getBeanInfo();
>      }
>
> Modified: geronimo/server/trunk/modules/geronimo-persistence-jpa10- 
> builder/src/main/java/org/apache/geronimo/persistence/builder/ 
> PersistenceContextRefBuilder.java
> URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/ 
> geronimo-persistence-jpa10-builder/src/main/java/org/apache/ 
> geronimo/persistence/builder/PersistenceContextRefBuilder.java? 
> view=diff&rev=517486&r1=517485&r2=517486
> ====================================================================== 
> ========
> --- geronimo/server/trunk/modules/geronimo-persistence-jpa10- 
> builder/src/main/java/org/apache/geronimo/persistence/builder/ 
> PersistenceContextRefBuilder.java (original)
> +++ geronimo/server/trunk/modules/geronimo-persistence-jpa10- 
> builder/src/main/java/org/apache/geronimo/persistence/builder/ 
> PersistenceContextRefBuilder.java Mon Mar 12 18:30:24 2007
> @@ -109,7 +109,10 @@
>              try {
>                  localConfiguration.findGBeanData 
> (persistenceUnitNameQuery);
>              } catch (GBeanNotFoundException e) {
> -                throw new DeploymentException("Could not resolve  
> reference at deploy time for query " + persistenceUnitNameQuery, e);
> +                // something is broken with cmp references that  
> stops deployment... this is just a patch around the real problem
> +                // throw new DeploymentException("Could not  
> resolve reference at deploy time for query " +  
> persistenceUnitNameQuery, e);
> +                new DeploymentException("Could not resolve  
> reference at deploy time for query " + persistenceUnitNameQuery,  
> e).printStackTrace();
> +                continue;
>              }
>
>              PersistenceContextReference reference = new  
> PersistenceContextReference(localConfiguration.getId(),  
> persistenceUnitNameQuery, transactionScoped, properties);
>
>


Mime
View raw message