[
https://issues.apache.org/jira/browse/CXF-7359?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Daniel Kulp resolved CXF-7359.
------------------------------
Resolution: Not A Problem
Fix Version/s: Invalid
Not a bug in CXF. It's a bug in JAXB as we just pass the XML to JAXB and let
it deserialize the XML into objects. It's apparently handling this case wrong,
but there isn't anything we can do.
> Unmarshalling of a nil element fail on org.apache.cxf.interceptor.Fault:
> Unmarshalling Error
> --------------------------------------------------------------------------------------------
>
> Key: CXF-7359
> URL: https://issues.apache.org/jira/browse/CXF-7359
> Project: CXF
> Issue Type: Bug
> Components: JAXB Databinding
> Affects Versions: 3.1.6
> Reporter: Pavel Coufal
> Fix For: Invalid
>
>
> Dear All, I try unmarshall a incomming response which contains a nil element
> pswExpDate, according to a xsd template.
> A unmarshalling progress fails when trys to sett null value to a callendar
> object.
> *Exception:*
> {code}
> 2017-05-03 12:13:14,803 [http-nio-8443-exec-7] WARN
> org.apache.cxf.phase.PhaseInterceptorChain - Interceptor for
> {http://isds.czechpoint.cz/v20}CzeboxDataBoxAccess#{http://isds.czechpoint.cz/v20}GetPasswordInfo
> has thrown exception, unwinding now
> org.apache.cxf.interceptor.Fault: Unmarshalling Error:
> at
> org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:905)
> ~[cxf-rt-databinding-jaxb-3.1.6.jar:3.1.6]
> at
> org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:712)
> ~[cxf-rt-databinding-jaxb-3.1.6.jar:3.1.6]
> at org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:179)
> ~[cxf-rt-databinding-jaxb-3.1.6.jar:3.1.6]
> at
> org.apache.cxf.wsdl.interceptors.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:109)
> ~[cxf-rt-wsdl-3.1.6.jar:3.1.6]
> at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
> [cxf-core-3.1.6.jar:3.1.6]
> at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:798)
> [cxf-core-3.1.6.jar:3.1.6]
> at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1670)
> [cxf-rt-transports-http-3.1.6.jar:3.1.6]
> at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1551)
> [cxf-rt-transports-http-3.1.6.jar:3.1.6]
> at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1348)
> [cxf-rt-transports-http-3.1.6.jar:3.1.6]
> at
> org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
> [cxf-core-3.1.6.jar:3.1.6]
> at
> org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:651)
> [cxf-rt-transports-http-3.1.6.jar:3.1.6]
> at
> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
> [cxf-core-3.1.6.jar:3.1.6]
> at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
> [cxf-core-3.1.6.jar:3.1.6]
> at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:514)
> [cxf-core-3.1.6.jar:3.1.6]
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:423)
> [cxf-core-3.1.6.jar:3.1.6]
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:324)
> [cxf-core-3.1.6.jar:3.1.6]
> at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:277)
> [cxf-core-3.1.6.jar:3.1.6]
> at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
> [cxf-rt-frontend-simple-3.1.6.jar:3.1.6]
> at
> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:139)
> [cxf-rt-frontend-jaxws-3.1.6.jar:3.1.6]
> at com.sun.proxy.$Proxy750.getPasswordInfo(Unknown Source) [na:na]
> ...
> Caused by: javax.xml.bind.UnmarshalException: null
> at
> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:483)
> ~[jaxb-impl-2.2.11.jar:2.2.11]
> at
> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:417)
> ~[jaxb-impl-2.2.11.jar:2.2.11]
> at
> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:394)
> ~[jaxb-impl-2.2.11.jar:2.2.11]
> at
> org.apache.cxf.jaxb.JAXBEncoderDecoder.doUnmarshal(JAXBEncoderDecoder.java:855)
> ~[cxf-rt-databinding-jaxb-3.1.6.jar:3.1.6]
> at
> org.apache.cxf.jaxb.JAXBEncoderDecoder.access$100(JAXBEncoderDecoder.java:102)
> ~[cxf-rt-databinding-jaxb-3.1.6.jar:3.1.6]
> at
> org.apache.cxf.jaxb.JAXBEncoderDecoder$2.run(JAXBEncoderDecoder.java:894)
> ~[cxf-rt-databinding-jaxb-3.1.6.jar:3.1.6]
> at java.security.AccessController.doPrivileged(Native Method)
> ~[na:1.8.0_121]
> at
> org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:892)
> ~[cxf-rt-databinding-jaxb-3.1.6.jar:3.1.6]
> ... 155 common frames omitted
> Caused by: com.sun.istack.SAXParseException2:
> at
> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:740)
> ~[jaxb-impl-2.2.11.jar:2.2.11]
> at
> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleError(UnmarshallingContext.java:770)
> ~[jaxb-impl-2.2.11.jar:2.2.11]
> at
> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleError(UnmarshallingContext.java:766)
> ~[jaxb-impl-2.2.11.jar:2.2.11]
> at
> com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$12.parse(RuntimeBuiltinLeafInfoImpl.java:595)
> ~[jaxb-impl-2.2.11.jar:2.2.11]
> at
> com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$12.parse(RuntimeBuiltinLeafInfoImpl.java:568)
> ~[jaxb-impl-2.2.11.jar:2.2.11]
> at
> com.sun.xml.bind.v2.runtime.reflect.TransducedAccessor$CompositeTransducedAccessorImpl.parse(TransducedAccessor.java:245)
> ~[jaxb-impl-2.2.11.jar:2.2.11]
> at
> com.sun.xml.bind.v2.runtime.unmarshaller.LeafPropertyLoader.text(LeafPropertyLoader.java:65)
> ~[jaxb-impl-2.2.11.jar:2.2.11]
> at
> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.text(UnmarshallingContext.java:589)
> ~[jaxb-impl-2.2.11.jar:2.2.11]
> at
> com.sun.xml.bind.v2.runtime.unmarshaller.InterningXmlVisitor.text(InterningXmlVisitor.java:93)
> ~[jaxb-impl-2.2.11.jar:2.2.11]
> at
> com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.processText(StAXStreamConnector.java:338)
> ~[jaxb-impl-2.2.11.jar:2.2.11]
> at
> com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.handleEndElement(StAXStreamConnector.java:216)
> ~[jaxb-impl-2.2.11.jar:2.2.11]
> at
> com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:185)
> ~[jaxb-impl-2.2.11.jar:2.2.11]
> at
> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:415)
> ~[jaxb-impl-2.2.11.jar:2.2.11]
> ... 161 common frames omitted
> Caused by: javax.xml.bind.UnmarshalException:
> ... 174 common frames omitted
> Caused by: java.lang.IllegalArgumentException:
> at
> org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl$Parser.parseYear(Unknown
> Source) ~[xercesImpl-2.9.1.jar:na]
> at
> org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl$Parser.parse(Unknown
> Source) ~[xercesImpl-2.9.1.jar:na]
> at
> org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl.<init>(Unknown
> Source) ~[xercesImpl-2.9.1.jar:na]
> at
> org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl.newXMLGregorianCalendar(Unknown
> Source) ~[xercesImpl-2.9.1.jar:na]
> at
> com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$12.parse(RuntimeBuiltinLeafInfoImpl.java:592)
> ~[jaxb-impl-2.2.11.jar:2.2.11]
> {code}
> *Payload:*
> {code}
> <?xml version="1.0" encoding="utf-8"?>
> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema">
> <SOAP-ENV:Body>
> <p:GetPasswordInfoResponse xmlns:p="http://isds.czechpoint.cz/v20"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> <p:pswExpDate xsi:nil="true"/>
> <p:dbStatus>
> <p:dbStatusCode>0000</p:dbStatusCode>
> <p:dbStatusMessage>Provedeno úspěšně.</p:dbStatusMessage>
> </p:dbStatus>
> </p:GetPasswordInfoResponse>
> </SOAP-ENV:Body>
> </SOAP-ENV:Envelope>
> {code}
> *XSD chunk*
> {code}
> <xs:complexType name="tGetPasswInfoOutput">
> <xs:sequence>
> <xs:element minOccurs="0" maxOccurs="1" name="pswExpDate"
> nillable="true" type="xs:dateTime">
> <xs:annotation>
> <xs:documentation>datum a čas exiprace hesla</xs:documentation>
> </xs:annotation>
> </xs:element>
> <xs:element name="dbStatus" type="tns:tDbReqStatus" />
> </xs:sequence>
> </xs:complexType>
> {code}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)