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


Reply via email to