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] [Created] (FLEX-33500) XMLEncoder fails to encode WSDL simpleType union
Date Wed, 17 Apr 2013 14:51:16 GMT
Maurits Lourens created FLEX-33500:

             Summary: 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

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"/>
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,

        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

View raw message