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