Package org.apache.camel.util
Class ObjectHelper
java.lang.Object
org.apache.camel.util.ObjectHelper
A number of useful helper methods for working with Objects
-
Method Summary
Modifier and TypeMethodDescriptionstatic void
addListByIndex
(List<Object> list, int idx, Object value) Adds the value to the list at the given indexstatic int
arrayLength
(Object[] pojo) Used by camel-beanTurns the input array to a list of objects.static String
Turns the given object arrays into a meaningful stringstatic <T> T
Converts the given value to the required type or throw a meaningful exceptionstatic String
classCanonicalName
(Object value) Returns the canonical type name of the given valuestatic String
Returns the type name of the given valuestatic Class<?>
convertPrimitiveTypeToWrapperType
(Class<?> type) Converts primitive types such as int to its wrapper type likeInteger
static Class<?>
convertWrapperTypeToPrimitiveType
(Class<?> type) Converts wrapper type likeInteger
to its primitive type, i.e.createExceptionIterable
(Throwable exception) Creates an Iterable to walk the exception from the bottom up (the last caused by going upwards to the root exception).createExceptionIterator
(Throwable exception) Creates an Iterator to walk the exception from the bottom up (the last caused by going upwards to the root exception).static boolean
A helper method for comparing objects for equality while handling nullsstatic boolean
A helper method for comparing objects for equality while handling nullsstatic boolean
equalByteArray
(byte[] a, byte[] b) A helper method for comparing byte arrays for equality while handling nullsstatic boolean
equalIgnoreCase
(Object a, Object b) A helper method for comparing objects for equality while handling case insensitivitystatic boolean
evaluateValuePredicate
(Object value) Evaluate the value as a predicate which attempts to convert the value to a boolean otherwise true is returned if the value is not nullfindMethodsWithAnnotation
(Class<?> type, Class<? extends Annotation> annotationType) Returns a list of methods which are annotated with the given annotationfindMethodsWithAnnotation
(Class<?> type, Class<? extends Annotation> annotationType, boolean checkMetaAnnotations) Returns a list of methods which are annotated with the given annotationfirstNotNull
(Object... values) Returns the first non null object null.static <A extends Annotation>
AgetAnnotation
(Object instance, Class<A> type) Gets the annotation from the given instance.static String
Helper method to return the default character set namestatic <T> T
getException
(Class<T> type, Throwable exception) Retrieves the given exception type from the exception.static String
getIdentityHashCode
(Object object) static String
getPropertyName
(Method method) Returns the Java Bean property name of the given method, if it is a setterstatic boolean
getSystemProperty
(String name, Boolean defaultValue) A helper method to access a boolean system property, catching any security exceptionsstatic String
getSystemProperty
(String name, String defaultValue) A helper method to access a system property, catching any security exceptionsstatic boolean
hasAnnotation
(Annotation[] annotations, Class<?> type) Returns true if the given collection of annotations matches the given typestatic boolean
hasAnnotation
(AnnotatedElement elem, Class<? extends Annotation> annotationType, boolean checkMetaAnnotations) Checks if a Class or Method are annotated with the given annotationstatic boolean
hasDefaultNoArgConstructor
(Class<?> type) Does the given class have a default no-arg constructor (public or inherited).static boolean
hasDefaultPublicNoArgConstructor
(Class<?> type) Does the given class have a default public no-arg constructor.static <T> void
ifNotEmpty
(T value, Consumer<T> consumer) Tests whether the value is not null, an empty string, an empty collection or a mapstatic boolean
isAssignableFrom
(Class<?> a, Class<?> b) Returns true if a class is assignable from another class like theClass.isAssignableFrom(Class)
method but which also includes coercion between primitive types to deal with Java 5 primitive type wrappingstatic boolean
Tests whether the value is null or an empty string or an empty collection/map.static boolean
isEmpty
(Collection<?> value) Tests whether the value is null or an an empty collectionstatic boolean
Tests whether the value is null or an an empty mapstatic <T> boolean
isEmpty
(T value) Tests whether the value is null, an empty string or an empty collection/map.static boolean
isEqualToAny
(Object object, Object... values) Returns true if the given object is equal to any of the expected valuestatic boolean
Is the given value a numeric NaN typestatic boolean
isNotEmpty
(String value) Tests whether the value is not null or an empty stringstatic boolean
isNotEmpty
(Collection<?> value) Tests whether the value is null or an an empty collectionstatic boolean
isNotEmpty
(Map<?, ?> value) Tests whether the value is null or an an empty mapstatic <T> boolean
isNotEmpty
(T value) Tests whether the value is not null, an empty string or an empty collection/map.static boolean
isOverridingMethod
(Class<?> inheritingClass, Method source, Method target, boolean exact) Tests whether the target method overrides the source method from the inheriting class.static boolean
isOverridingMethod
(Method source, Method target) Tests whether the target method overrides the source method.static boolean
isOverridingMethod
(Method source, Method target, boolean exact) Tests whether the target method overrides the source method.static boolean
isPrimitiveArrayType
(Class<?> clazz) Returns if the givenclazz
type is a Java primitive array type.static boolean
isSubclass
(Class<?> clazz, Class<?> subClass) Checks if the given class has a subclass (extends or implements)static Class<?>
Attempts to load the given class name using the thread context class loader or the class loader used to load this classstatic Class<?>
loadClass
(String name, ClassLoader loader) Attempts to load the given class name using the thread context class loader or the given class loaderstatic Class<?>
loadClass
(String name, ClassLoader loader, boolean needToWarn) Attempts to load the given class name using the thread context class loader or the given class loaderstatic InputStream
loadResourceAsStream
(String name) Attempts to load the given resource as a stream using the thread context class loader or the class loader used to load this classstatic InputStream
loadResourceAsStream
(String name, ClassLoader loader) Attempts to load the given resource as a stream using first the given class loader, then the thread context class loader and finally the class loader used to load this classstatic URL
loadResourceAsURL
(String name) Attempts to load the given resource as a stream using the thread context class loader or the class loader used to load this classstatic URL
loadResourceAsURL
(String name, ClassLoader loader) Attempts to load the given resource as a stream using the thread context class loader or the class loader used to load this classstatic Enumeration<URL>
loadResourcesAsURL
(String uri) Attempts to load the given resources from the given package name using the thread context class loader or the class loader used to load this classstatic Enumeration<URL>
loadResourcesAsURL
(String uri, ClassLoader loader) Attempts to load the given resources from the given package name using the thread context class loader or the class loader used to load this classstatic Class<?>
loadSimpleType
(String name) Load a simple typestatic String
lookupConstantFieldValue
(Class<?> clazz, String name) Lookup the constant field on the given class with the given namestatic boolean
Returns the predicate matching boolean on aList
result set where if the first element is a boolean its value is used otherwise this method returns true if the collection is not emptystatic String
Returns the type name of the given type or null if the type variable is nullstatic <T> T
Asserts whether the value is not nullstatic <T> T
Asserts whether the value is not nullstatic String
notNullOrEmpty
(String value, String name) Asserts that the givenvalue
is neithernull
nor an emptyString.static <T> T
supplyIfEmpty
(T value, Supplier<T> supplier) Tests whether the value is null, an empty string, an empty collection or a mapstatic Boolean
static Object
Returns the type of the given object or null if the value is null
-
Method Details
-
equal
A helper method for comparing objects for equality while handling nulls -
equalIgnoreCase
A helper method for comparing objects for equality while handling case insensitivity -
equal
A helper method for comparing objects for equality while handling nulls -
equalByteArray
A helper method for comparing byte arrays for equality while handling nulls -
isEqualToAny
Returns true if the given object is equal to any of the expected value -
toBoolean
-
notNull
Asserts whether the value is not null- Parameters:
value
- the value to testname
- the key that resolved the value- Returns:
- the passed
value
as is - Throws:
IllegalArgumentException
- is thrown if assertion fails
-
notNullOrEmpty
Asserts that the givenvalue
is neithernull
nor an emptyString.- Parameters:
value
- the value to testname
- the key that resolved the value- Returns:
- the passed
value
as is - Throws:
IllegalArgumentException
- is thrown if assertion fails
-
notNull
Asserts whether the value is not null- Parameters:
value
- the value to teston
- additional description to indicate where this problem occurred (appended as toString())name
- the key that resolved the value- Returns:
- the passed
value
as is - Throws:
IllegalArgumentException
- is thrown if assertion fails
-
isEmpty
Tests whether the value is null or an empty string or an empty collection/map.- Parameters:
value
- the value, if its a String it will be tested for text length as well- Returns:
- true if empty
-
isEmpty
Tests whether the value is null or an an empty collection- Parameters:
value
- the value to test- Returns:
- true if empty
-
isEmpty
Tests whether the value is null or an an empty map- Parameters:
value
- the value to test- Returns:
- true if empty
-
isEmpty
Tests whether the value is null, an empty string or an empty collection/map.- Parameters:
value
- the value, if its a String it will be tested for text length as well- Returns:
- true if empty
-
isNotEmpty
Tests whether the value is not null, an empty string or an empty collection/map.- Parameters:
value
- the value, if its a String it will be tested for text length as well- Returns:
- true if not empty
-
isNotEmpty
Tests whether the value is not null or an empty string- Parameters:
value
- the value, if its a String it will be tested for text length as well- Returns:
- true if not empty
-
isNotEmpty
Tests whether the value is null or an an empty collection- Parameters:
value
- the value to test- Returns:
- true if empty
-
isNotEmpty
Tests whether the value is null or an an empty map- Parameters:
value
- the value to test- Returns:
- true if empty
-
firstNotNull
Returns the first non null object null.- Parameters:
values
- the values- Returns:
- an Optional
-
supplyIfEmpty
Tests whether the value is null, an empty string, an empty collection or a map- Parameters:
value
- the value, if its a String it will be tested for text length as wellsupplier
- the supplier, the supplier to be used to get a value if value is null
-
ifNotEmpty
Tests whether the value is not null, an empty string, an empty collection or a map- Parameters:
value
- the value, if its a String it will be tested for text length as wellconsumer
- the consumer, the operation to be executed against value if not empty
-
matches
Returns the predicate matching boolean on aList
result set where if the first element is a boolean its value is used otherwise this method returns true if the collection is not empty- Returns:
- true if the first element is a boolean and its value is true or if the list is non empty
-
getSystemProperty
A helper method to access a system property, catching any security exceptions- Parameters:
name
- the name of the system property requireddefaultValue
- the default value to use if the property is not available or a security exception prevents access- Returns:
- the system property value or the default value if the property is not available or security does not allow its access
-
getSystemProperty
A helper method to access a boolean system property, catching any security exceptions- Parameters:
name
- the name of the system property requireddefaultValue
- the default value to use if the property is not available or a security exception prevents access- Returns:
- the boolean representation of the system property value or the default value if the property is not available or security does not allow its access
-
name
Returns the type name of the given type or null if the type variable is null -
className
Returns the type name of the given value -
classCanonicalName
Returns the canonical type name of the given value -
loadClass
Attempts to load the given class name using the thread context class loader or the class loader used to load this class- Parameters:
name
- the name of the class to load- Returns:
- the class or null if it could not be loaded
-
loadClass
Attempts to load the given class name using the thread context class loader or the given class loader- Parameters:
name
- the name of the class to loadloader
- the class loader to use after the thread context class loader- Returns:
- the class or null if it could not be loaded
-
loadClass
Attempts to load the given class name using the thread context class loader or the given class loader- Parameters:
name
- the name of the class to loadloader
- the class loader to use after the thread context class loaderneedToWarn
- when true logs a warning when a class with the given name could not be loaded- Returns:
- the class or null if it could not be loaded
-
loadSimpleType
Load a simple type- Parameters:
name
- the name of the class to load- Returns:
- the class or null if it could not be loaded
-
loadResourceAsStream
Attempts to load the given resource as a stream using the thread context class loader or the class loader used to load this class- Parameters:
name
- the name of the resource to load- Returns:
- the stream or null if it could not be loaded
-
loadResourceAsStream
Attempts to load the given resource as a stream using first the given class loader, then the thread context class loader and finally the class loader used to load this class- Parameters:
name
- the name of the resource to loadloader
- optional classloader to attempt first- Returns:
- the stream or null if it could not be loaded
-
loadResourceAsURL
Attempts to load the given resource as a stream using the thread context class loader or the class loader used to load this class- Parameters:
name
- the name of the resource to load- Returns:
- the stream or null if it could not be loaded
-
loadResourceAsURL
Attempts to load the given resource as a stream using the thread context class loader or the class loader used to load this class- Parameters:
name
- the name of the resource to loadloader
- optional classloader to attempt first- Returns:
- the stream or null if it could not be loaded
-
loadResourcesAsURL
Attempts to load the given resources from the given package name using the thread context class loader or the class loader used to load this class- Parameters:
uri
- the name of the package to load its resources- Returns:
- the URLs for the resources or null if it could not be loaded
-
loadResourcesAsURL
Attempts to load the given resources from the given package name using the thread context class loader or the class loader used to load this class- Parameters:
uri
- the name of the package to load its resourcesloader
- optional classloader to attempt first- Returns:
- the URLs for the resources or null if it could not be loaded
-
isOverridingMethod
Tests whether the target method overrides the source method. Tests whether they have the same name, return type, and parameter list.- Parameters:
source
- the source methodtarget
- the target method- Returns:
- true if it override, false otherwise
-
isOverridingMethod
Tests whether the target method overrides the source method. Tests whether they have the same name, return type, and parameter list.- Parameters:
source
- the source methodtarget
- the target methodexact
- true if the override must be exact same types, false if the types should be assignable- Returns:
- true if it override, false otherwise
-
isOverridingMethod
public static boolean isOverridingMethod(Class<?> inheritingClass, Method source, Method target, boolean exact) Tests whether the target method overrides the source method from the inheriting class. Tests whether they have the same name, return type, and parameter list.- Parameters:
inheritingClass
- the class inheriting the target method overriding the source methodsource
- the source methodtarget
- the target methodexact
- true if the override must be exact same types, false if the types should be assignable- Returns:
- true if it override, false otherwise
-
findMethodsWithAnnotation
public static List<Method> findMethodsWithAnnotation(Class<?> type, Class<? extends Annotation> annotationType) Returns a list of methods which are annotated with the given annotation- Parameters:
type
- the type to reflect onannotationType
- the annotation type- Returns:
- a list of the methods found
-
findMethodsWithAnnotation
public static List<Method> findMethodsWithAnnotation(Class<?> type, Class<? extends Annotation> annotationType, boolean checkMetaAnnotations) Returns a list of methods which are annotated with the given annotation- Parameters:
type
- the type to reflect onannotationType
- the annotation typecheckMetaAnnotations
- check for meta annotations- Returns:
- a list of the methods found
-
hasAnnotation
public static boolean hasAnnotation(AnnotatedElement elem, Class<? extends Annotation> annotationType, boolean checkMetaAnnotations) Checks if a Class or Method are annotated with the given annotation- Parameters:
elem
- the Class or Method to reflect onannotationType
- the annotation typecheckMetaAnnotations
- check for meta annotations- Returns:
- true if annotations is present
-
asString
Turns the given object arrays into a meaningful string- Parameters:
objects
- an array of objects or null- Returns:
- a meaningful string
-
isAssignableFrom
Returns true if a class is assignable from another class like theClass.isAssignableFrom(Class)
method but which also includes coercion between primitive types to deal with Java 5 primitive type wrapping -
isPrimitiveArrayType
Returns if the givenclazz
type is a Java primitive array type.- Parameters:
clazz
- the Java type to be checked- Returns:
true
if the given type is a Java primitive array type
-
isSubclass
Checks if the given class has a subclass (extends or implements)- Parameters:
clazz
- the classsubClass
- the subclass (class or interface)
-
arrayLength
Used by camel-bean -
convertPrimitiveTypeToWrapperType
Converts primitive types such as int to its wrapper type likeInteger
-
convertWrapperTypeToPrimitiveType
Converts wrapper type likeInteger
to its primitive type, i.e. int. -
getDefaultCharacterSet
Helper method to return the default character set name -
getPropertyName
Returns the Java Bean property name of the given method, if it is a setter -
hasAnnotation
Returns true if the given collection of annotations matches the given type -
getAnnotation
Gets the annotation from the given instance.- Parameters:
instance
- the instancetype
- the annotation- Returns:
- the annotation, or null if the instance does not have the given annotation
-
cast
Converts the given value to the required type or throw a meaningful exception -
hasDefaultPublicNoArgConstructor
Does the given class have a default public no-arg constructor. -
hasDefaultNoArgConstructor
Does the given class have a default no-arg constructor (public or inherited). -
type
Returns the type of the given object or null if the value is null -
evaluateValuePredicate
Evaluate the value as a predicate which attempts to convert the value to a boolean otherwise true is returned if the value is not null -
createExceptionIterable
Creates an Iterable to walk the exception from the bottom up (the last caused by going upwards to the root exception).- Parameters:
exception
- the exception- Returns:
- the Iterable
- See Also:
-
createExceptionIterator
Creates an Iterator to walk the exception from the bottom up (the last caused by going upwards to the root exception).- Parameters:
exception
- the exception- Returns:
- the Iterator
- See Also:
-
getException
Retrieves the given exception type from the exception. Is used to get the caused exception that typically have been wrapped in some sort of Camel wrapper exception The strategy is to look in the exception hierarchy to find the first given cause that matches the type. Will start from the bottom (the real cause) and walk upwards.- Parameters:
type
- the exception type wanted to retrieveexception
- the caused exception- Returns:
- the exception found (or null if not found in the exception hierarchy)
-
getIdentityHashCode
-
lookupConstantFieldValue
Lookup the constant field on the given class with the given name- Parameters:
clazz
- the classname
- the name of the field to lookup- Returns:
- the value of the constant field, or null if not found
-
isNaN
Is the given value a numeric NaN type- Parameters:
value
- the value- Returns:
- true if its a
Float.NaN
orDouble.NaN
.
-
asList
Turns the input array to a list of objects.- Parameters:
objects
- an array of objects or null- Returns:
- an object list
-
addListByIndex
Adds the value to the list at the given index
-