Return-Path: Delivered-To: apmail-geronimo-scm-archive@www.apache.org Received: (qmail 88717 invoked from network); 13 Aug 2010 17:42:20 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 13 Aug 2010 17:42:20 -0000 Received: (qmail 53331 invoked by uid 500); 13 Aug 2010 17:42:20 -0000 Delivered-To: apmail-geronimo-scm-archive@geronimo.apache.org Received: (qmail 53259 invoked by uid 500); 13 Aug 2010 17:42:19 -0000 Mailing-List: contact scm-help@geronimo.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: dev@geronimo.apache.org List-Id: Delivered-To: mailing list scm@geronimo.apache.org Received: (qmail 53252 invoked by uid 99); 13 Aug 2010 17:42:19 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 13 Aug 2010 17:42:19 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED,T_FILL_THIS_FORM_SHORT X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 13 Aug 2010 17:42:15 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 78A6923888DD; Fri, 13 Aug 2010 17:40:56 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r985297 - in /geronimo/server/trunk/plugins/openejb: geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/ geronimo-openejb/src/main/java/org/apache/geronimo/openejb/ Date: Fri, 13 Aug 2010 17:40:56 -0000 To: scm@geronimo.apache.org From: gawor@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20100813174056.78A6923888DD@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: gawor Date: Fri Aug 13 17:40:55 2010 New Revision: 985297 URL: http://svn.apache.org/viewvc?rev=985297&view=rev Log: Make sure the app and global jndi information generated at deploy time is used at runtime. Otherwise, some ejbs might be be fully injected Added: geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/GeronimoEjbInfo.java (with props) Modified: geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbDeploymentBuilder.java geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbModule.java geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbModuleBuilder.java geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbRefBuilder.java geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbModuleImpl.java geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/MEJBGBean.java geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/OpenEjbSystem.java geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/OpenEjbSystemGBean.java Modified: geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbDeploymentBuilder.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbDeploymentBuilder.java?rev=985297&r1=985296&r2=985297&view=diff ============================================================================== --- geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbDeploymentBuilder.java (original) +++ geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbDeploymentBuilder.java Fri Aug 13 17:40:55 2010 @@ -390,7 +390,7 @@ public class EjbDeploymentBuilder { } //TODO well, what is the appName? String appName = null; - EjbJarInfo ejbJarInfo = ejbModule.getEjbJarInfo(); + EjbJarInfo ejbJarInfo = ejbModule.getEjbInfo().getEjbJarInfo(); for (EnterpriseBean bean : ejbJar.getEnterpriseBeans()) { String ejbName = bean.getEjbName(); String deploymentId = getDeploymentId(ejbName, ejbJarInfo); Modified: geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbModule.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbModule.java?rev=985297&r1=985296&r2=985297&view=diff ============================================================================== --- geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbModule.java (original) +++ geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbModule.java Fri Aug 13 17:40:55 2010 @@ -26,8 +26,8 @@ import org.apache.geronimo.j2ee.deployme import org.apache.geronimo.j2ee.jndi.JndiKey; import org.apache.geronimo.kernel.config.ConfigurationModuleType; import org.apache.geronimo.kernel.repository.Environment; +import org.apache.geronimo.openejb.GeronimoEjbInfo; import org.apache.geronimo.openejb.xbeans.ejbjar.OpenejbGeronimoEjbJarType; -import org.apache.openejb.assembler.classic.EjbJarInfo; import org.apache.openejb.config.ConfigurationFactory; import org.apache.openejb.jee.EjbJar; import org.apache.openejb.jee.EnterpriseBean; @@ -39,7 +39,7 @@ import org.apache.xmlbeans.XmlObject; * @version $Rev$ $Date$ */ public class EjbModule extends EJBModule { - private EjbJarInfo ejbJarInfo; + private GeronimoEjbInfo ejbInfo; private EjbDeploymentBuilder ejbDeploymentBuilder; private final org.apache.openejb.config.EjbModule ejbModule; private final ConfigurationFactory.Chain preAutoConfigDeployer; @@ -75,12 +75,12 @@ public class EjbModule extends EJBModule return ejbModule; } - public EjbJarInfo getEjbJarInfo() { - return ejbJarInfo; + public GeronimoEjbInfo getEjbInfo() { + return ejbInfo; } - public void setEjbJarInfo(EjbJarInfo ejbJarInfo) { - this.ejbJarInfo = ejbJarInfo; + public void setEjbInfo(GeronimoEjbInfo ejbInfo) { + this.ejbInfo = ejbInfo; } public EjbDeploymentBuilder getEjbBuilder() { Modified: geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbModuleBuilder.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbModuleBuilder.java?rev=985297&r1=985296&r2=985297&view=diff ============================================================================== --- geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbModuleBuilder.java (original) +++ geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbModuleBuilder.java Fri Aug 13 17:40:55 2010 @@ -75,6 +75,7 @@ import org.apache.geronimo.naming.deploy import org.apache.geronimo.openejb.EjbContainer; import org.apache.geronimo.openejb.EjbDeployment; import org.apache.geronimo.openejb.EjbModuleImpl; +import org.apache.geronimo.openejb.GeronimoEjbInfo; import org.apache.geronimo.openejb.OpenEjbSystem; import org.apache.geronimo.openejb.xbeans.ejbjar.OpenejbGeronimoEjbJarType; import org.apache.geronimo.persistence.PersistenceUnitGBean; @@ -610,9 +611,9 @@ public class EjbModuleBuilder implements private void doInitContext(EARContext earContext, Module module, Bundle bundle) throws DeploymentException { EjbModule ejbModule = (EjbModule) module; - EjbJarInfo ejbJarInfo = getEjbJarInfo(earContext, ejbModule, bundle); + GeronimoEjbInfo ejbInfo = getEjbInfo(earContext, ejbModule, bundle); - ejbModule.setEjbJarInfo(ejbJarInfo); + ejbModule.setEjbInfo(ejbInfo); // update the original spec dd with the metadata complete dd EjbJar ejbJar = ejbModule.getEjbJar(); @@ -669,9 +670,9 @@ public class EjbModuleBuilder implements } } - private EjbJarInfo getEjbJarInfo(EARContext earContext, EjbModule ejbModule, Bundle bundle) throws DeploymentException { + private GeronimoEjbInfo getEjbInfo(EARContext earContext, EjbModule ejbModule, Bundle bundle) throws DeploymentException { EarData earData = EarData.KEY.get(earContext.getGeneralData()); - if (earData.getEjbJars().isEmpty()) { + if (earData.getEjbInfos().isEmpty()) { ClassLoader bundleLoader = new BundleClassLoader(bundle); @@ -710,7 +711,8 @@ public class EjbModuleBuilder implements // add all of the modules to the ear data for (EjbJarInfo ejbJar : appInfo.ejbJars) { - earData.addEjbJar(ejbJar); + GeronimoEjbInfo ejbInfo = new GeronimoEjbInfo(ejbJar, appInfo.globalJndiEnc, appInfo.appJndiEnc); + earData.addEjbInfo(ejbInfo); } // add the cmp jar @@ -736,8 +738,8 @@ public class EjbModuleBuilder implements } // find our module - EjbJarInfo ejbJarInfo = earData.getEjbJar(ejbModule.getEjbModule().getModuleId()); - return ejbJarInfo; + GeronimoEjbInfo ejbInfo = earData.getEjbInfo(ejbModule.getEjbModule().getModuleId()); + return ejbInfo; } private AppInfo configureApplication(AppModule appModule, EjbModule ejbModule, Configuration configuration) @@ -750,10 +752,11 @@ public class EjbModuleBuilder implements ConfigurationFactory.Chain chain = new ConfigurationFactory.Chain(); ConfigurationFactory configurationFactory = new ConfigurationFactory(offline, chain, openEjbConfiguration); buildChain(offline, - ejbModule.getPreAutoConfigDeployer(), - SystemInstance.get().getOptions(), - configurationFactory, - chain); + ejbModule.getPreAutoConfigDeployer(), + SystemInstance.get().getOptions(), + configurationFactory, + chain); + ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader(); Thread.currentThread().setContextClassLoader(appModule.getClassLoader()); try { @@ -770,6 +773,7 @@ public class EjbModuleBuilder implements private static final String DEBUGGABLE_VM_HACKERY_PROPERTY = "openejb.debuggable-vm-hackery"; private static final String VALIDATION_SKIP_PROPERTY = "openejb.validation.skip"; private static final String WEBSERVICES_ENABLED = "openejb.webservices.enabled"; + private static ConfigurationFactory.Chain buildChain(boolean offline, DynamicDeployer preAutoConfigDeployer, Options options, ConfigurationFactory configurationFactory, ConfigurationFactory.Chain chain) { chain.add(new GeneratedClientModules.Add()); @@ -842,7 +846,6 @@ public class EjbModuleBuilder implements return chain; } - private void addContainerInfos(Configuration configuration, ContainerSystemInfo containerSystem, ConfigurationFactory configurationFactory) throws OpenEJBException { LinkedHashSet containerDatas = configuration.findGBeanDatas(Collections.singleton(new AbstractNameQuery(EjbContainer.class.getName()))); for (GBeanData containerData : containerDatas) { @@ -988,7 +991,7 @@ public class EjbModuleBuilder implements linkResolver.add(rootUrl, name, id); } - EjbJarInfo ejbJarInfo = ejbModule.getEjbJarInfo(); + EjbJarInfo ejbJarInfo = ejbModule.getEjbInfo().getEjbJarInfo(); for (EnterpriseBeanInfo beanInfo : ejbJarInfo.enterpriseBeans) { if (beanInfo instanceof StatefulBeanInfo) { StatefulBeanInfo statefulBeanInfo = (StatefulBeanInfo) beanInfo; @@ -1017,7 +1020,7 @@ public class EjbModuleBuilder implements EjbDeployment.class.getName()))); ejbModuleGBeanData.setReferencePattern("OpenEjbSystem", new AbstractNameQuery(null, Collections.EMPTY_MAP, OpenEjbSystem.class.getName())); - ejbModuleGBeanData.setAttribute("ejbJarInfo", ejbModule.getEjbJarInfo()); + ejbModuleGBeanData.setAttribute("ejbInfo", ejbModule.getEjbInfo()); ejbModuleGBeanData.setAttribute("modulePath", ejbModule.getTargetPath()); ejbModuleGBeanData.setAttribute("moduleContext", module.getJndiScope(JndiScope.module)); } catch (Exception e) { @@ -1029,7 +1032,7 @@ public class EjbModuleBuilder implements // add the Jacc permissions to the ear ComponentPermissions componentPermissions = ejbDeploymentBuilder.buildComponentPermissions(); - earContext.addSecurityContext(ejbModule.getEjbJarInfo().moduleId, componentPermissions); + earContext.addSecurityContext(ejbModule.getEjbInfo().getEjbJarInfo().moduleId, componentPermissions); setMdbContainerIds(earContext, ejbModule, ejbModuleGBeanData); @@ -1049,7 +1052,7 @@ public class EjbModuleBuilder implements return; } OpenejbJarType openejbJarType = (OpenejbJarType) altDD; - EjbJarInfo ejbJarInfo = ejbModule.getEjbJarInfo(); + EjbJarInfo ejbJarInfo = ejbModule.getEjbInfo().getEjbJarInfo(); Map mdbs = new TreeMap(); for (EnterpriseBeanInfo enterpriseBean : ejbJarInfo.enterpriseBeans) { @@ -1145,7 +1148,7 @@ public class EjbModuleBuilder implements }; private final Map ejbModules = new TreeMap(); - private final Map ejbJars = new TreeMap(); + private final Map ejbJars = new TreeMap(); public void addEjbModule(EjbModule ejbModule) { ejbModules.put(ejbModule.getEjbModule().getModuleId(), ejbModule); @@ -1163,23 +1166,22 @@ public class EjbModuleBuilder implements return ejbModules.values(); } - public void addEjbJar(EjbJarInfo ejbJarInfo) { - ejbJars.put(ejbJarInfo.moduleId, ejbJarInfo); + public void addEjbInfo(GeronimoEjbInfo ejbInfo) { + ejbJars.put(ejbInfo.getEjbJarInfo().moduleId, ejbInfo); } - public EjbJarInfo getEjbJar(String moduleId) throws DeploymentException { - EjbJarInfo ejbJarInfo = ejbJars.get(moduleId); - if (ejbJarInfo == null) { + public GeronimoEjbInfo getEjbInfo(String moduleId) throws DeploymentException { + GeronimoEjbInfo ejbInfo = ejbJars.get(moduleId); + if (ejbInfo == null) { throw new DeploymentException("Ejb jar configuration passed but expected module " + moduleId + " was not found in configured module list " + ejbJars.keySet()); } - return ejbJarInfo; + return ejbInfo; } - public Collection getEjbJars() { + public Collection getEjbInfos() { return ejbJars.values(); } } - } Modified: geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbRefBuilder.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbRefBuilder.java?rev=985297&r1=985296&r2=985297&view=diff ============================================================================== --- geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbRefBuilder.java (original) +++ geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbRefBuilder.java Fri Aug 13 17:40:55 2010 @@ -38,6 +38,7 @@ import org.apache.geronimo.j2ee.j2eeobje import org.apache.geronimo.kernel.repository.Environment; import org.apache.geronimo.naming.deployment.AbstractNamingBuilder; import org.apache.geronimo.openejb.ClientEjbReference; +import org.apache.geronimo.openejb.GeronimoEjbInfo; import org.apache.geronimo.xbeans.geronimo.naming.GerEjbLocalRefDocument; import org.apache.geronimo.xbeans.geronimo.naming.GerEjbLocalRefType; import org.apache.geronimo.xbeans.geronimo.naming.GerEjbRefDocument; @@ -111,25 +112,24 @@ public class EjbRefBuilder extends Abstr Map> injectionsMap = new HashMap>(); for (Map.Entry entry: specDD.getEjbRefMap().entrySet()) { - if (!entry.getValue().getInjectionTarget().isEmpty()) { - injectionsMap.put(entry.getKey(), entry.getValue().getInjectionTarget()); - } + injectionsMap.put(entry.getKey(), entry.getValue().getInjectionTarget()); } for (Map.Entry entry: specDD.getEjbLocalRefMap().entrySet()) { - if (!entry.getValue().getInjectionTarget().isEmpty()) { - injectionsMap.put(entry.getKey(), entry.getValue().getInjectionTarget()); - } + injectionsMap.put(entry.getKey(), entry.getValue().getInjectionTarget()); } + Map map = null; try { EjbModuleBuilder.EarData earData = EjbModuleBuilder.EarData.KEY.get(module.getRootEarContext().getGeneralData()); - Collection ejbJars = Collections.emptySet(); + Collection ejbInfos = Collections.emptySet(); if (earData != null) { - ejbJars = earData.getEjbJars(); + ejbInfos = earData.getEjbInfos(); } AppInfo appInfo = new AppInfo(); - appInfo.ejbJars.addAll(ejbJars); + for (GeronimoEjbInfo ejbInfo : ejbInfos) { + appInfo.ejbJars.add(ejbInfo.getEjbJarInfo()); + } JndiEncInfoBuilder jndiEncInfoBuilder = new JndiEncInfoBuilder(appInfo); JndiEncInfo moduleJndi = new JndiEncInfo(); Modified: geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbModuleImpl.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbModuleImpl.java?rev=985297&r1=985296&r2=985297&view=diff ============================================================================== --- geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbModuleImpl.java (original) +++ geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbModuleImpl.java Fri Aug 13 17:40:55 2010 @@ -45,7 +45,7 @@ import org.apache.geronimo.management.J2 import org.apache.openejb.DeploymentInfo; import org.apache.openejb.NoSuchApplicationException; import org.apache.openejb.UndeployException; -import org.apache.openejb.assembler.classic.EjbJarInfo; +import org.apache.openejb.assembler.classic.AppInfo; import org.apache.openejb.core.CoreDeploymentInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -65,7 +65,7 @@ public class EjbModuleImpl implements EJ private final ClassLoader classLoader; private final OpenEjbSystem openEjbSystem; - private final EjbJarInfo ejbJarInfo; + private final AppInfo appInfo; public EjbModuleImpl(@ParamSpecial(type = SpecialAttributeType.objectName) String objectName, @ParamReference(name = "J2EEServer", namingType = NameFactory.J2EE_SERVER) J2EEServer server, @@ -75,7 +75,7 @@ public class EjbModuleImpl implements EJ @ParamSpecial(type = SpecialAttributeType.classLoader) ClassLoader classLoader, @ParamSpecial(type = SpecialAttributeType.kernel) Kernel kernel, @ParamReference(name = "OpenEjbSystem") OpenEjbSystem openEjbSystem, - @ParamAttribute(name = "ejbJarInfo") EjbJarInfo ejbJarInfo) throws NamingException { + @ParamAttribute(name = "ejbInfo") GeronimoEjbInfo ejbInfo) throws NamingException { this.objectName = objectName; ObjectName myObjectName = ObjectNameUtil.getObjectName(objectName); verifyObjectName(myObjectName); @@ -102,9 +102,10 @@ public class EjbModuleImpl implements EJ this.classLoader = classLoader; this.openEjbSystem = openEjbSystem; - this.ejbJarInfo = ejbJarInfo; + + this.appInfo = ejbInfo.createAppInfo(); } - + private void removeEjb(EjbDeployment ejb) { GeronimoThreadContextListener.get().removeEjb(ejb.getDeploymentId()); ejbs.remove(ejb.getDeploymentId()); @@ -168,7 +169,7 @@ public class EjbModuleImpl implements EJ } public void doStart() throws Exception { - openEjbSystem.createEjbJar(ejbJarInfo, classLoader); + openEjbSystem.createApplication(appInfo, classLoader); for (String deploymentId: ejbs.keySet()) { DeploymentInfo deploymentInfo = openEjbSystem.getDeploymentInfo(deploymentId); GeronimoThreadContextListener.get().getEjbDeployment((CoreDeploymentInfo) deploymentInfo); @@ -177,7 +178,7 @@ public class EjbModuleImpl implements EJ public void doStop() { try { - openEjbSystem.removeEjbJar(ejbJarInfo, classLoader); + openEjbSystem.removeApplication(appInfo, classLoader); } catch (NoSuchApplicationException e) { log.error("Module does not exist.", e); } catch (UndeployException e) { Added: geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/GeronimoEjbInfo.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/GeronimoEjbInfo.java?rev=985297&view=auto ============================================================================== --- geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/GeronimoEjbInfo.java (added) +++ geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/GeronimoEjbInfo.java Fri Aug 13 17:40:55 2010 @@ -0,0 +1,64 @@ +/** + * 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.io.Serializable; + +import org.apache.openejb.assembler.classic.AppInfo; +import org.apache.openejb.assembler.classic.EjbJarInfo; +import org.apache.openejb.assembler.classic.JndiEncInfo; + +public class GeronimoEjbInfo implements Serializable { + + private final EjbJarInfo ejbJarInfo; + private final JndiEncInfo globalJndiEnc; + private final JndiEncInfo appJndiEnc; + + public GeronimoEjbInfo(EjbJarInfo ejbJarInfo) { + this(ejbJarInfo, new JndiEncInfo(), new JndiEncInfo()); + } + + public GeronimoEjbInfo(EjbJarInfo ejbJarInfo, JndiEncInfo globalJndiEnc, JndiEncInfo appJndiEnc) { + this.ejbJarInfo = ejbJarInfo; + this.globalJndiEnc = globalJndiEnc; + this.appJndiEnc = appJndiEnc; + } + + public EjbJarInfo getEjbJarInfo() { + return ejbJarInfo; + } + + public AppInfo createAppInfo() { + AppInfo appInfo = new AppInfo(); + appInfo.jarPath = ejbJarInfo.jarPath; + appInfo.ejbJars.add(ejbJarInfo); + merge(appInfo.appJndiEnc, appJndiEnc); + merge(appInfo.globalJndiEnc, globalJndiEnc); + return appInfo; + } + + private static void merge(JndiEncInfo dest, JndiEncInfo source) { + dest.envEntries.addAll(source.envEntries); + dest.resourceRefs.addAll(source.resourceRefs); + dest.resourceEnvRefs.addAll(source.resourceEnvRefs); + dest.persistenceContextRefs.addAll(source.persistenceContextRefs); + dest.persistenceUnitRefs.addAll(source.persistenceUnitRefs); + dest.serviceRefs.addAll(source.serviceRefs); + dest.ejbLocalReferences.addAll(source.ejbLocalReferences); + dest.ejbReferences.addAll(source.ejbReferences); + } +} Propchange: geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/GeronimoEjbInfo.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/GeronimoEjbInfo.java ------------------------------------------------------------------------------ svn:keywords = Date Revision Propchange: geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/GeronimoEjbInfo.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/MEJBGBean.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/MEJBGBean.java?rev=985297&r1=985296&r2=985297&view=diff ============================================================================== --- geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/MEJBGBean.java (original) +++ geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/MEJBGBean.java Fri Aug 13 17:40:55 2010 @@ -47,7 +47,8 @@ public class MEJBGBean implements GBeanL OpenEjbSystem openEjbSystem = ejbContainer.getOpenEjbSystem(); //A dummy URL MEJBGBean.class.getResource( "" ).toString() to avoid the "java.net.MalformedURLException: no protocol: MEJBGBean" when startup EjbJarInfo ejbJarInfo = openEjbSystem.configureApplication(new EjbModule(cl, getClass().getSimpleName(), MEJBGBean.class.getResource( "" ).toString(), ejbJar, null)); - openEjbSystem.createEjbJar(ejbJarInfo, cl); + GeronimoEjbInfo ejbInfo = new GeronimoEjbInfo(ejbJarInfo); + openEjbSystem.createApplication(ejbInfo.createAppInfo(), cl); } static { Modified: geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/OpenEjbSystem.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/OpenEjbSystem.java?rev=985297&r1=985296&r2=985297&view=diff ============================================================================== --- geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/OpenEjbSystem.java (original) +++ geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/OpenEjbSystem.java Fri Aug 13 17:40:55 2010 @@ -53,12 +53,12 @@ public interface OpenEjbSystem { void createClient(ClientInfo clientInfo, ClassLoader classLoader) throws NamingException, IOException, OpenEJBException; - void createEjbJar(EjbJarInfo ejbJarInfo, ClassLoader classLoader) throws NamingException, IOException, OpenEJBException; - DeploymentInfo getDeploymentInfo(String deploymentId); - void removeEjbJar(EjbJarInfo ejbJarInfo, ClassLoader classLoader) throws UndeployException, NoSuchApplicationException; - + void createApplication(AppInfo appInfo, ClassLoader classLoader) throws NamingException, IOException, OpenEJBException; + + void removeApplication(AppInfo appInfo, ClassLoader classLoader) throws UndeployException, NoSuchApplicationException; + AppInfo configureApplication(AppModule appModule) throws OpenEJBException; void setORBContext(ORB orb, HandleDelegate handleDelegate); Modified: geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/OpenEjbSystemGBean.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/OpenEjbSystemGBean.java?rev=985297&r1=985296&r2=985297&view=diff ============================================================================== --- geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/OpenEjbSystemGBean.java (original) +++ geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/OpenEjbSystemGBean.java Fri Aug 13 17:40:55 2010 @@ -415,7 +415,7 @@ public class OpenEjbSystemGBean implemen } } - public void createEjbJar(EjbJarInfo ejbJarInfo, ClassLoader classLoader) throws NamingException, IOException, OpenEJBException { + public void createApplication(AppInfo appInfo, ClassLoader classLoader) throws NamingException, IOException, OpenEJBException { Set names = kernel.listGBeans(new AbstractNameQuery(ResourceAdapterWrapper.class.getName())); for (AbstractName name : names) { try { @@ -428,16 +428,16 @@ public class OpenEjbSystemGBean implemen ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader(); Thread.currentThread().setContextClassLoader(classLoader); try { - assembler.createEjbJar(ejbJarInfo, classLoader); + assembler.createApplication(appInfo, classLoader); } finally { Thread.currentThread().setContextClassLoader(oldClassLoader); } } - public void removeEjbJar(EjbJarInfo ejbJarInfo, ClassLoader classLoader) throws UndeployException, NoSuchApplicationException { - assembler.destroyApplication(ejbJarInfo.jarPath); + public void removeApplication(AppInfo appInfo, ClassLoader classLoader) throws UndeployException, NoSuchApplicationException { + assembler.destroyApplication(appInfo.jarPath); } - + public DeploymentInfo getDeploymentInfo(String deploymentId) { return getContainerSystem().getDeploymentInfo(deploymentId); }