You are viewing a plain text version of this content. The canonical link for it is here.
Posted to muse-user@ws.apache.org by Manolo Gomez Lopez <pe...@gmail.com> on 2007/04/16 14:00:41 UTC

Generating a capability that accepts a byte[] as parameter

Hi,

    I have a WSDL with the following definition of an operation (I'm pasting
only the relevant parts):

          <xsd:element name="TransformRequest">
                <xsd:annotation>
                    <xsd:documentation>Solicitud de
transformacion</xsd:documentation>
                </xsd:annotation>
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="documentToTransform"
type="xsd:integer">
                            <xsd:annotation>
                                <xsd:documentation>Documento a
transformar</xsd:documentation>
                            </xsd:annotation>
                        </xsd:element>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>


<wsdl:message name="TransformRequest">
        <wsdl:part name="TransformRequest" element="tns:TransformRequest"/>
    </wsdl:message>

<wsdl:operation name="Transform">
            <wsdl:input wsa:Action="
http://test.net/testing/services/TransformationService/Transform"
name="TransformRequest" message="tns:TransformRequest"/>
            <wsdl:output wsa:Action="
http://test.net/testing/services/TransformationService/TransformResponse"
name="TransformResponse" message="tns:TransformResponse"/>
            <wsdl:fault name="TransformFailedFault"
message="tns:TransformFailedFault"/>
            <wsdl:fault name="ResourceUnknownFault"
message="tns:ResourceUnknownFault"/>
            <wsdl:fault name="ResourceUnavailableFault"
message="tns:ResourceUnavailableFault"/>
        </wsdl:operation>


I want this WSDL to represent an operation named    void Transform (byte[])
using base64 as the mechanism for encoding binary data. When I execute
wsdl2java for generating the server part of the service, it generates the
following code:

    public void transform(Element documentToTransform) throws Exception    {
        //TODO implement transform
        throw new RuntimeException("Unimplemented Method: transform");
    }


I want Apache Muse to generate a prototype like this:    public void
transform(byte[] documentToTransform) throws Exception or anything that
treats the received base64 as an array of bytes. Somewhere in the
documentation it is said that Apache Muse uses Element as a rerpresentation
of a parameter when the element has AnyType or void types...

Does anybody knows how to get a service that has an capability that gets a
byte[] as parameter?

Greets,

Re: Generating a capability that accepts a byte[] as parameter

Posted by Manolo Gomez Lopez <pe...@gmail.com>.
Sorry I correct myself, the correct definition for the element
TransformRequest is the following (the previous was a definition used for
testing the correctness of wsdl2java), please use this definitions  as a
statement of the problem:


Hi,

    I have a WSDL with the following definition of an operation (I'm pasting
only the relevant parts):

          <xsd:element name="TransformRequest">
                <xsd:annotation>
                    <xsd:documentation>Solicitud de
transformacion</xsd:documentati
>
> on>
>                 </xsd:annotation>
>                 <xsd:complexType>
>                     <xsd:sequence>
>                         <xsd:element name="documentToTransform"
> type="xsd:binaryBase64">
>                             <xsd:annotation>
>                                 <xsd:documentation>Documento a
> transformar</xsd:documentation>
>                             </xsd:annotation>
>                         </xsd:element>
>                     </xsd:sequence>
>                 </xsd:complexType>
>             </xsd:element>
>
>
> <wsdl:message name="TransformRequest">
>         <wsdl:part name="TransformRequest"
> element="tns:TransformRequest"/>
>     </wsdl:message>
>
> <wsdl:operation name="Transform">
>             <wsdl:input wsa:Action="
> http://test.net/testing/services/TransformationService/Transform"
> name="TransformRequest" message="tns:TransformRequest"/>
>             <wsdl:output wsa:Action="
> http://test.net/testing/services/TransformationService/TransformResponse"
> name="TransformResponse" message="tns:TransformResponse"/>
>             <wsdl:fault name="TransformFailedFault"
> message="tns:TransformFailedFault"/>
>             <wsdl:fault name="ResourceUnknownFault"
> message="tns:ResourceUnknownFault"/>
>             <wsdl:fault name="ResourceUnavailableFault"
> message="tns:ResourceUnavailableFault"/>
>         </wsdl:operation>
>
>
> I want this WSDL to represent an operation named    void Transform
> (byte[])  using base64 as the mechanism for encoding binary data. When I
> execute wsdl2java for generating the server part of the service, it
> generates the following code:
>
>     public void transform(Element documentToTransform) throws Exception
> {
>         //TODO implement transform
>         throw new RuntimeException("Unimplemented Method: transform");
>     }
>
>
> I want Apache Muse to generate a prototype like this:    public void
> transform(byte[] documentToTransform) throws Exception or anything that
> treats the received base64 as an array of bytes. Somewhere in the
> documentation it is said that Apache Muse uses Element as a representation
> of a parameter when the element has AnyType or void types...
>
> Does anybody knows how to get a service that has an capability that gets a
> byte[] as parameter?
>
> Greets,
>

