Uploaded image for project: 'CXF'
  1. CXF
  2. CXF-7879

Unmarshalling Error: null

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Information Provided
    • 3.1.12
    • Invalid
    • JAXB Databinding
    • None
    • Unknown

    Description

      One of the methods of my SOAP web service has field defined as:

      <xs:element name="value" type="xs:decimal" minOccurs="1" maxOccurs="1" nillable="false"/>
      

      When I call web service with non-number value (e.g. 'TEXT'), it gives Fault response:

      <soap:Fault>
      <soap:Code>
      <soap:Value>soap:Sender</soap:Value>
      </soap:Code>
      <soap:Reason>
      <soap:Text xml:lang="en">Unmarshalling Error: null</soap:Text>
      </soap:Reason>
      </soap:Fault>
      

      Stacktrace:

      org.apache.cxf.interceptor.Fault: Unmarshalling Error: null 
      at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:908) ~[cxf-rt-databinding-jaxb-3.1.12.jar:3.1.12]
      at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:714) ~[cxf-rt-databinding-jaxb-3.1.12.jar:3.1.12]
      at org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:179) ~[cxf-rt-databinding-jaxb-3.1.12.jar:3.1.12]
      at org.apache.cxf.wsdl.interceptors.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:194) ~[cxf-rt-wsdl-3.1.12.jar:3.1.12]
      at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308) [cxf-core-3.1.12.jar:3.1.12]
      at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) [cxf-core-3.1.12.jar:3.1.12]
      ...
      Caused by: java.lang.NumberFormatException
      at java.math.BigDecimal.<init>(BigDecimal.java:494) ~[?:1.8.0_131]
      at java.math.BigDecimal.<init>(BigDecimal.java:383) ~[?:1.8.0_131]
      at java.math.BigDecimal.<init>(BigDecimal.java:806) ~[?:1.8.0_131]
      at com.sun.xml.bind.DatatypeConverterImpl._parseDecimal(DatatypeConverterImpl.java:150) ~[jaxb-impl-2.2.11.jar:2.2.11]
      at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$22.parse(RuntimeBuiltinLeafInfoImpl.java:804) ~[jaxb-impl-2.2.11.jar:2.2.11]
      at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$22.parse(RuntimeBuiltinLeafInfoImpl.java:802) ~[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.ValidatingUnmarshaller.text(ValidatingUnmarshaller.java:130) ~[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]
      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:857) ~[cxf-rt-databinding-jaxb-3.1.12.jar:3.1.12]

      For comparison, when the field is defined as:

      <xs:element name="value" type="xs:unsignedShort" default="1" minOccurs="1" maxOccurs="1" nillable="false"/>
      

      and I call web service with non-number value, it gives the following response:

      <soap:Fault>
      <soap:Code>
      <soap:Value>soap:Sender</soap:Value>
      </soap:Code>
      <soap:Reason>
      <soap:Text xml:lang="en">Unmarshalling Error: Not a number: TEXT</soap:Text>
      </soap:Reason>
      </soap:Fault>
      

      Stacktrace:

      org.apache.cxf.interceptor.Fault: Unmarshalling Error: Not a number: TEXT 
      at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:908) ~[cxf-rt-databinding-jaxb-3.1.12.jar:3.1.12]
      at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:714) ~[cxf-rt-databinding-jaxb-3.1.12.jar:3.1.12]
      at org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:179) ~[cxf-rt-databinding-jaxb-3.1.12.jar:3.1.12]
      at org.apache.cxf.wsdl.interceptors.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:194) ~[cxf-rt-wsdl-3.1.12.jar:3.1.12]
      at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308) [cxf-core-3.1.12.jar:3.1.12]
      at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) [cxf-core-3.1.12.jar:3.1.12]
      ...
      Caused by: java.lang.NumberFormatException: Not a number: TEXT
      at com.sun.xml.bind.DatatypeConverterImpl._parseInt(DatatypeConverterImpl.java:124) ~[jaxb-impl-2.2.11.jar:2.2.11]
      at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$17.parse(RuntimeBuiltinLeafInfoImpl.java:738) ~[jaxb-impl-2.2.11.jar:2.2.11]
      at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$17.parse(RuntimeBuiltinLeafInfoImpl.java:736) ~[jaxb-impl-2.2.11.jar:2.2.11]
      at com.sun.xml.bind.v2.runtime.unmarshaller.TextLoader.text(TextLoader.java:69) ~[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.ValidatingUnmarshaller.text(ValidatingUnmarshaller.java:130) ~[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]
      at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:394) ~[jaxb-impl-2.2.11.jar:2.2.11]

      Is it possible that response for decimal was more detailed, as for unsignedShort?

      Attachments

        Activity

          People

            ffang Freeman Yue Fang
            Pawel Trela Pawel Trela
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: