[jboss-cvs] JBossAS SVN: r64361 - in projects/microcontainer/trunk: kernel/src/main/org/jboss/beans/metadata/plugins and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Jul 31 03:21:43 EDT 2007


Author: alesj
Date: 2007-07-31 03:21:43 -0400 (Tue, 31 Jul 2007)
New Revision: 64361

Modified:
   projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/introspection/IntrospectionTypeInfoFactoryImpl.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractCollectionMetaData.java
   projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractFeatureMetaData.java
Log:
Fixing contextual injection type lookup with newly added getComponentType.
Simple refactoring on IntrospectionTypeInfoFactoryImpl.

Modified: projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/introspection/IntrospectionTypeInfoFactoryImpl.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/introspection/IntrospectionTypeInfoFactoryImpl.java	2007-07-31 02:25:10 UTC (rev 64360)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/introspection/IntrospectionTypeInfoFactoryImpl.java	2007-07-31 07:21:43 UTC (rev 64361)
@@ -528,48 +528,30 @@
    {
       if (classInfo.isCollection() == false)
          return null;
-
-      Type type = classInfo.getType();
-      if (classInfo instanceof ParameterizedClassInfo)
-         type = ((ParameterizedClassInfo) classInfo).parameterizedType;
-      
-      Type result = locateActualType(Collection.class, 0, classInfo.getType(), type);
-      if (result instanceof TypeVariable)
-      {
-         TypeVariable typeVariable = (TypeVariable) result;
-         result = typeVariable.getBounds()[0];
-      }
-      return getTypeInfo(result);
+      return findActualType(classInfo, Collection.class, 0);
    }
    
    public TypeInfo getKeyType(ClassInfo classInfo)
    {
       if (classInfo.isMap() == false)
          return null;
-
-      Type type = classInfo.getType();
-      if (classInfo instanceof ParameterizedClassInfo)
-         type = ((ParameterizedClassInfo) classInfo).parameterizedType;
-      
-      Type result = locateActualType(Map.class, 0, classInfo.getType(), type);
-      if (result instanceof TypeVariable)
-      {
-         TypeVariable typeVariable = (TypeVariable) result;
-         result = typeVariable.getBounds()[0];
-      }
-      return getTypeInfo(result);
+      return findActualType(classInfo, Map.class, 0);
    }
    
    public TypeInfo getValueType(ClassInfo classInfo)
    {
       if (classInfo.isMap() == false)
          return null;
+      return findActualType(classInfo, Map.class, 1);
+   }
 
+   protected TypeInfo findActualType(ClassInfo classInfo, Class reference, int parameter)
+   {
       Type type = classInfo.getType();
       if (classInfo instanceof ParameterizedClassInfo)
          type = ((ParameterizedClassInfo) classInfo).parameterizedType;
-      
-      Type result = locateActualType(Map.class, 1, classInfo.getType(), type);
+
+      Type result = locateActualType(reference, parameter, classInfo.getType(), type);
       if (result instanceof TypeVariable)
       {
          TypeVariable typeVariable = (TypeVariable) result;
@@ -577,7 +559,7 @@
       }
       return getTypeInfo(result);
    }
-   
+
    protected static Type locateActualType(Class reference, int parameter, Class clazz, Type type)
    {
       if (reference.equals(clazz))
@@ -585,21 +567,19 @@
          if (type instanceof Class)
          {
             Class typeClass = (Class) type;
-            Type result = typeClass.getTypeParameters()[parameter];
-            return result;
+            return typeClass.getTypeParameters()[parameter];
          }
          else
          {
             ParameterizedType parameterized = (ParameterizedType) type;
-            Type result = parameterized.getActualTypeArguments()[parameter];
-            return result;
+            return parameterized.getActualTypeArguments()[parameter];
          }
       }
       
       Type[] interfaces = clazz.getGenericInterfaces();
       for (Type intf : interfaces)
       {
-         Type result = null;
+         Type result;
          if (intf instanceof Class)
          {
             Class interfaceClass = (Class) intf;
@@ -639,8 +619,7 @@
             if (type instanceof ParameterizedType)
             {
                ParameterizedType parameterized = (ParameterizedType) type;
-               Type result = parameterized.getActualTypeArguments()[i];
-               return result;
+               return parameterized.getActualTypeArguments()[i];
             }
             return variable;
          }

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractCollectionMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractCollectionMetaData.java	2007-07-31 02:25:10 UTC (rev 64360)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractCollectionMetaData.java	2007-07-31 07:21:43 UTC (rev 64361)
@@ -205,9 +205,7 @@
       if (info instanceof ClassInfo)
       {
          ClassInfo classInfo = (ClassInfo)info;
-         TypeInfo[] types = classInfo.getActualTypeArguments();
-         if (types != null)
-            return types[0];
+         return classInfo.getComponentType();
       }
 
       return null;

Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractFeatureMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractFeatureMetaData.java	2007-07-31 02:25:10 UTC (rev 64360)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractFeatureMetaData.java	2007-07-31 07:21:43 UTC (rev 64361)
@@ -22,21 +22,18 @@
 package org.jboss.beans.metadata.plugins;
 
 import java.io.Serializable;
-import java.util.Collection;
 import java.util.Iterator;
-import java.util.Map;
 import java.util.Set;
 
 import org.jboss.beans.metadata.spi.AnnotationMetaData;
 import org.jboss.beans.metadata.spi.FeatureMetaData;
 import org.jboss.beans.metadata.spi.MetaDataVisitor;
 import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
+import org.jboss.reflect.spi.ClassInfo;
+import org.jboss.reflect.spi.TypeInfo;
 import org.jboss.util.JBossObject;
 import org.jboss.util.JBossStringBuilder;
 import org.jboss.util.collection.CollectionsFactory;
-import org.jboss.reflect.spi.TypeInfo;
-import org.jboss.reflect.spi.ClassInfo;
-import org.jboss.reflect.spi.TypeInfoFactory;
 
 /**
  * General metadata.
@@ -106,18 +103,15 @@
 
    protected TypeInfo applyCollectionOrMapCheck(TypeInfo typeInfo) throws Throwable
    {
-      TypeInfoFactory tif = typeInfo.getTypeInfoFactory();
-      boolean isCollectionType = tif.getTypeInfo(Collection.class).isAssignableFrom(typeInfo);
       // cannot determine on map, since we don't know if we are key or value
-      if (typeInfo instanceof ClassInfo && isCollectionType)
+      if (typeInfo instanceof ClassInfo)
       {
          ClassInfo classInfo = (ClassInfo)typeInfo;
-         TypeInfo[] types = classInfo.getActualTypeArguments();
-         if (types != null)
-            return types[0];
+         TypeInfo componentType = classInfo.getComponentType();
+         if (componentType != null)
+            return componentType;
       }
-      boolean isMapTypeInfo = tif.getTypeInfo(Map.class).isAssignableFrom(typeInfo);
-      if (isCollectionType || isMapTypeInfo)
+      if (typeInfo.isCollection() || typeInfo.isMap())
       {
          throw new IllegalArgumentException("Should not be here - set element/value class type in collection/map: " + this);
       }




More information about the jboss-cvs-commits mailing list