RE: Generating a capability that accepts a byte[] as parameter

Posted by Daniel Jemiolo <da...@us.ibm.com>.
I think the simple answer is that the type doesn't get added to 
wsdl2java's built-in type map, so it's just another complex type. I agree 
that it did originally do this - I'm guessing that it was removed at some 
point because the XSD-to-Java mapping was put in muse-util-xml, and we 
didn't want muse-util-xml to have a dependency on muse-wsa-soap. However, 
now that the mapping is done in muse-tools, this is irrelevant (muse-tools 
depends on pretty much everything). I will look at the code and try to add 
this back.

Dan



<le...@bt.com> wrote on 04/17/2007 10:18:35 AM:

> Just to add to this topic my 2 fold question:
> 
> 1) why is it that a function or variable specified to be of type
> EndpointReference always ends up being declared as an Element (I believe
> that this wasn't the case a long time ago). When defined in the wsdl as:
> <xsd:element name="epr" type="wsa:EndpointReference"
> maxOccurs="unbounded"/>
> The same is true for this definition as well:
> <xsd:element ref="wsa:EndpointReference" maxOccurs="unbounded"/>
> 
> 2) Given the definition below, shouldn't I be able to get a function
> declared that returns a list of EndpointReferences (or Elements given
> the current implementation)?
> 
> <xsd:element name="ListResourcesOperation" />
>          <xsd:element
> name="ListResourcesOperationResponse">
>             <xsd:complexType>
>                <xsd:sequence>
>                    <xsd:element name="epr"
> type="wsa:EndpointReference" maxOccurs="unbounded"/>
>                </xsd:sequence>
>             </xsd:complexType>
>          </xsd:element>
> 
> 
> I'm just slightly confused.
> 
> /Lenni
> 
> 
> -----Original Message-----
> From: Daniel Jemiolo [mailto:danjemiolo@us.ibm.com] 
> Sent: 16 April 2007 18:27
> To: muse-user@ws.apache.org
> Subject: Re: Generating a capability that accepts a byte[] as parameter
> 
> I think the problem is that the collection of built-in serializers
> doesn't 
> include support for byte/byte[]. I'm going to add this so that you can 
> make parameters like this:
> 
>         <xsd:element name="MyParam" type="xsd:byte" 
> maxOccurs="unbounded"/>
> 
> and get a byte[] parameter (or return type). This change will show up in
> 
> tonight's nightly build.
> 
> Dan
> 
> 
> 
> "Manolo Gomez Lopez" <pe...@gmail.com> wrote on 04/16/2007
> 08:00:41 
> AM:
> 
> > Hi,
> > 
> >     I have a WSDL with the following definition of an operation (I'm 
> pasting
> > only the relevant parts):
> > 
> >           <xsd:element name="TransformRequest">
> >                 <xsd:annotation>
> >                     <xsd:documentation>Solicitud de
> > transformacion</xsd:documentation>
> >                 </xsd:annotation>
> >                 <xsd:complexType>
> >                     <xsd:sequence>
> >                         <xsd:element name="documentToTransform"
> > type="xsd:integer">
> >                             <xsd:annotation>
> >                                 <xsd:documentation>Documento a
> > transformar</xsd:documentation>
> >                             </xsd:annotation>
> >                         </xsd:element>
> >                     </xsd:sequence>
> >                 </xsd:complexType>
> >             </xsd:element>
> > 
> > 
> > <wsdl:message name="TransformRequest">
> >         <wsdl:part name="TransformRequest" 
> element="tns:TransformRequest"/>
> >     </wsdl:message>
> > 
> > <wsdl:operation name="Transform">
> >             <wsdl:input wsa:Action="
> > http://test.net/testing/services/TransformationService/Transform"
> > name="TransformRequest" message="tns:TransformRequest"/>
> >             <wsdl:output wsa:Action="
> > 
> http://test.net/testing/services/TransformationService/TransformResponse
> "
> > name="TransformResponse" message="tns:TransformResponse"/>
> >             <wsdl:fault name="TransformFailedFault"
> > message="tns:TransformFailedFault"/>
> >             <wsdl:fault name="ResourceUnknownFault"
> > message="tns:ResourceUnknownFault"/>
> >             <wsdl:fault name="ResourceUnavailableFault"
> > message="tns:ResourceUnavailableFault"/>
> >         </wsdl:operation>
> > 
> > 
> > I want this WSDL to represent an operation named    void Transform 
> (byte[])
> > using base64 as the mechanism for encoding binary data. When I execute
> > wsdl2java for generating the server part of the service, it generates 
> the
> > following code:
> > 
> >     public void transform(Element documentToTransform) throws
> Exception 
>  {
> >         //TODO implement transform
> >         throw new RuntimeException("Unimplemented Method: transform");
> >     }
> > 
> > 
> > I want Apache Muse to generate a prototype like this:    public void
> > transform(byte[] documentToTransform) throws Exception or anything
> that
> > treats the received base64 as an array of bytes. Somewhere in the
> > documentation it is said that Apache Muse uses Element as a 
> rerpresentation
> > of a parameter when the element has AnyType or void types...
> > 
> > Does anybody knows how to get a service that has an capability that
> gets 
> a
> > byte[] as parameter?
> > 
> > Greets,
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: muse-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: muse-user-help@ws.apache.org
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: muse-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: muse-user-help@ws.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: muse-user-unsubscribe@ws.apache.org
For additional commands, e-mail: muse-user-help@ws.apache.org


