Author: rmannibucau
Date: Wed Oct 24 15:01:10 2012
New Revision: 1401720
URL: http://svn.apache.org/viewvc?rev=1401720&view=rev
Log:
AbstractInjectable.instanceUnderInjection for rest cdi and interceptors
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBPerRequestPojoResourceProvider.java
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java?rev=1401720&r1=1401719&r2=1401720&view=diff
==============================================================================
---
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
(original)
+++
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
Wed Oct 24 15:01:10 2012
@@ -1408,7 +1408,17 @@ public class BeanContext extends Deploym
try {
final Object interceptorInstance =
interceptorInjector.createInstance();
try {
-
OWBInjector.inject(webBeansContext.getBeanManagerImpl(), interceptorInstance,
creationalContext);
+ final Object oldInstanceUnderInjection =
AbstractInjectable.instanceUnderInjection.get();
+
AbstractInjectable.instanceUnderInjection.set(interceptorInstance);
+ try {
+
OWBInjector.inject(webBeansContext.getBeanManagerImpl(), interceptorInstance,
creationalContext);
+ } finally {
+ if (oldInstanceUnderInjection != null) {
+
AbstractInjectable.instanceUnderInjection.set(oldInstanceUnderInjection);
+ } else {
+
AbstractInjectable.instanceUnderInjection.remove();
+ }
+ }
} catch (Throwable t) {
// TODO handle this differently
// this is temporary till the injector can be rewritten
Modified:
openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBPerRequestPojoResourceProvider.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBPerRequestPojoResourceProvider.java?rev=1401720&r1=1401719&r2=1401720&view=diff
==============================================================================
---
openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBPerRequestPojoResourceProvider.java
(original)
+++
openejb/trunk/openejb/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/OpenEJBPerRequestPojoResourceProvider.java
Wed Oct 24 15:01:10 2012
@@ -42,6 +42,7 @@ import org.apache.openejb.OpenEJBExcepti
import org.apache.openejb.rest.ThreadLocalContextManager;
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.container.BeanManagerImpl;
+import org.apache.webbeans.inject.AbstractInjectable;
import org.apache.webbeans.inject.OWBInjector;
public class OpenEJBPerRequestPojoResourceProvider implements ResourceProvider
{
@@ -206,10 +207,19 @@ public class OpenEJBPerRequestPojoResour
final BeanManager bm = webbeansContext.getBeanManagerImpl();
creationalContext = bm.createCreationalContext(null);
+
+ final Object oldValue =
AbstractInjectable.instanceUnderInjection.get();
+ AbstractInjectable.instanceUnderInjection.set(instance);
try {
OWBInjector.inject(bm, instance, creationalContext);
} catch (Exception e) {
// ignored
+ } finally {
+ if (oldValue != null) {
+
AbstractInjectable.instanceUnderInjection.set(oldValue);
+ } else {
+ AbstractInjectable.instanceUnderInjection.remove();
+ }
}
// injector.postConstruct(); // it doesn't know it