You are viewing a plain text version of this content. The canonical link for it is here.
Posted to soap-user@xml.apache.org by Serafina Sumargo <ss...@hotmail.com> on 2002/10/21 17:35:36 UTC

Need help with user defined Objects

I am a newbie and I have been trying to figure out a problem with one of
my code, hope you guys can help me out.

Ok, so I have a MyDouble class that has a single double attribute.
Constructors: MyDouble() -> sets the double to 0
		  MyDouble(double)

Then I have a server calculator that does:
String add(MyDouble, MyDouble), taking 2 MyDoubles and returns a String

Here is what I have with my client:
MyDouble num1 = new MyDouble(3.5);
MyDouble num2 = new MyDouble(2.6);
SOAPMappingRegistry smr = new SOAPMappingRegistry(); BeanSerializer bsr
= new BeanSerializer();
smr.mapTypes("http://schemas.xmlsoap.org/soap/encoding/",new
QName("urn:calculatorService-mydouble", "num1"), MyDouble.class, bsr,
bsr); smr.mapTypes("http://schemas.xmlsoap.org/soap/encoding/",new
QName("urn:calculatorService-mydouble", "num2"), MyDouble.class, bsr,
bsr);

Vector params = new Vector();
params.addElement(new Parameter("num1", MyDouble.class, num1, null));
params.addElement(new Parameter("num2", MyDouble.class, num2, null));

Call call = new Call();
call.setTargetObjectURI("urn:calculatorService");
call.setEncodingStyleURI("http://schemas.xmlsoap.org/soap/encoding/");
call.setSOAPMappingRegistry(smr);
call.setParams(params);

My Descriptor:
<isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment"
id="urn:calculatorService">
    <isd:provider type="java" scope="Application" methods="add sub mult
div">
    <isd:java class="Calculator" static="false"/>
    </isd:provider>
 
<isd:faultListener>org.apache.soap.server.DOMFaultListener</isd:faultLis
tener>

    <isd:mappings>
        <isd:map
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
                xmlns:x="urn:calculatorService-mydouble" qname="x:num1"
                javaType="MyDouble" 
	
java2XMLClassName="org.apache.soap.encoding.soapenc.BeanSerializer"
	
xml2JavaClassName="org.apache.soap.encoding.soapenc.BeanSerializer"/>
        <isd:map
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
                xmlns:x="urn:calculatorService-mydouble" qname="x:num2"
                javaType="MyDouble"
	
java2XMLClassName="org.apache.soap.encoding.soapenc.BeanSerializer" 
	
xml2JavaClassName="org.apache.soap.encoding.soapenc.BeanSerializer"/>
    </isd:mappings>
</isd:service>

The problem is, for some reason, it doesn't pass in the values num1 and
num2, instead it instantiates the default constructor of MyDouble, hence
always returning num1+num2 = 0.

What did I do wrong?

Serafina



--
To unsubscribe, e-mail:   <ma...@xml.apache.org>
For additional commands, e-mail: <ma...@xml.apache.org>


Re: Need help with user defined Objects

Posted by Scott Nichol <sn...@scottnichol.com>.
The "standard" pattern for bean usage is to use the default constructor
and set any properties with mutator (setter) methods.  To use the
BeanSerializer with your MyDouble class, MyDouble must have a "double"
property that is read/write, i.e. it either has public getter/setter
methods or the field is public.

Scott Nichol

----- Original Message -----
From: "Serafina Sumargo" <ss...@hotmail.com>
To: <so...@xml.apache.org>
Sent: Monday, October 21, 2002 11:35 AM
Subject: Need help with user defined Objects


> I am a newbie and I have been trying to figure out a problem with one
of
> my code, hope you guys can help me out.
>
> Ok, so I have a MyDouble class that has a single double attribute.
> Constructors: MyDouble() -> sets the double to 0
>   MyDouble(double)
>
> Then I have a server calculator that does:
> String add(MyDouble, MyDouble), taking 2 MyDoubles and returns a
String
>
> Here is what I have with my client:
> MyDouble num1 = new MyDouble(3.5);
> MyDouble num2 = new MyDouble(2.6);
> SOAPMappingRegistry smr = new SOAPMappingRegistry(); BeanSerializer
bsr
> = new BeanSerializer();
> smr.mapTypes("http://schemas.xmlsoap.org/soap/encoding/",new
> QName("urn:calculatorService-mydouble", "num1"), MyDouble.class, bsr,
> bsr); smr.mapTypes("http://schemas.xmlsoap.org/soap/encoding/",new
> QName("urn:calculatorService-mydouble", "num2"), MyDouble.class, bsr,
> bsr);
>
> Vector params = new Vector();
> params.addElement(new Parameter("num1", MyDouble.class, num1, null));
> params.addElement(new Parameter("num2", MyDouble.class, num2, null));
>
> Call call = new Call();
> call.setTargetObjectURI("urn:calculatorService");
> call.setEncodingStyleURI("http://schemas.xmlsoap.org/soap/encoding/");
> call.setSOAPMappingRegistry(smr);
> call.setParams(params);
>
> My Descriptor:
> <isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment"
> id="urn:calculatorService">
>     <isd:provider type="java" scope="Application" methods="add sub
mult
> div">
>     <isd:java class="Calculator" static="false"/>
>     </isd:provider>
>
>
<isd:faultListener>org.apache.soap.server.DOMFaultListener</isd:faultLis
> tener>
>
>     <isd:mappings>
>         <isd:map
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
>                 xmlns:x="urn:calculatorService-mydouble"
qname="x:num1"
>                 javaType="MyDouble"
>
> java2XMLClassName="org.apache.soap.encoding.soapenc.BeanSerializer"
>
> xml2JavaClassName="org.apache.soap.encoding.soapenc.BeanSerializer"/>
>         <isd:map
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
>                 xmlns:x="urn:calculatorService-mydouble"
qname="x:num2"
>                 javaType="MyDouble"
>
> java2XMLClassName="org.apache.soap.encoding.soapenc.BeanSerializer"
>
> xml2JavaClassName="org.apache.soap.encoding.soapenc.BeanSerializer"/>
>     </isd:mappings>
> </isd:service>
>
> The problem is, for some reason, it doesn't pass in the values num1
and
> num2, instead it instantiates the default constructor of MyDouble,
hence
> always returning num1+num2 = 0.
>
> What did I do wrong?
>
> Serafina
>
>
>
> --
> To unsubscribe, e-mail:
<ma...@xml.apache.org>
> For additional commands, e-mail:
<ma...@xml.apache.org>
>
>


--
To unsubscribe, e-mail:   <ma...@xml.apache.org>
For additional commands, e-mail: <ma...@xml.apache.org>


Re: Need help with user defined Objects

Posted by Scott Nichol <sn...@scottnichol.com>.
The "standard" pattern for bean usage is to use the default constructor
and set any properties with mutator (setter) methods.  To use the
BeanSerializer with your MyDouble class, MyDouble must have a "double"
property that is read/write, i.e. it either has public getter/setter
methods or the field is public.

Scott Nichol

----- Original Message -----
From: "Serafina Sumargo" <ss...@hotmail.com>
To: <so...@xml.apache.org>
Sent: Monday, October 21, 2002 11:35 AM
Subject: Need help with user defined Objects


> I am a newbie and I have been trying to figure out a problem with one
of
> my code, hope you guys can help me out.
>
> Ok, so I have a MyDouble class that has a single double attribute.
> Constructors: MyDouble() -> sets the double to 0
>   MyDouble(double)
>
> Then I have a server calculator that does:
> String add(MyDouble, MyDouble), taking 2 MyDoubles and returns a
String
>
> Here is what I have with my client:
> MyDouble num1 = new MyDouble(3.5);
> MyDouble num2 = new MyDouble(2.6);
> SOAPMappingRegistry smr = new SOAPMappingRegistry(); BeanSerializer
bsr
> = new BeanSerializer();
> smr.mapTypes("http://schemas.xmlsoap.org/soap/encoding/",new
> QName("urn:calculatorService-mydouble", "num1"), MyDouble.class, bsr,
> bsr); smr.mapTypes("http://schemas.xmlsoap.org/soap/encoding/",new
> QName("urn:calculatorService-mydouble", "num2"), MyDouble.class, bsr,
> bsr);
>
> Vector params = new Vector();
> params.addElement(new Parameter("num1", MyDouble.class, num1, null));
> params.addElement(new Parameter("num2", MyDouble.class, num2, null));
>
> Call call = new Call();
> call.setTargetObjectURI("urn:calculatorService");
> call.setEncodingStyleURI("http://schemas.xmlsoap.org/soap/encoding/");
> call.setSOAPMappingRegistry(smr);
> call.setParams(params);
>
> My Descriptor:
> <isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment"
> id="urn:calculatorService">
>     <isd:provider type="java" scope="Application" methods="add sub
mult
> div">
>     <isd:java class="Calculator" static="false"/>
>     </isd:provider>
>
>
<isd:faultListener>org.apache.soap.server.DOMFaultListener</isd:faultLis
> tener>
>
>     <isd:mappings>
>         <isd:map
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
>                 xmlns:x="urn:calculatorService-mydouble"
qname="x:num1"
>                 javaType="MyDouble"
>
> java2XMLClassName="org.apache.soap.encoding.soapenc.BeanSerializer"
>
> xml2JavaClassName="org.apache.soap.encoding.soapenc.BeanSerializer"/>
>         <isd:map
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
>                 xmlns:x="urn:calculatorService-mydouble"
qname="x:num2"
>                 javaType="MyDouble"
>
> java2XMLClassName="org.apache.soap.encoding.soapenc.BeanSerializer"
>
> xml2JavaClassName="org.apache.soap.encoding.soapenc.BeanSerializer"/>
>     </isd:mappings>
> </isd:service>
>
> The problem is, for some reason, it doesn't pass in the values num1
and
> num2, instead it instantiates the default constructor of MyDouble,
hence
> always returning num1+num2 = 0.
>
> What did I do wrong?
>
> Serafina
>
>
>
> --
> To unsubscribe, e-mail:
<ma...@xml.apache.org>
> For additional commands, e-mail:
<ma...@xml.apache.org>
>
>


Re: Need help with user defined Objects

Posted by Mark Childerson <ma...@childersoft.com>.
Does MyDouble have a public void setValue(double value) and a public double 
getValue() methods? If not, it will not meet the definition of a bean, so 
the BeanSerializer will not be able to handle it properly.

Mark


At 11:35 AM 21/10/2002 -0400, you wrote:
>I am a newbie and I have been trying to figure out a problem with one of
>my code, hope you guys can help me out.
>
>Ok, so I have a MyDouble class that has a single double attribute.
>Constructors: MyDouble() -> sets the double to 0
>                   MyDouble(double)
>
>Then I have a server calculator that does:
>String add(MyDouble, MyDouble), taking 2 MyDoubles and returns a String
>
>Here is what I have with my client:
>MyDouble num1 = new MyDouble(3.5);
>MyDouble num2 = new MyDouble(2.6);
>SOAPMappingRegistry smr = new SOAPMappingRegistry(); BeanSerializer bsr
>= new BeanSerializer();
>smr.mapTypes("http://schemas.xmlsoap.org/soap/encoding/",new
>QName("urn:calculatorService-mydouble", "num1"), MyDouble.class, bsr,
>bsr); smr.mapTypes("http://schemas.xmlsoap.org/soap/encoding/",new
>QName("urn:calculatorService-mydouble", "num2"), MyDouble.class, bsr,
>bsr);
>
>Vector params = new Vector();
>params.addElement(new Parameter("num1", MyDouble.class, num1, null));
>params.addElement(new Parameter("num2", MyDouble.class, num2, null));
>
>Call call = new Call();
>call.setTargetObjectURI("urn:calculatorService");
>call.setEncodingStyleURI("http://schemas.xmlsoap.org/soap/encoding/");
>call.setSOAPMappingRegistry(smr);
>call.setParams(params);
>
>My Descriptor:
><isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment"
>id="urn:calculatorService">
>     <isd:provider type="java" scope="Application" methods="add sub mult
>div">
>     <isd:java class="Calculator" static="false"/>
>     </isd:provider>
>
><isd:faultListener>org.apache.soap.server.DOMFaultListener</isd:faultLis
>tener>
>
>     <isd:mappings>
>         <isd:map
>encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
>                 xmlns:x="urn:calculatorService-mydouble" qname="x:num1"
>                 javaType="MyDouble"
>
>java2XMLClassName="org.apache.soap.encoding.soapenc.BeanSerializer"
>
>xml2JavaClassName="org.apache.soap.encoding.soapenc.BeanSerializer"/>
>         <isd:map
>encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
>                 xmlns:x="urn:calculatorService-mydouble" qname="x:num2"
>                 javaType="MyDouble"
>
>java2XMLClassName="org.apache.soap.encoding.soapenc.BeanSerializer"
>
>xml2JavaClassName="org.apache.soap.encoding.soapenc.BeanSerializer"/>
>     </isd:mappings>
></isd:service>
>
>The problem is, for some reason, it doesn't pass in the values num1 and
>num2, instead it instantiates the default constructor of MyDouble, hence
>always returning num1+num2 = 0.
>
>What did I do wrong?
>
>Serafina
>
>
>
>--
>To unsubscribe, e-mail:   <ma...@xml.apache.org>
>For additional commands, e-mail: <ma...@xml.apache.org>



