It's expecting "width" and "height" as the two parameters. If you want 
there to be one paramter ("width" and "height" wrapped in a "BoxType" 
element"), try this:

<xsd:element name="BoxOperation">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:element name="Box" type="box:BoxType"/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:element>

What you have now requires that the SOAP look like this:

<BoxOperation>
  <width>100</width>
  <height>300</height>
</BoxOperation>

and the Java like this:

        Box boxOperation(int width, int height);  // return Box or Element


What you want is this (I think):

<BoxOperation>
  <Box>
    <width>100</width>
    <height>300</height>
  </Box>
</BoxOperation>


which translates to the XSD above and this Java:

        Box boxOperation(Box box);

        (or: Element boxOperation(Element boxXML);


If you make a Serializer for Box objects, you can use Box in your methods 
instead of DOM Elements. See the last section of this page:

 
http://ws.apache.org/muse/docs/2.0.0/manual/architecture/deployment-descriptor.html#serializer





"Vinh Nguyen \(vinguye2\)" <[EMAIL PROTECTED]> wrote on 10/31/2006 
02:41:18 AM:

> Hi all,
> I'm trying to define a non-anonymous, custom complex type so that I can 
pass 
> it as a single request parameter. But, I am running into some problems. 
My 
> custom type is defined as:
>         <xsd:schema
>             elementFormDefault="qualified"
>             targetNamespace="http://cisco.com/muse/demo/cap/box";>
>             <xsd:complexType name="BoxType">
>                 <xsd:sequence>
>                     <xsd:element name="width" type="xsd:integer"/>
>                     <xsd:element name="height" type="xsd:integer"/>
>                 </xsd:sequence>
>             </xsd:complexType>
>             <xsd:element name="BoxOperation" type="box:BoxType" />
>             <xsd:element name="BoxOperationResponse" type="box:BoxType" 
/>
>         </xsd:schema>
> 
> The java code for my operation is:
>     public Element boxOperation(Element param1) throws Exception
>     {
>      BoxOperationDocument doc = 
BoxOperationDocument.Factory.parse(param1.
> getParentNode());
>      BoxType type = doc.getBoxOperation();
>      type.setWidth(type.getWidth().add(BigInteger.valueOf(100)));
>      type.setHeight(type.getHeight().add(BigInteger.valueOf(100)));
>      return XmlUtils.getFirstElement(doc.getDomNode()); 
>     }
> 
> The client code is:
>     public String testBoxOperation()
>     throws SoapFault
>     {
>      BoxOperationDocument doc = 
BoxOperationDocument.Factory.newInstance();
>      BoxType box = doc.addNewBoxOperation();
>      box.setWidth(BigInteger.valueOf(555));
>      box.setHeight(BigInteger.valueOf(555));
>      Element param1 = XmlUtils.getFirstElement(doc.getDomNode());
> 
>      Element body = XmlUtils.createElement(IBoxCapability.OP_QNAME, 
param1);
>      Element response = invoke(IBoxCapability.OP_URI, body);
>      return XmlUtils.extractText(response);
>     }
> 
> I am expecting to pass a single object in the request, but I am getting 
an 
> error indicating that two parameters are expected, not one.  Attached is 
the 
> stack trace.  Can anyone tell me what I'm doing wrong?
> -Vinh
>  [attachment "ErrorTrace.txt" deleted by Daniel Jemiolo/Durham/IBM] 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to