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


Reply via email to