Re: Need help with user defined Objects

Posted by Mark Childerson <ma...@childersoft.com>.
Does MyDouble have a public void setValue(double value) and a public double 
getValue() methods? If not, it will not meet the definition of a bean, so 
the BeanSerializer will not be able to handle it properly.

Mark


At 11:35 AM 21/10/2002 -0400, you wrote:
>I am a newbie and I have been trying to figure out a problem with one of
>my code, hope you guys can help me out.
>
>Ok, so I have a MyDouble class that has a single double attribute.
>Constructors: MyDouble() -> sets the double to 0
>                   MyDouble(double)
>
>Then I have a server calculator that does:
>String add(MyDouble, MyDouble), taking 2 MyDoubles and returns a String
>
>Here is what I have with my client:
>MyDouble num1 = new MyDouble(3.5);
>MyDouble num2 = new MyDouble(2.6);
>SOAPMappingRegistry smr = new SOAPMappingRegistry(); BeanSerializer bsr
>= new BeanSerializer();
>smr.mapTypes("http://schemas.xmlsoap.org/soap/encoding/",new
>QName("urn:calculatorService-mydouble", "num1"), MyDouble.class, bsr,
>bsr); smr.mapTypes("http://schemas.xmlsoap.org/soap/encoding/",new
>QName("urn:calculatorService-mydouble", "num2"), MyDouble.class, bsr,
>bsr);
>
>Vector params = new Vector();
>params.addElement(new Parameter("num1", MyDouble.class, num1, null));
>params.addElement(new Parameter("num2", MyDouble.class, num2, null));
>
>Call call = new Call();
>call.setTargetObjectURI("urn:calculatorService");
>call.setEncodingStyleURI("http://schemas.xmlsoap.org/soap/encoding/");
>call.setSOAPMappingRegistry(smr);
>call.setParams(params);
>
>My Descriptor:
><isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment"
>id="urn:calculatorService">
>     <isd:provider type="java" scope="Application" methods="add sub mult
>div">
>     <isd:java class="Calculator" static="false"/>
>     </isd:provider>
>
><isd:faultListener>org.apache.soap.server.DOMFaultListener</isd:faultLis
>tener>
>
>     <isd:mappings>
>         <isd:map
>encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
>                 xmlns:x="urn:calculatorService-mydouble" qname="x:num1"
>                 javaType="MyDouble"
>
>java2XMLClassName="org.apache.soap.encoding.soapenc.BeanSerializer"
>
>xml2JavaClassName="org.apache.soap.encoding.soapenc.BeanSerializer"/>
>         <isd:map
>encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
>                 xmlns:x="urn:calculatorService-mydouble" qname="x:num2"
>                 javaType="MyDouble"
>
>java2XMLClassName="org.apache.soap.encoding.soapenc.BeanSerializer"
>
>xml2JavaClassName="org.apache.soap.encoding.soapenc.BeanSerializer"/>
>     </isd:mappings>
></isd:service>
>
>The problem is, for some reason, it doesn't pass in the values num1 and
>num2, instead it instantiates the default constructor of MyDouble, hence
>always returning num1+num2 = 0.
>
>What did I do wrong?
>
>Serafina
>
>
>
>--
>To unsubscribe, e-mail:   <ma...@xml.apache.org>
>For additional commands, e-mail: <ma...@xml.apache.org>



--
To unsubscribe, e-mail:   <ma...@xml.apache.org>
For additional commands, e-mail: <ma...@xml.apache.org>