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();
+ }
+
+ }
+ }
}