tuscany-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Scott Kurz (JIRA)" <...@tuscany.apache.org>
Subject [jira] [Commented] (TUSCANY-3857) unwrapping OMElementWrapperHandler can't easily tolerate both non-valid data and minOccurs="0" data
Date Mon, 09 May 2011 22:06:03 GMT

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

Scott Kurz commented on TUSCANY-3857:
-------------------------------------

In r1101239, I committed a fix for this.   It first tries to use the wrapper element's schema
to guide the unwrapping.  If this fails, (most likely because of an operation wrapper child
not present in the payload wrapper), then we revert to unwrapping by groups of similar elements.
  

To do this, I introduced a new boolean:  isOmissible, which in schema terms is true if "minOccurs=0"

The net result continues to support invalid elements (e.g. in the case where we have a Java
that's similar to an existing WSDL but not actually generated from it).    Though a side effect
of this change is that I validate multiple consecutive child elements against the schema (i.e.
ensure that the corresponding ElementInfo isMany is "true").. there's probably a payload out
there for which the behavior is different then but I'm not giving it any more thought.

Finally... on the wrap path (not mentioned in my original problem writeup), I added some code
which will simply omit writing a null element into the wrapper in case nillable="false", i.e.
I prefer to wrap 'null' as xsi:nil="true" but will also simply not write anything into the
wrapper.   Though it may seem more symmetric to look at the isOmissible flag in this case,
I couldn't see making the behavior any different after doing so, so didn't.

> unwrapping OMElementWrapperHandler can't easily tolerate both non-valid data and minOccurs="0"
data
> ---------------------------------------------------------------------------------------------------
>
>                 Key: TUSCANY-3857
>                 URL: https://issues.apache.org/jira/browse/TUSCANY-3857
>             Project: Tuscany
>          Issue Type: Bug
>          Components: Java SCA Axis Binding Extension, Java SCA Databinding-SDO
>            Reporter: Scott Kurz
>            Priority: Minor
>
> In r1086760, I committed a change to OMElementWrapperHandler.getChildren so that it could
handle unwrapping a wrapper with "missing" children, i.e. children with schema def of minOccurs="0"
which aren't present as a child of the wrapper.
> The code we had would, after not finding a child of given QName, group the wrapper children
into like-QName-elements and then allow indexing into this list of groups.  
> This would prevent the next wrapper child from matching normally in the minOccurs="0"
case, so I removed that logic.
> However, now I've broken our handling of schema-invalid payloads, as seen in the module:
> testing\itest\ws\endpoint-references
> Will have to think about how to handle both cases.
> I don't recall us talking about it in awhile, but I think the handling of XSD-invalid
data is a significant feature of Tuscany that we should try not to break. 

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

Mime
View raw message