Class GenericsResolverImpl
- java.lang.Object
-
- org.apache.tapestry5.commons.internal.services.GenericsResolverImpl
-
- All Implemented Interfaces:
GenericsResolver
public class GenericsResolverImpl extends java.lang.Object implements GenericsResolver
Implementation copied from Tapestry 5.4's GenericUtils (commons package).
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.apache.tapestry5.commons.services.GenericsResolver
GenericsResolver.Provider
-
-
Constructor Summary
Constructors Constructor Description GenericsResolverImpl()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Class
asClass(java.lang.reflect.Type actualType)
Get the class represented by the reflected type.java.lang.reflect.Type
extractActualType(java.lang.reflect.Type containingType, java.lang.reflect.Field field)
Analyzes the method in the context of containingClass and returns the Class that is represented by the method's generic return type.java.lang.reflect.Type
extractActualType(java.lang.reflect.Type containingType, java.lang.reflect.Method method)
Analyzes the method in the context of containingClass and returns the Class that is represented by the method's generic return type.java.lang.Class
extractGenericFieldType(java.lang.Class containingClass, java.lang.reflect.Field field)
Analyzes the field in the context of containingClass and returns the Class that is represented by the field's generic type.java.lang.Class<?>
extractGenericReturnType(java.lang.Class<?> containingClass, java.lang.reflect.Method method)
Analyzes the method in the context of containingClass and returns the Class that is represented by the method's generic return type.java.lang.reflect.Type
resolve(java.lang.reflect.Type type, java.lang.reflect.Type containingType)
Resolves the type parameter based on the context of the containingType.static java.lang.String
toString(java.lang.reflect.Type type)
Convert the type into a string.
-
-
-
Constructor Detail
-
GenericsResolverImpl
public GenericsResolverImpl()
-
-
Method Detail
-
extractGenericReturnType
public java.lang.Class<?> extractGenericReturnType(java.lang.Class<?> containingClass, java.lang.reflect.Method method)
Analyzes the method in the context of containingClass and returns the Class that is represented by the method's generic return type. Any parameter information in the generic return type is lost. If you want to preserve the type parameters of the return type consider usingextractActualType(java.lang.reflect.Type, java.lang.reflect.Method)
.- Specified by:
extractGenericReturnType
in interfaceGenericsResolver
- Parameters:
containingClass
- class which either contains or inherited the methodmethod
- method from which to extract the return type- Returns:
- the class represented by the methods generic return type, resolved based on the context .
- See Also:
extractActualType(java.lang.reflect.Type, java.lang.reflect.Method)
,resolve(java.lang.reflect.Type,java.lang.reflect.Type)
,asClass(java.lang.reflect.Type)
-
extractGenericFieldType
public java.lang.Class extractGenericFieldType(java.lang.Class containingClass, java.lang.reflect.Field field)
Analyzes the field in the context of containingClass and returns the Class that is represented by the field's generic type. Any parameter information in the generic type is lost, if you want to preserve the type parameters of the return type consider usinggetTypeVariableIndex(java.lang.reflect.TypeVariable)
.- Specified by:
extractGenericFieldType
in interfaceGenericsResolver
- Parameters:
containingClass
- class which either contains or inherited the fieldfield
- field from which to extract the type- Returns:
- the class represented by the field's generic type, resolved based on the containingClass.
- See Also:
extractActualType(java.lang.reflect.Type, java.lang.reflect.Field)
,resolve(java.lang.reflect.Type,java.lang.reflect.Type)
,asClass(java.lang.reflect.Type)
-
extractActualType
public java.lang.reflect.Type extractActualType(java.lang.reflect.Type containingType, java.lang.reflect.Method method)
Analyzes the method in the context of containingClass and returns the Class that is represented by the method's generic return type. Any parameter information in the generic return type is lost.- Specified by:
extractActualType
in interfaceGenericsResolver
- Parameters:
containingType
- Type which is/represents the class that either contains or inherited the methodmethod
- method from which to extract the generic return type- Returns:
- the generic type represented by the methods generic return type, resolved based on the containingType.
- See Also:
resolve(java.lang.reflect.Type,java.lang.reflect.Type)
-
extractActualType
public java.lang.reflect.Type extractActualType(java.lang.reflect.Type containingType, java.lang.reflect.Field field)
Analyzes the method in the context of containingClass and returns the Class that is represented by the method's generic return type. Any parameter information in the generic return type is lost.- Specified by:
extractActualType
in interfaceGenericsResolver
- Parameters:
containingType
- Type which is/represents the class that either contains or inherited the fieldfield
- field from which to extract the generic return type- Returns:
- the generic type represented by the methods generic return type, resolved based on the containingType.
- See Also:
resolve(java.lang.reflect.Type,java.lang.reflect.Type)
-
resolve
public java.lang.reflect.Type resolve(java.lang.reflect.Type type, java.lang.reflect.Type containingType)
Resolves the type parameter based on the context of the containingType.TypeVariable
will be unwrapped to the type argument resolved form the class hierarchy. This may be something other than a simple Class if the type argument is a ParameterizedType for instance (e.g.List<E>; List<Map<Long, String>>
, E would be returned as a ParameterizedType with the raw type Map and type arguments Long and String.- Specified by:
resolve
in interfaceGenericsResolver
- Parameters:
type
- the generic type (ParameterizedType, GenericArrayType, WildcardType, TypeVariable) to be resolvedcontainingType
- the type which his- Returns:
- the type resolved to the best of our ability.
- Since:
- 5.2.?
-
asClass
public java.lang.Class asClass(java.lang.reflect.Type actualType)
Get the class represented by the reflected type. This method is lossy; You cannot recover the type information from the class that is returned.TypeVariable
the first bound is returned. If your type variable extends multiple interfaces that information is lost.WildcardType
the first lower bound is returned. If the wildcard is defined with upper bounds thenObject
is returned.- Specified by:
asClass
in interfaceGenericsResolver
- Parameters:
actualType
- a Class, ParameterizedType, GenericArrayType- Returns:
- the un-parameterized class associated with the type.
-
toString
public static java.lang.String toString(java.lang.reflect.Type type)
Convert the type into a string. The string representation approximates the code that would be used to define the type.- Parameters:
type
- - the type.- Returns:
- a string representation of the type, similar to how it was declared.
-
-