public class UtlReflection extends Object
This class IS NOT intended to be used by end users.
Constructor and Description |
---|
UtlReflection() |
Modifier and Type | Method and Description |
---|---|
static void |
appendMethodAndCodeSource(Method method,
StringBuilder builder)
Append the method name and code source.
|
static Collection<Field> |
collectAllFields(Class<?> clazz) |
static void |
collectAllFields(Class<?> clazz,
Collection<Field> target)
Collects non public method from the given class and its supertypes.
|
static Collection<Method> |
collectAllMethods(Class<?> clazz)
Collects public and non public method from the given class and its supertypes
(excluding those methods from
Object itself) |
static void |
collectNonPublicMethods(Class<?> clazz,
Collection<Method> target)
Collects non public method from the given class and its supertypes.
|
static <T extends Annotation> |
getAnnotation(Method method,
Class<T> annotationClass)
Tests if an annotation is present on a method, or present on a super class
or interface declaration of the method.
|
static Set<String> |
getDecamelCasedNonObjectProperties(Class<?> type)
Gets the properties of a class excluding properties from java.lang.Object
This method return the properties for the given class eliminating
possible duplicates from decamelcasing.
|
static Set<String> |
getDecamelcasedProperties(Class<?> type)
Gets the properties of a class.
|
static Set<String> |
getDeclaredProperties(Class<?> type)
Gets the properties declared by the class (not including super type properties)
|
static Method |
getGetter(Class<?> type,
String property)
Gets the accessor method for a given property of the type provided.
|
static boolean |
getHasPropertyCheckerValue(Object object,
String name)
Checks if an object has a hasXXX method for the given non nested field
and if so will call it and return its value.
|
static Method |
getMethod(Class<?> type,
String name,
Class<?>... parameterTypes)
Looks up a method for a class.
|
static Method |
getNonNestedAccessor(Class<?> type,
String field)
Gets the accessor for the given field or null if no such field accessor
can be found.
|
static Method |
getNonNestedChecker(Class<?> type,
String field)
Gets the check for the given field or null if no such field checker
can be found.
|
static <T> T |
getNonNestedProperty(Object object,
String field)
Gets a property for the object at the given bean path.
|
static Set<String> |
getNonObjectProperties(Class<?> type)
Gets the properties of a class excluding properties from java.lang.Object
Note this method returns property names in both first letter lowercase
and first letter uppercase form.
|
static Set<String> |
getProperties(Class<?> type)
Gets the properties of a class.
|
static <T> T |
getProperty(Object object,
int pathOffset,
String... path)
Traverses the given bean path from the specified index to retrieve a value on the provided object.
|
static <T> T |
getProperty(Object object,
String path)
Gets a property for the object at the given bean path.
|
static Class<?> |
getUnwrappedReturnType(Class<?> type,
String path)
Gets the return type of the accessor at the given bean path relative
to the provided type.
|
static boolean |
hasPath(Class<?> type,
String path)
Indicate whether the given type has the provided, possibly nested,
unambiguous bean/field path.
|
static boolean |
hasPath(Object object,
String path)
Indicate whether the given object has the provided, possibly nested,
bean/field path.
|
static boolean |
isAnnotationPresent(Method method,
Class<? extends Annotation> annotationClass)
Tests if an annotation is present on a method, or present on a super class
declaration of the method.
|
static void |
setNonNestedProperty(Object object,
String property,
Object value)
Looks for a setter method for the given property in the provided target object,
and attempts to invoke the method with the supplied value.
|
public static void collectNonPublicMethods(Class<?> clazz, Collection<Method> target)
clazz
- The class for which to collect methods.target
- The target.public static Collection<Method> collectAllMethods(Class<?> clazz)
Object
itself)clazz
- The class for which to collect methods.public static Collection<Field> collectAllFields(Class<?> clazz)
clazz
- The class for which to collect fields.public static void collectAllFields(Class<?> clazz, Collection<Field> target)
clazz
- The class for which to collect methods.target
- The target.public static final Class<?> getUnwrappedReturnType(Class<?> type, String path)
type
- The type at the bean path root.path
- The bean path of the field relative to the typepublic static Method getGetter(Class<?> type, String property)
type
- The typeproperty
- The bean path of the property relative to the type.public static boolean hasPath(Class<?> type, String path)
Note that a return value of false
does not mean that a concrete instance
of the class would yield false
for
hasPath(Object, String)
. For example consider:
Record.class, "attachment.zipCode"if Record.getAttachment return type Object.class, then if an instance of Record has an Address object as its attachment field, it would yield a return value of
true
for zipCode while this method would return false
.type
- The type to check.path
- The path to check.true
If the path exists.public static boolean hasPath(Object object, String path)
object
- The type to check.path
- The path to check.true
If the path exists.public static <T> T getProperty(Object object, String path)
object
- The object to introspect.path
- The bean path which may be a '.' separated nested path.public static void setNonNestedProperty(Object object, String property, Object value) throws NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException
object
- The object on which to set the property.property
- The property name.value
- The value to set the property to (conversion will be attempted).NoSuchMethodException
- if no property can be found for the given class.InvocationTargetException
- If there is an error setting the property.IllegalAccessException
- If the setter method is not accessible.IllegalArgumentException
- If the arguments are of the wrong type and cannot be converted.public static <T> T getProperty(Object object, int pathOffset, String... path)
object
- The object to introspect.pathOffset
- The offset into the path to use for the bean path.path
- The bean path (potentially offset by path offset).public static <T> T getNonNestedProperty(Object object, String field)
object
- The object to introspect.field
- The bean path which may not be a '.' separated nested path.public static final boolean getHasPropertyCheckerValue(Object object, String name)
object
- The object.name
- The property.public static Method getNonNestedAccessor(Class<?> type, String field)
type
- The type.field
- The fields bean path namepublic static Method getNonNestedChecker(Class<?> type, String field)
type
- The type.field
- The fields bean path namepublic static final Set<String> getProperties(Class<?> type)
Note this method returns property names in both first letter lowercase
and first letter uppercase form. Use getDecamelcasedProperties(Class)
to avoid duplicates.
type
- The type for which to return properties.public static final Set<String> getDecamelcasedProperties(Class<?> type)
This method return the properties for the given class eliminating possible duplicates from decamelcasing.
type
- The type for which to return properties.public static final Set<String> getNonObjectProperties(Class<?> type)
Note this method returns property names in both first letter lowercase
and first letter uppercase form. Use getDecamelcasedProperties(Class)
to avoid duplicates.
type
- The type for which to return properties.public static final Set<String> getDecamelCasedNonObjectProperties(Class<?> type)
This method return the properties for the given class eliminating possible duplicates from decamelcasing.
type
- The type for which to return properties.public static Set<String> getDeclaredProperties(Class<?> type)
type
- The type for which to return properties.public static void appendMethodAndCodeSource(Method method, StringBuilder builder)
For example:
public void com.foo.Bar.someMethod(int) [/libs/myjar.jar]
method
- The method.builder
- The builder to which to append.public static Method getMethod(Class<?> type, String name, Class<?>... parameterTypes)
type
- The Type to search for the given method.name
- The method name.public static <T extends Annotation> T getAnnotation(Method method, Class<T> annotationClass)
method
- The method.annotationClass
- The annotation.public static boolean isAnnotationPresent(Method method, Class<? extends Annotation> annotationClass)
method
- The method.annotationClass
- The annotation.Copyright © 2019 Neeve Research, LLC. All Rights Reserved.