You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by da...@apache.org on 2007/01/19 02:14:20 UTC

svn commit: r497672 - in /geronimo/server/trunk: configs/openejb/src/plan/ modules/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/ modules/geronimo-openejb-builder/src/test/java/org/apache/geronimo/openejb/deployment/ mod...

Author: dain
Date: Thu Jan 18 17:14:18 2007
New Revision: 497672

URL: http://svn.apache.org/viewvc?view=rev&rev=497672
Log:
Ejb deployment now work, but executing the beans has not been tested

Modified:
    geronimo/server/trunk/configs/openejb/src/plan/plan.xml
    geronimo/server/trunk/modules/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbDeploymentBuilder.java
    geronimo/server/trunk/modules/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbModule.java
    geronimo/server/trunk/modules/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbModuleBuilder.java
    geronimo/server/trunk/modules/geronimo-openejb-builder/src/test/java/org/apache/geronimo/openejb/deployment/EjbModuleBuilderTest.java
    geronimo/server/trunk/modules/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbDeployment.java
    geronimo/server/trunk/modules/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbModuleImplGBean.java
    geronimo/server/trunk/modules/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/OpenEjbSystemGBean.java
    geronimo/server/trunk/modules/geronimo-openejb/src/main/resources/META-INF/geronimo-dependency.xml
    geronimo/server/trunk/modules/geronimo-persistence-jpa10-builder/src/main/java/org/apache/geronimo/persistence/builder/PersistenceContextRefBuilder.java
    geronimo/server/trunk/modules/geronimo-persistence-jpa10-builder/src/main/java/org/apache/geronimo/persistence/builder/PersistenceUnitBuilder.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=497672&r1=497671&r2=497672
==============================================================================
--- geronimo/server/trunk/configs/openejb/src/plan/plan.xml (original)
+++ geronimo/server/trunk/configs/openejb/src/plan/plan.xml Thu Jan 18 17:14:18 2007
@@ -28,17 +28,36 @@
 
     <gbean name="DefaultStatelessContainer" class="org.apache.geronimo.openejb.EjbContainer">
         <attribute name="id">Default Stateless Container</attribute>
+        <reference name="OpenEjbSystem">
+            <name>OpenEjbSystem</name>
+        </reference>
     </gbean>
     <gbean name="DefaultStatefulContainer" class="org.apache.geronimo.openejb.EjbContainer">
         <attribute name="id">Default Stateful Container</attribute>
+        <reference name="OpenEjbSystem">
+            <name>OpenEjbSystem</name>
+        </reference>
     </gbean>
     <gbean name="DefaultBMPContainer" class="org.apache.geronimo.openejb.EjbContainer">
         <attribute name="id">Default BMP Container</attribute>
+        <reference name="OpenEjbSystem">
+            <name>OpenEjbSystem</name>
+        </reference>
     </gbean>
     <gbean name="DefaultCMPContainer" class="org.apache.geronimo.openejb.EjbContainer">
         <attribute name="id">Default CMP Container</attribute>
+        <reference name="OpenEjbSystem">
+            <name>OpenEjbSystem</name>
+        </reference>
     </gbean>
     
+    <gbean name="DefaultMDBContainer" class="org.apache.geronimo.openejb.EjbContainer">
+        <attribute name="id">Default MDB Container</attribute>
+        <reference name="OpenEjbSystem">
+            <name>OpenEjbSystem</name>
+        </reference>
+    </gbean>
+
 <!--
     <gbean name="StatelessEjbContainer" class="org.apache.openejb.slsb.DefaultStatelessEjbContainerGBean">
         <reference name="TransactionManager">

Modified: geronimo/server/trunk/modules/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbDeploymentBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbDeploymentBuilder.java?view=diff&rev=497672&r1=497671&r2=497672
==============================================================================
--- geronimo/server/trunk/modules/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbDeploymentBuilder.java (original)
+++ geronimo/server/trunk/modules/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbDeploymentBuilder.java Thu Jan 18 17:14:18 2007
@@ -47,11 +47,10 @@
 import org.apache.openejb.jee.EnterpriseBean;
 import org.apache.openejb.jee.RemoteBean;
 import org.apache.openejb.jee.SecurityIdentity;
