You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/03/19 18:24:15 UTC

svn commit: r1302547 - /openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java

Author: rmannibucau
Date: Mon Mar 19 17:24:14 2012
New Revision: 1302547

URL: http://svn.apache.org/viewvc?rev=1302547&view=rev
Log:
reverting a part of OpenEJBContainer injection since it seems to break ejb injection

Modified:
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java?rev=1302547&r1=1302546&r2=1302547&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java Mon Mar 19 17:24:14 2012
@@ -45,11 +45,14 @@ import org.apache.openejb.util.LogCatego
 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.OWBInjector;
 import org.apache.xbean.naming.context.ContextFlyweight;
 
 import javax.ejb.EJBException;
 import javax.ejb.embeddable.EJBContainer;
 import javax.ejb.spi.EJBContainerProvider;
+import javax.enterprise.context.spi.CreationalContext;
 import javax.naming.Context;
 import javax.naming.Name;
 import javax.naming.NameNotFoundException;
@@ -86,9 +89,12 @@ public class OpenEjbContainer extends EJ
     private ServiceManagerProxy serviceManager;
     private Options options;
     private OpenEjbContainer.GlobalContext globalJndiContext;
+    private WebBeansContext webBeanContext;
+    private CreationalContext<Object> creationalContext = null;
 
     private OpenEjbContainer(Map<?, ?> map, AppContext appContext) {
-        this.globalJndiContext = new GlobalContext(appContext.getGlobalJndiContext());
+        webBeanContext = appContext.getWebBeansContext();
+        globalJndiContext = new GlobalContext(appContext.getGlobalJndiContext());
 
         final Properties properties = new Properties();
         properties.putAll(map);
@@ -121,16 +127,30 @@ public class OpenEjbContainer extends EJ
 
         assert object != null;
 
+        if (creationalContext != null) {
+            creationalContext.release();
+            creationalContext = null;
+        }
+
         final Class<?> clazz = object.getClass();
 
         final BeanContext context = resolve(clazz);
 
         if (context == null) throw new NoInjectionMetaDataException(clazz.getName());
 
+        final InjectionProcessor processor = new InjectionProcessor(object, context.getInjections(), context.getJndiContext());
+
         try {
-            context.inject(object, null);
-            return object;
-        } catch (Exception e) {
+            final OWBInjector beanInjector = new OWBInjector(webBeanContext);
+            beanInjector.inject(object);
+        } catch (Throwable t) {
+            // TODO handle this differently
+            // this is temporary till the injector can be rewritten
+        }
+
+        try {
+            return (T) processor.createInstance();
+        } catch (OpenEJBException e) {
             throw new InjectionException(clazz.getName(), e);
         }
     }
@@ -563,6 +583,28 @@ public class OpenEjbContainer extends EJ
             if (name != null && "inject".equals(name)) inject(obj);
             else super.bind(name, obj);
         }
+
+        @Override
+        public void unbind(Name name) throws NamingException {
+            if (name.size() == 1 && "inject".equals(name.get(0))) {
+                if (creationalContext != null) {
+                    creationalContext.release();
+                }
+            } else {
+                super.unbind(name);
+            }
+        }
+
+        @Override
+        public void unbind(String name) throws NamingException {
+            if (name != null && "inject".equals(name)) {
+                if (creationalContext != null) {
+                    creationalContext.release();
+                }
+            } else {
+                super.unbind(name);
+            }
+        }
     }