When I tried wsdl2java tool to generate this wrapper element and the output
is  a doc-lit-bare style method :
<xsd:element name="hello">
        <xsd:complexType>
          <xsd:complexContent>
            <xsd:extension base=""tns:baseType">
              <xsd:sequence>
              <xsd:element name="id"
              type="tns:idType" minOccurs="1" maxOccurs="1" />
              <xsd:choice>
              <xsd:element name="updateName"
              type="tns:newNameType" maxOccurs="1"
              minOccurs="0" />
              <xsd:element name="newName" type="tns:newNameType"
minOccurs="0" maxOccurs="1" />
                </xsd:choice>
              </xsd:sequence>
            </xsd:extension>
          </xsd:complexContent>
        </xsd:complexType>
      </xsd:element>

CXF takes this is a bare style if it finds there is <xsd:choice> nested in
<xsd:sequence> and this breaks the rule(v) in jaxws sepc:
A WSDL operation qualifies for wrapper style mapping only if the following
criteria are met:
(i) The operation’s input and output messages (if present) each contain
only a single part
(ii) The input message part refers to a global element declaration whose
local name is equal to the operation name
(iii) The output message (if present) part refers to a global element
declaration
(iv) The elements referred to by the input and output message(if present)
parts (henceforth referred to as wrapper elements) are both complex types
defined using the xsd:sequence compositor
(v) The wrapper elements only contain child elements, they MUST not contain
other structures such as wildcards (element or attribute), xsd:choice,
substitution groups (element references are not permitted) or attributes;
furthermore, they MUST not be nillable

Do you think the rule(v) should be interpreted to there should be only
<xsd:squence> defined for complex type and <xsd:choice> is not allowed here
like :
<xsd:element name="p">
  <xsd:complexType>
    <xsd:choice>
      <xsd:element name="choice1" maxOccurs="1" minOccurs="0"/>
      <xsd:element name="choice2  maxOccurs="1" minOccurs="1"/>.
  </xsd:complexType>
</xsd:element>

then <xsd:sequence> child element <xsd:choice> is allowed for wrapped style
?

Cheers,
Jim



Cheers,
Jim

Reply via email to