flex-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Maurits Lourens (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (FLEX-33500) XMLEncoder fails to encode WSDL simpleType union
Date Mon, 03 Jun 2013 08:46:20 GMT

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

Maurits Lourens commented on FLEX-33500:
----------------------------------------

Thanks for the link, I can now at least test our software before the release of 4.10.0. Do
you now when the release is planned?
                
> XMLEncoder fails to encode WSDL simpleType union
> ------------------------------------------------
>
>                 Key: FLEX-33500
>                 URL: https://issues.apache.org/jira/browse/FLEX-33500
>             Project: Apache Flex
>          Issue Type: Bug
>          Components: RPC: General, RPC: WebService
>    Affects Versions: Adobe Flex SDK 3.3 (Release)
>            Reporter: Maurits Lourens
>            Assignee: Justin Mclean
>              Labels: easyfix
>
> The XMLEncoder can not encode simpleTypes with a definitionChild Union. 
> Steps to reproduce: 
> 1. Create a WSDL with a request containing a simpleType, with a union child, like this:
> <simpleType name="dateTimeOrEmpty">
> 	<union memberTypes="dateTime tns:emptyString"/>
> </simpleType>
> 2. Create a sample project which uses this call to do send a date to the server.
> Expected behavior: the dateTime should be send to the server.
> Actual behavior: the dateTime object is always empty (not nill). 
> The cause of this bug can be found inside the XMLEncoder. Around line 1340 you will find
the function encodeSimpleType:
> public function encodeSimpleType(definition:XML, parent:XML, name:QName, value:*, restriction:XML
= null):void
>     {
>         var definitionChild:XML = getSingleElementFromNode(definition,
>                             constants.restrictionQName,
>                             constants.listQName,
>                             constants.unionQName);
>         if (definitionChild.name() == constants.restrictionQName)
>         {    
>             // <restriction>
>             encodeSimpleRestriction(definitionChild, parent, name, value);
>         }
>         else if (definitionChild.name() == constants.listQName)
>         {
>             // <list>
>             encodeSimpleList(definitionChild, parent, name, value, restriction);
>         }
>         else if (definitionChild.name() == constants.listQName)
>         {
>             // <union>
>             encodeSimpleUnion(definitionChild, parent, name, value, restriction);
>         }
>     }
> If you look at this function, you see that the last else if statement is exactly the
same as the previous, so you will never execute the code inside this statement, which is needed
to encode union simpleTypes. To fix this, you should change it to something like this:
>  else if (definitionChild.name() == constants.unionQName)
>  {
>        // <union>
>        encodeSimpleUnion(definitionChild, parent, name, value, restriction);
>  }

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message