JELLY-274: use three-args Class.forName for JDK 1.6.
paul


git-svn-id: https://svn.apache.org/repos/asf/commons/proper/jelly/trunk@712845 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/java/org/apache/commons/jelly/tags/core/ArgTag.java b/src/java/org/apache/commons/jelly/tags/core/ArgTag.java
index 9f078ff..d04dfe4 100644
--- a/src/java/org/apache/commons/jelly/tags/core/ArgTag.java
+++ b/src/java/org/apache/commons/jelly/tags/core/ArgTag.java
@@ -99,7 +99,9 @@
             assertNotNull(value);
         } else if(null != typeString) {
             try {
-              klass = getClassLoader().loadClass(typeString);
+              // klass = getClassLoader().loadClass(typeString);
+              // JELLY-274: rather use the three args static class-load-method
+              klass = Class.forName(typeString, false, getClassLoader());
             } catch (ClassNotFoundException e) {
                 throw new JellyTagException(e);
             }
@@ -113,7 +115,9 @@
             if (klass.equals(Class.class))
             {
                 try {
-                    value = getClassLoader().loadClass((String) value);
+                    //value = getClassLoader().loadClass((String) value);
+                    // JELLY-274: rather use three-args class.forName
+                    value = Class.forName((String) value, false, getClassLoader());
                 } catch (ClassNotFoundException e) {
                     throw new JellyTagException(e);
                 }
diff --git a/src/test/org/apache/commons/jelly/core/TestArgTag.java b/src/test/org/apache/commons/jelly/core/TestArgTag.java
index 0936316..cbc2334 100644
--- a/src/test/org/apache/commons/jelly/core/TestArgTag.java
+++ b/src/test/org/apache/commons/jelly/core/TestArgTag.java
@@ -196,6 +196,24 @@
             assertNull(parentTag.getValue(i));
         }
     }
+    
+   
+    public void testToObjectArray() throws Exception {
+        argTag.setType(Object[].class.getName());
+        argTag.setValue(new Object[] {"testObjectArray"});
+        argTag.doTag(getXMLOutput());
+        assertEquals(Object[].class,parentTag.getType(0));
+        assertEquals("testObjectArray",((Object[]) parentTag.getValue(0))[0]);
+    }
+
+    public void testToObjectArrayClass() throws Exception {
+        argTag.setType(Class.class.getName());
+        argTag.setValue(Object[].class.getName());
+        argTag.doTag(getXMLOutput());
+        assertEquals(Class.class,parentTag.getType(0));
+        assertEquals(Object[].class,parentTag.getValue(0));
+    }
+
 
     private MockArgTagParent parentTag = null;
     private ArgTag argTag = null;