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/18 08:07:43 UTC

svn commit: r497324 - 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: Wed Jan 17 23:07:42 2007
New Revision: 497324

URL: http://svn.apache.org/viewvc?view=rev&rev=497324
Log:
Add container creation code and ref mapped names

Added:
    geronimo/server/trunk/modules/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbContainer.java
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/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/OpenEjbSystem.java
    geronimo/server/trunk/modules/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/OpenEjbSystemGBean.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=497324&r1=497323&r2=497324
==============================================================================
--- geronimo/server/trunk/configs/openejb/src/plan/plan.xml (original)
+++ geronimo/server/trunk/configs/openejb/src/plan/plan.xml Wed Jan 17 23:07:42 2007
@@ -23,9 +23,22 @@
     <gbean name="OpenEjbSystem" class="org.apache.geronimo.openejb.OpenEjbSystemGBean">
         <reference name="TransactionManager">
             <name>TransactionManager</name>
-        </reference>        
+        </reference>
     </gbean>
 
+    <gbean name="DefaultStatelessContainer" class="org.apache.geronimo.openejb.EjbContainer">
+        <attribute name="id">Default Stateless Container</attribute>
+    </gbean>
+    <gbean name="DefaultStatefulContainer" class="org.apache.geronimo.openejb.EjbContainer">
+        <attribute name="id">Default Stateful Container</attribute>
+    </gbean>
+    <gbean name="DefaultBMPContainer" class="org.apache.geronimo.openejb.EjbContainer">
+        <attribute name="id">Default BMP Container</attribute>
+    </gbean>
+    <gbean name="DefaultCMPContainer" class="org.apache.geronimo.openejb.EjbContainer">
+        <attribute name="id">Default CMP Container</attribute>
+    </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/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=497324&r1=497323&r2=497324
==============================================================================
--- 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 Wed Jan 17 23:07:42 2007
@@ -50,10 +50,10 @@
 import org.apache.geronimo.kernel.config.ConfigurationStore;
 import org.apache.geronimo.kernel.repository.Environment;
 import org.apache.geronimo.naming.deployment.ResourceEnvironmentSetter;
-import org.apache.geronimo.openejb.xbeans.ejbjar.OpenejbGeronimoEjbJarType;
+import org.apache.geronimo.openejb.EjbDeployment;
 import org.apache.geronimo.openejb.EjbModuleImplGBean;
 import org.apache.geronimo.openejb.OpenEjbSystem;
-import org.apache.geronimo.openejb.EjbDeployment;
+import org.apache.geronimo.openejb.xbeans.ejbjar.OpenejbGeronimoEjbJarType;
 import org.apache.geronimo.security.jacc.ComponentPermissions;
 import org.apache.geronimo.xbeans.geronimo.j2ee.GerSecurityDocument;
 import org.apache.geronimo.xbeans.javaee.AssemblyDescriptorType;
@@ -62,6 +62,15 @@
 import org.apache.openejb.alt.config.ejb.OpenejbJar;
 import org.apache.openejb.assembler.classic.EjbJarInfo;
 import org.apache.openejb.jee.EjbJar;
+import org.apache.openejb.jee.EjbLocalRef;
+import org.apache.openejb.jee.EjbRef;
+import org.apache.openejb.jee.EnterpriseBean;
+import org.apache.openejb.jee.MessageDestinationRef;
+import org.apache.openejb.jee.PersistenceContextRef;
+import org.apache.openejb.jee.PersistenceUnitRef;
+import org.apache.openejb.jee.ResourceEnvRef;
+import org.apache.openejb.jee.ResourceRef;
+import org.apache.openejb.jee.ServiceRef;
 import org.apache.xmlbeans.XmlCursor;
 import org.apache.xmlbeans.XmlObject;
 
@@ -73,6 +82,7 @@
  */
 public class EjbModuleBuilder implements ModuleBuilder {
     private static final String OPENEJBJAR_NAMESPACE = XmlUtil.OPENEJBJAR_QNAME.getNamespaceURI();
+    private static final String MAPPED_NAME_PREFIX = "java:/comp/geronimo/";
 
     private final Environment defaultEnvironment;
     private final Collection webServiceBuilders;
@@ -167,6 +177,9 @@
             namingBuilder.buildEnvironment(assemblyDescriptor, geronimoOpenejb, environment);
         }
 
+        // set mapped name or all refs
+        mapReferences(ejbJar);
+
         //overridden web service locations
         Map correctedPortLocations = new HashMap();
 
@@ -195,6 +208,44 @@
 
         return new EjbModule(standAlone, moduleName, environment, moduleFile, targetPath, ejbJar, openejbJar, geronimoOpenejb, ejbJarXml, sharedContext);
     }
+
+    private static void mapReferences(EjbJar ejbJar) {
+        for (EnterpriseBean enterpriseBean : ejbJar.getEnterpriseBeans()) {
+            for (EjbRef ref : enterpriseBean.getEjbRef()) {
+                String refName = ref.getEjbRefName();
+                ref.setMappedName(MAPPED_NAME_PREFIX + refName);
+            }
+            for (EjbLocalRef ref : enterpriseBean.getEjbLocalRef()) {
+                String refName = ref.getEjbRefName();
+                ref.setMappedName(MAPPED_NAME_PREFIX + refName);
+            }
+            for (MessageDestinationRef ref : enterpriseBean.getMessageDestinationRef()) {
+                String refName = ref.getMessageDestinationRefName();
+                ref.setMappedName(MAPPED_NAME_PREFIX + refName);
+            }
+            for (PersistenceContextRef ref : enterpriseBean.getPersistenceContextRef()) {
+                String refName = ref.getPersistenceContextRefName();
+                ref.setMappedName(MAPPED_NAME_PREFIX + refName);
+            }
+            for (PersistenceUnitRef ref : enterpriseBean.getPersistenceUnitRef()) {
+                String refName = ref.getPersistenceUnitRefName();
+                ref.setMappedName(MAPPED_NAME_PREFIX + refName);
+            }
+            for (ResourceRef ref : enterpriseBean.getResourceRef()) {
+                String refName = ref.getResRefName();
+                ref.setMappedName(MAPPED_NAME_PREFIX + refName);
+            }
+            for (ResourceEnvRef ref : enterpriseBean.getResourceEnvRef()) {
+                String refName = ref.getResourceEnvRefName();
+                ref.setMappedName(MAPPED_NAME_PREFIX + refName);
+            }
+            for (ServiceRef ref : enterpriseBean.getServiceRef()) {
+                String refName = ref.getServiceRefName();
+                ref.setMappedName(MAPPED_NAME_PREFIX + refName);
+            }
+        }
+    }
+
 
     public void installModule(JarFile earFile, EARContext earContext, Module module, Collection configurationStores, ConfigurationStore targetConfigurationStore, Collection repository) throws DeploymentException {
         installModule(module, earContext);

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=497324&r1=497323&r2=497324
==============================================================================
--- 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 Wed Jan 17 23:07:42 2007
@@ -17,13 +17,13 @@
 package org.apache.geronimo.openejb.deployment;
 
 import java.io.File;
-import java.util.jar.JarFile;
-import java.net.URLClassLoader;
 import java.net.URL;
-
+import java.net.URLClassLoader;
+import java.util.jar.JarFile;
 import javax.transaction.TransactionManager;
 
 import junit.framework.TestCase;
+import org.apache.geronimo.openejb.EjbContainer;
 import org.apache.geronimo.openejb.OpenEjbSystem;
 import org.apache.geronimo.openejb.OpenEjbSystemGBean;
 import org.apache.geronimo.transaction.manager.GeronimoTransactionManager;
@@ -38,13 +38,18 @@
 public class EjbModuleBuilderTest extends TestCase {
     public void test() throws Exception {
         // create reference to openejb itests
-        File file = new File(System.getProperty("user.home") + ".m2/repository/org/apache/openejb/openejb-itests-beans/3.0-incubating-SNAPSHOT/openejb-itests-beans-3.0-incubating-SNAPSHOT.jar");
+        File file = new File(System.getProperty("user.home") + "/.m2/repository/org/apache/openejb/openejb-itests-beans/3.0-incubating-SNAPSHOT/openejb-itests-beans-3.0-incubating-SNAPSHOT.jar");
         if (!file.canRead()) return;
         JarFile moduleFile = new JarFile(file);
 
         TransactionManager transactionManager = new GeronimoTransactionManager();
         OpenEjbSystem openEjbSystem = new OpenEjbSystemGBean(transactionManager);
 
+        addEjbContainer(openEjbSystem, "Default Stateless Container");
+        addEjbContainer(openEjbSystem, "Default Stateful Container");
+        addEjbContainer(openEjbSystem, "Default BMP Container");
+        addEjbContainer(openEjbSystem, "Default CMP Container");
+
         // load ejb-jar.xml
         String ejbJarXml = XmlUtil.loadEjbJarXml(null, moduleFile);
         assertNotNull(ejbJarXml);
@@ -59,9 +64,15 @@
         EjbModule ejbModule = new EjbModule(classLoader, moduleFile.getName(), ejbJar, openejbJar);
 
         // configure the application
-        EjbJarInfo ejbJarInfo = openEjbSystem.configureApplication(ejbModule);
+//        EjbJarInfo ejbJarInfo = openEjbSystem.configureApplication(ejbModule);
 
-        openEjbSystem.createEjbJar(ejbJarInfo, classLoader);
+//        openEjbSystem.createEjbJar(ejbJarInfo, classLoader);
+    }
 
+    private void addEjbContainer(OpenEjbSystem openEjbSystem, String id) throws Exception {
+        EjbContainer ejbContainer = new EjbContainer();
+        ejbContainer.setOpenEjbSystem(openEjbSystem);
+        ejbContainer.setId(id);
+        ejbContainer.doStart();
     }
 }

Added: geronimo/server/trunk/modules/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbContainer.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbContainer.java?view=auto&rev=497324
==============================================================================
--- geronimo/server/trunk/modules/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbContainer.java (added)
+++ geronimo/server/trunk/modules/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbContainer.java Wed Jan 17 23:07:42 2007
@@ -0,0 +1,101 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.geronimo.openejb;
+
+import java.util.Properties;
+
+import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.geronimo.gbean.GBeanLifecycle;
+import org.apache.openejb.assembler.classic.ContainerInfo;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class EjbContainer implements GBeanLifecycle {
+    private OpenEjbSystem openEjbSystem;
+    private String id;
+    private Properties properties;
+    private String provider;
+    private Class<ContainerInfo> type = ContainerInfo.class;
+
+    public OpenEjbSystem getOpenEjbSystem() {
+        return openEjbSystem;
+    }
+
+    public void setOpenEjbSystem(OpenEjbSystem openEjbSystem) {
+        this.openEjbSystem = openEjbSystem;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public Properties getProperties() {
+        return properties;
+    }
+
+    public void setProperties(Properties properties) {
+        this.properties = properties;
+    }
+
+    public String getProvider() {
+        return provider;
+    }
+
+    public void setProvider(String provider) {
+        this.provider = provider;
+    }
+
+    public Class<ContainerInfo> getType() {
+        return type;
+    }
+
+    public void setType(Class<ContainerInfo> type) {
+        this.type = type;
+    }
+
+    public void doStart() throws Exception {
+        openEjbSystem.createContainer(type, id, properties, provider);
+    }
+
+    public void doStop() throws Exception {
+    }
+
+    public void doFail() {
+    }
+
+    public static final GBeanInfo GBEAN_INFO;
+
+    static {
+        GBeanInfoBuilder infoBuilder = GBeanInfoBuilder.createStatic(EjbContainer.class);
+        infoBuilder.addReference("OpenEjbSystem", OpenEjbSystem.class);
+        infoBuilder.addAttribute("id", String.class, true);
+        infoBuilder.addAttribute("properties", Properties.class, true);
+        infoBuilder.addAttribute("provider", String.class, true);
+        infoBuilder.addAttribute("type", Class.class, true);
+        GBEAN_INFO = infoBuilder.getBeanInfo();
+    }
+
+    public static GBeanInfo getGBeanInfo() {
+        return GBEAN_INFO;
+    }
+}

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=497324&r1=497323&r2=497324
==============================================================================
--- 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 Wed Jan 17 23:07:42 2007
@@ -136,7 +136,7 @@
     }
 
     public Context getComponentContext() {
-        return componentContext;
+        return deploymentInfo.getJndiEnc();
     }
 
     public Set getUnshareableResources() {
@@ -175,8 +175,9 @@
         return true;
     }
 
-    protected void start() {
+    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);
         }

