You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by ve...@apache.org on 2009/06/25 12:53:54 UTC
svn commit: r788318 -
/webservices/axis2/trunk/java/modules/adb-codegen/test/org/apache/axis2/schema/AbstractTestCase.java
Author: veithen
Date: Thu Jun 25 10:53:54 2009
New Revision: 788318
URL: http://svn.apache.org/viewvc?rev=788318&view=rev
Log:
ADB tests: added another serialization/deserialization method that reveals a problem with the usage of XMLStreamWriter#writeStartElement(String). Related to AXIS2-4374.
Modified:
webservices/axis2/trunk/java/modules/adb-codegen/test/org/apache/axis2/schema/AbstractTestCase.java
Modified: webservices/axis2/trunk/java/modules/adb-codegen/test/org/apache/axis2/schema/AbstractTestCase.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb-codegen/test/org/apache/axis2/schema/AbstractTestCase.java?rev=788318&r1=788317&r2=788318&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/adb-codegen/test/org/apache/axis2/schema/AbstractTestCase.java (original)
+++ webservices/axis2/trunk/java/modules/adb-codegen/test/org/apache/axis2/schema/AbstractTestCase.java Thu Jun 25 10:53:54 2009
@@ -24,9 +24,11 @@
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
+import java.io.StringWriter;
import java.lang.reflect.Array;
import java.lang.reflect.Method;
import java.math.BigDecimal;
@@ -49,6 +51,8 @@
import org.apache.axis2.databinding.types.HexBinary;
import org.apache.axis2.databinding.types.Language;
import org.apache.axis2.databinding.types.URI;
+import org.apache.axis2.databinding.utils.writer.MTOMAwareXMLSerializer;
+import org.apache.axis2.databinding.utils.writer.MTOMAwareXMLStreamWriter;
import junit.framework.TestCase;
@@ -189,26 +193,61 @@
* @throws Exception
*/
public static void testSerializeDeserialize(ADBBean bean) throws Exception {
+ testSerializeDeserialize1(bean);
+ testSerializeDeserialize2(bean);
+
+ // TODO: this badly fails for many of the test cases => there are still issues to solve!!!
+// testSerializeDeserialize3(bean);
+
+ // TODO: this fails for one of the test cases
+// testSerializeDeserialize4(bean);
+ }
+
+ // Deserialization approach 1: use an XMLStreamReader produced by the StAX parser.
+ private static void testSerializeDeserialize1(ADBBean bean) throws Exception {
Class<? extends ADBBean> beanClass = bean.getClass();
QName qname = getADBBeanQName(beanClass);
-
OMElement omElement = bean.getOMElement(qname, OMAbstractFactory.getOMFactory());
String omElementString = omElement.toStringWithConsume();
-
- // Deserialization approach 1: use an XMLStreamReader produced by the StAX parser.
assertBeanEquals(bean, parse(beanClass,
StAXUtils.createXMLStreamReader(new StringReader(omElementString))));
-
- // Deserialization approach 2: use an Axiom tree with caching. In this case the
- // XMLStreamReader implementation is OMStAXWrapper and we test interoperability
- // between ADB and Axiom's OMStAXWrapper.
+ }
+
+ // Deserialization approach 2: use an Axiom tree with caching. In this case the
+ // XMLStreamReader implementation is OMStAXWrapper and we test interoperability
+ // between ADB and Axiom's OMStAXWrapper.
+ private static void testSerializeDeserialize2(ADBBean bean) throws Exception {
+ Class<? extends ADBBean> beanClass = bean.getClass();
+ QName qname = getADBBeanQName(beanClass);
+ OMElement omElement = bean.getOMElement(qname, OMAbstractFactory.getOMFactory());
+ String omElementString = omElement.toStringWithConsume();
OMElement omElement2 = new StAXOMBuilder(StAXUtils.createXMLStreamReader(
new StringReader(omElementString))).getDocumentElement();
assertBeanEquals(bean, parse(beanClass, omElement2.getXMLStreamReader()));
-
- // Deserialization approach 3: use the pull parser produced by ADB.
- // TODO: this badly fails for many of the test cases => there are still issues to solve!!!
-// assertBeanEquals(bean, parse(beanClass, bean.getPullParser(qname)));
+ }
+
+ // Deserialization approach 3: use the pull parser produced by ADB.
+ private static void testSerializeDeserialize3(ADBBean bean) throws Exception {
+ Class<? extends ADBBean> beanClass = bean.getClass();
+ QName qname = getADBBeanQName(beanClass);
+ assertBeanEquals(bean, parse(beanClass, bean.getPullParser(qname)));
+ }
+
+ // Approach 4: Serialize the bean as the child of an element that declares a default namespace.
+ // If ADB behaves correctly, this should not have any impact. A failure here may be an indication
+ // of an incorrect usage of XMLStreamWriter#writeStartElement(String).
+ private static void testSerializeDeserialize4(ADBBean bean) throws Exception {
+ Class<? extends ADBBean> beanClass = bean.getClass();
+ QName qname = getADBBeanQName(beanClass);
+ StringWriter sw = new StringWriter();
+ MTOMAwareXMLStreamWriter writer = new MTOMAwareXMLSerializer(StAXUtils.createXMLStreamWriter(sw));
+ writer.writeStartElement("", "root", "urn:test");
+ writer.writeDefaultNamespace("urn:test");
+ bean.serialize(qname, null, writer);
+ writer.writeEndElement();
+ writer.flush();
+ OMElement omElement3 = new StAXOMBuilder(StAXUtils.createXMLStreamReader(new StringReader(sw.toString()))).getDocumentElement();
+ assertBeanEquals(bean, parse(beanClass, omElement3.getFirstElement().getXMLStreamReader()));
}
/**