All Java arrays start with index 0.  You could do

    String[] bTitle = new String[books.length + 1];

and just not use bTitle[0] if you want to start using the array at index 1.

Scott Nichol

----- Original Message ----- 
From: "Guntur N. Sarwohadi" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, September 23, 2002 8:47 PM
Subject: RE: apacheSOAP & NuSOAP


> Hello Scott..
> 
> Thanks for reminding me on declaring the bTitle array. I didn't set its
> initial allocation so it was plain String[] bTitle = new String[] {};..
> no wonder it has an arrayindexoutofbound.. thanks again, Scott!! :)
> 
> Ohya, does arrays in java always start its index with 0? 
> Why does this code below generates an ArrayIndexOutOfBoundsException?
> 
> for(int i=0; i < books.length; i++) {
> Map book = books[i];
> bTitle[i+1] = (String) book.get("title");
> }
> 
> I wanted bTitle to start at 1 and not 0.. is this possible?
> 
> Guntur
> 
> -----Original Message-----
> From: Scott Nichol [mailto:[EMAIL PROTECTED]] 
> Sent: Monday, September 23, 2002 11:15 PM
> To: [EMAIL PROTECTED]
> Subject: Re: apacheSOAP & NuSOAP
> 
> At what line does the exception occur?  Do you allocate bTitle,
> bImprint,
> etc., based on books.length, e.g.
> 
>     String[] bTitle = new String[books.length];
> 
> Scott Nichol
> 
> ----- Original Message -----
> From: "Guntur N. Sarwohadi" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Sunday, September 22, 2002 12:18 PM
> Subject: RE: apacheSOAP & NuSOAP
> 
> 
> > Scott..
> >
> > Thanks for the PropertyBagSerializer, it works great! It really is
> able
> > to read the soap messages generated by NuSOAP..!!!
> >
> > I tried implementing the code exactly as documented and it works fine.
> > Now, I wanted to extend it a bit so instead of:
> >
> > for (int i = 0; i < books.length; i++) {
> >     Map book = books[i];
> >     System.out.println("Title: " + book.get("title"));
> >     System.out.println("Imprint: " + book.get("imprint"));
> >     ...
> > }
> >
> > I wanted to keep the book data into a string array (so that I could
> add
> > a 'page management algorithm' to the array and then loop it again
> > elsewhere), something like:
> >
> > for(int i=0; i < books.length; i++) {
> > Map book = books[i];
> > bTitle[i] = (String) book.get("title");
> > bImprint[i] = (String) book.get("imprint");
> > ...
> > }
> >
> > but as I do so, I keep having an ArrayIndexOutOfBoundsException. How
> > should I fix this problem?
> >
> > Another thing.. I may have asked this question, but I couldn't quite
> > understand your reply on how to implement a Apache-SOAP server so that
> > it can communicate a NuSOAP client using the same SOAP message pattern
> > used by NuSOAP..
> > Does the server should implement a PropertyBagSerializer also? How
> > should I return the call?
> >
> > Regards,
> > Guntur
> >
> > -----Original Message-----
> > From: Scott Nichol [mailto:[EMAIL PROTECTED]]
> > Sent: Tuesday, September 17, 2002 11:43 PM
> > To: [EMAIL PROTECTED]
> > Subject: Re: apacheSOAP & NuSOAP
> >
> > 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]>
> >
> >
> >
> > --
> > 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]>
> 
> 


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

Reply via email to