RE: Generating a capability that accepts a byte[] as parameter

Posted by le...@bt.com.
Just to add to this topic my 2 fold question:

1) why is it that a function or variable specified to be of type
EndpointReference always ends up being declared as an Element (I believe
that this wasn't the case a long time ago). When defined in the wsdl as:
<xsd:element name="epr" type="wsa:EndpointReference"
maxOccurs="unbounded"/>
The same is true for this definition as well:
<xsd:element ref="wsa:EndpointReference" maxOccurs="unbounded"/>

2) Given the definition below, shouldn't I be able to get a function
declared that returns a list of EndpointReferences (or Elements given
the current implementation)?

<xsd:element name="ListResourcesOperation" />
			<xsd:element
name="ListResourcesOperationResponse">
				<xsd:complexType>
					<xsd:sequence>
					 	<xsd:element name="epr"
type="wsa:EndpointReference" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>


I'm just slightly confused.

/Lenni


-----Original Message-----
From: Daniel Jemiolo [mailto:danjemiolo@us.ibm.com] 
Sent: 16 April 2007 18:27
To: muse-user@ws.apache.org
Subject: Re: Generating a capability that accepts a byte[] as parameter

I think the problem is that the collection of built-in serializers
doesn't 
include support for byte/byte[]. I'm going to add this so that you can 
make parameters like this:

        <xsd:element name="MyParam" type="xsd:byte" 
maxOccurs="unbounded"/>

and get a byte[] parameter (or return type). This change will show up in

tonight's nightly build.

Dan



"Manolo Gomez Lopez" <pe...@gmail.com> wrote on 04/16/2007
08:00:41 
AM:

> Hi,
> 
>     I have a WSDL with the following definition of an operation (I'm 
pasting
> only the relevant parts):
> 
>           <xsd:element name="TransformRequest">
>                 <xsd:annotation>
>                     <xsd:documentation>Solicitud de
> transformacion</xsd:documentation>
>                 </xsd:annotation>
>                 <xsd:complexType>
>                     <xsd:sequence>
>                         <xsd:element name="documentToTransform"
> type="xsd:integer">
>                             <xsd:annotation>
>                                 <xsd:documentation>Documento a
> transformar</xsd:documentation>
>                             </xsd:annotation>
>                         </xsd:element>
>                     </xsd:sequence>
>                 </xsd:complexType>
>             </xsd:element>
> 
> 
> <wsdl:message name="TransformRequest">
>         <wsdl:part name="TransformRequest" 
element="tns:TransformRequest"/>
>     </wsdl:message>
> 
> <wsdl:operation name="Transform">
>             <wsdl:input wsa:Action="
> http://test.net/testing/services/TransformationService/Transform"
> name="TransformRequest" message="tns:TransformRequest"/>
>             <wsdl:output wsa:Action="
> 
http://test.net/testing/services/TransformationService/TransformResponse
"
> name="TransformResponse" message="tns:TransformResponse"/>
>             <wsdl:fault name="TransformFailedFault"
> message="tns:TransformFailedFault"/>
>             <wsdl:fault name="ResourceUnknownFault"
> message="tns:ResourceUnknownFault"/>
>             <wsdl:fault name="ResourceUnavailableFault"
> message="tns:ResourceUnavailableFault"/>
>         </wsdl:operation>
> 
> 
> I want this WSDL to represent an operation named    void Transform 
(byte[])
> using base64 as the mechanism for encoding binary data. When I execute
> wsdl2java for generating the server part of the service, it generates 
the
> following code:
> 
>     public void transform(Element documentToTransform) throws
Exception  
 {
>         //TODO implement transform
>         throw new RuntimeException("Unimplemented Method: transform");
>     }
> 
> 
> I want Apache Muse to generate a prototype like this:    public void
> transform(byte[] documentToTransform) throws Exception or anything
that
> treats the received base64 as an array of bytes. Somewhere in the
> documentation it is said that Apache Muse uses Element as a 
rerpresentation
> of a parameter when the element has AnyType or void types...
> 
> Does anybody knows how to get a service that has an capability that
gets 
a
> byte[] as parameter?
> 
> Greets,


