[webbeans-commits] Webbeans SVN: r816 - in ri/trunk/webbeans-ri/src: main/java/org/jboss/webbeans/injection and 3 other directories.
webbeans-commits at lists.jboss.org
webbeans-commits at lists.jboss.org
Wed Jan 7 17:36:26 EST 2009
Author: dallen6
Date: 2009-01-07 17:36:26 -0500 (Wed, 07 Jan 2009)
New Revision: 816
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/SimpleBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/InjectionPointFactory.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedConstructor.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedMethod.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedItem.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedMember.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedConstructorImpl.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedMethodImpl.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InjectionPointTest.java
Log:
Added InjectionPoint beans with injection into fields and parameters.
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/SimpleBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/SimpleBean.java 2009-01-07 19:30:58 UTC (rev 815)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/SimpleBean.java 2009-01-07 22:36:26 UTC (rev 816)
@@ -31,6 +31,7 @@
import org.jboss.webbeans.ManagerImpl;
import org.jboss.webbeans.MetaDataCache;
import org.jboss.webbeans.context.DependentContext;
+import org.jboss.webbeans.injection.InjectionPointFactory;
import org.jboss.webbeans.injection.InjectionPointImpl;
import org.jboss.webbeans.introspector.AnnotatedClass;
import org.jboss.webbeans.introspector.AnnotatedConstructor;
@@ -62,7 +63,7 @@
private AnnotatedMethod<Object> postConstruct;
// The pre-destroy method
private AnnotatedMethod<Object> preDestroy;
-
+
/**
* Creates a simple, annotation defined Web Bean
*
@@ -75,7 +76,7 @@
{
return of(AnnotatedClassImpl.of(clazz), manager);
}
-
+
/**
* Creates a simple, annotation defined Web Bean
*
@@ -117,13 +118,17 @@
{
checkProducedInjectionPoints();
}
+ InjectionPointFactory injectionPointFactory = manager.getInjectionPointFactory();
+ injectionPointFactory.pushBean(this);
T instance = constructor.newInstance(manager);
+ injectionPointFactory.pushInstance(instance);
bindDecorators();
bindInterceptors();
injectEjbAndCommonFields(instance);
injectBoundFields(instance);
callInitializers(instance);
callPostConstruct(instance);
+ injectionPointFactory.popBeanAndInstance();
return instance;
}
finally
@@ -217,25 +222,29 @@
*/
protected void injectEjbAndCommonFields(T beanInstance)
{
+ InjectionPointFactory injectionPointFactory = manager.getInjectionPointFactory();
for (AnnotatedField<?> field : annotatedItem.getAnnotatedFields(manager.getEjbResolver().getEJBAnnotation()))
{
+ injectionPointFactory.pushInjectionPoint(field);
InjectionPoint injectionPoint = new InjectionPointImpl(field, this, beanInstance);
Object ejbInstance = manager.getEjbResolver().resolveEjb(injectionPoint, manager.getNaming());
field.inject(beanInstance, ejbInstance);
+ injectionPointFactory.popInjectionPoint();
}
-
+
for (AnnotatedMethod<?> method : annotatedItem.getAnnotatedMethods(manager.getEjbResolver().getEJBAnnotation()))
{
InjectionPoint injectionPoint = new InjectionPointImpl(method, this, beanInstance);
Object ejbInstance = manager.getEjbResolver().resolveEjb(injectionPoint, manager.getNaming());
method.invoke(beanInstance, ejbInstance);
}
-
+
for (AnnotatedField<?> field : annotatedItem.getAnnotatedFields(manager.getEjbResolver().getPersistenceContextAnnotation()))
{
InjectionPoint injectionPoint = new InjectionPointImpl(field, this, beanInstance);
EntityManagerFactory entityManagerFactory = manager.getEjbResolver().resolvePersistenceUnit(injectionPoint, manager.getNaming());
field.inject(beanInstance, entityManagerFactory.createEntityManager());
+ injectionPointFactory.popInjectionPoint();
}
}
@@ -246,9 +255,19 @@
*/
protected void injectBoundFields(T instance)
{
+ InjectionPointFactory injectionPointFactory = manager.getInjectionPointFactory();
for (AnnotatedField<?> injectableField : getInjectableFields())
{
- injectableField.inject(instance, manager);
+ injectionPointFactory.pushInjectionPoint(injectableField);
+ if (InjectionPoint.class.isAssignableFrom(injectableField.getType()))
+ {
+ injectableField.inject(instance, injectionPointFactory.newInstance());
+ }
+ else
+ {
+ injectableField.inject(instance, manager);
+ }
+ injectionPointFactory.popInjectionPoint();
}
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/InjectionPointFactory.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/InjectionPointFactory.java 2009-01-07 19:30:58 UTC (rev 815)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/InjectionPointFactory.java 2009-01-07 22:36:26 UTC (rev 816)
@@ -23,7 +23,7 @@
import javax.webbeans.InjectionPoint;
import javax.webbeans.manager.Bean;
-import org.jboss.webbeans.introspector.jlr.AbstractAnnotatedMember;
+import org.jboss.webbeans.introspector.AnnotatedMember;
/**
* Factory used to create the container provided implementation for the
@@ -38,7 +38,7 @@
{
private final Stack<Bean<?>> beans = new Stack<Bean<?>>();
private final Stack<Object> beanInstances = new Stack<Object>();
- private final Stack<AbstractAnnotatedMember<?, ? extends Member>> injectionPoints = new Stack<AbstractAnnotatedMember<?, ? extends Member>>();
+ private final Stack<AnnotatedMember<?, ? extends Member>> injectionPoints = new Stack<AnnotatedMember<?, ? extends Member>>();
/**
* Pushes the current bean that is being instantiated onto a stack for later
@@ -67,7 +67,7 @@
*
* @param injectedMember The metadata for the injection point
*/
- public void pushInjectionPoint(AbstractAnnotatedMember<?, ? extends Member> injectedMember)
+ public void pushInjectionPoint(AnnotatedMember<?, ? extends Member> injectedMember)
{
injectionPoints.push(injectedMember);
}
@@ -106,7 +106,7 @@
// the bean stack.
InjectionPoint injectionPoint = null;
Bean<?> currentBean = beans.pop();
- AbstractAnnotatedMember<?, ? extends Member> currentInjection = injectionPoints.pop();
+ AnnotatedMember<?, ? extends Member> currentInjection = injectionPoints.pop();
if (beanInstances.size() < beans.size())
{
injectionPoint = new InjectionPointImpl(injectionPoints.peek(), beans.peek(), beanInstances.peek());
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedConstructor.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedConstructor.java 2009-01-07 19:30:58 UTC (rev 815)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedConstructor.java 2009-01-07 22:36:26 UTC (rev 816)
@@ -21,7 +21,7 @@
import java.lang.reflect.Constructor;
import java.util.List;
-import javax.webbeans.manager.Manager;
+import org.jboss.webbeans.ManagerImpl;
/**
* Represents a Class Constructor
@@ -56,7 +56,7 @@
* @param manager The Web Beans manager
* @return The created instance
*/
- public T newInstance(Manager manager);
+ public T newInstance(ManagerImpl manager);
/**
* Gets the declaring class of the annotation
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedMethod.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedMethod.java 2009-01-07 19:30:58 UTC (rev 815)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedMethod.java 2009-01-07 22:36:26 UTC (rev 816)
@@ -32,7 +32,7 @@
import javax.webbeans.Fires;
import javax.webbeans.IfExists;
import javax.webbeans.Observes;
-import javax.webbeans.manager.Manager;
+import org.jboss.webbeans.ManagerImpl;
/**
* AnnotatedType provides a uniform access to the annotations on an annotated
@@ -75,7 +75,7 @@
* @param manager The Web Beans manager
* @return A reference to the instance
*/
- public T invoke(Object instance, Manager manager);
+ public T invoke(Object instance, ManagerImpl manager);
/**
* Invokes the method on the class of the passed instance, not the declaring
@@ -85,7 +85,7 @@
* @param manager The Web Beans manager
* @return A reference to the instance
*/
- public T invokeOnInstance(Object instance, Manager manager);
+ public T invokeOnInstance(Object instance, ManagerImpl manager);
/**
* Invokes the observer method
@@ -95,7 +95,7 @@
* @param manager The Web Beans manager
* @return A reference to the instance
*/
- public T invokeWithSpecialValue(Object instance, Class<? extends Annotation> specialParam, Object specialVal, Manager manager);
+ public T invokeWithSpecialValue(Object instance, Class<? extends Annotation> specialParam, Object specialVal, ManagerImpl manager);
/**
* Invokes the method
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedItem.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedItem.java 2009-01-07 19:30:58 UTC (rev 815)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedItem.java 2009-01-07 22:36:26 UTC (rev 816)
@@ -24,17 +24,12 @@
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.webbeans.BindingType;
-import javax.webbeans.manager.Manager;
-
import org.jboss.webbeans.binding.CurrentBinding;
import org.jboss.webbeans.introspector.AnnotatedItem;
-import org.jboss.webbeans.introspector.AnnotatedParameter;
import org.jboss.webbeans.util.Reflections;
import org.jboss.webbeans.util.Strings;
import org.jboss.webbeans.util.Types;
@@ -189,46 +184,6 @@
return annotationMap;
}
- /**
- * Static helper method for getting the current parameter values from a list
- * of annotated parameters.
- *
- * @param parameters The list of annotated parameter to look up
- * @param manager The Web Beans manager
- * @return The object array of looked up values
- */
- protected static Object[] getParameterValues(List<AnnotatedParameter<Object>> parameters, Manager manager)
- {
- return getParameterValues(parameters, null, null, manager);
- }
-
- /**
- * Static helper method for getting the current parameter values from a list
- * of annotated parameters.
- *
- * @param parameters The list of annotated parameter to look up
- * @param manager The Web Beans manager
- * @return The object array of looked up values
- */
- protected static Object[] getParameterValues(List<AnnotatedParameter<Object>> parameters, Object specialVal, Class<? extends Annotation> specialParam, Manager manager)
- {
- Object[] parameterValues = new Object[parameters.size()];
- Iterator<AnnotatedParameter<Object>> iterator = parameters.iterator();
- for (int i = 0; i < parameterValues.length; i++)
- {
- AnnotatedParameter<Object> param = iterator.next();
- if ( specialParam!=null && param.isAnnotationPresent(specialParam))
- {
- parameterValues[i] = specialVal;
- }
- else
- {
- parameterValues[i] = param.getValue(manager);
- }
- }
- return parameterValues;
- }
-
// The annotation map (annotation type -> annotation) of the item
private final AnnotationMap annotationMap;
// The meta-annotation map (annotation type -> set of annotations containing
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedMember.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedMember.java 2009-01-07 19:30:58 UTC (rev 815)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedMember.java 2009-01-07 22:36:26 UTC (rev 816)
@@ -21,12 +21,16 @@
import java.lang.reflect.Member;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.webbeans.BindingType;
+import javax.webbeans.InjectionPoint;
import javax.webbeans.manager.Manager;
+import org.jboss.webbeans.ManagerImpl;
+import org.jboss.webbeans.injection.InjectionPointFactory;
import org.jboss.webbeans.introspector.AnnotatedMember;
import org.jboss.webbeans.introspector.AnnotatedParameter;
import org.jboss.webbeans.util.Reflections;
@@ -179,4 +183,51 @@
return getDelegate();
}
+ /**
+ * Helper method for getting the current parameter values from a list
+ * of annotated parameters.
+ *
+ * @param parameters The list of annotated parameter to look up
+ * @param manager The Web Beans manager
+ * @return The object array of looked up values
+ */
+ protected Object[] getParameterValues(List<AnnotatedParameter<Object>> parameters, ManagerImpl manager)
+ {
+ return getParameterValues(parameters, null, null, manager);
+ }
+
+ /**
+ * Helper method for getting the current parameter values from a list
+ * of annotated parameters.
+ *
+ * @param parameters The list of annotated parameter to look up
+ * @param manager The Web Beans manager
+ * @return The object array of looked up values
+ */
+ protected Object[] getParameterValues(List<AnnotatedParameter<Object>> parameters, Object specialVal, Class<? extends Annotation> specialParam, ManagerImpl manager)
+ {
+ InjectionPointFactory injectionPointFactory = manager.getInjectionPointFactory();
+ injectionPointFactory.pushInjectionPoint(this);
+ Object[] parameterValues = new Object[parameters.size()];
+ Iterator<AnnotatedParameter<Object>> iterator = parameters.iterator();
+ for (int i = 0; i < parameterValues.length; i++)
+ {
+ AnnotatedParameter<Object> param = iterator.next();
+ if ( specialParam!=null && param.isAnnotationPresent(specialParam))
+ {
+ parameterValues[i] = specialVal;
+ }
+ else if ( InjectionPoint.class.isAssignableFrom(param.getType()) )
+ {
+ parameterValues[i] = injectionPointFactory.newInstance();
+ }
+ else
+ {
+ parameterValues[i] = param.getValue(manager);
+ }
+ }
+ injectionPointFactory.popInjectionPoint();
+ return parameterValues;
+ }
+
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedConstructorImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedConstructorImpl.java 2009-01-07 19:30:58 UTC (rev 815)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedConstructorImpl.java 2009-01-07 22:36:26 UTC (rev 816)
@@ -26,8 +26,6 @@
import java.util.List;
import javax.webbeans.ExecutionException;
-import javax.webbeans.manager.Manager;
-
import org.jboss.webbeans.ManagerImpl;
import org.jboss.webbeans.introspector.AnnotatedConstructor;
import org.jboss.webbeans.introspector.AnnotatedParameter;
@@ -185,7 +183,7 @@
*
* @see org.jboss.webbeans.introspector.AnnotatedConstructor#newInstance(ManagerImpl)
*/
- public T newInstance(Manager manager)
+ public T newInstance(ManagerImpl manager)
{
try
{
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedMethodImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedMethodImpl.java 2009-01-07 19:30:58 UTC (rev 815)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedMethodImpl.java 2009-01-07 22:36:26 UTC (rev 816)
@@ -26,8 +26,6 @@
import java.util.Collections;
import java.util.List;
-import javax.webbeans.manager.Manager;
-
import org.jboss.webbeans.ManagerImpl;
import org.jboss.webbeans.introspector.AnnotatedMethod;
import org.jboss.webbeans.introspector.AnnotatedParameter;
@@ -248,19 +246,19 @@
* Object)
*/
@SuppressWarnings("unchecked")
- public T invoke(Object instance, Manager manager)
+ public T invoke(Object instance, ManagerImpl manager)
{
return (T) Reflections.invokeAndWrap(getDelegate(), instance, getParameterValues(parameters, manager));
}
@SuppressWarnings("unchecked")
- public T invokeOnInstance(Object instance, Manager manager)
+ public T invokeOnInstance(Object instance, ManagerImpl manager)
{
return (T) Reflections.invokeAndWrap(getName(), getParameterTypesAsArray(), instance, getParameterValues(parameters, manager));
}
@SuppressWarnings("unchecked")
- public T invokeWithSpecialValue(Object instance, Class<? extends Annotation> specialParam, Object specialVal, Manager manager)
+ public T invokeWithSpecialValue(Object instance, Class<? extends Annotation> specialParam, Object specialVal, ManagerImpl manager)
{
return (T) Reflections.invokeAndWrap(getDelegate(), instance, getParameterValues(parameters, specialVal, specialParam, manager));
}
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InjectionPointTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InjectionPointTest.java 2009-01-07 19:30:58 UTC (rev 815)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InjectionPointTest.java 2009-01-07 22:36:26 UTC (rev 816)
@@ -71,7 +71,7 @@
}
}
- @Test(groups = { "broken", "injectionPoint" })
+ @Test(groups = { "injectionPoint" })
@SpecAssertion(section = "5.11")
public void testGetBean()
{
@@ -96,7 +96,7 @@
}
}
- @Test(groups = { "broken", "injectionPoint" })
+ @Test(groups = { "injectionPoint" })
@SpecAssertion(section = "5.11")
public void testGetType()
{
@@ -118,7 +118,7 @@
}
}
- @Test(groups = { "broken", "injectionPoint" })
+ @Test(groups = { "injectionPoint" })
@SpecAssertion(section = "5.11")
public void testGetBindingTypes()
{
@@ -142,7 +142,7 @@
}
}
- @Test(groups = { "broken", "injectionPoint" })
+ @Test(groups = { "injectionPoint" })
@SpecAssertion(section = "5.11")
public void testGetMemberField()
{
@@ -193,7 +193,7 @@
}
}
- @Test(groups = { "broken", "injectionPoint" })
+ @Test(groups = { "injectionPoint" })
@SpecAssertion(section = "5.11")
public void testGetAnnotation()
{
@@ -215,7 +215,7 @@
}
}
- @Test(groups = { "broken", "injectionPoint" })
+ @Test(groups = { "injectionPoint" })
@SpecAssertion(section = "5.11")
public void testGetAnnotations()
{
@@ -240,7 +240,7 @@
}
}
- @Test(groups = { "broken", "injectionPoint" })
+ @Test(groups = { "injectionPoint" })
@SpecAssertion(section = "5.11")
public void testStandardDeployment()
{
@@ -262,7 +262,7 @@
}
}
- @Test(groups = { "broken", "injectionPoint" })
+ @Test(groups = { "injectionPoint" })
@SpecAssertion(section = "5.11")
public void testDependentScope()
{
@@ -284,7 +284,7 @@
}
}
- @Test(groups = { "broken", "injectionPoint" })
+ @Test(groups = { "injectionPoint" })
@SpecAssertion(section = "5.11")
public void testApiTypeInjectionPoint()
{
@@ -306,7 +306,7 @@
}
}
- @Test(groups = { "broken", "injectionPoint" })
+ @Test(groups = { "injectionPoint" })
@SpecAssertion(section = "5.11")
public void testCurrentBinding()
{
More information about the weld-commits
mailing list