You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2010/07/30 04:07:22 UTC

svn commit: r980634 - in /myfaces/test/trunk: test12/src/main/java/org/apache/myfaces/test/config/ConfigParser.java test20/src/main/java/org/apache/myfaces/test/config/ConfigParser.java

Author: lu4242
Date: Fri Jul 30 02:07:22 2010
New Revision: 980634

URL: http://svn.apache.org/viewvc?rev=980634&view=rev
Log:
MYFACESTEST-23 ConfigParser should use Class.forName to load classes

Modified:
    myfaces/test/trunk/test12/src/main/java/org/apache/myfaces/test/config/ConfigParser.java
    myfaces/test/trunk/test20/src/main/java/org/apache/myfaces/test/config/ConfigParser.java

Modified: myfaces/test/trunk/test12/src/main/java/org/apache/myfaces/test/config/ConfigParser.java
URL: http://svn.apache.org/viewvc/myfaces/test/trunk/test12/src/main/java/org/apache/myfaces/test/config/ConfigParser.java?rev=980634&r1=980633&r2=980634&view=diff
==============================================================================
--- myfaces/test/trunk/test12/src/main/java/org/apache/myfaces/test/config/ConfigParser.java (original)
+++ myfaces/test/trunk/test12/src/main/java/org/apache/myfaces/test/config/ConfigParser.java Fri Jul 30 02:07:22 2010
@@ -333,7 +333,7 @@ public class ConfigParser {
             } else {
                 Class clazz = null;
                 try {
-                    clazz = this.getClass().getClassLoader().loadClass(bean.getConverterForClass());
+                    clazz = classForName(bean.getConverterForClass());
                 } catch (ClassNotFoundException e) {
                     throw new IllegalArgumentException("java.lang.ClassNotFoundException: "
                         + bean.getConverterForClass());
@@ -343,7 +343,24 @@ public class ConfigParser {
         }
 
     }
-
+    
+    private Class classForName(String type) throws ClassNotFoundException
+    {
+        try
+        {
+            // Try WebApp ClassLoader first
+            return Class.forName(type,
+                                 false, // do not initialize for faster startup
+                                 Thread.currentThread().getContextClassLoader());
+        }
+        catch (ClassNotFoundException ignore)
+        {
+            // fallback: Try ClassLoader for ClassUtils (i.e. the myfaces.jar lib)
+            return Class.forName(type,
+                                 false, // do not initialize for faster startup
+                                 this.getClass().getClassLoader());
+        }                    
+    }
 
     /**
      * <p>Digester <code>Rule</code> for processing render kits.</p>
@@ -431,7 +448,7 @@ public class ConfigParser {
             Renderer renderer = null;
             Class clazz = null;
             try {
-                clazz = this.getClass().getClassLoader().loadClass(bean.getRendererClass());
+                clazz = classForName(bean.getRendererClass());
                 renderer = (Renderer) clazz.newInstance();
             } catch (Exception e) {
                 throw new IllegalArgumentException("Exception while trying to instantiate"

Modified: myfaces/test/trunk/test20/src/main/java/org/apache/myfaces/test/config/ConfigParser.java
URL: http://svn.apache.org/viewvc/myfaces/test/trunk/test20/src/main/java/org/apache/myfaces/test/config/ConfigParser.java?rev=980634&r1=980633&r2=980634&view=diff
==============================================================================
--- myfaces/test/trunk/test20/src/main/java/org/apache/myfaces/test/config/ConfigParser.java (original)
+++ myfaces/test/trunk/test20/src/main/java/org/apache/myfaces/test/config/ConfigParser.java Fri Jul 30 02:07:22 2010
@@ -345,7 +345,7 @@ public class ConfigParser {
             } else {
                 Class clazz = null;
                 try {
-                    clazz = this.getClass().getClassLoader().loadClass(bean.getConverterForClass());
+                    clazz = classForName(bean.getConverterForClass());
                 } catch (ClassNotFoundException e) {
                     throw new IllegalArgumentException("java.lang.ClassNotFoundException: "
                         + bean.getConverterForClass());
@@ -356,7 +356,24 @@ public class ConfigParser {
 
     }
 
-
+    private Class classForName(String type) throws ClassNotFoundException
+    {
+        try
+        {
+            // Try WebApp ClassLoader first
+            return Class.forName(type,
+                                 false, // do not initialize for faster startup
+                                 Thread.currentThread().getContextClassLoader());
+        }
+        catch (ClassNotFoundException ignore)
+        {
+            // fallback: Try ClassLoader for ClassUtils (i.e. the myfaces.jar lib)
+            return Class.forName(type,
+                                 false, // do not initialize for faster startup
+                                 this.getClass().getClassLoader());
+        }                    
+    }
+    
     /**
      * <p>Digester <code>Rule</code> for processing render kits.</p>
      */
@@ -443,7 +460,7 @@ public class ConfigParser {
             Renderer renderer = null;
             Class clazz = null;
             try {
-                clazz = this.getClass().getClassLoader().loadClass(bean.getRendererClass());
+                clazz = classForName(bean.getRendererClass());
                 renderer = (Renderer) clazz.newInstance();
             } catch (Exception e) {
                 throw new IllegalArgumentException("Exception while trying to instantiate"
@@ -538,7 +555,7 @@ public class ConfigParser {
             ClientBehaviorRenderer renderer = null;
             Class clazz = null;
             try {
-                clazz = this.getClass().getClassLoader().loadClass(bean.getClientBehaviorRendererClass());
+                clazz = classForName(bean.getClientBehaviorRendererClass());
                 renderer = (ClientBehaviorRenderer) clazz.newInstance();
             } catch (Exception e) {
                 throw new IllegalArgumentException("Exception while trying to instantiate"