Simple rearrangement of code only; no functionality change (though the diffs don't show that clearly).
Turned a complicated anonymous class declaration into a simple anonymous class that calls a method on LogFactory containing all the code previously within the anonymous class declaration. git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/logging/trunk@170355 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@@ -632,67 +632,7 @@ public abstract class LogFactory {
|
|||||||
Object result = AccessController.doPrivileged(
|
Object result = AccessController.doPrivileged(
|
||||||
new PrivilegedAction() {
|
new PrivilegedAction() {
|
||||||
public Object run() {
|
public Object run() {
|
||||||
// This will be used to diagnose bad configurations
|
return createFactory(factoryClass, classLoader);
|
||||||
// and allow a useful message to be sent to the user
|
|
||||||
Class logFactoryClass = null;
|
|
||||||
try {
|
|
||||||
if (classLoader != null) {
|
|
||||||
try {
|
|
||||||
// First the given class loader param (thread class loader)
|
|
||||||
|
|
||||||
// Warning: must typecast here & allow exception
|
|
||||||
// to be generated/caught & recast properly.
|
|
||||||
logFactoryClass = classLoader.loadClass(factoryClass);
|
|
||||||
return (LogFactory) logFactoryClass.newInstance();
|
|
||||||
|
|
||||||
} catch (ClassNotFoundException ex) {
|
|
||||||
if (classLoader == LogFactory.class.getClassLoader()) {
|
|
||||||
// Nothing more to try, onwards.
|
|
||||||
throw ex;
|
|
||||||
}
|
|
||||||
// ignore exception, continue
|
|
||||||
} catch (NoClassDefFoundError e) {
|
|
||||||
if (classLoader == LogFactory.class.getClassLoader()) {
|
|
||||||
// Nothing more to try, onwards.
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch(ClassCastException e){
|
|
||||||
|
|
||||||
if (classLoader == LogFactory.class.getClassLoader()) {
|
|
||||||
// Nothing more to try, onwards (bug in loader implementation).
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Ignore exception, continue
|
|
||||||
}
|
|
||||||
|
|
||||||
/* At this point, either classLoader == null, OR
|
|
||||||
* classLoader was unable to load factoryClass.
|
|
||||||
* Try the class loader that loaded this class:
|
|
||||||
* LogFactory.getClassLoader().
|
|
||||||
*
|
|
||||||
* Notes:
|
|
||||||
* a) LogFactory.class.getClassLoader() may return 'null'
|
|
||||||
* if LogFactory is loaded by the bootstrap classloader.
|
|
||||||
* b) The Java endorsed library mechanism is instead
|
|
||||||
* Class.forName(factoryClass);
|
|
||||||
*/
|
|
||||||
// Warning: must typecast here & allow exception
|
|
||||||
// to be generated/caught & recast properly.
|
|
||||||
logFactoryClass = Class.forName(factoryClass);
|
|
||||||
return (LogFactory) logFactoryClass.newInstance();
|
|
||||||
} catch (Exception e) {
|
|
||||||
// Check to see if we've got a bad configuration
|
|
||||||
if (logFactoryClass != null
|
|
||||||
&& !LogFactory.class.isAssignableFrom(logFactoryClass)) {
|
|
||||||
return new LogConfigurationException(
|
|
||||||
"The chosen LogFactory implementation does not extend LogFactory."
|
|
||||||
+ " Please check your configuration.",
|
|
||||||
e);
|
|
||||||
}
|
|
||||||
return new LogConfigurationException(e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -702,6 +642,79 @@ public abstract class LogFactory {
|
|||||||
return (LogFactory)result;
|
return (LogFactory)result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implements the operations described in the javadoc for newFactory.
|
||||||
|
*
|
||||||
|
* @param factoryClass
|
||||||
|
* @param classLoader
|
||||||
|
*
|
||||||
|
* @returns either a LogFactory object or a LogConfigurationException object.
|
||||||
|
*/
|
||||||
|
protected static Object createFactory(String factoryClass, ClassLoader classLoader) {
|
||||||
|
|
||||||
|
// This will be used to diagnose bad configurations
|
||||||
|
// and allow a useful message to be sent to the user
|
||||||
|
Class logFactoryClass = null;
|
||||||
|
try {
|
||||||
|
if (classLoader != null) {
|
||||||
|
try {
|
||||||
|
// First the given class loader param (thread class loader)
|
||||||
|
|
||||||
|
// Warning: must typecast here & allow exception
|
||||||
|
// to be generated/caught & recast properly.
|
||||||
|
logFactoryClass = classLoader.loadClass(factoryClass);
|
||||||
|
return (LogFactory) logFactoryClass.newInstance();
|
||||||
|
|
||||||
|
} catch (ClassNotFoundException ex) {
|
||||||
|
if (classLoader == LogFactory.class.getClassLoader()) {
|
||||||
|
// Nothing more to try, onwards.
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
|
// ignore exception, continue
|
||||||
|
} catch (NoClassDefFoundError e) {
|
||||||
|
if (classLoader == LogFactory.class.getClassLoader()) {
|
||||||
|
// Nothing more to try, onwards.
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch(ClassCastException e){
|
||||||
|
|
||||||
|
if (classLoader == LogFactory.class.getClassLoader()) {
|
||||||
|
// Nothing more to try, onwards (bug in loader implementation).
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Ignore exception, continue
|
||||||
|
}
|
||||||
|
|
||||||
|
/* At this point, either classLoader == null, OR
|
||||||
|
* classLoader was unable to load factoryClass.
|
||||||
|
* Try the class loader that loaded this class:
|
||||||
|
* LogFactory.getClassLoader().
|
||||||
|
*
|
||||||
|
* Notes:
|
||||||
|
* a) LogFactory.class.getClassLoader() may return 'null'
|
||||||
|
* if LogFactory is loaded by the bootstrap classloader.
|
||||||
|
* b) The Java endorsed library mechanism is instead
|
||||||
|
* Class.forName(factoryClass);
|
||||||
|
*/
|
||||||
|
// Warning: must typecast here & allow exception
|
||||||
|
// to be generated/caught & recast properly.
|
||||||
|
logFactoryClass = Class.forName(factoryClass);
|
||||||
|
return (LogFactory) logFactoryClass.newInstance();
|
||||||
|
} catch (Exception e) {
|
||||||
|
// Check to see if we've got a bad configuration
|
||||||
|
if (logFactoryClass != null
|
||||||
|
&& !LogFactory.class.isAssignableFrom(logFactoryClass)) {
|
||||||
|
return new LogConfigurationException(
|
||||||
|
"The chosen LogFactory implementation does not extend LogFactory."
|
||||||
|
+ " Please check your configuration.",
|
||||||
|
e);
|
||||||
|
}
|
||||||
|
return new LogConfigurationException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static InputStream getResourceAsStream(final ClassLoader loader,
|
private static InputStream getResourceAsStream(final ClassLoader loader,
|
||||||
final String name)
|
final String name)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user