Example usage for org.apache.commons.logging LogConfigurationException LogConfigurationException

List of usage examples for org.apache.commons.logging LogConfigurationException LogConfigurationException

Introduction

In this page you can find the example usage for org.apache.commons.logging LogConfigurationException LogConfigurationException.

Prototype

public LogConfigurationException(String message, Throwable cause) 

Source Link

Document

Construct a new exception with the specified detail message and cause.

Usage

From source file:corina.util.SimpleLog.java

/**
 * Return the thread context class loader if available.
 * Otherwise return null.//w w  w . java 2  s  .  c o m
 * 
 * The thread context class loader is available for JDK 1.2
 * or later, if certain security conditions are met.
 *
 * @exception LogConfigurationException if a suitable class loader
 * cannot be identified.
 */
private static ClassLoader getContextClassLoader() {
    ClassLoader classLoader = null;

    if (classLoader == null) {
        try {
            // Are we running on a JDK 1.2 or later system?
            Method method = Thread.class.getMethod("getContextClassLoader", null);

            // Get the thread context class loader (if there is one)
            try {
                classLoader = (ClassLoader) method.invoke(Thread.currentThread(), null);
            } catch (IllegalAccessException e) {
                ; // ignore
            } catch (InvocationTargetException e) {
                /**
                 * InvocationTargetException is thrown by 'invoke' when
                 * the method being invoked (getContextClassLoader) throws
                 * an exception.
                 * 
                 * getContextClassLoader() throws SecurityException when
                 * the context class loader isn't an ancestor of the
                 * calling class's class loader, or if security
                 * permissions are restricted.
                 * 
                 * In the first case (not related), we want to ignore and
                 * keep going.  We cannot help but also ignore the second
                 * with the logic below, but other calls elsewhere (to
                 * obtain a class loader) will trigger this exception where
                 * we can make a distinction.
                 */
                if (e.getTargetException() instanceof SecurityException) {
                    ; // ignore
                } else {
                    // Capture 'e.getTargetException()' exception for details
                    // alternate: log 'e.getTargetException()', and pass back 'e'.
                    throw new LogConfigurationException("Unexpected InvocationTargetException",
                            e.getTargetException());
                }
            }
        } catch (NoSuchMethodException e) {
            // Assume we are running on JDK 1.1
            ; // ignore
        }
    }

    if (classLoader == null) {
        classLoader = SimpleLog.class.getClassLoader();
    }

    // Return the selected class loader
    return classLoader;
}