Class GenericsUtil

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

public final class GenericsUtil extends Object
Utility classes for generic type operations.
  • Constructor Details

    • GenericsUtil

      public GenericsUtil()
  • Method Details

    • satisfiesDependency

      public static boolean satisfiesDependency(boolean isDelegateOrEvent, boolean isProducer, Type injectionPointType, Type beanType, Map<Type,Integer> visited)
    • satisfiesDependencyRaw

      public static boolean satisfiesDependencyRaw(boolean isDelegateOrEvent, boolean isProducer, Type injectionPointType, Type beanType, Map<Type,Integer> visited)
    • isAssignableFrom

      public static boolean isAssignableFrom(boolean isDelegateOrEvent, boolean isProducer, Type requiredType, Type beanType, Map<Type,Integer> visited)
      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<Foo>() {}.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)