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;