---------------------------------------------------------------------
To unsubscribe, e-mail: muse-user-unsubscribe@ws.apache.org
For additional commands, e-mail: muse-user-help@ws.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: muse-user-unsubscribe@ws.apache.org
For additional commands, e-mail: muse-user-help@ws.apache.org


Re: Generating a capability that accepts a byte[] as parameter

Posted by Daniel Jemiolo <da...@us.ibm.com>.
I think the problem is that the collection of built-in serializers doesn't 
include support for byte/byte[]. I'm going to add this so that you can 
make parameters like this:

        <xsd:element name="MyParam" type="xsd:byte" 
maxOccurs="unbounded"/>

and get a byte[] parameter (or return type). This change will show up in 
tonight's nightly build.

Dan



"Manolo Gomez Lopez" <pe...@gmail.com> wrote on 04/16/2007 08:00:41 
AM:

> Hi,
> 
>     I have a WSDL with the following definition of an operation (I'm 
pasting
> only the relevant parts):
> 
>           <xsd:element name="TransformRequest">
>                 <xsd:annotation>
>                     <xsd:documentation>Solicitud de
> transformacion</xsd:documentation>
>                 </xsd:annotation>
>                 <xsd:complexType>
>                     <xsd:sequence>
>                         <xsd:element name="documentToTransform"
> type="xsd:integer">
>                             <xsd:annotation>
>                                 <xsd:documentation>Documento a
> transformar</xsd:documentation>
>                             </xsd:annotation>
>                         </xsd:element>
>                     </xsd:sequence>
>                 </xsd:complexType>
>             </xsd:element>
> 
> 
> <wsdl:message name="TransformRequest">
>         <wsdl:part name="TransformRequest" 
element="tns:TransformRequest"/>
>     </wsdl:message>
> 
> <wsdl:operation name="Transform">
>             <wsdl:input wsa:Action="
> http://test.net/testing/services/TransformationService/Transform"
> name="TransformRequest" message="tns:TransformRequest"/>
>             <wsdl:output wsa:Action="
> 
http://test.net/testing/services/TransformationService/TransformResponse"
> name="TransformResponse" message="tns:TransformResponse"/>
>             <wsdl:fault name="TransformFailedFault"
> message="tns:TransformFailedFault"/>
>             <wsdl:fault name="ResourceUnknownFault"
> message="tns:ResourceUnknownFault"/>
>             <wsdl:fault name="ResourceUnavailableFault"
> message="tns:ResourceUnavailableFault"/>
>         </wsdl:operation>
> 
> 
> I want this WSDL to represent an operation named    void Transform 
(byte[])
> using base64 as the mechanism for encoding binary data. When I execute
> wsdl2java for generating the server part of the service, it generates 
the
> following code:
> 
>     public void transform(Element documentToTransform) throws Exception  
 {
>         //TODO implement transform
>         throw new RuntimeException("Unimplemented Method: transform");
>     }
> 
> 
> I want Apache Muse to generate a prototype like this:    public void
> transform(byte[] documentToTransform) throws Exception or anything that
> treats the received base64 as an array of bytes. Somewhere in the
> documentation it is said that Apache Muse uses Element as a 
rerpresentation
> of a parameter when the element has AnyType or void types...
> 
> Does anybody knows how to get a service that has an capability that gets 
a
> byte[] as parameter?
> 
> Greets,


---------------------------------------------------------------------
To unsubscribe, e-mail: muse-user-unsubscribe@ws.apache.org
For additional commands, e-mail: muse-user-help@ws.apache.org