[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