I am trying to write an operation in WSDL that returns a list. Essentially, I 
want wsdl2java to generate the following method for me:

    public List<AccountSummary> getAccountSummaries();

How do I do this? I tried different things, but I always end up with wsdl2java 
creating a wrapper over the list and returning this wrapper, e.g.

    public AccountSummaries getAccountSummaries();

where AccountSummaries wraps a List<AccountSummary>.

Here's my WSDL. Can someone show me how to change it so that the 
getAccountSummaries() method returns an unwrapped list?

<definitions
    targetNamespace="http://myapp.org/account.wsdl";
    xmlns="http://schemas.xmlsoap.org/wsdl/";
    xmlns:acnt="http://myapp.org/account.xsd";
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
    xmlns:tns="http://myapp.org/account.wsdl";>

    <types>
        <xsd:schema
            targetNamespace="http://myapp.org/account.xsd";
            elementFormDefault="qualified"
            xmlns:tns="http://myapp.org/account.xsd";
            xmlns:xsd="http://www.w3.org/2001/XMLSchema";>

            <xsd:element name="AccountSummaries" type="tns:AccountSummaries" />

            <xsd:complexType name="AccountSummaries">
                <xsd:sequence>
                    <xsd:element name="AccountSummary" type="tns:AccountSummary"
                        minOccurs="0" maxOccurs="unbounded" />
                </xsd:sequence>
            </xsd:complexType>

            <xsd:complexType name="AccountSummary">
                <xsd:sequence>
                    <xsd:element name="id" type="xsd:long" />
                    <xsd:element name="cash" type="xsd:decimal" />
                </xsd:sequence>
            </xsd:complexType>

        </xsd:schema>
    </types>

    <message name="AccountSummariesRequest" />

    <message name="AccountSummariesResponse">
        <part name="AccountSummaries" element="acnt:AccountSummaries" />
    </message>

    <portType name="AccountProvider">
        <operation name="GetAccountSummaries">
            <input message="tns:AccountSummariesRequest" />
            <output message="tns:AccountSummariesResponse" />
        </operation>
    </portType>

    <binding name="AccountBinding" type="tns:AccountProvider">
        <soap:binding style="document" 
transport="http://schemas.xmlsoap.org/soap/http"; />
        <operation name="GetAccountSummaries">
            <soap:operation soapAction="GetAccountSummaries" />
            <input>
                <soap:body use="literal" />
            </input>
            <output>
                <soap:body use="literal" />
            </output>
        </operation>
    </binding>

    <service name="AccountService">
        <port name="AccountPort" binding="tns:AccountBinding">
            <soap:address 
location="http://localhost:8080/myapp/services/account"; />
        </port>
    </service>

</definitions>


Thanks.
Naresh

Reply via email to