Author: arne
Date: Tue Jan 8 20:12:29 2013
New Revision: 1430479
URL: http://svn.apache.org/viewvc?rev=1430479&view=rev
Log:
OWB-344: Introduced new implementation for InjectionTarget
Added:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractProducer.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/InjectionTargetImpl.java
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractInjectionTargetBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecorator.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/AbstractInjectable.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/Injectable.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableConstructor.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableField.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableMethod.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/webbeans/WebBeansInterceptorBeanPleaseRemove.java
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractInjectionTargetBean.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractInjectionTargetBean.java?rev=1430479&r1=1430478&r2=1430479&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractInjectionTargetBean.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractInjectionTargetBean.java
Tue Jan 8 20:12:29 2013
@@ -41,6 +41,7 @@ import org.apache.webbeans.config.OWBLog
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.config.inheritance.BeanInheritedMetaData;
import org.apache.webbeans.config.inheritance.IBeanInheritedMetaData;
+import org.apache.webbeans.context.creational.CreationalContextImpl;
import org.apache.webbeans.decorator.WebBeansDecorator;
import org.apache.webbeans.exception.WebBeansConfigurationException;
import org.apache.webbeans.exception.WebBeansException;
@@ -51,6 +52,7 @@ import javax.enterprise.inject.spi.Inter
import org.apache.webbeans.intercept.InvocationContextImpl;
import
org.apache.webbeans.intercept.webbeans.WebBeansInterceptorBeanPleaseRemove;
import org.apache.webbeans.logger.WebBeansLoggerFacade;
+import org.apache.webbeans.portable.InjectionTargetImpl;
import org.apache.webbeans.proxy.ProxyFactory;
import org.apache.webbeans.spi.ResourceInjectionService;
import org.apache.webbeans.util.Asserts;
@@ -366,7 +368,7 @@ public abstract class AbstractInjectionT
private void injectField(Field field, Object instance,
CreationalContext<?> creationalContext)
{
- InjectableField f = new InjectableField(field, instance, this,
creationalContext);
+ InjectableField f = new InjectableField(field, instance, new
InjectionTargetImpl<T>(getInjectionPoints()), (CreationalContextImpl)
creationalContext);
f.doInjection();
}
@@ -386,7 +388,7 @@ public abstract class AbstractInjectionT
@SuppressWarnings("unchecked")
private void injectMethod(Method method, Object instance,
CreationalContext<?> creationalContext)
{
- InjectableMethod m = new InjectableMethod(method, instance, this,
creationalContext);
+ InjectableMethod m = new InjectableMethod(method, instance, new
InjectionTargetImpl<T>(getInjectionPoints()), (CreationalContextImpl)
creationalContext);
m.doInjection();
}
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java?rev=1430479&r1=1430478&r2=1430479&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java
Tue Jan 8 20:12:29 2013
@@ -30,9 +30,11 @@ import javax.enterprise.inject.spi.Decor
import org.apache.webbeans.component.creation.ManagedBeanBuilder;
import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.context.creational.CreationalContextImpl;
import org.apache.webbeans.decorator.AbstractDecoratorMethodHandler;
import org.apache.webbeans.inject.InjectableConstructor;
import org.apache.webbeans.intercept.InterceptorData;
+import org.apache.webbeans.portable.InjectionTargetImpl;
/**
* Managed bean implementation of the {@link javax.enterprise.inject.spi.Bean}.
@@ -90,7 +92,7 @@ public class ManagedBean<T> extends Abst
Constructor<T> con = getConstructor();
- InjectableConstructor<T> ic = new InjectableConstructor<T>(con,
this,creationalContext);
+ InjectableConstructor<T> ic = new InjectableConstructor<T>(con, new
InjectionTargetImpl<T>(getInjectionPoints()), (CreationalContextImpl<T>)
creationalContext);
T instance = ic.doInjection();
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java?rev=1430479&r1=1430478&r2=1430479&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java
Tue Jan 8 20:12:29 2013
@@ -36,6 +36,7 @@ import org.apache.webbeans.context.creat
import org.apache.webbeans.exception.WebBeansConfigurationException;
import org.apache.webbeans.inject.AbstractInjectable;
import org.apache.webbeans.inject.InjectableMethod;
+import org.apache.webbeans.portable.InjectionTargetImpl;
import org.apache.webbeans.util.WebBeansUtil;
/**
@@ -158,7 +159,7 @@ public class ProducerMethodBean<T> exten
parentInstance = getParentInstance(parentCreational);
}
- m = new InjectableMethod<T>(creatorMethod, parentInstance, this,
creationalContext);
+ m = new InjectableMethod<T>(creatorMethod, parentInstance, new
InjectionTargetImpl<T>(getInjectionPoints()), (CreationalContextImpl<T>)
creationalContext);
//Injection of parameters
instance = m.doInjection();
@@ -297,7 +298,8 @@ public class ProducerMethodBean<T> exten
parentInstance = getParentInstance(parentCreational);
}
- m = new InjectableMethod<T>(disposalMethod, parentInstance,
ownerComponent, creationalContext);
+ InjectionTargetImpl<T> injectionTarget = new
InjectionTargetImpl<T>(ownerComponent.getInjectionPoints());
+ m = new InjectableMethod<T>(disposalMethod, parentInstance,
injectionTarget, (CreationalContextImpl<T>) creationalContext);
m.setDisposable(true);
m.setProducerMethodInstance(instance);
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java?rev=1430479&r1=1430478&r2=1430479&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java
Tue Jan 8 20:12:29 2013
@@ -18,8 +18,16 @@
*/
package org.apache.webbeans.context.creational;
-import java.io.*;
-import java.util.*;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
@@ -73,6 +81,11 @@ public class CreationalContextImpl<T> im
this.webBeansContext = webBeansContext;
}
+ public WebBeansContext getWebBeansContext()
+ {
+ return webBeansContext;
+ }
+
/**
* Add interceptor instance.
* @param ownerInstance
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecorator.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecorator.java?rev=1430479&r1=1430478&r2=1430479&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecorator.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecorator.java
Tue Jan 8 20:12:29 2013
@@ -24,11 +24,13 @@ import org.apache.webbeans.component.Web
import org.apache.webbeans.config.OWBLogConst;
import org.apache.webbeans.config.OwbParametrizedTypeImpl;
import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.context.creational.CreationalContextImpl;
import org.apache.webbeans.exception.WebBeansConfigurationException;
import org.apache.webbeans.exception.WebBeansException;
import org.apache.webbeans.inject.InjectableField;
import org.apache.webbeans.inject.InjectableMethod;
import org.apache.webbeans.logger.WebBeansLoggerFacade;
+import org.apache.webbeans.portable.InjectionTargetImpl;
import org.apache.webbeans.util.AnnotationUtil;
import org.apache.webbeans.util.ClassUtil;
@@ -458,14 +460,14 @@ public class WebBeansDecorator<T> extend
}
private void injectField(Field field, Object instance,
CreationalContext<?> creationalContext)
{
- InjectableField f = new InjectableField(field, instance, wrappedBean,
creationalContext);
+ InjectableField f = new InjectableField(field, instance, new
InjectionTargetImpl<T>(wrappedBean.getInjectionPoints()),
(CreationalContextImpl) creationalContext);
f.doInjection();
}
@SuppressWarnings("unchecked")
private void injectMethod(Method method, Object instance,
CreationalContext<?> creationalContext)
{
- InjectableMethod m = new InjectableMethod(method, instance,
wrappedBean, creationalContext);
+ InjectableMethod m = new InjectableMethod(method, instance, new
InjectionTargetImpl<T>(wrappedBean.getInjectionPoints()),
(CreationalContextImpl) creationalContext);
m.doInjection();
}
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/AbstractInjectable.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/AbstractInjectable.java?rev=1430479&r1=1430478&r2=1430479&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/AbstractInjectable.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/AbstractInjectable.java
Tue Jan 8 20:12:29 2013
@@ -22,13 +22,15 @@ import java.io.Serializable;
import java.lang.reflect.Member;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
+import java.util.ArrayList;
import java.util.List;
-import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.context.spi.Contextual;
import javax.enterprise.event.Event;
import javax.enterprise.inject.IllegalProductException;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.InjectionPoint;
+import javax.enterprise.inject.spi.InjectionTarget;
import javax.inject.Provider;
import org.apache.webbeans.component.AbstractProducerBean;
@@ -36,6 +38,7 @@ import org.apache.webbeans.component.Eve
import org.apache.webbeans.component.InjectionPointBean;
import org.apache.webbeans.component.InstanceBean;
import org.apache.webbeans.component.OwbBean;
+import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.container.BeanManagerImpl;
import org.apache.webbeans.container.InjectionResolver;
import org.apache.webbeans.context.creational.CreationalContextImpl;
@@ -53,27 +56,19 @@ import org.apache.webbeans.util.WebBeans
* @see InjectableConstructor
* @see InjectableMethod
*/
-public abstract class AbstractInjectable implements Injectable
+public abstract class AbstractInjectable<T> implements Injectable<T>
{
- /** Owner bean of the injection point*/
- protected OwbBean<?> injectionOwnerBean;
+
+ private InjectionTarget<?> owner;
- /**Creational context instance that is passed to bean's create*/
- protected CreationalContext<?> injectionOwnerCreationalContext;
+ private CreationalContextImpl<?> context;
- //X TODO refactor. public static variables are utterly ugly
public static ThreadLocal<Object> instanceUnderInjection = new
ThreadLocal<Object>();
- /**
- * Creates a new injectable.
- *
- * @param injectionOwnerBean owner bean
- * @param injectionOwnerCreationalContext creational context instance
- */
- protected AbstractInjectable(OwbBean<?> injectionOwnerBean,
CreationalContext<?> injectionOwnerCreationalContext)
+ protected AbstractInjectable(InjectionTarget<?> owner,
CreationalContextImpl<?> creationalContext)
{
- this.injectionOwnerBean = injectionOwnerBean;
- this.injectionOwnerCreationalContext = injectionOwnerCreationalContext;
+ this.owner = owner;
+ this.context = creationalContext;
}
/**
@@ -81,10 +76,10 @@ public abstract class AbstractInjectable
* @param injectionPoint injection point definition
* @return current bean instance in the resolved bean scope
*/
- public <T> Object inject(InjectionPoint injectionPoint)
+ public T inject(InjectionPoint injectionPoint)
{
- Object injected;
- BeanManagerImpl beanManager =
injectionOwnerBean.getWebBeansContext().getBeanManagerImpl();
+ T injected;
+ BeanManagerImpl beanManager =
context.getWebBeansContext().getBeanManagerImpl();
//Injected contextual beam
InjectionResolver instance = beanManager.getInjectionResolver();
@@ -116,7 +111,7 @@ public abstract class AbstractInjectable
{
if(injectedBean instanceof AbstractProducerBean)
{
- if(injectionOwnerBean.isPassivationCapable())
+ if((context.getBean() instanceof OwbBean) &&
((OwbBean<?>) context.getBean()).isPassivationCapable())
{
dependentProducer = true;
}
@@ -125,7 +120,7 @@ public abstract class AbstractInjectable
}
//Gets injectable reference for injected bean
- injected = beanManager.getInjectableReference(injectionPoint,
injectionOwnerCreationalContext);
+ injected = (T) beanManager.getInjectableReference(injectionPoint,
context);
/*X TODO see spec issue CDI-140 */
if(dependentProducer)
@@ -142,7 +137,7 @@ public abstract class AbstractInjectable
{
if(instanceUnderInjection.get() != null)
{
- ((CreationalContextImpl<?>)
injectionOwnerCreationalContext).addDependent(instanceUnderInjection.get(),injectedBean,
injected);
+ context.addDependent(instanceUnderInjection.get(),
injectedBean, injected);
}
}
}
@@ -158,6 +153,15 @@ public abstract class AbstractInjectable
return injected;
}
+ protected Contextual<?> getBean()
+ {
+ return context.getBean();
+ }
+
+ protected WebBeansContext getWebBeansContext()
+ {
+ return context.getWebBeansContext();
+ }
/**
* Returns injection points related with given member type of the bean.
@@ -166,10 +170,15 @@ public abstract class AbstractInjectable
*/
protected List<InjectionPoint> getInjectedPoints(Member member)
{
- List<InjectionPoint> injectedFields =
injectionOwnerBean.getInjectionPoint(member);
-
- return injectedFields;
-
+ List<InjectionPoint> injectionPoints = new ArrayList<InjectionPoint>();
+ for (InjectionPoint injectionPoint : owner.getInjectionPoints())
+ {
+ if (injectionPoint.getMember().equals(member))
+ {
+ injectionPoints.add(injectionPoint);
+ }
+ }
+ return injectionPoints;
}
private boolean isInstanceProviderInjection(InjectionPoint injectionPoint)
@@ -208,5 +217,4 @@ public abstract class AbstractInjectable
return false;
}
-
}
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/Injectable.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/Injectable.java?rev=1430479&r1=1430478&r2=1430479&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/Injectable.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/Injectable.java
Tue Jan 8 20:12:29 2013
@@ -36,7 +36,7 @@ package org.apache.webbeans.inject;
* @see InjectableMethod
* @see AbstractInjectable
*/
-public interface Injectable
+public interface Injectable<T>
{
/**
* Responsible for injecting the owner required injected component
@@ -50,5 +50,5 @@ public interface Injectable
*
* @return if the return instance if available
*/
- public Object doInjection();
+ public T doInjection();
}
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableConstructor.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableConstructor.java?rev=1430479&r1=1430478&r2=1430479&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableConstructor.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableConstructor.java
Tue Jan 8 20:12:29 2013
@@ -22,11 +22,11 @@ import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.List;
-import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.AnnotatedParameter;
import javax.enterprise.inject.spi.InjectionPoint;
+import javax.enterprise.inject.spi.InjectionTarget;
-import org.apache.webbeans.component.AbstractOwbBean;
+import org.apache.webbeans.context.creational.CreationalContextImpl;
import org.apache.webbeans.exception.WebBeansException;
/**
@@ -37,7 +37,7 @@ import org.apache.webbeans.exception.Web
* @since 1.0
* @see AbstractInjectable
*/
-public class InjectableConstructor<T> extends AbstractInjectable
+public class InjectableConstructor<T> extends AbstractInjectable<T>
{
/** Injectable constructor instance */
protected Constructor<T> con;
@@ -47,7 +47,7 @@ public class InjectableConstructor<T> ex
*
* @param cons injectable constructor
*/
- public InjectableConstructor(Constructor<T> cons, AbstractOwbBean<?>
owner,CreationalContext<?> creationalContext)
+ public InjectableConstructor(Constructor<T> cons, InjectionTarget<T>
owner, CreationalContextImpl<T> creationalContext)
{
super(owner,creationalContext);
con = cons;
@@ -82,7 +82,7 @@ public class InjectableConstructor<T> ex
{
if(!con.isAccessible())
{
-
injectionOwnerBean.getWebBeansContext().getSecurityService().doPrivilegedSetAccessible(con,
true);
+
getWebBeansContext().getSecurityService().doPrivilegedSetAccessible(con, true);
}
instance = con.newInstance(list.toArray());
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableField.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableField.java?rev=1430479&r1=1430478&r2=1430479&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableField.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableField.java
Tue Jan 8 20:12:29 2013
@@ -20,10 +20,10 @@ package org.apache.webbeans.inject;
import java.lang.reflect.Field;
-import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.InjectionPoint;
+import javax.enterprise.inject.spi.InjectionTarget;
-import org.apache.webbeans.component.AbstractOwbBean;
+import org.apache.webbeans.context.creational.CreationalContextImpl;
import org.apache.webbeans.exception.WebBeansException;
/**
@@ -32,19 +32,19 @@ import org.apache.webbeans.exception.Web
* @author <a href="mailto:[email protected]">Gurkan Erdogdu</a>
* @since 1.0
*/
-public class InjectableField extends AbstractInjectable
+public class InjectableField<T> extends AbstractInjectable<T>
{
protected Field field;
protected Object instance;
- public InjectableField(Field field, Object instance, AbstractOwbBean<?>
owner,CreationalContext<?> creationalContext)
+ public InjectableField(Field field, Object instance, InjectionTarget<T>
owner, CreationalContextImpl<T> creationalContext)
{
super(owner,creationalContext);
this.field = field;
this.instance = instance;
}
- public Object doInjection()
+ public T doInjection()
{
try
{
@@ -52,7 +52,7 @@ public class InjectableField extends Abs
if (!field.isAccessible())
{
-
injectionOwnerBean.getWebBeansContext().getSecurityService().doPrivilegedSetAccessible(field,
true);
+
getWebBeansContext().getSecurityService().doPrivilegedSetAccessible(field,
true);
}
Object object = inject(injectedField);
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableMethod.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableMethod.java?rev=1430479&r1=1430478&r2=1430479&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableMethod.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/InjectableMethod.java
Tue Jan 8 20:12:29 2013
@@ -25,21 +25,21 @@ import java.util.List;
import java.util.Map;
import javax.enterprise.context.Dependent;
-import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.Disposes;
import javax.enterprise.inject.spi.AnnotatedParameter;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.inject.spi.InjectionPoint;
+import javax.enterprise.inject.spi.InjectionTarget;
import org.apache.webbeans.annotation.DefaultLiteral;
-import org.apache.webbeans.component.OwbBean;
import org.apache.webbeans.component.ProducerMethodBean;
import org.apache.webbeans.container.InjectionResolver;
+import org.apache.webbeans.context.creational.CreationalContextImpl;
import org.apache.webbeans.exception.WebBeansException;
@SuppressWarnings("unchecked")
-public class InjectableMethod<T> extends AbstractInjectable
+public class InjectableMethod<T> extends AbstractInjectable<T>
{
/** Injectable method */
protected Method method;
@@ -53,7 +53,7 @@ public class InjectableMethod<T> extends
/**Used in dispose method, represents produces method parameter instance*/
private Object producerMethodInstance = null;
- private Map<Bean<?>,Object> dependentParameters = new HashMap<Bean<?>,
Object>();
+ private Map<Bean<?>, Object> dependentParameters = new HashMap<Bean<?>,
Object>();
/**
* Constructs new instance.
@@ -61,7 +61,7 @@ public class InjectableMethod<T> extends
* @param m injectable method
* @param instance component instance
*/
- public InjectableMethod(Method m, Object instance, OwbBean<?> owner,
CreationalContext<?> creationalContext)
+ public InjectableMethod(Method m, Object instance, InjectionTarget<T>
owner, CreationalContextImpl<T> creationalContext)
{
super(owner,creationalContext);
method = m;
@@ -86,11 +86,11 @@ public class InjectableMethod<T> extends
if(parameter.getPosition() == i)
{
boolean injectionPoint = false;
- if(injectionOwnerBean instanceof ProducerMethodBean)
+ if(getBean() instanceof ProducerMethodBean)
{
if(parameter.getBaseType().equals(InjectionPoint.class))
{
- BeanManager manager =
injectionOwnerBean.getWebBeansContext().getBeanManagerImpl();
+ BeanManager manager =
getWebBeansContext().getBeanManagerImpl();
Bean<?> injectionPointBean =
manager.getBeans(InjectionPoint.class, new DefaultLiteral()).iterator().next();
Object reference =
manager.getReference(injectionPointBean, InjectionPoint.class,
manager.createCreationalContext(injectionPointBean));
@@ -111,7 +111,7 @@ public class InjectableMethod<T> extends
else
{
Object instance = inject(point);
- InjectionResolver injectionResolver =
injectionOwnerBean.getWebBeansContext().getBeanManagerImpl().getInjectionResolver();
+ InjectionResolver injectionResolver =
getWebBeansContext().getBeanManagerImpl().getInjectionResolver();
Bean<?> injectedBean = (Bean<?>)
injectionResolver.getInjectionPointBean(point);
if(injectedBean.getScope() == Dependent.class)
@@ -132,7 +132,7 @@ public class InjectableMethod<T> extends
{
if (!method.isAccessible())
{
-
injectionOwnerBean.getWebBeansContext().getSecurityService().doPrivilegedSetAccessible(method,
true);
+
getWebBeansContext().getSecurityService().doPrivilegedSetAccessible(method,
true);
}
return (T) method.invoke(instance, list.toArray(new
Object[list.size()]));
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/webbeans/WebBeansInterceptorBeanPleaseRemove.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/webbeans/WebBeansInterceptorBeanPleaseRemove.java?rev=1430479&r1=1430478&r2=1430479&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/webbeans/WebBeansInterceptorBeanPleaseRemove.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/webbeans/WebBeansInterceptorBeanPleaseRemove.java
Tue Jan 8 20:12:29 2013
@@ -24,11 +24,13 @@ import org.apache.webbeans.component.Abs
import org.apache.webbeans.component.ManagedBean;
import org.apache.webbeans.component.WebBeansType;
import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.context.creational.CreationalContextImpl;
import org.apache.webbeans.exception.WebBeansConfigurationException;
import org.apache.webbeans.exception.WebBeansException;
import org.apache.webbeans.inject.InjectableField;
import org.apache.webbeans.inject.InjectableMethod;
import org.apache.webbeans.intercept.OwbInterceptor;
+import org.apache.webbeans.portable.InjectionTargetImpl;
import org.apache.webbeans.util.AnnotationUtil;
import javax.enterprise.context.spi.Context;
@@ -315,14 +317,14 @@ public class WebBeansInterceptorBeanPlea
private void injectField(Field field, Object instance,
CreationalContext<?> creationalContext)
{
- InjectableField f = new InjectableField(field, instance, delegateBean,
creationalContext);
+ InjectableField f = new InjectableField(field, instance, new
InjectionTargetImpl<T>(getInjectionPoints()), (CreationalContextImpl)
creationalContext);
f.doInjection();
}
@SuppressWarnings("unchecked")
private void injectMethod(Method method, Object instance,
CreationalContext<?> creationalContext)
{
- InjectableMethod m = new InjectableMethod(method, instance,
delegateBean, creationalContext);
+ InjectableMethod m = new InjectableMethod(method, instance, new
InjectionTargetImpl<T>(getInjectionPoints()), (CreationalContextImpl)
creationalContext);
m.doInjection();
}
Added:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractProducer.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractProducer.java?rev=1430479&view=auto
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractProducer.java
(added)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractProducer.java
Tue Jan 8 20:12:29 2013
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.webbeans.portable;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.enterprise.inject.spi.InjectionPoint;
+import javax.enterprise.inject.spi.Producer;
+
+public abstract class AbstractProducer<T> implements Producer<T>
+{
+
+ private Set<InjectionPoint> injectionPoints;
+
+ public AbstractProducer(Set<InjectionPoint> points)
+ {
+ injectionPoints = Collections.unmodifiableSet(new
HashSet<InjectionPoint>(points));
+ }
+
+ @Override
+ public Set<InjectionPoint> getInjectionPoints()
+ {
+ return injectionPoints;
+ }
+}
Added:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/InjectionTargetImpl.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/InjectionTargetImpl.java?rev=1430479&view=auto
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/InjectionTargetImpl.java
(added)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/InjectionTargetImpl.java
Tue Jan 8 20:12:29 2013
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.webbeans.portable;
+
+import java.util.Set;
+
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.spi.InjectionPoint;
+import javax.enterprise.inject.spi.InjectionTarget;
+
+
+public class InjectionTargetImpl<T> extends AbstractProducer<T> implements
InjectionTarget<T>
+{
+
+ public InjectionTargetImpl(Set<InjectionPoint> points)
+ {
+ super(points);
+ }
+
+ @Override
+ public T produce(CreationalContext<T> creationalContext)
+ {
+
+ return null;
+ }
+
+ @Override
+ public void dispose(T instance)
+ {
+ }
+
+ @Override
+ public void inject(T instance, CreationalContext<T> ctx)
+ {
+ }
+
+ @Override
+ public void postConstruct(T instance)
+ {
+ }
+
+ @Override
+ public void preDestroy(T instance)
+ {
+ }
+}