in webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java [754:811]
public static Class<?> getClazz(Type type)
{
if(type instanceof ParameterizedType)
{
ParameterizedType pt = (ParameterizedType)type;
return (Class<?>)pt.getRawType();
}
else if(type instanceof Class)
{
return (Class<?>)type;
}
else if(type instanceof GenericArrayType)
{
GenericArrayType arrayType = (GenericArrayType)type;
return Array.newInstance(getClazz(arrayType.getGenericComponentType()), 0).getClass();
}
else if (type instanceof WildcardType)
{
WildcardType wildcardType = (WildcardType)type;
Type[] bounds = wildcardType.getUpperBounds();
if (bounds.length > 1)
{
throw new WebBeansConfigurationException("Illegal use of wild card type with more than one upper bound: " + wildcardType);
}
else if (bounds.length == 0)
{
return Object.class;
}
else
{
return getClass(bounds[0]);
}
}
else if (type instanceof TypeVariable)
{
TypeVariable<?> typeVariable = (TypeVariable<?>)type;
if (typeVariable.getBounds().length > 1)
{
throw new WebBeansConfigurationException("Illegal use of type variable with more than one bound: " + typeVariable);
}
else
{
Type[] bounds = typeVariable.getBounds();
if (bounds.length == 0)
{
return Object.class;
}
else
{
return getClass(bounds[0]);
}
}
}
else
{
throw new WebBeansConfigurationException("Unsupported type " + type);
}
}