org.pentaho.reporting.libraries.base.util

Class 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
static StringCLASS_CONTEXT
A constant for using the ClassContext as source for the classloader.
static StringTHREAD_CONTEXT
A constant for using the TheadContext as source for the classloader.
Method Summary
static Objectclone(Object object)
Returns a clone of the specified object, if it can be cloned, otherwise throws a CloneNotSupportedException.
static booleanequal(Object o1, Object o2)
Returns true if the two objects are equal OR both null.
static booleanequalArray(Object[] array1, Object[] array2)
Compares two arrays and determines if they are equal.
static ClassLoadergetClassLoader()
Returns the custom classloader or null, if no custom classloader is defined.
static ClassLoadergetClassLoader(Class c)
Returns the classloader, which was responsible for loading the given class.
static StringgetClassLoaderSource()
Returns the internal configuration entry, whether the classloader of the thread context or the context classloader should be used.
static URLgetResource(String name, Class c)
Returns the resource specified by the absolute name.
static InputStreamgetResourceAsStream(String name, Class context)
Returns the inputstream for the resource specified by the absolute name.
static URLgetResourceRelative(String name, Class c)
Returns the resource specified by the relative name.
static InputStreamgetResourceRelativeAsStream(String name, Class context)
Returns the inputstream for the resource specified by the relative name.
static booleanisJDK14()
Checks whether the current JDK is at least JDK 1.4.
static ObjectloadAndInstantiate(String className, Class source)
Tries to create a new instance of the given class.
static ObjectloadAndInstantiate(String className, Class source, Class type)
Tries to create a new instance of the given class.
static voidsetClassLoader(ClassLoader classLoader)
Redefines the custom classloader.
static voidsetClassLoaderSource(String classLoaderSource)
Defines the internal configuration entry, whether the classloader of the thread context or the context classloader should be used.

Field Detail

CLASS_CONTEXT

public static final String CLASS_CONTEXT
A constant for using the ClassContext as source for the classloader.

THREAD_CONTEXT

public static final String THREAD_CONTEXT
A constant for using the TheadContext as source for the classloader.

Method Detail

clone

public static Object clone(Object object)
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.

equal

public static boolean equal(Object o1, Object o2)
Returns true if the two objects are equal OR both null.

Parameters: o1 object 1 (null permitted). o2 object 2 (null permitted).

Returns: true or false.

equalArray

public static boolean equalArray(Object[] array1, Object[] array2)
Compares two arrays and determines if they are equal. This method allows to pass null 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.

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.

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.

getResource

public static URL getResource(String name, Class c)
Returns the resource specified by the absolute name.

Parameters: name the name of the resource c 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 resource context 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 class c 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 class context the source class

Returns: the url of the resource or null, if not found.

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.

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 Object loadAndInstantiate(String className, Class source, Class 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.

setClassLoader

public static void setClassLoader(ClassLoader classLoader)
Redefines the custom classloader.

Parameters: classLoader the new classloader or null to use the default.

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.