-import org.apache.openejb.jee.StatefulBean;
 import org.apache.openejb.jee.StatelessBean;
 import org.apache.openejb.jee.MessageDrivenBean;
 import org.apache.openejb.jee.EntityBean;
-import org.apache.openejb.spi.ContainerSystem;
+import org.apache.openejb.jee.SessionBean;
 import org.apache.openejb.alt.config.ejb.EjbDeployment;
 import org.apache.geronimo.openejb.deployment.ejbref.LocalEjbRefBuilder;
 import org.apache.geronimo.openejb.deployment.ejbref.RemoteEjbRefBuilder;
@@ -59,6 +58,7 @@
 import org.apache.geronimo.openejb.StatefulDeploymentGBean;
 import org.apache.geronimo.openejb.EntityDeploymentGBean;
 import org.apache.geronimo.openejb.MessageDrivenDeploymentGBean;
+import org.apache.geronimo.openejb.OpenEjbSystem;
 import org.apache.geronimo.connector.outbound.connectiontracking.TrackedConnectionAssociator;
 import org.apache.xmlbeans.XmlObject;
 
@@ -82,17 +82,24 @@
     public void initContext() throws DeploymentException {
         for (EnterpriseBean enterpriseBean : ejbModule.getEjbJar().getEnterpriseBeans()) {
             AbstractName abstractName = createEjbName(enterpriseBean);
-            GBeanData gbean;
-            if (enterpriseBean instanceof StatelessBean) {
-                gbean = new GBeanData(abstractName, StatelessDeploymentGBean.GBEAN_INFO);
-            } else if (enterpriseBean instanceof StatefulBean) {
-                gbean = new GBeanData(abstractName, StatefulDeploymentGBean.GBEAN_INFO);
+            GBeanData gbean = null;
+            if (enterpriseBean instanceof SessionBean) {
+                SessionBean sessionBean = (SessionBean) enterpriseBean;
+                switch (sessionBean.getSessionType()) {
+                    case STATELESS:
+                        gbean = new GBeanData(abstractName, StatelessDeploymentGBean.GBEAN_INFO);
+                        break;
+                    case STATEFUL:
+                        gbean = new GBeanData(abstractName, StatefulDeploymentGBean.GBEAN_INFO);
+                        break;
+                }
             } else if (enterpriseBean instanceof EntityBean) {
                 gbean = new GBeanData(abstractName, EntityDeploymentGBean.GBEAN_INFO);
             } else if (enterpriseBean instanceof MessageDrivenBean) {
                 gbean = new GBeanData(abstractName, MessageDrivenDeploymentGBean.GBEAN_INFO);
-            } else {
-                throw new DeploymentException("Unknown enterprise bean type " + enterpriseBean.getClass().getTypeParameters());
+            }
+            if (gbean == null) {
+                throw new DeploymentException("Unknown enterprise bean type " + enterpriseBean.getClass().getName());
             }
 
             String ejbName = enterpriseBean.getEjbName();
@@ -138,7 +145,7 @@
 
             // set reference patterns
             gbean.setReferencePattern("TrackedConnectionAssociator", new AbstractNameQuery(null, Collections.EMPTY_MAP, TrackedConnectionAssociator.class.getName()));
-            gbean.setReferencePattern("ContainerSystem", new AbstractNameQuery(null, Collections.EMPTY_MAP, ContainerSystem.class.getName()));
+            gbean.setReferencePattern("OpenEjbSystem", new AbstractNameQuery(null, Collections.EMPTY_MAP, OpenEjbSystem.class.getName()));
 
             try {
                 earContext.addGBean(gbean);
@@ -150,6 +157,12 @@
     }
 
 
+    public void addEjbModuleDependency(AbstractName ejbModuleName) {
+        for (GBeanData gbean : gbeans.values()) {
+            gbean.addDependency(ejbModuleName);
+        }
+    }
+
     public ComponentPermissions buildComponentPermissions() throws DeploymentException {
         ComponentPermissions componentPermissions = new ComponentPermissions(new Permissions(), new Permissions(), new HashMap());
         for (EnterpriseBean enterpriseBean : ejbModule.getEjbJar().getEnterpriseBeans()) {
@@ -208,7 +221,7 @@
         //
         // XMLBeans types must be use because Geronimo naming building is coupled via XMLBeans objects
         //
-        EjbJarType ejbJarType = (EjbJarType) ejbModule.getVendorDD();
+        EjbJarType ejbJarType = (EjbJarType) ejbModule.getSpecDD();
         EnterpriseBeansType enterpriseBeans = ejbJarType.getEnterpriseBeans();
         if (enterpriseBeans != null) {
             for (SessionBeanType xmlbeansEjb : enterpriseBeans.getSessionArray()) {
@@ -252,7 +265,7 @@
                 ejbModule, buildingContext);
 
         Map compContext = (Map) buildingContext.get(NamingBuilder.JNDI_KEY);
-        gbean.setAttribute("componentContext", compContext);
+        gbean.setAttribute("componentContextMap", compContext);
 
         //
         // Process resource refs
@@ -276,14 +289,23 @@
     private AbstractName createEjbName(EnterpriseBean enterpriseBean) {
         String ejbName = enterpriseBean.getEjbName();
         String type = null;
-        if (enterpriseBean instanceof StatelessBean) {
-            type = NameFactory.STATELESS_SESSION_BEAN;
-        } else if (enterpriseBean instanceof StatefulBean) {
-            type = NameFactory.STATEFUL_SESSION_BEAN;
+        if (enterpriseBean instanceof SessionBean) {
+            SessionBean sessionBean = (SessionBean) enterpriseBean;
+            switch (sessionBean.getSessionType()) {
+                case STATELESS:
+                    type = NameFactory.STATELESS_SESSION_BEAN;
+                    break;
+                case STATEFUL:
+                    type = NameFactory.STATEFUL_SESSION_BEAN;
+                    break;
+            }
         } else if (enterpriseBean instanceof EntityBean) {
             type = NameFactory.ENTITY_BEAN;
         } else if (enterpriseBean instanceof MessageDrivenBean) {
             type = NameFactory.MESSAGE_DRIVEN_BEAN;
+        }
+        if (type == null) {
+            throw new IllegalArgumentException("Unknown enterprise bean type XXX " + enterpriseBean.getClass().getName());
         }
         return earContext.getNaming().createChildName(ejbModule.getModuleName(), ejbName, type);
     }

Modified: geronimo/server/trunk/modules/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbModule.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbModule.java?view=diff&rev=497672&r1=497671&r2=497672
==============================================================================
--- geronimo/server/trunk/modules/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbModule.java (original)
+++ geronimo/server/trunk/modules/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbModule.java Thu Jan 18 17:14:18 2007
@@ -16,17 +16,17 @@
  */
 package org.apache.geronimo.openejb.deployment;
 
-import org.apache.geronimo.j2ee.deployment.EJBModule;
+import java.util.Map;
+import java.util.jar.JarFile;
+
 import org.apache.geronimo.gbean.AbstractName;
+import org.apache.geronimo.j2ee.deployment.EJBModule;
 import org.apache.geronimo.kernel.repository.Environment;
 import org.apache.geronimo.openejb.xbeans.ejbjar.OpenejbGeronimoEjbJarType;
-import org.apache.openejb.jee.EjbJar;
 import org.apache.openejb.alt.config.ejb.OpenejbJar;
 import org.apache.openejb.assembler.classic.EjbJarInfo;
+import org.apache.openejb.jee.EjbJar;
 import org.apache.xmlbeans.XmlObject;
-
-import java.util.jar.JarFile;
-import java.util.Map;
 
 /**
  * @version $Rev$ $Date$

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=497672&r1=497671&r2=497672
==============================================================================
--- 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 Thu Jan 18 17:14:18 2007
@@ -27,6 +27,9 @@
 import java.util.Map;
 import java.util.jar.JarFile;
 
+import javax.ejb.SessionContext;
+import javax.ejb.EntityContext;
+
 import org.apache.geronimo.common.DeploymentException;
 import org.apache.geronimo.deployment.ModuleIDBuilder;
 import org.apache.geronimo.deployment.NamespaceDrivenBuilder;
@@ -165,13 +168,10 @@
             idBuilder.resolve(environment, new File(moduleFile.getName()).getName(), "jar");
         }
 
-        // create a xmlbeans version of the ejb-jar.xml file, because the jndi code is coupled based on xmlbeans objects
-        EjbJarType ejbJarType = XmlUtil.convertToXmlbeans(ejbJar);
-
-
         // todo THIS WILL NOT WORK WITH ANNOTATIONS... move this to initContext when naming is fixed
         // since assembly descriptor will only be valid once metadata complete
         // which is only available once a class loader has been constructed in the init phase
+        EjbJarType ejbJarType = XmlUtil.convertToXmlbeans(ejbJar);
         if (ejbJar.getAssemblyDescriptor() != null) {
             AssemblyDescriptorType assemblyDescriptor = ejbJarType.getAssemblyDescriptor();
             namingBuilder.buildEnvironment(assemblyDescriptor, geronimoOpenejb, environment);
@@ -246,6 +246,44 @@
         }
     }
 
+    protected static void unmapReferences(EjbJar ejbJar) {
+        for (EnterpriseBean enterpriseBean : ejbJar.getEnterpriseBeans()) {
+            enterpriseBean.getEjbRef().clear();
+            for (EjbRef ref : enterpriseBean.getEjbRef()) {
+                ref.setMappedName(null);
+            }
+            for (EjbLocalRef ref : enterpriseBean.getEjbLocalRef()) {
+                ref.setMappedName(null);
+            }
+            for (MessageDestinationRef ref : enterpriseBean.getMessageDestinationRef()) {
+                ref.setMappedName(null);
+            }
+            for (PersistenceContextRef ref : enterpriseBean.getPersistenceContextRef()) {
+                ref.setMappedName(null);
+            }
+            for (PersistenceUnitRef ref : enterpriseBean.getPersistenceUnitRef()) {
+                ref.setMappedName(null);
+            }
+            for (ResourceRef ref : enterpriseBean.getResourceRef()) {
+                ref.setMappedName(null);
+            }
+            for (Iterator<ResourceEnvRef> iterator = enterpriseBean.getResourceEnvRef().iterator(); iterator.hasNext();) {
+                ResourceEnvRef ref = iterator.next();
+                if (ref.getType().equals(SessionContext.class.getName())) {
+                    iterator.remove();
+                } else if (ref.getType().equals(EntityContext.class.getName())) {
+                    iterator.remove();
+                } else {
+                    ref.setMappedName(null);
+                }
+
+            }
+            for (ServiceRef ref : enterpriseBean.getServiceRef()) {
+                ref.setMappedName(null);
+            }
+        }
+    }
+
 
     public void installModule(JarFile earFile, EARContext earContext, Module module, Collection configurationStores, ConfigurationStore targetConfigurationStore, Collection repository) throws DeploymentException {
         installModule(module, earContext);
@@ -282,6 +320,9 @@
         EjbJar ejbJar = ejbModule.getEjbJar();
         ejbModule.setOriginalSpecDD(XmlUtil.marshal(ejbModule.getEjbJar()));
 
+        // We must set all mapped name references back to null or Geronimo will blow up
+        unmapReferences(ejbJar);
+
         // create a xmlbeans version of the ejb-jar.xml file, because the jndi code is coupled based on xmlbeans objects
         EjbJarType ejbJarType = XmlUtil.convertToXmlbeans(ejbJar);
         ejbModule.setSpecDD(ejbJarType);
@@ -316,6 +357,7 @@
      */
     public void addGBeans(EARContext earContext, Module module, ClassLoader cl, Collection repositories) throws DeploymentException {
         EjbModule ejbModule = (EjbModule) module;
+        EjbDeploymentBuilder ejbDeploymentBuilder = ejbModule.getEjbBuilder();
 
         // Add JSR77 EJBModule GBean
         GBeanData ejbModuleGBeanData = new GBeanData(ejbModule.getModuleName(), EjbModuleImplGBean.GBEAN_INFO);
@@ -340,14 +382,15 @@
             throw new DeploymentException("Unable to initialize EJBModule GBean " + ejbModuleGBeanData.getAbstractName(), e);
         }
 
+        // add a depdendency on the ejb module object
+        ejbDeploymentBuilder.addEjbModuleDependency(ejbModuleGBeanData.getAbstractName());
+
         // add enc
-        EjbDeploymentBuilder ejbDeploymentBuilder = ejbModule.getEjbBuilder();
         ejbDeploymentBuilder.buildEnc();
 
         // add the Jacc permissions to the ear
         ComponentPermissions componentPermissions = ejbDeploymentBuilder.buildComponentPermissions();
         earContext.addSecurityContext(ejbModule.getEjbJarInfo().moduleId, componentPermissions);
-
     }
 
 

Modified: geronimo/server/trunk/modules/geronimo-openejb-builder/src/test/java/org/apache/geronimo/openejb/deployment/EjbModuleBuilderTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-openejb-builder/src/test/java/org/apache/geronimo/openejb/deployment/EjbModuleBuilderTest.java?view=diff&rev=497672&r1=497671&r2=497672
==============================================================================
--- geronimo/server/trunk/modules/geronimo-openejb-builder/src/test/java/org/apache/geronimo/openejb/deployment/EjbModuleBuilderTest.java (original)
+++ geronimo/server/trunk/modules/geronimo-openejb-builder/src/test/java/org/apache/geronimo/openejb/deployment/EjbModuleBuilderTest.java Thu Jan 18 17:14:18 2007
@@ -65,8 +65,8 @@
         EjbModule ejbModule = new EjbModule(classLoader, moduleFile.getName(), ejbJar, openejbJar);
         EjbModuleBuilder.mapReferences(ejbModule.getEjbJar());
         // configure the application
-//        EjbJarInfo ejbJarInfo = openEjbSystem.configureApplication(ejbModule);
-//        openEjbSystem.createEjbJar(ejbJarInfo, classLoader);
+        EjbJarInfo ejbJarInfo = openEjbSystem.configureApplication(ejbModule);
+        openEjbSystem.createEjbJar(ejbJarInfo, classLoader);
     }
 
     private void addEjbContainer(OpenEjbSystem openEjbSystem, String id) throws Exception {

Modified: geronimo/server/trunk/modules/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbDeployment.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbDeployment.java?view=diff&rev=497672&r1=497671&r2=497672
==============================================================================
--- geronimo/server/trunk/modules/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbDeployment.java (original)
+++ geronimo/server/trunk/modules/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbDeployment.java Thu Jan 18 17:14:18 2007
@@ -177,15 +177,17 @@
 
     protected void start() throws Exception {
         deploymentInfo = (CoreDeploymentInfo) openEjbSystem.getDeploymentInfo(deploymentId);
-        deploymentInfo.getJndiEnc().bind("geronimo", componentContext);
         if (deploymentInfo == null) {
             throw new IllegalStateException("Ejb does not exist " + deploymentId);
         }
+        deploymentInfo.getJndiEnc().bind("geronimo", componentContext);
         deploymentInfo.set(EjbDeployment.class, this);
     }
 
     protected void stop() {
-        deploymentInfo.set(EjbDeployment.class, null);
-        deploymentInfo = null;
+        if (deploymentInfo != null) {
+            deploymentInfo.set(EjbDeployment.class, null);
+            deploymentInfo = null;
+        }
     }
 }

Modified: geronimo/server/trunk/modules/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbModuleImplGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbModuleImplGBean.java?view=diff&rev=497672&r1=497671&r2=497672
==============================================================================
--- geronimo/server/trunk/modules/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbModuleImplGBean.java (original)
+++ geronimo/server/trunk/modules/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbModuleImplGBean.java Thu Jan 18 17:14:18 2007
@@ -50,7 +50,7 @@
     public static final GBeanInfo GBEAN_INFO;
 
     static {
-        GBeanInfoBuilder infoBuilder = GBeanInfoBuilder.createStatic(EjbModuleImpl.class, NameFactory.EJB_MODULE);
+        GBeanInfoBuilder infoBuilder = GBeanInfoBuilder.createStatic(EjbModuleImplGBean.class, NameFactory.EJB_MODULE);
         infoBuilder.addReference("J2EEServer", J2EEServer.class);
         infoBuilder.addReference("J2EEApplication", J2EEApplication.class);
 
@@ -58,7 +58,7 @@
 
         infoBuilder.addReference("EJBCollection", EJB.class);
 
-        infoBuilder.addAttribute("classloader", ClassLoader.class, false);
+        infoBuilder.addAttribute("classLoader", ClassLoader.class, false);
 
         infoBuilder.addReference("OpenEjbSystem", OpenEjbSystem.class);
         infoBuilder.addAttribute("ejbJarInfo", EjbJarInfo.class, true);
@@ -69,7 +69,7 @@
                 "J2EEApplication",
                 "deploymentDescriptor",
                 "EJBCollection",
-                "classloader",
+                "classLoader",
                 "OpenEjbSystem",
                 "ejbJarInfo"
         });

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=497672&r1=497671&r2=497672
==============================================================================
--- 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 Thu Jan 18 17:14:18 2007
@@ -23,10 +23,13 @@
 
 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.kernel.GBeanNotFoundException;
 import org.apache.openejb.Container;
 import org.apache.openejb.DeploymentInfo;
 import org.apache.openejb.OpenEJBException;
-import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.util.proxy.Jdk13ProxyFactory;
 import org.apache.openejb.alt.config.ClientModule;
 import org.apache.openejb.alt.config.ConfigurationFactory;
 import org.apache.openejb.alt.config.EjbModule;
@@ -35,6 +38,7 @@
 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.ProxyFactoryInfo;
 import org.apache.openejb.assembler.dynamic.PassthroughFactory;
 import org.apache.openejb.spi.ContainerSystem;
 
@@ -46,6 +50,9 @@
     private final Assembler assembler;
 
     public OpenEjbSystemGBean(TransactionManager transactionManager) throws Exception {
+        this(transactionManager, null);
+    }
+    public OpenEjbSystemGBean(TransactionManager transactionManager, Kernel kernel) throws Exception {
         System.setProperty("duct tape","");
         if (transactionManager == null) {
             throw new NullPointerException("transactionManager is null");
@@ -55,6 +62,9 @@
         configurationFactory = new ConfigurationFactory(offline);
         assembler = new Assembler();
 
+
+        // install transaction manager
+        transactionManager = getRawService(kernel, transactionManager);
         TransactionServiceInfo transactionServiceInfo = new TransactionServiceInfo();
         PassthroughFactory.add(transactionServiceInfo, transactionManager);
         try {
@@ -64,9 +74,35 @@
         } finally {
             PassthroughFactory.remove(transactionServiceInfo);
         }
+
+        // install proxy factory
+        ProxyFactoryInfo proxyFactoryInfo = new ProxyFactoryInfo();
+        proxyFactoryInfo.id = "Default JDK 1.3 ProxyFactory";
+        proxyFactoryInfo.serviceType = "ProxyFactory";
+        proxyFactoryInfo.className = Jdk13ProxyFactory.class.getName();
+        proxyFactoryInfo.properties = new Properties();
+        assembler.createProxyFactory(proxyFactoryInfo);
+
+        // add our thread context listener
         GeronimoThreadContextListener.init();
     }
 
+    @SuppressWarnings({"unchecked"})
+    private static <T> T getRawService(Kernel kernel, T proxy) {
+        if (kernel == null) return proxy;
+
+        AbstractName abstractName = kernel.getAbstractNameFor(proxy);
+        if (abstractName == null) return proxy;
+
+        try {
+            Object service = kernel.getGBean(abstractName);
+            return (T) service;
+        } catch (GBeanNotFoundException e) {
+        }
+
+        return proxy;
+    }
+
     public ContainerSystem getContainerSystem() {
         return assembler.getContainerSystem();
     }
@@ -127,8 +163,10 @@
     static {
         GBeanInfoBuilder infoBuilder = GBeanInfoBuilder.createStatic(OpenEjbSystemGBean.class);
         infoBuilder.addReference("TransactionManager", TransactionManager.class);
+        infoBuilder.addAttribute("kernel", Kernel.class, false);
         infoBuilder.setConstructor(new String[] {
                 "TransactionManager",
+                "kernel",
         });
         GBEAN_INFO = infoBuilder.getBeanInfo();
     }

Modified: geronimo/server/trunk/modules/geronimo-openejb/src/main/resources/META-INF/geronimo-dependency.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-openejb/src/main/resources/META-INF/geronimo-dependency.xml?view=diff&rev=497672&r1=497671&r2=497672
==============================================================================
--- geronimo/server/trunk/modules/geronimo-openejb/src/main/resources/META-INF/geronimo-dependency.xml (original)
+++ geronimo/server/trunk/modules/geronimo-openejb/src/main/resources/META-INF/geronimo-dependency.xml Thu Jan 18 17:14:18 2007
@@ -38,10 +38,6 @@
       <artifactId>openejb-persistence</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.codehaus.castor</groupId>
-      <artifactId>castor</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.apache.geronimo.specs</groupId>
       <artifactId>geronimo-annotation_1.0_spec</artifactId>
     </dependency>
@@ -85,6 +81,11 @@
       <groupId>stax</groupId>
       <artifactId>stax-api</artifactId>
     </dependency>
+    <!-- castor -->
+    <dependency>
+      <groupId>org.codehaus.castor</groupId>
+      <artifactId>castor</artifactId>
+    </dependency>
     <dependency>
       <groupId>xerces</groupId>
       <artifactId>xercesImpl</artifactId>
@@ -93,4 +94,15 @@
       <groupId>oro</groupId>
       <artifactId>oro</artifactId>
     </dependency>
+    <!-- end castor -->
+    <!-- activemq -->
+    <dependency>
+      <groupId>org.apache.activemq</groupId>
+      <artifactId>activemq-ra</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.activemq</groupId>
+      <artifactId>activemq-core</artifactId>
+    </dependency>
+    <!-- end activemq -->
 </service>

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=497672&r1=497671&r2=497672
==============================================================================
--- 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 Thu Jan 18 17:14:18 2007
@@ -45,6 +45,7 @@
 import org.apache.geronimo.xbeans.geronimo.naming.GerPropertyType;
 import org.apache.geronimo.xbeans.javaee.PersistenceContextRefType;
 import org.apache.geronimo.xbeans.javaee.PropertyType;
+import org.apache.geronimo.xbeans.javaee.PersistenceContextTypeType;
 import org.apache.xmlbeans.QNameSet;
 import org.apache.xmlbeans.XmlObject;
 
@@ -74,7 +75,8 @@
         for (PersistenceContextRefType persistenceContextRef : specPersistenceContextRefsUntyped) {
             String persistenceContextRefName = persistenceContextRef.getPersistenceContextRefName().getStringValue().trim();
 
-            boolean transactionScoped = !persistenceContextRef.getPersistenceContextType().getStringValue().equals("extended");
+            PersistenceContextTypeType persistenceContextType = persistenceContextRef.getPersistenceContextType();
+            boolean transactionScoped = persistenceContextType == null || !persistenceContextType.getStringValue().equalsIgnoreCase("extended");
 
             PropertyType[] propertyTypes = persistenceContextRef.getPersistencePropertyArray();
             Map properties = new HashMap();

Modified: geronimo/server/trunk/modules/geronimo-persistence-jpa10-builder/src/main/java/org/apache/geronimo/persistence/builder/PersistenceUnitBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-persistence-jpa10-builder/src/main/java/org/apache/geronimo/persistence/builder/PersistenceUnitBuilder.java?view=diff&rev=497672&r1=497671&r2=497672
==============================================================================
--- geronimo/server/trunk/modules/geronimo-persistence-jpa10-builder/src/main/java/org/apache/geronimo/persistence/builder/PersistenceUnitBuilder.java (original)
+++ geronimo/server/trunk/modules/geronimo-persistence-jpa10-builder/src/main/java/org/apache/geronimo/persistence/builder/PersistenceUnitBuilder.java Thu Jan 18 17:14:18 2007
@@ -29,8 +29,6 @@
 import org.apache.geronimo.common.DeploymentException;
 import org.apache.geronimo.deployment.DeploymentContext;
 import org.apache.geronimo.deployment.NamespaceDrivenBuilder;
-import org.apache.geronimo.deployment.xbeans.ServiceDocument;
-import org.apache.geronimo.deployment.xmlbeans.XmlBeansUtil;
 import org.apache.geronimo.deployment.service.EnvironmentBuilder;
 import org.apache.geronimo.gbean.AbstractNameQuery;
 import org.apache.geronimo.gbean.GBeanData;
@@ -138,7 +136,7 @@
                 if (persistenceUnit.isSetExcludeUnlistedClasses()) {
                     gbeanData.setAttribute("excludeUnlistedClasses", persistenceUnit.getExcludeUnlistedClasses());
                 } else {
-                    gbeanData.setAttribute("excludeUnlistedClassesValue", false);
+                    gbeanData.setAttribute("excludeUnlistedClasses", false);
                 }
 
                 Properties properties = new Properties();