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);
     }
 }


Reply via email to