org.apache.webbeans.util
Class GenericsUtil

java.lang.Object
  extended by org.apache.webbeans.util.GenericsUtil

public final class GenericsUtil
extends Object

Utility classes for generic type operations.


Constructor Summary
GenericsUtil()
           
 
Method Summary
static boolean containsTypeVariable(Type type)
           
static boolean containsWildcardType(Type type)
           
static boolean containTypeVariable(Collection<? extends Type> types)
           
static boolean containTypeVariable(Type[] types)
           
static Set<Type> getDirectTypeClosure(Type type, Type actualType)
           
static ParameterizedType getParameterizedType(Type type)
           
static
<T> Class<T>
getRawType(Type type)
           
static Set<Type> getTypeClosure(Class<?> type)
           
static Set<Type> getTypeClosure(Type actualType)
           
static Set<Type> getTypeClosure(Type type, Type actualType)
          Returns the type closure for the specified parameters.
static boolean hasTypeParameters(Type type)
           
static boolean isAssignableFrom(boolean isDelegateOrEvent, boolean isProducer, Type requiredType, Type beanType)
          5.2.3 and 5.2.4
static Type[] resolveParameterTypes(Class<?> subclass, Constructor<?> constructor)
          Resolves the actual parameter types of the specified constructor for the type hierarchy specified by the given subclass
static Type[] resolveParameterTypes(Class<?> subclass, Method method)
          Resolves the actual parameter types of the specified method for the type hierarchy specified by the given subclass
static Type resolveReturnType(Class<?> subclass, Method method)
          Resolves the actual return type of the specified method for the type hierarchy specified by the given subclass
static Type resolveType(Class<?> subclass, Field field)
          Resolves the actual type of the specified field for the type hierarchy specified by the given subclass
static Type resolveType(ParameterizedType parameterizedType, Type metadataType)
           
static Type resolveType(Type type, Class<?> subclass, Member member)
          Resolves the actual type of the specified type for the type hierarchy specified by the given subclass
static Type resolveType(Type type, Class<?> subclass, Member member, Collection<TypeVariable<?>> seen)
           
static Type resolveType(Type type, Type actualType, Collection<TypeVariable<?>> seen)
           
static Type[] resolveTypes(Type[] types, Type actualType)
           
static Type[] resolveTypes(Type[] types, Type actualType, Collection<TypeVariable<?>> seen)
           
static boolean satisfiesDependency(boolean isDelegateOrEvent, boolean isProducer, Type injectionPointType, Type beanType)
           
static boolean satisfiesDependencyRaw(boolean isDelegateOrEvent, boolean isProducer, Type injectionPointType, Type beanType)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

GenericsUtil

public GenericsUtil()
Method Detail

satisfiesDependency

public static boolean satisfiesDependency(boolean isDelegateOrEvent,
                                          boolean isProducer,
                                          Type injectionPointType,
                                          Type beanType)

satisfiesDependencyRaw

public static boolean satisfiesDependencyRaw(boolean isDelegateOrEvent,
                                             boolean isProducer,
                                             Type injectionPointType,
                                             Type beanType)

isAssignableFrom

public static boolean isAssignableFrom(boolean isDelegateOrEvent,
                                       boolean isProducer,
                                       Type requiredType,
                                       Type beanType)
5.2.3 and 5.2.4


containsTypeVariable

public static boolean containsTypeVariable(Type type)
Returns:
true, if the specified type declaration contains an unresolved type variable.

containTypeVariable

public static boolean containTypeVariable(Collection<? extends Type> types)

containTypeVariable

public static boolean containTypeVariable(Type[] types)

containsWildcardType

public static boolean containsWildcardType(Type type)
Parameters:
type - to check
Returns:
true if the given type contains a WildcardType false otherwise

resolveType

public static Type resolveType(Class<?> subclass,
                               Field field)
Resolves the actual type of the specified field for the type hierarchy specified by the given subclass


resolveReturnType

public static Type resolveReturnType(Class<?> subclass,
                                     Method method)
Resolves the actual return type of the specified method for the type hierarchy specified by the given subclass


resolveParameterTypes

public static Type[] resolveParameterTypes(Class<?> subclass,
                                           Constructor<?> constructor)
Resolves the actual parameter types of the specified constructor for the type hierarchy specified by the given subclass


resolveParameterTypes

public static Type[] resolveParameterTypes(Class<?> subclass,
                                           Method method)
Resolves the actual parameter types of the specified method for the type hierarchy specified by the given subclass


resolveType

public static Type resolveType(Type type,
                               Class<?> subclass,
                               Member member)
Resolves the actual type of the specified type for the type hierarchy specified by the given subclass


resolveType

public static Type resolveType(Type type,
                               Class<?> subclass,
                               Member member,
                               Collection<TypeVariable<?>> seen)

resolveType

public static Type resolveType(Type type,
                               Type actualType,
                               Collection<TypeVariable<?>> seen)

resolveTypes

public static Type[] resolveTypes(Type[] types,
                                  Type actualType,
                                  Collection<TypeVariable<?>> seen)

resolveTypes

public static Type[] resolveTypes(Type[] types,
                                  Type actualType)

getTypeClosure

public static Set<Type> getTypeClosure(Class<?> type)

getTypeClosure

public static Set<Type> getTypeClosure(Type actualType)

getTypeClosure

public static Set<Type> getTypeClosure(Type type,
                                       Type actualType)
Returns the type closure for the specified parameters.

Example 1:

Take the following classes:

public class Foo { private T t; } public class Bar extends Foo { }

To get the type closure of T in the context of Bar (which is {Number.class, Object.class}), you have to call this method like

GenericUtil.getTypeClosure(Foo.class.getDeclaredField("t").getType(), Bar.class, Foo.class);

Example 2:

Take the following classes:

public class Foo { private T t; } public class Bar extends Foo { }

To get the type closure of Bar in the context of Foo (which are besides Object.class the ParameterizedTypes Bar and Foo), you have to call this method like

GenericUtil.getTypeClosure(Foo.class, new TypeLiteral>() {}.getType(), Bar.class);

Parameters:
type - the type to get the closure for
actualType - the context to bind type variables
Returns:
the type closure

getDirectTypeClosure

public static Set<Type> getDirectTypeClosure(Type type,
                                             Type actualType)

hasTypeParameters

public static boolean hasTypeParameters(Type type)

getParameterizedType

public static ParameterizedType getParameterizedType(Type type)

getRawType

public static <T> Class<T> getRawType(Type type)

resolveType

public static Type resolveType(ParameterizedType parameterizedType,
                               Type metadataType)


Copyright © 2008–2015 The Apache Software Foundation. All rights reserved.