[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