org.crosswire.common.util

## Class ClassUtil

- java.lang.Object
- - org.crosswire.common.util.ClassUtil

-     public final class ClassUtil
      extends Object

  Various Java Class Utilities.
  Author:
    Joe Walker
  See Also:
    `The GNU Lesser General Public License for details.`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private static String` | `EXTENSION_CLASS`
    `private static String` | `EXTENSION_JAR`
    `private static String` | `EXTENSION_ZIP`
    `private static char` | `INNER_CLASS_SEPARATOR_CHAR` The inner class separator character: `$`.
    `private static org.slf4j.Logger` | `LOGGER` The log stream
    `private static char` | `PACKAGE_SEPARATOR_CHAR` The package separator character: `.`.

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `private` | `ClassUtil()` Prevent instantiation

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `static String` | `findClasspathEntry(String className)` This function find the first matching filename for a Java class file from the classpath, if none is found it returns null.
    `static String` | `findClasspathEntry(String className, String classPath)` This function finds the first matching filename for a Java class file from the classpath, if none is found it returns null.
    `static Class<?>` | `forName(String className)` Gets the Class for the className in a way that works well for extensions.
    `static String` | `getShortClassName(Class<?> cls)` Gets the class name minus the package name from a `Class`.
    `static String` | `getShortClassName(Object object, String valueIfNull)` Gets the class name minus the package name for an `Object`.
    `static String` | `getShortClassName(String className)` Gets the class name minus the package name from a String.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### PACKAGE_SEPARATOR_CHAR

          private static final char PACKAGE_SEPARATOR_CHAR

      The package separator character: `.`.
      See Also:
        Constant Field Values

    - #### INNER_CLASS_SEPARATOR_CHAR

          private static final char INNER_CLASS_SEPARATOR_CHAR

      The inner class separator character: `$`.
      See Also:
        Constant Field Values

    - #### EXTENSION_CLASS

          private static final String EXTENSION_CLASS

      See Also:
        Constant Field Values

    - #### EXTENSION_JAR

          private static final String EXTENSION_JAR

      See Also:
        Constant Field Values

    - #### EXTENSION_ZIP

          private static final String EXTENSION_ZIP

      See Also:
        Constant Field Values

    - #### LOGGER

          private static final org.slf4j.Logger LOGGER

      The log stream

  - ### Constructor Detail

    - #### ClassUtil

          private ClassUtil()

      Prevent instantiation

  - ### Method Detail

    - #### forName

          public static Class<?> forName(String className)
                                  throws ClassNotFoundException

      Gets the Class for the className in a way that works well for extensions. See: http://www.javageeks.com/Papers/ClassForName/ClassForName.pdf
      Parameters:
        `className` - the class to get
      Returns:
        the found Class
      Throws:
        `ClassNotFoundException` - if the class is not found

    - #### findClasspathEntry

          public static String findClasspathEntry(String className,
                                  String classPath)

      This function finds the first matching filename for a Java class file from the classpath, if none is found it returns null.
      Parameters:
        `className` - the class to get
        `classPath` - the lookup class path
      Returns:
        the filename for the class

    - #### findClasspathEntry

          public static String findClasspathEntry(String className)

      This function find the first matching filename for a Java class file from the classpath, if none is found it returns null.
      Parameters:
        `className` - the class to get
      Returns:
        the filename for the class

    - #### getShortClassName

          public static String getShortClassName(Object object,
                                 String valueIfNull)

      Gets the class name minus the package name for an `Object`.
      Parameters:
        `object` - the class to get the short name for, may be null
        `valueIfNull` - the value to return if null
      Returns:
        the class name of the object without the package name, or the null value

    - #### getShortClassName

          public static String getShortClassName(Class<?> cls)

      Gets the class name minus the package name from a `Class`.
      Parameters:
        `cls` - the class to get the short name for, must not be `null`
      Returns:
        the class name without the package name
      Throws:
        `IllegalArgumentException` - if the class is `null`

    - #### getShortClassName

          public static String getShortClassName(String className)

      Gets the class name minus the package name from a String.

      The string passed in is assumed to be a class name - it is not checked.

      Parameters:
        `className` - the className to get the short name for, must not be empty or `null`
      Returns:
        the class name of the class without the package name
      Throws:
        `IllegalArgumentException` - if the className is empty