Axis documentation on custom serializers can be found here: http://ws.apache.org/axis/java/user-guide.html#WhenBeansAreNotEnoughCustomSerialization
On 7/5/05, Keith Hatton <[EMAIL PROTECTED]> wrote: > Axis uses the JAX-RPC specification for mapping between Java and XSD > types. > You can get the JAX-RPC 1.1 specification from here: > http://java.sun.com/xml/downloads/jaxrpc.html > > Lists (and other collection types) are not supported. End of story. > You're barking up the wrong tree to try and force sophisticated > collection objects into SOAP. Really, SOAP is just a way of passing > messages between systems, not objects. > http://weblogs.cs.cornell.edu/AllThingsDistributed/archives/000343.html > > Of course, to turn an array into a list is as simple as > java.util.Arrays.asList(Object[]); to turn a list into an array is as > simple as java.util.List.toArray(). JDK 1.5 introduced auto-boxing > between object and primitive types; perhaps you should ask Sun about > introducing auto-boxing between arrays and Lists! > > Hope this helps > Keith > > > -----Original Message----- > From: Scott Lamb [mailto:[EMAIL PROTECTED] > Sent: 04 July 2005 18:23 > To: [email protected] > Subject: Re: Collections classes? > > > On 4 Jul 2005, at 08:38, Anne Thomas Manes wrote: > > Actually, a list is a specialization of an array, not the other way > > around. As James says, a list requires more information than an XSD > > type array. An XSD type array has no sense of order or index. It is > > simply a repeating element. There's no metadata included in each of > > the repeating element to indicate indexing or ordering. > > Okay, first of all, when I've been describing arrays, I'm talking > about arrays on the Java side. I've been treating the SOAP side as a > black box. I know that Axis is capable of producing a Java array, > which has the same requirements as a Java List. Thus, I don't need to > know _anything_ about SOAP or XSD to know that you are wrong. The > ordering information is there. To give a concrete example, when I do > a google search with their published WSDL, I get my results in order. > I simply want that to be a with a List<ResultElement> rather than a > ResultElement[]. > > Secondly, of course the XSD does not describe ordering. It doesn't > need to. When you serialize something as a stream of bytes, you're > always putting them in order. It's called serialization for a reason. > The order of the array/list/whatever is the order that the objects > are written in. > > > SOAPpy can easily maps things around because Python is a loosely typed > > > language. Java is strongly typed and therefore much more strict about > > mapping types. > > If it can map it to a Java ResultElement[] in advance, why can't it > map it to a Java List<ResultElement> in advance? Strong typing is not > the problem. > > > In any case, if you want to map the returned array to a Java > > collection class, then you must write a custom deserializer that does > > so. You also must define a client config file that tells Axis to use > > your custom deserializer. > > How would I write this custom deserializer? All the information I've > seen on the website - and the articles James Black linked to - seem > to be talking about registering new types: i.e., a "java.foo.Blah <-> > Blah". I want to change how XSD x[] to map to Java List<x> rather > than Java x[], for all x. > > Once I do that, I'll look into more sophisticated collections: Maps, > Sets. I don't know if that's possible, but I'd like to try. > > Scott > > -- > Scott Lamb <http://www.slamb.org/> > >
