Class ObjectUtilities
- java.lang.Object
-
- org.pentaho.reporting.libraries.base.util.ObjectUtilities
-
public final class ObjectUtilities extends Object
A collection of useful static utility methods for handling classes and object instantiation.- Author:
- Thomas Morgner
-
-
Field Summary
Fields Modifier and Type Field Description static String
CLASS_CONTEXT
A constant for using the ClassContext as source for the classloader.static String
THREAD_CONTEXT
A constant for using the TheadContext as source for the classloader.
-
Method Summary
All Methods Static Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static Object
clone(Object object)
Returns a clone of the specified object, if it can be cloned, otherwise throws a CloneNotSupportedException.static int
compareVersionArrays(Integer[] a1, Integer[] a2)
Compares version numbers.static boolean
equal(Object o1, Object o2)
Returnstrue
if the two objects are equal OR bothnull
.static boolean
equalArray(Object[] array1, Object[] array2)
Compares two arrays and determines if they are equal.static boolean
equals(File file1, File file2)
Performs a comparison on two file objects to determine if they refer to the same file.static ClassLoader
getClassLoader()
Returns the custom classloader or null, if no custom classloader is defined.static ClassLoader
getClassLoader(Class c)
Returns the classloader, which was responsible for loading the given class.static String
getClassLoaderSource()
Returns the internal configuration entry, whether the classloader of the thread context or the context classloader should be used.static URL
getResource(String name, Class c)
Returns the resource specified by the absolute name.static InputStream
getResourceAsStream(String name, Class context)
Returns the inputstream for the resource specified by the absolute name.static URL
getResourceRelative(String name, Class c)
Returns the resource specified by the relative name.static InputStream
getResourceRelativeAsStream(String name, Class context)
Returns the inputstream for the resource specified by the relative name.static int
hashCode(Object[] array1)
static <T> T
instantiateSafe(Class clazz, Class<T> type)
static boolean
isJDK14()
Checks whether the current JDK is at least JDK 1.4.static Object
loadAndInstantiate(String className, Class source)
Deprecated.This class is not typesafe and instantiates the specified object without any additional checks.static <T> T
loadAndInstantiate(String className, Class source, Class<T> type)
Tries to create a new instance of the given class.static <T> Class<? extends T>
loadAndValidate(String className, Class source, Class<T> type)
static Integer[]
parseVersions(String version)
Parses a version string into numbers.static void
setClassLoader(ClassLoader classLoader)
Redefines the custom classloader.static void
setClassLoaderSource(String classLoaderSource)
Defines the internal configuration entry, whether the classloader of the thread context or the context classloader should be used.
-
-
-
Field Detail
-
THREAD_CONTEXT
public static final String THREAD_CONTEXT
A constant for using the TheadContext as source for the classloader.- See Also:
- Constant Field Values
-
CLASS_CONTEXT
public static final String CLASS_CONTEXT
A constant for using the ClassContext as source for the classloader.- See Also:
- Constant Field Values
-
-
Method Detail
-
getClassLoaderSource
public static String getClassLoaderSource()
Returns the internal configuration entry, whether the classloader of the thread context or the context classloader should be used.- Returns:
- the classloader source, either THREAD_CONTEXT or CLASS_CONTEXT.
-
setClassLoaderSource
public static void setClassLoaderSource(String classLoaderSource)
Defines the internal configuration entry, whether the classloader of the thread context or the context classloader should be used. This setting can only be defined using the API, there is no safe way to put this into an external configuration file.- Parameters:
classLoaderSource
- the classloader source, either THREAD_CONTEXT or CLASS_CONTEXT.
-
equal
public static boolean equal(Object o1, Object o2)
Returnstrue
if the two objects are equal OR bothnull
.- Parameters:
o1
- object 1 (null
permitted).o2
- object 2 (null
permitted).- Returns:
true
orfalse
.
-
equals
public static boolean equals(File file1, File file2)
Performs a comparison on two file objects to determine if they refer to the same file. TheFile.equals()
method requires that the files refer to the same file in the same way (relative vs. absolute).- Parameters:
file1
- the first file (null
permitted).file2
- the second file (null
permitted).- Returns:
true
if the files refer to the same file,false
otherwise
-
clone
public static Object clone(Object object) throws CloneNotSupportedException
Returns a clone of the specified object, if it can be cloned, otherwise throws a CloneNotSupportedException.- Parameters:
object
- the object to clone (null
not permitted).- Returns:
- A clone of the specified object.
- Throws:
CloneNotSupportedException
- if the object cannot be cloned.
-
setClassLoader
public static void setClassLoader(ClassLoader classLoader)
Redefines the custom classloader.- Parameters:
classLoader
- the new classloader or null to use the default.
-
getClassLoader
public static ClassLoader getClassLoader()
Returns the custom classloader or null, if no custom classloader is defined.- Returns:
- the custom classloader or null to use the default.
-
getClassLoader
public static ClassLoader getClassLoader(Class c)
Returns the classloader, which was responsible for loading the given class.- Parameters:
c
- the classloader, either an application class loader or the boot loader.- Returns:
- the classloader, never null.
- Throws:
SecurityException
- if the SecurityManager does not allow to grab the context classloader.
-
getResource
public static URL getResource(String name, Class c)
Returns the resource specified by the absolute name.- Parameters:
name
- the name of the resourcec
- the source class- Returns:
- the url of the resource or null, if not found.
-
getResourceRelative
public static URL getResourceRelative(String name, Class c)
Returns the resource specified by the relative name.- Parameters:
name
- the name of the resource relative to the given classc
- the source class- Returns:
- the url of the resource or null, if not found.
-
getResourceAsStream
public static InputStream getResourceAsStream(String name, Class context)
Returns the inputstream for the resource specified by the absolute name.- Parameters:
name
- the name of the resourcecontext
- the source class- Returns:
- the url of the resource or null, if not found.
-
getResourceRelativeAsStream
public static InputStream getResourceRelativeAsStream(String name, Class context)
Returns the inputstream for the resource specified by the relative name.- Parameters:
name
- the name of the resource relative to the given classcontext
- the source class- Returns:
- the url of the resource or null, if not found.
-
loadAndInstantiate
public static Object loadAndInstantiate(String className, Class source)
Deprecated.This class is not typesafe and instantiates the specified object without any additional checks.Tries to create a new instance of the given class. This is a short cut for the common bean instantiation code.- Parameters:
className
- the class name as String, never null.source
- the source class, from where to get the classloader.- Returns:
- the instantiated object or null, if an error occured.
-
loadAndInstantiate
public static <T> T loadAndInstantiate(String className, Class source, Class<T> type)
Tries to create a new instance of the given class. This is a short cut for the common bean instantiation code. This method is a type-safe method and will not instantiate the class unless it is an instance of the given type.- Parameters:
className
- the class name as String, never null.source
- the source class, from where to get the classloader.type
- the expected type of the object that is being instantiated.- Returns:
- the instantiated object, which is guaranteed to be of the given type, or null, if an error occured.
-
loadAndValidate
public static <T> Class<? extends T> loadAndValidate(String className, Class source, Class<T> type)
-
isJDK14
public static boolean isJDK14()
Checks whether the current JDK is at least JDK 1.4.- Returns:
- true, if the JDK has been recognized as JDK 1.4, false otherwise.
-
compareVersionArrays
public static int compareVersionArrays(Integer[] a1, Integer[] a2)
Compares version numbers.- Parameters:
a1
- the first array.a2
- the second array.- Returns:
- -1 if a1 is less than a2, 0 if a1 and a2 are equal, and +1 otherwise.
-
parseVersions
public static Integer[] parseVersions(String version)
Parses a version string into numbers.- Parameters:
version
- the version.- Returns:
- the parsed version array.
-
equalArray
public static boolean equalArray(Object[] array1, Object[] array2)
Compares two arrays and determines if they are equal. This method allows to passnull
null references for any of the arrays.- Parameters:
array1
- the first array to compare.array2
- the second array to compare.- Returns:
- true, if both arrays are equal or both arrays are null, false otherwise.
-
hashCode
public static int hashCode(Object[] array1)
-
-