You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by ji...@apache.org on 2004/05/20 16:57:01 UTC

[jira] Commented: (AXIS-429) Incorrect code generated from xsd:choice element in WSDL

The following comment has been added to this issue:

     Author: joel yu
    Created: Thu, 20 May 2004 7:55 AM
       Body:
I did not have the luxury to change the xsd, so I worked around this issue by doing the following:

make an interface as follow:
public interface ChoiceSupport {

  public boolean isChoicePart(String propertyName);
}

have all the Objects that contains xsd:choice implement this interface.

then in org.apache.axis.encoding.ser.BeanSerializer(axis 1.1 code), add the following code at line 209(after call to propertyDescriptor[i].get(value); ):

if (value instanceof org.apache.axis.xsd.ChoiceSupport) {
  ChoiceSupport choice = (ChoiceSupport) value;
  if(choice.isChoicePart(propertyDescriptor[i].getName())) {
    if(propValue == null) continue;
  }
}


now, this work around involves the user know not to set any other choice item when one is already set, ChoiceSupport can be extended to make it more userful.
---------------------------------------------------------------------
View this comment:
  http://issues.apache.org/jira/browse/AXIS-429?page=comments#action_35641

---------------------------------------------------------------------
View the issue:
  http://issues.apache.org/jira/browse/AXIS-429

Here is an overview of the issue:
---------------------------------------------------------------------
        Key: AXIS-429
    Summary: Incorrect code generated from xsd:choice element in WSDL
       Type: Bug

     Status: Open

    Project: Axis
 Components: 
             WSDL processing
   Versions:
             current (nightly)

   Assignee: Axis Developers Mailing List
   Reporter: Doug Bitting

    Created: Wed, 9 Oct 2002 4:00 AM
    Updated: Thu, 20 May 2004 7:55 AM
Environment: Operating System: Windows NT/2K
Platform: PC

Description:
In one of the test cases (test\wsdl\types\ComprehensiveTypes.wsdl), you'll find 
the following schema definition:

---- snip here ----
      <xsd:complexType name="complexChoice">
        <xsd:choice>
          <xsd:element name="choiceA" type="xsd:int"/>
          <xsd:element name="choiceB" type="xsd:string"/>
          <xsd:element name="choiceC" type="xsd:string"/>
        </xsd:choice>
      </xsd:complexType>
---- snip here ----

When run through WSDL2Java, it generates the attached ComplexChoice.java file.  
This compiles and runs fine.  However, the SOAP request generated with this 
ends up with something like the following XML fragment (assuming an element 
named complexChoice):

---- snip here ----
<complexChoice>
  <choiceA>1</choiceA>
  <choiceB xsi:null="true"/>
  <choiceC xsi:null="true"/>
</complexChoice>
---- snip here ----

The above is not valid XML.


---------------------------------------------------------------------
JIRA INFORMATION:
This message is automatically generated by JIRA.

If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa

If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira