You would need to use the PropertyBagSerializer, which will serialize any
Map to a format similar to what your earlier example showed.  From the new
propertybag sample, this code

        // Create the bag (something that looks like a "book bean"
        Hashtable bag = new Hashtable(7);
        bag.put("AuthorFirstName", "Michael");
        bag.put("AuthorLastName", "Chabon");
        bag.put("Title", "The Amazing Adventures of Kavalier & Clay");
        bag.put("Pages", new Integer(639));
        bag.put("CopyrightYear", new Integer(2000));
        bag.put("Publisher", "Random House");
        bag.put("DateAdded", new Date());

        // Create the mapping
        PropertyBagSerializer ser = new PropertyBagSerializer();
        SOAPMappingRegistry smr = new SOAPMappingRegistry();
        smr.mapTypes(Constants.NS_URI_SOAP_ENC,
                     new QName("urn:property-bag-sample", "PropertyBag"),
                     Map.class, ser, null);

        // Build the call.
        Header header = new Header();
        SOAPContext ctx = new SOAPContext();
        ctx.setGzip(false);
        ctx.setDocLitSerialization(false);
        Vector params = new Vector();
        params.addElement(new Parameter("bag", Map.class, bag, null));
        Call call = new Call("urn:property-bag-sample",
                             "analyze",
                             params,
                             header,
                             Constants.NS_URI_SOAP_ENC,
                             ctx);
        call.setSOAPMappingRegistry(smr);

generates this envelope

<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
<SOAP-ENV:Body>
<ns1:analyze xmlns:ns1="urn:property-bag-sample"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";>
<bag xsi:type="ns1:PropertyBag">
<Publisher xsi:type="xsd:string">Random House</Publisher>
<AuthorFirstName xsi:type="xsd:string">Michael</AuthorFirstName>
<CopyrightYear xsi:type="xsd:int">2000</CopyrightYear>
<AuthorLastName xsi:type="xsd:string">Chabon</AuthorLastName>
<DateAdded xsi:type="xsd:dateTime">2002-09-16T15:16:33.832Z</DateAdded>
<Title xsi:type="xsd:string">The Amazing Adventures of Kavalier &amp;
Clay</Title>
<Pages xsi:type="xsd:int">639</Pages>
</bag>
</ns1:analyze>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

The type used in this example (ns1:PropertyBag) was xsd:array in your
original example.  I don't know whether NuSOAP would require it to be that
same type or not.

Scott Nichol

----- Original Message -----
From: "Guntur N. Sarwohadi" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Tuesday, September 17, 2002 12:32 PM
Subject: RE: apacheSOAP & NuSOAP


> Hello...
>
> I wanted to create a SOAP-server in Java that imitates how PHP maps its
> arrays so that a SOAP-client in PHP (the same one that is able to
> translate SOAP outputs generated by the SOAP-server of PHP) is able to
> 'deserialize' my Java SOAP-server without changing any code to it. I
> recall that Scott suggest using Maps in Java.. how should I use it?
>
> Regards,
> Guntur
>
> -----Original Message-----
> From: Scott Nichol [mailto:[EMAIL PROTECTED]]
> Sent: Tuesday, September 17, 2002 9:39 PM
> To: Guntur N. Sarwohadi; [EMAIL PROTECTED]
> Subject: Re: apacheSOAP & NuSOAP
>
> > Um one thing,... where can I find this serializer of yours?
>
> You can download the nightly drop (directories under
> http://xml.apache.org/dist/soap/nightly/), which would allow you to
> easily
> use the latest revision of all the code.  You can obtain the source for
> just
> the serializer from the CVS tree
> (http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-soap/java/src/org/apac
> he/s
> oap/encoding/soapenc/PropertyBagSerializer.java?rev=HEAD&content-type=te
> xt/p
> lain) and compile it against your soap.jar, assuming your soap.jar is
> recent
> enough.  Personally, I recommend a nightly drop since this includes the
> newest features and fixes.
>
> > And if I
> > want to add a WSDL extension of the server using Axis, should I change
> > any code?
>
> I am not quite certain what you mean.  Are you talking about using Axis
> for
> the client?  If so, just grab the current Axis build (it is RC1, I
> believe).
> You will want to use different client code using a proxy generated from
> WSDL.  If you do this, let this list know how it goes.
>
> Scott Nichol
>
>
>
> --
> To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>
>
>
> --
> To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>
>


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

Reply via email to