[ http://jira.codehaus.org/browse/JIBX-114?page=all ]
Chris Chen closed JIBX-114:
---------------------------
Resolution: Cannot Reproduce
I apologize, but this is not a bug. It is a bug in my testing code. I was
testing the string against an array (which used to be a string) that contains a
list of strings.
I have fixed this and the test case is now running successfully.
> Unmarshalling and Marshalling of xml document creates different xml structures
> ------------------------------------------------------------------------------
>
> Key: JIBX-114
> URL: http://jira.codehaus.org/browse/JIBX-114
> Project: JiBX
> Type: Bug
> Components: core
> Environment: Mac OSX 10.4 Using JDK 1.5
> Reporter: Chris Chen
>
>
> I am getting different XML document when marshalling and unmarshalling the
> same class data, using only default generated codes and no custom codes. The
> unmarshalling is the one causing the problem.
> Here's my binding file. The problem occurs in the instructions collection
> located in the first "x" element mapping.
> ===================================================
> <binding>
> <namespace uri="jabber:x:data" default="elements"/>
> <mapping name="x" ns="jabber:x:data"
> class="com.echomine.jabber.packet.DataXPacket"
> ordered='false'>
> <value name='type' field='formType' style='attribute'/>
> <collection field="instructions" type="java.util.ArrayList"
> item-type="java.lang.String" usage="optional">
> <value name='instructions' style='element'
> usage='optional'/>
> </collection>
> <value name='title' field='title' usage='optional'/>
> <collection field="fields" type="java.util.ArrayList"
> item-type="com.echomine.jabber.packet.DataXField"
> usage="optional"/>
> <collection field='itemFields' type='java.util.ArrayList'
> item-type='com.echomine.jabber.packet.DataXItemList'
> usage='optional'/>
> </mapping>
> <mapping name='item' ns='jabber:x:data'
> class='com.echomine.jabber.packet.DataXItemList'>
> <collection field="fields" type="java.util.ArrayList"
> item-type="com.echomine.jabber.packet.DataXField"/>
> </mapping>
> <mapping name='field' ns='jabber:x:data' ordered='false'
> class='com.echomine.jabber.packet.DataXField' >
> <value name='label' field='label' style='attribute'
> usage='optional'/>
> <value name='type' field='fieldType' style='attribute'
> usage='optional'/>
> <value name='var' field='variableName' style='attribute'
> usage='optional'/>
> <value name='desc' field='description' usage='optional'/>
> <value name='required' field='required' usage='optional'/>
> <collection field='options' type='java.util.ArrayList'
> usage='optional'
> item-type='com.echomine.jabber.packet.DataXOption'/>
> <collection field='values' type='java.util.ArrayList'
> usage='optional'
> item-type='java.lang.String'>
> <structure name='value' usage='optional'>
> <value style='text' usage='optional'/>
> </structure>
> </collection>
> </mapping>
> <mapping name='option' ns='jabber:x:data'
> class='com.echomine.jabber.packet.DataXOption'>
> <value name='label' field='label' style='attribute'
> usage='optional'/>
> <value name='value' field='value'/>
> </mapping>
> </binding>
> ===================================================
> Here's my testcase, with comments attached to the code:
> //this is the string that the marshalled document is compared to
> String xml = "<x xmlns='jabber:x:data'
> type='submit'><instructions>simple instructions</instructions></x>";
> StringReader reader = new StringReader(xml);
> DataXPacket packet = new DataXPacket();
> packet.addInstruction("simple instructions");
> //marshalls the object
> JiBXUtil.marshallObject(writer, packet);
> //the comparison passes with no problem, indicating that marshalling
> is bug-free
> compare(reader);
> reader.reset();
> // unmarshalls the reader string above
> packet = (DataXPacket) JiBXUtil.unmarshallObject(reader,
> DataXPacket.class);
> // this assertion below FAILS with the exception shown below
> assertEquals("simple instructions", packet.getInstructions());
> Here's the exception that I get when running the code:
> [junit] expected:<simple instructions> but was:<[simple instructions]>
> [junit] junit.framework.AssertionFailedError: expected:<simple
> instructions> but was:<[simple instructions]>
> [junit] at
> com.echomine.jabber.packet.DataXPacketTest.testInstructions(DataXPacketTest.java:133)
> It's interesting that the marshalling code is outputting expected xml, but
> the unmarshalling does not parse the data as expected.
> Is there a better way to write the binding file to parse the following type
> of schema?
> <xs:schema
> xmlns:xs='http://www.w3.org/2001/XMLSchema'
> targetNamespace='jabber:x:data'
> xmlns='jabber:x:data'
> elementFormDefault='qualified'>
> <xs:annotation>
> <xs:documentation>
> The protocol documented by this schema is defined in
> JEP-0004: http://www.jabber.org/jeps/jep-0004.html
> </xs:documentation>
> </xs:annotation>
> <xs:element name='x'>
> <xs:complexType>
> <xs:sequence>
> <xs:element name='instructions'
> minOccurs='0'
> maxOccurs='unbounded'
> type='xs:string'/>
> <xs:element name='title' minOccurs='0' type='xs:string'/>
> <xs:element ref='field' minOccurs='0' maxOccurs='unbounded'/>
> <xs:element ref='reported' minOccurs='0' maxOccurs='1'/>
> <xs:element ref='item' minOccurs='0' maxOccurs='unbounded'/>
> </xs:sequence>
> <xs:attribute name='type' use='required'>
> <xs:simpleType>
> <xs:restriction base='xs:NCName'>
> <xs:enumeration value='cancel'/>
> <xs:enumeration value='form'/>
> <xs:enumeration value='result'/>
> <xs:enumeration value='submit'/>
> </xs:restriction>
> </xs:simpleType>
> </xs:attribute>
> </xs:complexType>
> </xs:element>
> <xs:element name='field'>
> <xs:complexType>
> <xs:sequence>
> <xs:element name='desc' minOccurs='0' type='xs:string'/>
> <xs:element name='required' minOccurs='0' type='empty'/>
> <xs:element ref='value' minOccurs='0' maxOccurs='unbounded'/>
> <xs:element ref='option' minOccurs='0' maxOccurs='unbounded'/>
> </xs:sequence>
> <xs:attribute name='label' type='xs:string' use='optional'/>
> <xs:attribute name='type' use='optional' default='text-single'>
> <xs:simpleType>
> <xs:restriction base='xs:NCName'>
> <xs:enumeration value='boolean'/>
> <xs:enumeration value='fixed'/>
> <xs:enumeration value='hidden'/>
> <xs:enumeration value='jid-multi'/>
> <xs:enumeration value='jid-single'/>
> <xs:enumeration value='list-multi'/>
> <xs:enumeration value='list-single'/>
> <xs:enumeration value='text-multi'/>
> <xs:enumeration value='text-private'/>
> <xs:enumeration value='text-single'/>
> </xs:restriction>
> </xs:simpleType>
> </xs:attribute>
> <xs:attribute name='var' type='xs:string' use='optional'/>
> </xs:complexType>
> </xs:element>
> <xs:element name='option'>
> <xs:complexType>
> <xs:sequence>
> <xs:element ref='value'/>
> </xs:sequence>
> <xs:attribute name='label' type='xs:string' use='optional'/>
> </xs:complexType>
> </xs:element>
> <xs:element name='value' type='xs:string'/>
> <xs:element name='reported'>
> <xs:complexType>
> <xs:sequence>
> <xs:element ref='field' maxOccurs='unbounded'/>
> </xs:sequence>
> </xs:complexType>
> <xs:annotation>
> <xs:documentation>
> When contained in a "reported" element, the "field" element
> SHOULD NOT contain a "value" child.
> </xs:documentation>
> </xs:annotation>
> </xs:element>
> <xs:element name='item'>
> <xs:complexType>
> <xs:sequence>
> <xs:element ref='field' maxOccurs='unbounded'/>
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> <xs:simpleType name='empty'>
> <xs:restriction base='xs:string'>
> <xs:enumeration value=''/>
> </xs:restriction>
> </xs:simpleType>
> </xs:schema>
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
-------------------------------------------------------
All the advantages of Linux Managed Hosting--Without the Cost and Risk!
Fully trained technicians. The highest number of Red Hat certifications in
the hosting industry. Fanatical Support. Click to learn more
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642
_______________________________________________
jibx-devs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jibx-devs