Author: apetrelli
Date: Wed Oct 29 06:17:23 2008
New Revision: 708901
URL: http://svn.apache.org/viewvc?rev=708901&view=rev
Log:
TILES-324
Now the second call to setCurrentClassloader is made only if the original was
null.
Better deprecation of the old ClassUtil.
Modified:
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/reflect/ClassUtil.java
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/util/ClassUtil.java
Modified:
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/reflect/ClassUtil.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/reflect/ClassUtil.java?rev=708901&r1=708900&r2=708901&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/reflect/ClassUtil.java
(original)
+++
tiles/framework/trunk/tiles-api/src/main/java/org/apache/tiles/reflect/ClassUtil.java
Wed Oct 29 06:17:23 2008
@@ -88,7 +88,11 @@
+ "'. Make sure that this class has a default
constructor",
e);
} finally {
- Thread.currentThread().setContextClassLoader(original);
+ // If the original context classloader of the current thread was
+ // null, it must be reset.
+ if (original == null) {
+ Thread.currentThread().setContextClassLoader(null);
+ }
}
}
Modified:
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/util/ClassUtil.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/util/ClassUtil.java?rev=708901&r1=708900&r2=708901&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/util/ClassUtil.java
(original)
+++
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/util/ClassUtil.java
Wed Oct 29 06:17:23 2008
@@ -22,13 +22,13 @@
import org.apache.tiles.reflect.CannotInstantiateObjectException;
-
/**
* Utilities to work with dynamic class loading and instantiation.
*
* @version $Rev$ $Date$
* @deprecated Use [EMAIL PROTECTED] org.apache.tiles.reflect.ClassUtil}.
*/
[EMAIL PROTECTED]
public final class ClassUtil {
/**
@@ -45,9 +45,12 @@
* @return The new instance of the class name.
* @throws CannotInstantiateObjectException If something goes wrong during
* instantiation.
+ * @deprecated Use
+ * [EMAIL PROTECTED]
org.apache.tiles.reflect.ClassUtil#instantiate(String)}.
*/
+ @Deprecated
public static Object instantiate(String className) {
- return instantiate(className, false);
+ return org.apache.tiles.reflect.ClassUtil.instantiate(className);
}
/**
@@ -59,33 +62,14 @@
* returns <code>true</code>, otherwise it throws a
* <code>TilesException</code>.
* @return The new instance of the class name.
- * @throws CannotInstantiateObjectException If something goes wrong during
instantiation.
+ * @throws CannotInstantiateObjectException If something goes wrong during
+ * instantiation.
+ * @deprecated Use
+ * [EMAIL PROTECTED]
org.apache.tiles.reflect.ClassUtil#instantiate(String, boolean)}.
*/
+ @Deprecated
public static Object instantiate(String className, boolean returnNull) {
- ClassLoader original = Thread.currentThread().getContextClassLoader();
- if (original == null) {
-
Thread.currentThread().setContextClassLoader(ClassUtil.class.getClassLoader());
- }
- try {
- Class<?> namedClass = Class.forName(className);
- return namedClass.newInstance();
- } catch (ClassNotFoundException e) {
- if (returnNull) {
- return null;
- }
- throw new CannotInstantiateObjectException(
- "Unable to resolve factory class: '" + className + "'", e);
- } catch (IllegalAccessException e) {
- throw new CannotInstantiateObjectException(
- "Unable to access factory class: '" + className + "'", e);
- } catch (InstantiationException e) {
- throw new CannotInstantiateObjectException(
- "Unable to instantiate factory class: '"
- + className
- + "'. Make sure that this class has a default
constructor",
- e);
- } finally {
- Thread.currentThread().setContextClassLoader(original);
- }
+ return org.apache.tiles.reflect.ClassUtil.instantiate(className,
+ returnNull);
}
}