[ https://issues.apache.org/jira/browse/FLEX-33500?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13672898#comment-13672898 ]
Erik de Bruin commented on FLEX-33500: -------------------------------------- The artefacts created by the Jenkins 'release' build (https://builds.apache.org/job/flex-sdk_release/ws/out/) are for testing purposes only and are in no way supported for other uses. They are not official releases of the Apache Flex project. > 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