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]