Modified: geronimo/server/trunk/modules/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/OpenEjbSystem.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/OpenEjbSystem.java?view=diff&rev=497324&r1=497323&r2=497324
==============================================================================
--- geronimo/server/trunk/modules/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/OpenEjbSystem.java (original)
+++ geronimo/server/trunk/modules/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/OpenEjbSystem.java Wed Jan 17 23:07:42 2007
@@ -27,6 +27,7 @@
 import org.apache.openejb.alt.config.EjbModule;
 import org.apache.openejb.assembler.classic.ClientInfo;
 import org.apache.openejb.assembler.classic.EjbJarInfo;
+import org.apache.openejb.assembler.classic.ContainerInfo;
 import org.apache.openejb.spi.ContainerSystem;
 
 /**
@@ -35,7 +36,7 @@
 public interface OpenEjbSystem {
     ContainerSystem getContainerSystem();
 
-    Container createContainer(String serviceId, Properties declaredProperties, String providerId, String serviceType) throws OpenEJBException;
+    Container createContainer(Class<? extends ContainerInfo> type, String serviceId, Properties declaredProperties, String providerId) throws OpenEJBException;
 
     ClientInfo configureApplication(ClientModule clientModule) throws OpenEJBException;
 

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=497324&r1=497323&r2=497324
==============================================================================
--- 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 Wed Jan 17 23:07:42 2007
@@ -16,27 +16,26 @@
  */
 package org.apache.geronimo.openejb;
 
