[webbeans-commits] Webbeans SVN: r980 - in ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans: introspector/jlr and 1 other directory.
webbeans-commits at lists.jboss.org
webbeans-commits at lists.jboss.org
Thu Jan 15 08:22:25 EST 2009
Author: dallen6
Date: 2009-01-15 08:22:25 -0500 (Thu, 15 Jan 2009)
New Revision: 980
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/InjectionPointProvider.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/AnnotatedFieldImpl.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedParameterImpl.java
Log:
Fixed problem related to producer method parameters being pushed onto injection point provider stack.
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/InjectionPointProvider.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/InjectionPointProvider.java 2009-01-15 07:58:14 UTC (rev 979)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injection/InjectionPointProvider.java 2009-01-15 13:22:25 UTC (rev 980)
@@ -67,6 +67,8 @@
public void pushInjectionPoint(AnnotatedItem<?, ?> injectionPoint)
{
injectionPoints.push(InjectionPointImpl.of(injectionPoint, getCurrentBean()));
+ if (beans.size() != injectionPoints.size())
+ throw new IllegalStateException("Number of beans on stack is inconsistent with number of injection points: " + this);
}
/**
@@ -121,4 +123,11 @@
return beans.size() < 2 ? null : beans.elementAt(beans.size() - 2);
}
+ @Override
+ public String toString()
+ {
+ return "InjectionPointProvider: Bean stack = " + beans.toString() +
+ " InjectionPoint stack = " + injectionPoints.toString();
+ }
+
}
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-15 07:58:14 UTC (rev 979)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedMember.java 2009-01-15 13:22:25 UTC (rev 980)
@@ -26,6 +26,7 @@
import java.util.Map;
import javax.webbeans.BindingType;
+import javax.webbeans.Produces;
import javax.webbeans.manager.Manager;
import org.jboss.webbeans.ManagerImpl;
@@ -206,31 +207,31 @@
protected Object[] getParameterValues(List<AnnotatedParameter<?>> parameters, Object specialVal, Class<? extends Annotation> specialParam, ManagerImpl manager)
{
Object[] parameterValues = new Object[parameters.size()];
+ boolean producerMethod = this.isAnnotationPresent(Produces.class);
InjectionPointProvider injectionPointProvider = manager.getInjectionPointProvider();
- injectionPointProvider.pushInjectionPoint(this);
- try
+ Iterator<AnnotatedParameter<?>> iterator = parameters.iterator();
+ for (int i = 0; i < parameterValues.length; i++)
{
- Iterator<AnnotatedParameter<?>> iterator = parameters.iterator();
- for (int i = 0; i < parameterValues.length; i++)
+ AnnotatedParameter<?> param = iterator.next();
+ if (specialParam != null && param.isAnnotationPresent(specialParam))
{
- AnnotatedParameter<?> param = iterator.next();
- if (specialParam != null && param.isAnnotationPresent(specialParam))
+ parameterValues[i] = specialVal;
+ }
+ else
+ {
+ if (!producerMethod)
+ injectionPointProvider.pushInjectionPoint(param);
+ try
{
- parameterValues[i] = specialVal;
+ parameterValues[i] = param.getValue(manager);
}
- else
+ finally
{
- injectionPointProvider.pushInjectionPoint(param);
- parameterValues[i] = param.getValue(manager);
- injectionPointProvider.popInjectionPoint();
+ if (!producerMethod)
+ injectionPointProvider.popInjectionPoint();
}
}
}
- finally
- {
- injectionPointProvider.popInjectionPoint();
-
- }
return parameterValues;
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedFieldImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedFieldImpl.java 2009-01-15 07:58:14 UTC (rev 979)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedFieldImpl.java 2009-01-15 13:22:25 UTC (rev 980)
@@ -183,7 +183,7 @@
{
return toString;
}
- toString = "Annotated method " + Names.field2String(field);
+ toString = "Annotated field " + Names.field2String(field);
return toString;
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedParameterImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedParameterImpl.java 2009-01-15 07:58:14 UTC (rev 979)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AnnotatedParameterImpl.java 2009-01-15 13:22:25 UTC (rev 980)
@@ -162,9 +162,18 @@
@Override
public String toString()
{
- if (toString != null)
+ if (toString == null)
{
- return toString;
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("Annotated parameter ");
+ if (_static)
+ buffer.append("static ");
+ if (_final)
+ buffer.append("final ");
+ buffer.append(getType().getName());
+ buffer.append(" for operation ");
+ buffer.append(getDeclaringMember().toString());
+ toString = buffer.toString();
}
return toString;
}
More information about the weld-commits
mailing list