Simplify loader methods
Signed-off-by: Matt Sicker <boards@gmail.com>
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/LoaderUtil.java b/log4j-api/src/main/java/org/apache/logging/log4j/util/LoaderUtil.java
index 962d9e1..845b1e0 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/LoaderUtil.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/LoaderUtil.java
@@ -270,7 +270,7 @@
public static <T> T newCheckedInstanceOf(final String className, final Class<T> clazz)
throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException,
IllegalAccessException {
- return clazz.cast(newInstanceOf(className));
+ return newInstanceOf(loadClass(className).asSubclass(clazz));
}
/**
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Loader.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Loader.java
index 86932f6..d0ee168 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Loader.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Loader.java
@@ -242,13 +242,12 @@
* @throws ClassNotFoundException if the class isn't available to the usual ClassLoaders
* @throws IllegalAccessException if the class can't be instantiated through a public constructor
* @throws InstantiationException if there was an exception whilst instantiating the class
- * @throws NoSuchMethodException if there isn't a no-args constructor on the class
* @throws InvocationTargetException if there was an exception whilst constructing the class
* @since 2.1
*/
@SuppressWarnings("unchecked")
- public static <T> T newInstanceOf(final String className) throws ClassNotFoundException, IllegalAccessException,
- InstantiationException, NoSuchMethodException, InvocationTargetException {
+ public static <T> T newInstanceOf(final String className)
+ throws ClassNotFoundException, IllegalAccessException, InstantiationException, InvocationTargetException {
return newInstanceOf((Class<T>) loadClass(className));
}
@@ -262,23 +261,12 @@
* @throws ClassNotFoundException if the class isn't available to the usual ClassLoaders
* @throws IllegalAccessException if the class can't be instantiated through a public constructor
* @throws InstantiationException if there was an exception whilst instantiating the class
- * @throws NoSuchMethodException if there isn't a no-args constructor on the class
* @throws InvocationTargetException if there was an exception whilst constructing the class
* @throws ClassCastException if the constructed object isn't type compatible with {@code T}
*/
public static <T> T newCheckedInstanceOf(final String className, final Class<T> clazz)
- throws ClassNotFoundException,
- NoSuchMethodException,
- IllegalAccessException,
- InvocationTargetException,
- InstantiationException {
- ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
- try {
- Thread.currentThread().setContextClassLoader(getClassLoader());
- return clazz.cast(newInstanceOf(className));
- } finally {
- Thread.currentThread().setContextClassLoader(contextClassLoader);
- }
+ throws ClassNotFoundException, IllegalAccessException, InvocationTargetException, InstantiationException {
+ return newInstanceOf(loadClass(className).asSubclass(clazz));
}
/**