[jboss-svn-commits] JBL Code SVN: r15793 - in labs/jbossesb/trunk/product/rosetta: tests/src/org/jboss/soa/esb/actions/converters and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Oct 12 03:34:50 EDT 2007
Author: beve
Date: 2007-10-12 03:34:50 -0400 (Fri, 12 Oct 2007)
New Revision: 15793
Modified:
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/actions/converters/XStreamToObject.java
labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/actions/converters/XStreamToObjectUnitTest.java
Log:
Work for JBESB-1165 "XStreamToObject cannot handle arrays"
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/actions/converters/XStreamToObject.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/actions/converters/XStreamToObject.java 2007-10-12 07:17:23 UTC (rev 15792)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/actions/converters/XStreamToObject.java 2007-10-12 07:34:50 UTC (rev 15793)
@@ -107,7 +107,7 @@
try {
Object toObject = incomingType.newInstance();
- fromXmlToObject( object.toString(), toObject );
+ toObject = fromXmlToObject( object.toString(), toObject );
message.getBody().add(ActionUtils.POST_ACTION_DATA, toObject);
} catch (InstantiationException e) {
@@ -177,7 +177,7 @@
* @throws IOException
* @throws SAXException
*/
- protected void fromXmlToObject(String xml, Object root ) throws ActionProcessingException
+ protected Object fromXmlToObject(String xml, Object root ) throws ActionProcessingException
{
HierarchicalStreamReader reader = null;
try
@@ -188,9 +188,7 @@
xstream.alias(getAlias(incomingType), incomingType);
addAliases( aliases, xstream );
-
- xstream.unmarshal( reader, root );
-
+ return xstream.unmarshal( reader, root );
}
finally
{
Modified: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/actions/converters/XStreamToObjectUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/actions/converters/XStreamToObjectUnitTest.java 2007-10-12 07:17:23 UTC (rev 15792)
+++ labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/actions/converters/XStreamToObjectUnitTest.java 2007-10-12 07:34:50 UTC (rev 15793)
@@ -32,6 +32,7 @@
import junit.framework.JUnit4TestAdapter;
+import org.apache.log4j.Logger;
import org.jboss.soa.esb.actions.ActionProcessingException;
import org.jboss.soa.esb.actions.ActionUtils;
import org.jboss.soa.esb.actions.TestBean;
@@ -39,6 +40,7 @@
import org.jboss.soa.esb.helpers.KeyValuePair;
import org.jboss.soa.esb.message.Message;
import org.jboss.soa.esb.message.format.MessageFactory;
+import org.junit.Ignore;
import org.junit.Test;
import com.thoughtworks.xstream.XStream;
@@ -51,6 +53,8 @@
*/
public class XStreamToObjectUnitTest {
+ private Logger log = Logger.getLogger( XStreamToObjectUnitTest.class );
+
@Test
public void test_default() throws ActionProcessingException {
List<KeyValuePair> properties = new ArrayList<KeyValuePair>();
@@ -116,7 +120,7 @@
assertEquals("Tom", bean.getName());
assertEquals("1234", bean.getPhone());
}
-
+
@Test
public void getAliases()
{
@@ -221,6 +225,27 @@
assertTrue( obj instanceof TestBean2 );
assertEquals("Bevenius", ((TestBean2)obj).getName());
}
+
+ @Test
+ public void fromXmlToObject_with_collection() throws ActionProcessingException
+ {
+ String rootNodeName = "/someNode/list";
+ ConfigTree configTree = getConfigTree( "list", true, ArrayList.class, rootNodeName);
+ ConfigTree alias1 = new ConfigTree( "alias", configTree);
+ alias1.setAttribute( "name", "TomsClass");
+ alias1.setAttribute( "class", TestBean.class.getName());
+ XStreamToObject xstreamToObject = new XStreamToObject( configTree );
+
+ String xml = "<someNode><list><TomsClass><name>Tom</name></TomsClass><TomsClass><name>Daniel</name></TomsClass></list></someNode>";
+
+ Object obj = new ArrayList<TestBean>();
+ obj = xstreamToObject.fromXmlToObject( xml, obj );
+
+ assertTrue( "Object was not an instance of ArrayList", obj instanceof ArrayList );
+ ArrayList<TestBean> nodes = (ArrayList<TestBean>) obj;
+ assertEquals( 2, nodes.size() );
+
+ }
private XStreamToObject createXStreamObject( String classAlias, boolean exludePackage, Class incomingType, String rootNodeName)
{
@@ -259,11 +284,16 @@
return configTree;
}
+
+ /**
+ * An abstract class for testing
+ */
+ private static abstract class AbstractTestBean { }
/**
* Just a bean for testing
*/
- private static class TestBean2 {
+ private static class TestBean2 extends AbstractTestBean {
private String name;
public String getName()
More information about the jboss-svn-commits
mailing list