[
https://issues.apache.org/jira/browse/CXF-5254?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13791458#comment-13791458
]
Grzegorz Grzybek commented on CXF-5254:
---------------------------------------
Hello - here's a pull request: https://github.com/apache/cxf/pull/7.
All test cases pass, as well as Juergen's example.
The changes were quite complex wrt correct Corba-xml mapping.
Please see if this is right way to do this.
The least clean change is related to handling Corba structs derived from such
XSD complex types:
{code:xml}
<xs:complexType>
<xs:sequence>
<!-- some non-sequence, non-array elements -->
<xs:element name="x" type="x" minOccurs="0" maxOccurs="not 1" />
</xs:sequence>
</xs:complexType>
{code}
because runtime representation is usually this:
{code:xml}
<root>
<!-- some elements -->
<x>a</x>
<x>a</x>
...
</root>
{code}
but may also be this:
{code:xml}
<root>
<!-- some elements -->
<!-- no "x" element at all! -->
</root>
{code}
while writing to Corba stream there must be a sign that we're sending 0-size
collection. The relevant changes (not so clean) are in
{{org.apache.cxf.binding.corba.types.CorbaStructListener.processEndElement(QName)}}.
regards
Grzegorz Grzybek
> Unmarshall exception if a sequence<string> is used in a struct.
> ---------------------------------------------------------------
>
> Key: CXF-5254
> URL: https://issues.apache.org/jira/browse/CXF-5254
> Project: CXF
> Issue Type: Bug
> Components: CORBA Binding
> Affects Versions: 2.7.5, 2.7.6
> Environment: JAVA7 / Windows 7
> Reporter: Juergen Bockhorn
> Priority: Blocker
> Attachments: CorbaBugRepro.zip, CXF-5254.diff, patch.txt
>
>
> A server function returns a struct. This struct contains another struct which
> contains a sequence<string>. Calling this method with a CXF/Corba-Client
> leads to an unmarshall exception:
> {code}
> Warnung: Interceptor for
> {http://cxf.apache.org/bindings/corba/idl/repro}repro.ServiceCORBAService#{http://cxf.apache.org/bindings/corba/idl/repro}getFirst
> has thrown exception, unwinding now
> org.apache.cxf.interceptor.Fault: Unmarshalling Error: unerwartetes Element
> (URI:"", lokal:"item"). Erwartete Elemente sind
> <{http://cxf.apache.org/bindings/corba/idl/repro}id>,<{http://cxf.apache.org/bindings/corba/idl/repro}s1>
>
> at
> org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:808)
> at
> org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:629)
> at org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:157)
> at
> org.apache.cxf.interceptor.BareInInterceptor.handleMessage(BareInInterceptor.java:138)
> ...
> {code}
> (sorry for german).
> Using a pure CORBA-client works.
> I will attach a repro project to this issue if I have figured out how it
> works :-)
--
This message was sent by Atlassian JIRA
(v6.1#6144)