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 2013/05/06 18:06:05 UTC
svn commit: r1479612 -
/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
Author: rmannibucau
Date: Mon May 6 16:06:04 2013
New Revision: 1479612
URL: http://svn.apache.org/r1479612
Log:
extensions can override the injecton target
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java?rev=1479612&r1=1479611&r2=1479612&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java Mon May 6 16:06:04 2013
@@ -301,8 +301,12 @@ public class CdiEjbBean<T> extends BaseE
}
public InjectionTarget<T> createInjectionTarget(Bean<T> bean) {
- final InjectionTarget<T> injectionTarget = new EjbInjectionTargetImpl<T>(getAnnotatedType(), createInjectionPoints(bean), getWebBeansContext());
- return getWebBeansContext().getWebBeansUtil().fireProcessInjectionTargetEvent(injectionTarget, getAnnotatedType()).getInjectionTarget();
+ final EjbInjectionTargetImpl<T> injectionTarget = new EjbInjectionTargetImpl<T>(getAnnotatedType(), createInjectionPoints(bean), getWebBeansContext());
+ final InjectionTarget<T> it = getWebBeansContext().getWebBeansUtil().fireProcessInjectionTargetEvent(injectionTarget, getAnnotatedType()).getInjectionTarget();
+ if (!EjbInjectionTargetImpl.class.isInstance(it)) {
+ return new EjbInjectionTargetImpl<T>(injectionTarget, it);
+ }
+ return it;
}
protected Set<InjectionPoint> createInjectionPoints(Bean<T> bean) {
@@ -324,24 +328,72 @@ public class CdiEjbBean<T> extends BaseE
public static class EjbInjectionTargetImpl<T> extends InjectionTargetImpl<T> {
private CdiEjbBean<T> bean;
+ private InjectionTarget<T> delegate = null;
public EjbInjectionTargetImpl(AnnotatedType<T> annotatedType, Set<InjectionPoint> points, WebBeansContext webBeansContext) {
super(annotatedType, points, webBeansContext,
Collections.<AnnotatedMethod<?>>emptyList(), Collections.<AnnotatedMethod<?>>emptyList());
}
+ public EjbInjectionTargetImpl(final EjbInjectionTargetImpl<T> original, final InjectionTarget<T> delegate) {
+ super(original.annotatedType, original.getInjectionPoints(), original.webBeansContext, Collections.<AnnotatedMethod<?>>emptyList(), Collections.<AnnotatedMethod<?>>emptyList());
+ this.delegate = delegate;
+ }
+
public void setCdiEjbBean(final CdiEjbBean<T> bean) {
this.bean = bean;
}
@Override
public T produce(final CreationalContext<T> creationalContext) {
- return bean.createEjb(creationalContext);
+ if (delegate == null) {
+ return bean.createEjb(creationalContext);
+ }
+ return delegate.produce(creationalContext);
}
@Override
public void dispose(final T instance) {
- bean.destroyComponentInstance(instance);
+ if (delegate == null) {
+ bean.destroyComponentInstance(instance);
+ } else {
+ delegate.dispose(instance);
+ }
+ }
+
+ @Override
+ public Set<InjectionPoint> getInjectionPoints() {
+ if (delegate == null) {
+ return super.getInjectionPoints();
+ }
+ return delegate.getInjectionPoints();
+ }
+
+ @Override
+ public void inject(final T instance, final CreationalContext<T> ctx) {
+ if (delegate == null) {
+ super.inject(instance, ctx);
+ } else {
+ delegate.inject(instance, ctx);
+ }
+ }
+
+ @Override
+ public void postConstruct(final T instance) {
+ if (delegate == null) {
+ super.postConstruct(instance);
+ } else {
+ delegate.postConstruct(instance);
+ }
+ }
+
+ @Override
+ public void preDestroy(final T instance) {
+ if (delegate == null) {
+ super.preDestroy(instance);
+ } else {
+ delegate.preDestroy(instance);
+ }
}
public T createNewPojo(final CreationalContext<T> creationalContext) {