From: <ani...@jb...> - 2005-05-24 16:15:22
|
wscompile handles arrays in a special way. It isolates the array types even when the base type is a Java wrapper types like Integer into a different namespace and then imports them into the target namespace, as shown below. | package org.jboss.test.ws.tools.sei; | | import org.jboss.test.ws.jaxb.sei.Base; | | import java.rmi.Remote; | import java.rmi.RemoteException; | | /** | * An SEI with an array type | * | * @author <mailto:Ani...@jb...>Anil Saldhana | * @since Nov 3, 2004 | */ | public interface ArrayInterface extends Remote | { | public void customMethod(Base base, Integer[] a) throws RemoteException, SomeException; | } | The wsdl that is generated is: | <?xml version="1.0" encoding="UTF-8"?> | | <definitions name="ArrayInterfaceService" targetNamespace="http://org.jboss.ws" xmlns:tns="http://org.jboss.ws" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns2="http://arrays/java/lang"> | <types> | <schema targetNamespace="http://arrays/java/lang" xmlns:tns="http://arrays/java/lang" xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://www.w3.org/2001/XMLSchema"> | <import namespace="http://org.jboss.ws"/> | <complexType name="IntegerArray"> | <sequence> | <element name="value" type="int" nillable="true" minOccurs="0" maxOccurs="unbounded"/></sequence></complexType></schema> | <schema targetNamespace="http://org.jboss.ws" xmlns:tns="http://org.jboss.ws" xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://www.w3.org/2001/XMLSchema"> | <import namespace="http://arrays/java/lang"/> | <complexType name="Base"> | <sequence> | <element name="a" type="int"/> | <element name="b" type="int"/></sequence></complexType> | <complexType name="SomeException"> | <sequence/></complexType> | <element name="SomeException" type="tns:SomeException"/></schema></types> | <message name="ArrayInterface_customMethod"> | <part name="Base_1" type="tns:Base"/> | <part name="arrayOfInteger_2" type="ns2:IntegerArray"/></message> | <message name="ArrayInterface_customMethodResponse"/> | <message name="SomeException"> | <part name="SomeException" element="tns:SomeException"/></message> | <portType name="ArrayInterface"> | <operation name="customMethod" parameterOrder="Base_1 arrayOfInteger_2"> | <input message="tns:ArrayInterface_customMethod"/> | <output message="tns:ArrayInterface_customMethodResponse"/> | <fault name="SomeException" message="tns:SomeException"/></operation></portType> | <binding name="ArrayInterfaceBinding" type="tns:ArrayInterface"> | <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/> | <operation name="customMethod"> | <soap:operation soapAction=""/> | <input> | <soap:body use="literal" namespace="http://org.jboss.ws"/></input> | <output> | <soap:body use="literal" namespace="http://org.jboss.ws"/></output> | <fault name="SomeException"> | <soap:fault name="SomeException" use="literal"/></fault></operation></binding> | <service name="ArrayInterfaceService"> | <port name="ArrayInterfacePort" binding="tns:ArrayInterfaceBinding"> | <soap:address location="REPLACE_WITH_ACTUAL_URL"/></port></service></definitions> | As you can see, wscompile has special array handling. When there are custom user types and arrays of them, it is similar. | /* | * JBoss, the OpenSource J2EE webOS | * | * Distributable under LGPL license. | * See terms of license at gnu.org. | */ | | package org.jboss.test.ws.tools.jbws_161.custom; | | /** | * Remote interface for Hello. | */ | public interface HelloCustomRemote | extends java.rmi.Remote | { | | public String helloString(String name) | throws java.rmi.RemoteException; | | public HelloObj helloBean(HelloObj bean) | throws java.rmi.RemoteException; | | public HelloObj[] helloArray(HelloObj[] query) | throws java.rmi.RemoteException; | | } | | | <?xml version="1.0" encoding="UTF-8"?> | | <definitions name="HelloCustomService" | targetNamespace="http://org.jboss/types" | xmlns:tns="http://org.jboss/types" | xmlns="http://schemas.xmlsoap.org/wsdl/" | xmlns:ns2="http://org.jboss/types/arrays/org/jboss/test/ws/tools/jbws_161/custom" | xmlns:xsd="http://www.w3.org/2001/XMLSchema" | xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> | <types> | <schema targetNamespace="http://org.jboss/types/arrays/org/jboss/test/ws/tools/jbws_161/custom" | xmlns:tns="http://org.jboss/types/arrays/org/jboss/test/ws/tools/jbws_161/custom" | xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/" | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | xmlns:ns2="http://org.jboss/types" | xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" | xmlns="http://www.w3.org/2001/XMLSchema"> | <import namespace="http://org.jboss/types"/> | <complexType name="HelloObjArray"> | <sequence> | <element name="value" type="ns2:HelloObj" nillable="true" minOccurs="0" maxOccurs="unbounded"/> | </sequence> | </complexType> | </schema> | <schema targetNamespace="http://org.jboss/types" | xmlns:tns="http://org.jboss/types" | xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/" | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" | xmlns="http://www.w3.org/2001/XMLSchema"> | | <import namespace="http://org.jboss/types/arrays/org/jboss/test/ws/tools/jbws_161/custom"/> | <complexType name="HelloObj"> | <sequence> | <element name="msg" type="string" nillable="true"/> | </sequence> | </complexType> | </schema> | </types> | <message name="HelloCustomRemote_helloArray"> | <part name="arrayOfHelloObj_1" type="ns2:HelloObjArray"/> | </message> | <message name="HelloCustomRemote_helloArrayResponse"> | <part name="result" type="ns2:HelloObjArray"/> | </message> | <message name="HelloCustomRemote_helloBean"> | <part name="HelloObj_1" type="tns:HelloObj"/> | </message> | <message name="HelloCustomRemote_helloBeanResponse"> | <part name="result" type="tns:HelloObj"/> | </message> | <message name="HelloCustomRemote_helloString"> | <part name="String_1" type="xsd:string"/> | </message> | <message name="HelloCustomRemote_helloStringResponse"> | <part name="result" type="xsd:string"/> | </message> | <portType name="HelloCustomRemote"> | <operation name="helloArray" parameterOrder="arrayOfHelloObj_1"> | <input message="tns:HelloCustomRemote_helloArray"/> | <output message="tns:HelloCustomRemote_helloArrayResponse"/> | </operation> | <operation name="helloBean" parameterOrder="HelloObj_1"> | <input message="tns:HelloCustomRemote_helloBean"/> | <output message="tns:HelloCustomRemote_helloBeanResponse"/> | </operation> | <operation name="helloString" parameterOrder="String_1"> | <input message="tns:HelloCustomRemote_helloString"/> | <output message="tns:HelloCustomRemote_helloStringResponse"/> | </operation> | </portType> | <binding name="HelloCustomRemoteBinding" type="tns:HelloCustomRemote"> | <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/> | <operation name="helloArray"> | <soap:operation soapAction=""/> | <input> | <soap:body use="literal" namespace="http://org.jboss/types"/> | </input> | <output> | <soap:body use="literal" namespace="http://org.jboss/types"/> | </output> | </operation> | <operation name="helloBean"> | <soap:operation soapAction=""/> | <input> | <soap:body use="literal" namespace="http://org.jboss/types"/> | </input> | <output> | <soap:body use="literal" namespace="http://org.jboss/types"/> | </output> | </operation> | <operation name="helloString"> | <soap:operation soapAction=""/> | <input> | <soap:body use="literal" namespace="http://org.jboss/types"/> | </input> | <output> | <soap:body use="literal" namespace="http://org.jboss/types"/> | </output> | </operation> | </binding> | <service name="HelloCustomService"> | <port name="HelloCustomRemotePort" binding="tns:HelloCustomRemoteBinding"> | <soap:address location="REPLACE_WITH_ACTUAL_URL"/> | </port> | </service> | </definitions> | So this is a task that needs to be implemented with care and solid testcases. View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3878933#3878933 Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3878933 |