Author: rfeng
Date: Wed Oct 17 15:08:06 2007
New Revision: 585728

URL: http://svn.apache.org/viewvc?rev=585728&view=rev
Log:
Fix the build break by sorting the java bean properties to ensure correct 
ordering of the output XML string

Modified:
    
incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/BeanXMLStreamReaderImpl.java
    
incubator/tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/BeanXMLStreamReaderTestCase.java
    
incubator/tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/JavaBean2XMLStreamReaderTestCase.java

Modified: 
incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/BeanXMLStreamReaderImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/BeanXMLStreamReaderImpl.java?rev=585728&r1=585727&r2=585728&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/BeanXMLStreamReaderImpl.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/BeanXMLStreamReaderImpl.java
 Wed Oct 17 15:08:06 2007
@@ -26,6 +26,8 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.Iterator;
 import java.util.List;
 
@@ -38,23 +40,28 @@
  * @version $Rev$ $Date$
  */
 public class BeanXMLStreamReaderImpl extends XmlTreeStreamReaderImpl {
+    private final static Comparator<PropertyDescriptor> COMPARATOR = new 
Comparator<PropertyDescriptor>() {
+        public int compare(PropertyDescriptor o1, PropertyDescriptor o2) {
+            return o1.getName().compareTo(o2.getName());
+        }
+    };
 
     public static class BeanXmlNodeImpl extends SimpleXmlNodeImpl implements 
XmlNode {
         private static final Object[] NULL = null;
         private static final SimpleTypeMapperImpl MAPPER = new 
SimpleTypeMapperImpl();
-    
+
         public BeanXmlNodeImpl(Object bean) {
             super(getName(bean == null ? null : bean.getClass()), bean);
         }
-    
+
         public BeanXmlNodeImpl(QName name, Object bean) {
             super(name, bean);
         }
-    
+
         private static boolean isSimpleType(Class<?> javaType) {
             return SimpleTypeMapperImpl.getXMLType(javaType) != null;
         }
-    
+
         private static String getStringValue(Object o) {
             if (o == null) {
                 return null;
@@ -66,7 +73,7 @@
                 return String.valueOf(o);
             }
         }
-    
+
         public Iterator<XmlNode> children() {
             if (name == null) {
                 return null;
@@ -81,6 +88,7 @@
             try {
                 BeanInfo beanInfo = Introspector.getBeanInfo(value.getClass());
                 PropertyDescriptor[] propDescs = 
beanInfo.getPropertyDescriptors();
+                Collections.sort(Arrays.asList(propDescs), COMPARATOR);
     
                 List<XmlNode> props = new ArrayList<XmlNode>();
                 for (int i = 0; i < propDescs.length; i++) {
@@ -125,15 +133,15 @@
                 throw new IllegalArgumentException(e);
             }
         }
-    
+
         public QName getName() {
             return name;
         }
-    
+
         public String getValue() {
             return getStringValue(value);
         }
-    
+
         public static QName getName(Class<?> cls) {
             if (cls == null) {
                 return null;
@@ -153,7 +161,7 @@
             ns.append('/');
             return new QName(ns.toString(), cls.getSimpleName());
         }
-    
+
     }
 
     public BeanXMLStreamReaderImpl(QName name, Object bean) {

Modified: 
incubator/tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/BeanXMLStreamReaderTestCase.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/BeanXMLStreamReaderTestCase.java?rev=585728&r1=585727&r2=585728&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/BeanXMLStreamReaderTestCase.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/BeanXMLStreamReaderTestCase.java
 Wed Oct 17 15:08:06 2007
@@ -25,15 +25,18 @@
 
 import junit.framework.TestCase;
 
+import org.custommonkey.xmlunit.Diff;
 import org.custommonkey.xmlunit.XMLAssert;
 
 public class BeanXMLStreamReaderTestCase extends TestCase {
     private final static String XML_RESULT =
-        "<?xml version='1.0' encoding='UTF-8'?>"
-        +"<MyBean xmlns=\"http://xml.databinding.sca.tuscany.apache.org/\";>"
-        +"<nil xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"; 
xsi:nil=\"true\" />"
-        
+"<i>1</i><list>Item1</list><list>Item2</list><arr>1</arr><arr>2</arr><arr>3</arr>"
-        +"<bean><name>Name</name></bean><str>ABC</str></MyBean>";
+        "<?xml version='1.0' encoding='UTF-8'?>" 
+            + "<MyBean 
xmlns=\"http://xml.databinding.sca.tuscany.apache.org/\";>"
+            + 
"<arr>1</arr><arr>2</arr><arr>3</arr><bean><name>Name</name></bean><i>1</i>"
+            + "<list>Item1</list><list>Item2</list>"
+            + "<nil xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"; 
xsi:nil=\"true\" />"
+            + "<str>ABC</str></MyBean>";
+
     /**
      * @see junit.framework.TestCase#setUp()
      */
@@ -54,6 +57,8 @@
         XMLStreamReader reader = new BeanXMLStreamReaderImpl(null, bean);
         XMLStreamReader2String t3 = new XMLStreamReader2String();
         String xml = t3.transform(reader, null);
+        Diff diff = new Diff(XML_RESULT, xml);
+        assertTrue(diff.similar());
         XMLAssert.assertXMLEqual(XML_RESULT, xml);
         /* assertTrue(xml.contains("<JavaBean2XMLStreamReaderTestCase$MyBean>" 
                      + 
"<arr>1</arr><arr>2</arr><arr>3</arr><bean><name>Name</name></bean>"
@@ -62,39 +67,39 @@
     }
 
     private static class MyBean {
+        private long arr[];
         private String str;
         private int i;
         private String nil;
-        private long arr[];
         private List<String> list = new ArrayList();
         private AnotherBean bean;
 
         /**
-         * @return the arr
+         * @return the i
          */
-        public long[] getArr() {
-            return arr;
+        public int getI() {
+            return i;
         }
 
         /**
-         * @param arr the arr to set
+         * @param i the i to set
          */
-        public void setArr(long[] arr) {
-            this.arr = arr;
+        public void setI(int i) {
+            this.i = i;
         }
 
         /**
-         * @return the i
+         * @return the arr
          */
-        public int getI() {
-            return i;
+        public long[] getArr() {
+            return arr;
         }
 
         /**
-         * @param i the i to set
+         * @param arr the arr to set
          */
-        public void setI(int i) {
-            this.i = i;
+        public void setArr(long[] arr) {
+            this.arr = arr;
         }
 
         /**

Modified: 
incubator/tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/JavaBean2XMLStreamReaderTestCase.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/JavaBean2XMLStreamReaderTestCase.java?rev=585728&r1=585727&r2=585728&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/JavaBean2XMLStreamReaderTestCase.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/databinding/src/test/java/org/apache/tuscany/sca/databinding/xml/JavaBean2XMLStreamReaderTestCase.java
 Wed Oct 17 15:08:06 2007
@@ -29,7 +29,7 @@
     private final static String XML_RESULT =
         "<?xml version='1.0' encoding='UTF-8'?>" 
             + "<MyBean 
xmlns=\"http://xml.databinding.sca.tuscany.apache.org/\";>"
-            + 
"<i>1</i><arr>1</arr><arr>2</arr><arr>3</arr><str>ABC</str><bean><name>Name</name></bean>"
+            + 
"<arr>1</arr><arr>2</arr><arr>3</arr><bean><name>Name</name></bean><i>1</i><str>ABC</str>"
             + "</MyBean>";
 
     /**



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to