Author: rmannibucau Date: Sat Mar 23 21:25:32 2013 New Revision: 1460236 URL: http://svn.apache.org/r1460236 Log: TOMEE-840 handle $ in callers names
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/OpenEjbContainerTest.java Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java?rev=1460236&r1=1460235&r2=1460236&view=diff ============================================================================== --- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java (original) +++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java Sat Mar 23 21:25:32 2013 @@ -19,10 +19,23 @@ package org.apache.openejb; import org.apache.openejb.api.LocalClient; import org.apache.openejb.assembler.classic.AppInfo; import org.apache.openejb.assembler.classic.Assembler; -import org.apache.openejb.config.*; +import org.apache.openejb.config.AppModule; +import org.apache.openejb.config.ConfigurationFactory; +import org.apache.openejb.config.ConnectorModule; +import org.apache.openejb.config.DeploymentLoader; +import org.apache.openejb.config.EjbModule; +import org.apache.openejb.config.NewLoaderLogic; +import org.apache.openejb.config.PersistenceModule; +import org.apache.openejb.config.ValidationFailedException; import org.apache.openejb.core.Operation; import org.apache.openejb.core.ThreadContext; -import org.apache.openejb.jee.*; +import org.apache.openejb.jee.Application; +import org.apache.openejb.jee.Beans; +import org.apache.openejb.jee.Connector; +import org.apache.openejb.jee.EjbJar; +import org.apache.openejb.jee.EnterpriseBean; +import org.apache.openejb.jee.ManagedBean; +import org.apache.openejb.jee.TransactionType; import org.apache.openejb.jee.jpa.unit.Persistence; import org.apache.openejb.jee.jpa.unit.PersistenceUnit; import org.apache.openejb.jee.oejb3.EjbDeployment; @@ -30,7 +43,13 @@ import org.apache.openejb.jee.oejb3.Open import org.apache.openejb.loader.Options; import org.apache.openejb.loader.SystemInstance; import org.apache.openejb.spi.ContainerSystem; -import org.apache.openejb.util.*; +import org.apache.openejb.util.Exceptions; +import org.apache.openejb.util.Join; +import org.apache.openejb.util.JuliLogStreamFactory; +import org.apache.openejb.util.LogCategory; +import org.apache.openejb.util.Logger; +import org.apache.openejb.util.OptionsLog; +import org.apache.openejb.util.ServiceManagerProxy; import org.apache.webbeans.config.WebBeansContext; import org.apache.webbeans.inject.AbstractInjectable; import org.apache.webbeans.inject.OWBInjector; @@ -54,7 +73,14 @@ import java.lang.reflect.Modifier; import java.net.MalformedURLException; import java.net.URL; import java.net.URLClassLoader; -import java.util.*; +import java.util.Arrays; +import java.util.Collections; +import java.util.Iterator; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.Set; import java.util.logging.LogManager; import static org.apache.openejb.cdi.ScopeHelper.startContexts; @@ -327,7 +353,12 @@ public class OpenEjbContainer extends EJ if (!isValid(caller)) continue; - final ManagedBean bean = ejbJar.addEnterpriseBean(new ManagedBean(caller, caller, true)); + String name = caller; + if (name.contains("$")) { + name = caller.replace("$", "_"); + } + + final ManagedBean bean = ejbJar.addEnterpriseBean(new ManagedBean(name, caller, true)); // set it to bean so it can get UserTransaction injection bean.setTransactionType(TransactionType.BEAN); @@ -335,7 +366,7 @@ public class OpenEjbContainer extends EJ final EjbDeployment ejbDeployment = openejbJar.addEjbDeployment(bean); // important in case any other deploment id formats are specified - ejbDeployment.setDeploymentId(caller); + ejbDeployment.setDeploymentId(name); } appModule.getEjbModules().add(new EjbModule(ejbJar, openejbJar)); Modified: tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/OpenEjbContainerTest.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/OpenEjbContainerTest.java?rev=1460236&r1=1460235&r2=1460236&view=diff ============================================================================== --- tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/OpenEjbContainerTest.java (original) +++ tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/OpenEjbContainerTest.java Sat Mar 23 21:25:32 2013 @@ -51,9 +51,44 @@ public class OpenEjbContainerTest extend widget = null; openEjbContainer.getContext().bind("inject", this); + + openEjbContainer.close(); + } + + public void testStartContainerFromInnerClass() throws Exception { + new SomeInnerClass().startTheContainer(); } public static class Widget { } + + public static final class SomeInnerClass { + @EJB + private Widget widget; + + public void startTheContainer() throws Exception { + Map<String, Object> map = new HashMap<String, Object>(); + + + final EjbJar ejbJar = new EjbJar(); + ejbJar.addEnterpriseBean(new SingletonBean(Widget.class)); + map.put(EJBContainer.MODULES, ejbJar); + + OpenEjbContainer openEjbContainer = (OpenEjbContainer) EJBContainer.createEJBContainer(map); + + try { + openEjbContainer.inject(this); + + assertNotNull(widget); + + widget = null; + + openEjbContainer.getContext().bind("inject", this); + } finally { + openEjbContainer.close(); + } + + } + } }