cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Daniel Kulp (JIRA)" <j...@apache.org>
Subject [jira] Commented: (CXF-3291) Unmarshalling null value for java.lang.Long generates an empty string exception
Date Mon, 07 Feb 2011 18:00:58 GMT

    [ https://issues.apache.org/jira/browse/CXF-3291?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12991497#comment-12991497
] 

Daniel Kulp commented on CXF-3291:
----------------------------------


If you modify the WSDL like that, the client is no longer using the same contract as the server
and this type of behavior is expected.   In particular, the server doesn't think the "id"
field is nillable, thus, it won't check for the xsi:nil attribute.   It shouldn't be there.
    I think it works with Metro as they have JAXB configured to ignore certain invalid message
constructs where we turn on some of the errors as it's important (we feel) to let people know
when something isn't working correctly or as expected. 

In anycase, if you modify the FilterDTO class on the server side to have:
        @XmlElement(nillable = true)
       	private Long id;

It runs fine as the server side will now expect it to have an  xsi:nil attribute and will
process it accordingly.




> Unmarshalling null value for java.lang.Long generates an empty string exception
> -------------------------------------------------------------------------------
>
>                 Key: CXF-3291
>                 URL: https://issues.apache.org/jira/browse/CXF-3291
>             Project: CXF
>          Issue Type: Wish
>          Components: JAXB Databinding
>    Affects Versions: 2.3.1
>         Environment: Microsoft Windows 7 Enterprise, jdk1.6.0_23, JBoss 6.0 final which
contains 2.3.1 version of CXF. 
> Intel Dual Core, 3GB RAM
>            Reporter: Victor-Adrian Ichim
>             Fix For: NeedMoreInfo
>
>         Attachments: cxf3291_eclipse_projects.zip
>
>
> java.lang.Long is not unmarshalled (while primitive long works)
> Steps to reproduce:
> 1. Create a RPC-LITERAL web service on a stateless session bean with a single method
like this: 
> public ResultDTO compute(FilterDTO filter) 
> FilterDTO must contain a java.lang.Long id; property.
> Annotated FilterDTO with @XmlAccessorType(XmlAccessType.FIELD)
> 2. Generate the wsdl file with org.apache.cxf.tools.java2ws.JavaToWS
> 3. Deploy the ear by including the wsdl file also (wsdlLocation is specified on the bean
for @WebService)
> 4. Start the server and use a client to call the method. Having RPC-LITERAL the parameter
must be not null in the request.
> So FilterDTO must be instantiated. Do not assign any value to the id field (let it null).
> Result:
> 16:40:36,317 INFO  [STDOUT] DefaultValidationEventHandler: [ERROR]: For input string:
""
> 16:40:36,317 INFO  [STDOUT]      Location: line 1
> 16:40:36,323 WARN  [org.apache.cxf.phase.PhaseInterceptorChain] Interceptor for {http://ws.ro/}ServiceFacadeService#{http://ws.ro/}compute
has thrown exception, unwinding now: org.apache.cxf.interceptor.Fault: Unmarshalling Error:
For input
>  string: ""
>         at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:787)
[:2.3.1]
>         at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:628)
[:2.3.1]
>         at org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:133) [:2.3.1]
> ........
> Caused by: javax.xml.bind.UnmarshalException
>  - with linked exception:
> [javax.xml.bind.UnmarshalException: For input string: ""
>  - with linked exception:
> [java.lang.NumberFormatException: For input string: ""]]
>         at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:425)
[:
> 2.2]
>         at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:362)
[:2.2]
>         at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:339)
[:2.2]
>         at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:764)
[:2.3.1]
> Caused by: javax.xml.bind.UnmarshalException: For input string: ""
>  - with linked exception:
> [java.lang.NumberFormatException: For input string: ""]
>         ... 46 more
> Caused by: java.lang.NumberFormatException: For input string: ""
>         at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
[:1.6.0_23]
>         at java.lang.Long.parseLong(Long.java:431) [:1.6.0_23]
>         at java.lang.Long.valueOf(Long.java:525) [:1.6.0_23]
>         at com.sun.xml.bind.DatatypeConverterImpl._parseLong(DatatypeConverterImpl.java:143)
[:2.2]

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message