Class GrailsClassUtils
-
Field Summary
FieldsModifier and TypeFieldDescription -
Method Summary
Modifier and TypeMethodDescriptionstatic Object[]Convenience method for converting a collection to an Object[]static CollectioncreateConcreteCollection(Class interfaceType) Creates a concrete collection for the suppied interfacestatic StringfindPropertyNameForValue(Object target, Object obj) Locates the name of a property for the given value on the target object using Groovy's meta APIs.static Class[]getAllInterfaces(Object instance) Return all interfaces that the given instance implements as array, including ones implemented by superclasses.getAllInterfacesAsSet(Object instance) Return all interfaces that the given instance implements as Set, including ones implemented by superclasses.static Class<?>[]getAllInterfacesForClass(Class<?> clazz) Return all interfaces that the given class implements as array, including ones implemented by superclasses.static Class<?>[]getAllInterfacesForClass(Class<?> clazz, ClassLoader classLoader) Return all interfaces that the given class implements as array, including ones implemented by superclasses.Return all interfaces that the given class implements as Set, including ones implemented by superclasses.getAllInterfacesForClassAsSet(Class clazz, ClassLoader classLoader) Return all interfaces that the given class implements as Set, including ones implemented by superclasses.static booleangetBooleanFromMap(String key, Map<?, ?> map) Retrieves a boolean value from a Map for the given keystatic booleangetBooleanFromMap(String key, Map<?, ?> map, boolean defaultValue) Retrieves a boolean value from a Map for the given keystatic groovy.lang.MetaClassgetExpandoMetaClass(Class clazz) static ObjectgetFieldValue(Object obj, String name) Get the value of a declared field on an objectstatic StringgetGetterName(String propertyName) Calculate the name for a getter method to retrieve the specified propertystatic PropertyDescriptor[]getPropertiesAssignableToType(Class<?> clazz, Class<?> propertySuperType) Retrieves all the properties of the given class which are assignable to the given typestatic PropertyDescriptor[]getPropertiesOfType(Class<?> clazz, Class<?> propertyType) Retrieves all the properties of the given class for the given typestatic PropertyDescriptorgetProperty(Class<?> clazz, String propertyName) Retrieves a property of the given class of the specified name and typestatic PropertyDescriptorgetProperty(Class<?> clazz, String propertyName, Class<?> propertyType) Retrieves a property of the given class of the specified name and typestatic PropertyDescriptorgetPropertyDescriptorForValue(Object instance, Object propertyValue) Retrieves a PropertyDescriptor for the specified instance and property valuestatic StringgetPropertyForGetter(String getterName) Deprecated.static StringgetPropertyForGetter(String getterName, Class returnType) Returns a property name equivalent for the given getter name and return type or null if it is not a valid getter.static StringgetPropertyForGetter(String getterName, String returnType) Returns a property name equivalent for the given getter name and return type or null if it is not a valid getter.static StringgetPropertyForSetter(String setterName) Returns a property name equivalent for the given setter name or null if it is not a valid setter.static ObjectgetPropertyOrStaticPropertyOrFieldValue(Object obj, String name) Looks for a property of the reference instance with a given name.static ObjectgetPropertyOrStaticPropertyOrFieldValue(org.springframework.beans.BeanWrapper ref, Object obj, String name) static Class<?>getPropertyType(Class<?> clazz, String propertyName) Returns the type of the given property contained within the specified classstatic ObjectgetPropertyValueOfNewInstance(Class<?> clazz, String propertyName) Returns the value of the specified property and type from an instance of the specified Grails classstatic ObjectgetPropertyValueOfNewInstance(Class clazz, String propertyName, Class<?> propertyType) Returns the value of the specified property and type from an instance of the specified Grails classstatic StringgetSetterName(String propertyName) Retrieves the name of a setter for the specified property namestatic ObjectgetStaticFieldValue(Class<?> clazz, String name) Get a static field value.static ObjectgetStaticPropertyValue(Class<?> clazz, String name) Get a static property value, which has a public static getter or is just a public static field.static ObjectinstantiateFromConfig(groovy.util.ConfigObject config, String configKey, String defaultClassName) static Objectstatic booleanisAssignableOrConvertibleFrom(Class<?> clazz, Class<?> type) Returns true if the specified clazz parameter is either the same as, or is a superclass or superinterface of, the specified type parameter.static booleanisClassBelowPackage(Class<?> theClass, List<?> packageList) Returns whether the specified class is either within one of the specified packages or within a subpackage of one of the packagesstatic booleanDeprecated.useisGetter(String, Class, Class[])instead because this method has a defect for "is.." method with Boolean return types.static booleanReturns true if the name of the method specified and the number of arguments make it a javabean property getter.static booleanisGroovyAssignableFrom(Class<?> leftType, Class<?> rightType) Tests whether or not the left hand type is compatible with the right hand type in Groovy terms, i.e.static booleanisMatchBetweenPrimativeAndWrapperTypes(Class leftType, Class rightType) Detect if left and right types are matching types.static booleanisPropertyGetter(Method method) Check whether the specified method is a property getterstatic booleanisPropertyInherited(Class clz, String propertyName) Checks whether the specified property is inherited from a super classstatic booleanisPropertyOfType(Class<?> clazz, String propertyName, Class<?> type) Returns true if the specified property in the specified class is of the specified typestatic booleanisPublicField(Object obj, String name) Work out if the specified object has a public field with the name supplied.static booleanDetermine whether the field is declared public staticstatic booleanDetermine whether the method is declared public staticstatic booleanReturns true if the name of the method specified and the number of arguments make it a javabean property setter.static booleanisStaticProperty(Class clazz, String propertyName) Work out if the specified property is readable and static.static booleanisVisible(Class<?> clazz, ClassLoader classLoader) Check whether the given class is visible in the given ClassLoader.
-
Field Details
-
PRIMITIVE_TYPE_COMPATIBLE_CLASSES
-
-
Method Details
-
getAllInterfaces
Return all interfaces that the given instance implements as array, including ones implemented by superclasses.- Parameters:
instance- the instance to analyze for interfaces- Returns:
- all interfaces that the given instance implements as array
-
getAllInterfacesForClass
Return all interfaces that the given class implements as array, including ones implemented by superclasses.If the class itself is an interface, it gets returned as sole interface.
- Parameters:
clazz- the class to analyze for interfaces- Returns:
- all interfaces that the given object implements as array
-
getAllInterfacesForClass
Return all interfaces that the given class implements as array, including ones implemented by superclasses.If the class itself is an interface, it gets returned as sole interface.
- Parameters:
clazz- the class to analyze for interfacesclassLoader- the ClassLoader that the interfaces need to be visible in (may benullwhen accepting all declared interfaces)- Returns:
- all interfaces that the given object implements as array
-
getAllInterfacesAsSet
Return all interfaces that the given instance implements as Set, including ones implemented by superclasses.- Parameters:
instance- the instance to analyze for interfaces- Returns:
- all interfaces that the given instance implements as Set
-
getAllInterfacesForClassAsSet
Return all interfaces that the given class implements as Set, including ones implemented by superclasses.If the class itself is an interface, it gets returned as sole interface.
- Parameters:
clazz- the class to analyze for interfaces- Returns:
- all interfaces that the given object implements as Set
-
getAllInterfacesForClassAsSet
Return all interfaces that the given class implements as Set, including ones implemented by superclasses.If the class itself is an interface, it gets returned as sole interface.
- Parameters:
clazz- the class to analyze for interfacesclassLoader- the ClassLoader that the interfaces need to be visible in (may benullwhen accepting all declared interfaces)- Returns:
- all interfaces that the given object implements as Set
-
isVisible
Check whether the given class is visible in the given ClassLoader.- Parameters:
clazz- the class to check (typically an interface)classLoader- the ClassLoader to check against (may benull, in which case this method will always returntrue)
-
isPropertyOfType
Returns true if the specified property in the specified class is of the specified type- Parameters:
clazz- The class which contains the propertypropertyName- The property nametype- The type to check- Returns:
- A boolean value
-
getPropertyValueOfNewInstance
public static Object getPropertyValueOfNewInstance(Class clazz, String propertyName, Class<?> propertyType) Returns the value of the specified property and type from an instance of the specified Grails class- Parameters:
clazz- The name of the class which contains the propertypropertyName- The property namepropertyType- The property type- Returns:
- The value of the property or null if none exists
-
getPropertyValueOfNewInstance
Returns the value of the specified property and type from an instance of the specified Grails class- Parameters:
clazz- The name of the class which contains the propertypropertyName- The property name- Returns:
- The value of the property or null if none exists
-
getPropertyDescriptorForValue
public static PropertyDescriptor getPropertyDescriptorForValue(Object instance, Object propertyValue) Retrieves a PropertyDescriptor for the specified instance and property value- Parameters:
instance- The instancepropertyValue- The value of the property- Returns:
- The PropertyDescriptor
-
getPropertyType
Returns the type of the given property contained within the specified class- Parameters:
clazz- The class which contains the propertypropertyName- The name of the property- Returns:
- The property type or null if none exists
-
getPropertiesOfType
Retrieves all the properties of the given class for the given type- Parameters:
clazz- The class to retrieve the properties frompropertyType- The type of the properties you wish to retrieve- Returns:
- An array of PropertyDescriptor instances
-
getPropertiesAssignableToType
public static PropertyDescriptor[] getPropertiesAssignableToType(Class<?> clazz, Class<?> propertySuperType) Retrieves all the properties of the given class which are assignable to the given type- Parameters:
clazz- The class to retrieve the properties frompropertySuperType- The type of the properties you wish to retrieve- Returns:
- An array of PropertyDescriptor instances
-
getProperty
public static PropertyDescriptor getProperty(Class<?> clazz, String propertyName, Class<?> propertyType) Retrieves a property of the given class of the specified name and type- Parameters:
clazz- The class to retrieve the property frompropertyName- The name of the propertypropertyType- The type of the property- Returns:
- A PropertyDescriptor instance or null if none exists
-
getProperty
Retrieves a property of the given class of the specified name and type- Parameters:
clazz- The class to retrieve the property frompropertyName- The name of the property- Returns:
- A PropertyDescriptor instance or null if none exists
-
collectionToObjectArray
Convenience method for converting a collection to an Object[]- Parameters:
c- The collection- Returns:
- An object array
-
isMatchBetweenPrimativeAndWrapperTypes
Detect if left and right types are matching types. In particular, test if one is a primitive type and the other is the corresponding Java wrapper type. Primitive and wrapper classes may be passed to either arguments.- Parameters:
leftType-rightType-- Returns:
- true if one of the classes is a native type and the other the object representation of the same native type
-
isGroovyAssignableFrom
Tests whether or not the left hand type is compatible with the right hand type in Groovy terms, i.e. can the left type be assigned a value of the right hand type in Groovy.
This handles Java primitive type equivalence and uses isAssignableFrom for all other types, with a bit of magic for native types and polymorphism i.e. Number assigned an int. If either parameter is null an exception is thrown
- Parameters:
leftType- The type of the left hand part of a notional assignmentrightType- The type of the right hand part of a notional assignment- Returns:
- true if values of the right hand type can be assigned in Groovy to variables of the left hand type.
-
isStaticProperty
Work out if the specified property is readable and static. Java introspection does not recognize this concept of static properties but Groovy does. We also consider public static fields as static properties with no getters/setters
- Parameters:
clazz- The class to check for static propertypropertyName- The property name- Returns:
- true if the property with name propertyName has a static getter method
-
isPublicStatic
Determine whether the method is declared public static- Parameters:
m-- Returns:
- true if the method is declared public static
-
isPublicStatic
Determine whether the field is declared public static- Parameters:
f-- Returns:
- true if the field is declared public static
-
getGetterName
Calculate the name for a getter method to retrieve the specified property- Parameters:
propertyName-- Returns:
- The name for the getter method for this property, if it were to exist, i.e. getConstraints
-
getStaticFieldValue
Get a static field value.
- Parameters:
clazz- The class to check for static propertyname- The field name- Returns:
- The value if there is one, or null if unset OR there is no such field
-
getStaticPropertyValue
Get a static property value, which has a public static getter or is just a public static field.
- Parameters:
clazz- The class to check for static propertyname- The property name- Returns:
- The value if there is one, or null if unset OR there is no such property
-
getPropertyOrStaticPropertyOrFieldValue
public static Object getPropertyOrStaticPropertyOrFieldValue(Object obj, String name) throws org.springframework.beans.BeansException Looks for a property of the reference instance with a given name.
If found its value is returned. We follow the Java bean conventions with augmentation for groovy support and static fields/properties. We will therefore match, in this order:
- Standard public bean property (with getter or just public field, using normal introspection)
- Public static property with getter method
- Public static field
- Returns:
- property value or null if no property found
- Throws:
org.springframework.beans.BeansException
-
getPropertyOrStaticPropertyOrFieldValue
-
getFieldValue
Get the value of a declared field on an object- Parameters:
obj-name-- Returns:
- The object value or null if there is no such field or access problems
-
isPublicField
Work out if the specified object has a public field with the name supplied.- Parameters:
obj-name-- Returns:
- true if a public field with the name exists
-
isPropertyInherited
Checks whether the specified property is inherited from a super class- Parameters:
clz- The class to checkpropertyName- The property name- Returns:
- true if the property is inherited
-
isPropertyGetter
Check whether the specified method is a property getter- Parameters:
method- The method- Returns:
- true if the method is a property getter
-
createConcreteCollection
Creates a concrete collection for the suppied interface- Parameters:
interfaceType- The interface- Returns:
- ArrayList for List, TreeSet for SortedSet, HashSet for Set etc.
-
isSetter
Returns true if the name of the method specified and the number of arguments make it a javabean property setter. The name is assumed to be a valid Java method name, that is not verified.- Parameters:
name- The name of the methodargs- The arguments- Returns:
- true if it is a javabean property setter
-
getExpandoMetaClass
-
isAssignableOrConvertibleFrom
Returns true if the specified clazz parameter is either the same as, or is a superclass or superinterface of, the specified type parameter. Converts primitive types to compatible class automatically.- Parameters:
clazz-type-- Returns:
- true if the class is a taglib
- See Also:
-
getBooleanFromMap
Retrieves a boolean value from a Map for the given key- Parameters:
key- The key that references the boolean valuemap- The map to look in- Returns:
- A boolean value which will be false if the map is null, the map doesn't contain the key or the value is false
-
getBooleanFromMap
Retrieves a boolean value from a Map for the given key- Parameters:
key- The key that references the boolean valuemap- The map to look in- Returns:
- A boolean value which will be false if the map is null, the map doesn't contain the key or the value is false
-
findPropertyNameForValue
Locates the name of a property for the given value on the target object using Groovy's meta APIs. Note that this method uses the reference so the incorrect result could be returned for two properties that refer to the same reference. Use with caution.- Parameters:
target- The targetobj- The property value- Returns:
- The property name or null
-
getSetterName
Retrieves the name of a setter for the specified property name- Parameters:
propertyName- The property name- Returns:
- The setter equivalent
-
isGetter
Deprecated.useisGetter(String, Class, Class[])instead because this method has a defect for "is.." method with Boolean return types.Returns true if the name of the method specified and the number of arguments make it a javabean property getter. The name is assumed to be a valid Java method name, that is not verified.- Parameters:
name- The name of the methodargs- The arguments- Returns:
- true if it is a javabean property getter
-
isGetter
Returns true if the name of the method specified and the number of arguments make it a javabean property getter. The name is assumed to be a valid Java method name, that is not verified.- Parameters:
name- The name of the methodreturnType- The return type of the methodargs- The arguments- Returns:
- true if it is a javabean property getter
-
getPropertyForGetter
Deprecated.UsegetPropertyForGetter(String, Class)instead because this method has a defect for "is.." method with Boolean return types.Returns a property name equivalent for the given getter name or null if it is not a valid getter. If not null or empty the getter name is assumed to be a valid identifier.- Parameters:
getterName- The getter name- Returns:
- The property name equivalent
-
getPropertyForGetter
Returns a property name equivalent for the given getter name and return type or null if it is not a valid getter. If not null or empty the getter name is assumed to be a valid identifier.- Parameters:
getterName- The getter namereturnType- The type the method returns- Returns:
- The property name equivalent
-
getPropertyForGetter
Returns a property name equivalent for the given getter name and return type or null if it is not a valid getter. If not null or empty the getter name is assumed to be a valid identifier.- Parameters:
getterName- The getter namereturnType- The class name the method returns- Returns:
- The property name equivalent
-
getPropertyForSetter
Returns a property name equivalent for the given setter name or null if it is not a valid setter. If not null or empty the setter name is assumed to be a valid identifier.- Parameters:
setterName- The setter name, must be null or empty or a valid identifier name- Returns:
- The property name equivalent
-
isClassBelowPackage
Returns whether the specified class is either within one of the specified packages or within a subpackage of one of the packages- Parameters:
theClass- The classpackageList- The list of packages- Returns:
- true if it is within the list of specified packages
-
instantiateFromConfig
public static Object instantiateFromConfig(groovy.util.ConfigObject config, String configKey, String defaultClassName) throws InstantiationException, IllegalAccessException, ClassNotFoundException, LinkageError, InvocationTargetException, NoSuchMethodException -
instantiateFromFlatConfig
public static Object instantiateFromFlatConfig(Map<String, Object> flatConfig, String configKey, String defaultClassName) throws InstantiationException, IllegalAccessException, ClassNotFoundException, LinkageError, NoSuchMethodException, InvocationTargetException
-
getPropertyForGetter(String, Class)instead because this method has a defect for "is.." method with Boolean return types.