[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