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

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

We need this fix very urgently, so I'm wondering if it's possible to get a 
pre-release of the 4.10.0 SDK. Can I access Jenkins to download an compiled 
version of the SDK? I have no time to set I an environment to compile the SDK 
myself...
                
> 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

Reply via email to