Scott, thanks, didn't know of this class - looks like nice work in that it can deal with different types of Collections. Seems a little bit less efficient in that there is an extra step at the end to convert the Vector to whatever is really required, but is very useful. If I had of known about it earlier definitely would have used it, but now I have written the ArrayListSerializer I will stick to it as seems slightly more efficient.
Joe. ----- Original Message ----- From: Scott Nichol <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Friday, September 20, 2002 7:07 PM Subject: Re: Serializer probs.. > Joe, > > There is code to [de-]serialize ArrayList that was added after 2.3.1. You > can see it at > http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-soap/java/src/org/apache/so > ap/encoding/soapenc/CollectionSerializer.java?rev=HEAD&content-type=text/pla > in. Basically, it delegates to the VectorSerializer, but retains > information about the actual type that was serialized, so it can deserialize > correctly. > > Scott Nichol > > ----- Original Message ----- > From: "Joe Ryan" <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Sent: Monday, September 20, 1999 1:15 PM > Subject: Re: Serializer probs.. > > > > I have just had this same problem of serializing/deserializing ArrayLists. > > Amazingly after searching all through the lists and surfing the web, it > > seemed like nobody had done it. I know that in Axis release it looks > > possible, but for the moment I am tied into SOAP 2.2 so this isn't an > > option. > > > > In the end I wrote the serializer/deserializer myself, - I'll paste java > > code in below. Note that my class ObjectList extends ArrayList, so for a > > pure serializer of ArrayList just replace all references of ObjectList > with > > ArrayList and it should work fine. > > > > cheers, Joe. > > > > > > > > public class ObjectListSerializer implements Serializer, Deserializer { > > > > public void marshall(String inScopeEncStyle, Class javaType, Object src, > > Object context, Writer sink, NSStack nsStack, > > XMLJavaMappingRegistry xjmr, SOAPContext ctx) > > throws IllegalArgumentException, IOException { > > > > nsStack.pushScope(); > > if ((src != null) && > > !(src instanceof ObjectList)) { > > throw new IllegalArgumentException("Tried to pass a '" + > > src.getClass().toString() + "' to > > ObjectListSerializer"); > > } > > Iterator it; > > ObjectList objList = (ObjectList)src; > > it = objList.iterator(); > > if (src == null) { > > > > SoapEncUtils.generateNullStructure(inScopeEncStyle,javaType,context,sink, > > nsStack,xjmr); > > } > > else { > > > > SoapEncUtils.generateStructureHeader(inScopeEncStyle,javaType,context, > > sink,nsStack,xjmr); > > sink.write(StringUtils.lineSeparator); > > for (Iterator i = it; i.hasNext(); ) { > > nsStack.pushScope(); > > Object value = i.next(); > > if (value == null) { > > SoapEncUtils.generateNullStructure(inScopeEncStyle, > > Object.class, > > "item", sink, nsStack, > xjmr); > > } > > else { > > Class actualComponentType = value.getClass(); > > xjmr.marshall(inScopeEncStyle, actualComponentType, value, > > "item", > > sink, nsStack, ctx); > > } > > sink.write(StringUtils.lineSeparator); > > nsStack.popScope(); > > } > > sink.write("</" + context + '>'); > > } > > nsStack.popScope(); > > } > > > > public Bean unmarshall(String inScopeEncStyle, QName elementType, Node > > src, > > XMLJavaMappingRegistry xjmr, SOAPContext ctx) > > throws IllegalArgumentException { > > Element root = (Element)src; > > if (SoapEncUtils.isNull(root)) { > > return new Bean(ObjectList.class, null); > > } > > ObjectList objList = new ObjectList(); > > Element tempEl = DOMUtils.getFirstChildElement(root); > > while (tempEl != null) { > > String declEncStyle = > > DOMUtils.getAttributeNS(tempEl,Constants.NS_URI_SOAP_ENV, > > > > Constants.ATTR_ENCODING_STYLE); > > String actualEncStyle = declEncStyle != null > > ? > > declEncStyle > > : > > inScopeEncStyle; > > QName declItemType = SoapEncUtils.getTypeQName(tempEl); > > QName actualItemType = declItemType; > > > > Bean itemBean = xjmr.unmarshall(actualEncStyle, > > actualItemType, tempEl, ctx); > > objList.add(itemBean.value); > > tempEl = DOMUtils.getNextSiblingElement(tempEl); > > } > > return new Bean(ObjectList.class, objList); > > } > > } > > // end of class > > > > ----- Original Message ----- > > From: Rose, Angus H <[EMAIL PROTECTED]> > > To: <[EMAIL PROTECTED]> > > Sent: Friday, August 16, 2002 8:34 AM > > Subject: RE: Serializer probs.. > > > > > > > I thought of that, but I'm just surprised that arraylists aren't > > supported. > > > Thanks for you help though > > > > > > Angus > > > > > > -----Original Message----- > > > From: Tudor, Liviu @Cimage [mailto:[EMAIL PROTECTED]] > > > Sent: 15 August 2002 16:28 > > > To: '[EMAIL PROTECTED]' > > > Subject: RE: Serializer probs.. > > > > > > > > > Serialize it as a normal array! (i.e. in your bean provide a property > that > > > has a get/set pair returning an array rather than an array list! ) > > > > > > Liviu Tudor > > > > > > Cimage Novasoft Limited > > > : www.cimagenovasoft.com <http://www.cimagenovasoft.com/> > > > + [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > > > (Fax: +44 (0)1344 767701 > > > (Direct Line: +44 (0)1344 767759 > > > *Centennial Court, Easthampstead Road, Bracknell, BERKS, RG12 1JZ > > > > > > Sun Java Certified Programmer > > > "C makes it easy to shoot yourself in the foot; C++ makes it harder, but > > > when you do, it blows away your whole leg." Bjarne Stroustrup > > > > > > > > > > > > -----Original Message----- > > > From: Rose, Angus H [mailto:[EMAIL PROTECTED]] > > > Sent: 15 August 2002 16:24 > > > To: Soap-User (E-mail) > > > Subject: Serializer probs.. > > > > > > > > > Hello All, > > > once again I need somebody's help - thank God for user > lists. > > > > > > Basically, I'm trying to pass an ArrayList back from a service, and get > > this > > > error message: > > > ' Ouch, the call failed: > > > Fault Code = SOAP-ENV:Server > > > Fault String = java.lang.IllegalArgumentException: No Serializer found > to > > > serialize a 'java.util.ArrayList' using encoding style > > > 'http://schemas.xmlsoap.org/soap/encoding/'.' > > > > > > Any suggestions? > > > > > > Thanks in advance > > > > > > Angus > > > > > > -- > > > 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]>
