[jboss-cvs] JBossAS SVN: r84095 - projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/factory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Feb 11 10:33:45 EST 2009


Author: alesj
Date: 2009-02-11 10:33:45 -0500 (Wed, 11 Feb 2009)
New Revision: 84095

Modified:
   projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/factory/PropertyMap.java
Log:
Fix contextual injection.

Modified: projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/factory/PropertyMap.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/factory/PropertyMap.java	2009-02-11 15:26:37 UTC (rev 84094)
+++ projects/microcontainer/trunk/kernel/src/main/java/org/jboss/beans/metadata/spi/factory/PropertyMap.java	2009-02-11 15:33:45 UTC (rev 84095)
@@ -26,6 +26,7 @@
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Set;
+import java.util.Stack;
 
 import org.jboss.beans.info.spi.BeanInfo;
 import org.jboss.beans.info.spi.PropertyInfo;
@@ -79,7 +80,7 @@
       for (ValueMetaData value : values())
       {
          ValueInfo vi = ValueInfo.class.cast(value);
-         if (vi.value == previous)
+         if (vi == previous)
          {
             valueInfo = vi;
             break;
@@ -106,7 +107,7 @@
       return typeInfo;
    }
 
-   private static class ValueInfo extends JBossObject implements ValueMetaData, Serializable
+   private static class ValueInfo extends JBossObject implements ValueMetaData, Serializable, TypeProvider
    {
       private static final long serialVersionUID = 1L;
 
@@ -119,6 +120,29 @@
          this.value = value;
       }
 
+      public TypeInfo getType(MetaDataVisitor visitor, MetaDataVisitorNode previous) throws Throwable
+      {
+         Stack<MetaDataVisitorNode> visitorNodeStack = visitor.visitorNodeStack();
+         // see AbstractInjectionValueMetaData.describeVisit
+         MetaDataVisitorNode node = visitorNodeStack.pop();
+         try
+         {
+            if (node instanceof TypeProvider)
+            {
+               TypeProvider typeProvider = (TypeProvider) node;
+               return typeProvider.getType(visitor, this);
+            }
+            else
+            {
+               throw new IllegalArgumentException(TypeProvider.ERROR_MSG);
+            }
+         }
+         finally
+         {
+            visitorNodeStack.push(node);
+         }
+      }
+
       public Object getUnderlyingValue()
       {
          return value.getUnderlyingValue();




More information about the jboss-cvs-commits mailing list