-import java.util.Properties;
 import java.io.IOException;
-
+import java.util.Properties;
 import javax.naming.NamingException;
 import javax.transaction.TransactionManager;
 
-import org.apache.openejb.alt.config.ConfigurationFactory;
+import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.openejb.Container;
+import org.apache.openejb.DeploymentInfo;
+import org.apache.openejb.OpenEJBException;
 import org.apache.openejb.alt.config.ClientModule;
+import org.apache.openejb.alt.config.ConfigurationFactory;
 import org.apache.openejb.alt.config.EjbModule;
 import org.apache.openejb.assembler.classic.Assembler;
-import org.apache.openejb.assembler.classic.ContainerInfo;
 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.dynamic.PassthroughFactory;
 import org.apache.openejb.spi.ContainerSystem;
-import org.apache.openejb.Container;
-import org.apache.openejb.OpenEJBException;
-import org.apache.openejb.DeploymentInfo;
-import org.apache.geronimo.gbean.GBeanInfo;
-import org.apache.geronimo.gbean.GBeanInfoBuilder;
 
 /**
  * @version $Rev$ $Date$
@@ -45,8 +44,10 @@
     private final ConfigurationFactory configurationFactory;
     private final Assembler assembler;
 
-    public OpenEjbSystemGBean(TransactionManager transactionManager) throws OpenEJBException {
-        if (transactionManager == null) throw new NullPointerException("transactionManager is null");
+    public OpenEjbSystemGBean(TransactionManager transactionManager) throws Exception {
+        if (transactionManager == null) {
+            throw new NullPointerException("transactionManager is null");
+        }
 
         configurationFactory = new ConfigurationFactory();
         assembler = new Assembler();
@@ -67,8 +68,8 @@
         return assembler.getContainerSystem();
     }
 
-    public Container createContainer(String serviceId, Properties declaredProperties, String providerId, String serviceType) throws OpenEJBException {
-        ContainerInfo containerInfo = configurationFactory.configureService(ContainerInfo.class, serviceId, declaredProperties, providerId, ContainerInfo.class.getSimpleName());
+    public Container createContainer(Class<? extends ContainerInfo> type, String serviceId, Properties declaredProperties, String providerId) throws OpenEJBException {
+        ContainerInfo containerInfo = configurationFactory.configureService(type, serviceId, declaredProperties, providerId, "Container");
         assembler.createContainer(containerInfo);
         Container container = assembler.getContainerSystem().getContainer(serviceId);
         return container;
@@ -123,7 +124,9 @@
     static {
         GBeanInfoBuilder infoBuilder = GBeanInfoBuilder.createStatic(OpenEjbSystemGBean.class);
         infoBuilder.addReference("TransactionManager", TransactionManager.class);
-        infoBuilder.setConstructor(new String[] {"TransactionManager"});
+        infoBuilder.setConstructor(new String[] {
+                "TransactionManager",
+        });
         GBEAN_INFO = infoBuilder.getBeanInfo();
     }