[
https://issues.apache.org/jira/browse/CXF-2695?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12854782#action_12854782
]
Daniel Kulp edited comment on CXF-2695 at 4/8/10 3:07 AM:
----------------------------------------------------------
Soap-encoding pretty much always allows xsi:nil on pretty much any element.
The schema is kind of just a hint. Thus, in this case, it's easiest to just
do something like:
BeanType:
{code}
if (!alwaysAllowNillables() && !propertyTypeInfo.isNillable(name)) {
....
protected boolean alwaysAllowNillables() {
return false;
}
{code}
and in StructType, override it to return true.
was (Author: dkulp):
Soap-encoding pretty much always allows xsi:nil on pretty much any element.
The schema is kind of just a hint. Thus, in this case, it's easiest to just
do something like:
BeanType:
{code}
if (!alwaysAllowNillables() && !propertyTypeInfo.isNillable(name)) {
....
protected boolean alwaysAllowNillables() {
return false;
}
{code}
and in StructType, override it to return false.
> NullPointerException when reading a soap encoded struct with a nested element
> that's nil
> ----------------------------------------------------------------------------------------
>
> Key: CXF-2695
> URL: https://issues.apache.org/jira/browse/CXF-2695
> Project: CXF
> Issue Type: Bug
> Components: Aegis Databinding
> Affects Versions: 2.2.6
> Reporter: Marinó A. Jónsson
>
> When reading a simple struct that has a nested (unqualified) element set to
> nil a NullPointerException is thrown:
> {code}
> java.lang.NullPointerException
> at
> org.apache.cxf.aegis.type.basic.BeanTypeInfo.isNillable(BeanTypeInfo.java:384)
> at
> org.apache.cxf.aegis.type.basic.BeanType.readObject(BeanType.java:165)
> {code}
> This should be easily replicated by using the following xml for the
> StructTypeTest.testSimpleStruct() test:
> {code}
> <b:shipping xmlns:b="urn:Bean"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> <street>1234 Riverside Drive</street>
> <city>Gainesville</city>
> <state>FL</state>
> <zip xsi:nil="true"/>
> </b:shipping>
> {code}
> Apparently the problem stems from the fact that when the element is nil it's
> handled without involving the StructType (which takes care of "qualifying"
> the element name in other cases) - the unqualified name of the element is
> sent to the BeanTypeInfo.isNillable() method, which fails to find a Type for
> the name as a result.
> I'm not sure how to solve this in a "clean" way - maybe extracting the "else"
> block that handles nil elements in BeanType.readObject to a seperate
> overridable method thereby giving StructType a chance to qualify the name
> before it's sent to the BeanTypeInfo.isNillable() method?
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.