Hi Adam,
I am not a SOAP guru yet, but I think you need to specify
SoapMappingRegistry mapType for every user defined type you are passing
between the client and server. So you need the following:
> smr.mapTypes(encodingStyle,
> new QName("urn:" + nameSpaceURI,
> "OrganisationListMemberModel"),
> OrganisationListMemberModel.class,
> org.apache.soap.encoding.soapenc.BeanSerializer,
> org.apache.soap.encoding.soapenc.BeanSerializer);
> smr.mapTypes(encodingStyle,
> new QName("urn:" + anotherNameSpaceURI,
> "OrganisationName"),
> OrganisationName.class,
> org.apache.soap.encoding.soapenc.BeanSerializer,
> org.apache.soap.encoding.soapenc.BeanSerializer);
HTH,
Abraham
> -----Original Message-----
> From: Adam Lipscombe [mailto:[EMAIL PROTECTED]]
> Sent: Saturday, July 14, 2001 9:17 AM
> To: [EMAIL PROTECTED]
> Subject: RE: Problems serializing a vector of user defined classes with
> BeanSerializer
>
>
> Yes I think so:
>
>
> smr.mapTypes(encodingStyle,
> new QName("urn:" + nameSpaceURI,
> "OrganisationListMemberModel"),
> OrganisationListMemberModel.class,
> org.apache.soap.encoding.soapenc.BeanSerializer,
> org.apache.soap.encoding.soapenc.BeanSerializer);
>
>
> The basic question I think is how does SOAP (de)serialize a vector of user
> defined types that contain other UDT's?
>
> e.g.:
> class Type1
> {
> private Type2 member1;
> private Type3 member2;
>
> // Ctors, Accessors etc...
> }
>
>
> Assuming Type1, Type2 and Type3 all have a no-args ctor and
> getters/setters
> for their properties, how should one specify the mapping?
>
>
> Thanks - Adam
>
>
>
>
>
>
>
>
>
>
>
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
> Sent: 13 July 2001 22:38
> To: [EMAIL PROTECTED]
> Subject: Re: Problems serializing a vector of user defined classes with
> BeanSerializer
>
>
>
> Did you use SOAPMappingRegistry to set the map types in your client code,
> before invoking the call?
>
>
>
>
> "Adam Lipscombe"
> <[EMAIL PROTECTED] To:
> <[EMAIL PROTECTED]>
> ess.co.uk> cc:
> Subject: Problems
> serializing a vector of
07/13/2001 11:36 AM
> user defined classes with
> BeanSerializer
> Please respond to
> soap-user
>
>
>
>
>
> Folks,
>
>
> Apologies if this is a well know question - I am a relative
> newbie to SOAP.
>
>
> I need to pass a Vector of types via SOAP.
> My understanding is that provided the the types conform the JavaBean specs
> I
> should be able to use the Bean Serializer...
>
>
> The Type in the Vector is:
> public class OrganisationListMemberModel
> implements Serializable
> {
> private OrganisationName organisationName;
>
>
> public OrganisationListMemberModel(OrganisationName organisationName)
> {
> this.organisationName = organisationName;
> return;
> }
> public OrganisationListMemberModel()
> {
> return;
> }
>
> public OrganisationName getOrganisationName()
> {
> return organisationName;
> }
>
> public void setOrganisationName(OrganisationName organisationName)
> {
> this.organisationName = organisationName;
> return;
> }
> }
>
>
> The OrganisationName type is:
>
> public class OrganisationName
> implements java.io.Serializable
> {
> private String value;
>
> public OrganisationName(String value) throws TypeException
> {
> this.value = value;
> return;
> }
> public OrganisationName()
> {
> return;
> }
>
>
> public String getValue()
> {
> return value;
> }
> public void setValue(String value)
> {
> this.value = value
> return;
> }
> }
>
> The deployment descriptor is:
>
> isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment"
> id="urn:OrganisationListFetcher">
> <isd:provider type="java"
> scope="Application"
> methods="allElements">
> <isd:java
> class
> ="uk.co.landmark.contactmanager.server.organisation.soapservice.Organis
> ationListSoapService" static="false"/>
> </isd:provider>
>
>
> <isd:faultListener>org.apache.soap.server.DOMFaultListener</isd:fa
> ultListene
>
> r>
>
> <isd:mappings>
> <isd:map encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:x="urn:ContactManager"
> qname="x:OrganisationListMemberModel"
>
> javaType
> ="uk.co.landmark.contactmanager.common.model.OrganisationListMemberM
> odel"
>
> java2XMLClassName="org.apache.soap.encoding.soapenc.BeanSerializer"
>
> xml2JavaClassName="org.apache.soap.encoding.soapenc.BeanSerializer"/>
> </isd:mappings>
> </isd:service>
>
>
>
>
> All is well if the OrganisationListMemberModel class contains a native
> String instead of an OrganisationName.
> However when I use OrganisationName I get the following error:
>
>
> SOAP-ENV:Server, message = java.lang.IllegalArgumentException: No
> Serializer
> found to serialize a
> 'uk.co.landmark.contactmanager.common.types.OrganisationName' using
> encoding
> style 'http://schemas.xmlsoap.org/soap/encoding/'.
>
>
>
> It looks to me that the Vector and OrganisationListMemberModel classes are
> being handled OK, but the OrganisationName class is not.
>
>
> Any ideas why not?
>
>
> Thanks in advance - Adam
>
>
>
>
>
>
>
>
>