cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Grzegorz Grzybek (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CXF-5254) Unmarshall exception if a sequence<string> is used in a struct.
Date Thu, 10 Oct 2013 13:03:42 GMT

    [ 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)

Mime
View raw message