You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by Chad <ch...@optusnet.com.au> on 2002/09/06 14:41:16 UTC

RE: passing parameter subclasses using Axis

Glen thanks for your response.
Sorry about the lateness of my follow up questions.

I have downloaded ,altered (to work outside of junit and from a main)
and used your test scripts.
in test1PolymorphismTestGetBAsA 
	value = binding.getBAsA(false); 
value came across as an A when it should have been a B ( a B was sent
back) 

I am using beta 3
I am using a separate webapp directory rather than using
$tomcatHome/webapps/axis
the axis jars are in $tomcatHome/common/lib (made no difference putting
them in WEB-INF/lib)
Java 1.3.1
windows ME and cygwin (sorry)

further help would be appreciated.

Chad

WSDL2Java command from $tomcatHome/webapps/poly
java -cp ".;$tccp" org.apache.axis.wsdl.WSDL2Java -S true --all
-Nhttp://xml.apache.org/axis/PolymorphismTest=test.wsdl.polymorphism
polymorphism.wsdl

Deployment command from $tomcatHome/webapps/poly
java -cp ".;$tccp" org.apache.axis.client.AdminClient
-lhttp://localhost:8080/poly/servlet/AxisServlet
test\\wsdl\\polymorphism\\deploy.wsdd



Source files as I had them follow
----------------------------------------

package test.wsdl.polymorphism;

import java.net.*;

public class PolymorphismTest_ServiceTestCase  {
    public PolymorphismTest_ServiceTestCase() {

    }
    public void test1PolymorphismTestGetBAsA() {
        test.wsdl.polymorphism.PolymorphismTestSoap binding;
        try {
            binding = new
test.wsdl.polymorphism.PolymorphismTest_ServiceLocator().getPolymorphismTest(new
URL("http://localhost:8080/poly/services/PolymorphismTest"));
        }
        catch (Exception e) {
            throw new RuntimeException("JAX-RPC ServiceException caught:
" + e);
        }

        try {
            test.wsdl.polymorphism.A value = null;

            // Passing false here gets us a "B"
            value = binding.getBAsA(false);

            // Check out the return value for correctness.
            if(!(value instanceof B) ){throw new RuntimeException("value
not B value="+value);}
            B myB = (B)value;
           /* assertEquals("B field didn't match",
                         PolymorphismTestSoapImpl.B_TEXT,
                         myB.getB());
            assertEquals("A field didn't match",
                         PolymorphismTestSoapImpl.A_TEXT,
                         myB.getA());*/
        }
        catch (java.rmi.RemoteException re) {
            throw new RuntimeException("Remote Exception caught: " +
re);
        }
    }

    public void test1PolymorphismTestGetCAsA() {
        test.wsdl.polymorphism.PolymorphismTestSoap binding;
        try {
            binding = new
test.wsdl.polymorphism.PolymorphismTest_ServiceLocator().getPolymorphismTest(new
URL("http://localhost:8080/poly/services/PolymorphismTest"));
        }
        catch (Exception e) {
            throw new RuntimeException("JAX-RPC ServiceException caught:
" + e);
        }

        try {
            test.wsdl.polymorphism.A value = null;

            // Passing true here gets us a "C" on the server side, but
since
            // there's no type mapping for that we should just get the
"A"
            // part.
            value = binding.getBAsA(true);

            // Check out the return value for correctness.
            if(!( value instanceof A)) {throw new
RuntimeException("value not A value="+value);}
            /*assertEquals("A field didn't match",
                         PolymorphismTestSoapImpl.A_TEXT,
                         value.getA());*/
        }
        catch (java.rmi.RemoteException re) {
            throw new RuntimeException("Remote Exception caught: " +
re);
        }
    }

    public static void main(String[] args)
    {
        PolymorphismTest_ServiceTestCase p = new
PolymorphismTest_ServiceTestCase();
        p.test1PolymorphismTestGetBAsA();
        p.test1PolymorphismTestGetCAsA();
    }

}

/**
 * PolymorphismTestSoapImpl.java
 *
 * This file was auto-generated from WSDL
 * by the Apache Axis WSDL2Java emitter.
 */

package test.wsdl.polymorphism;

public class PolymorphismTestSoapImpl implements
test.wsdl.polymorphism.PolymorphismTestSoap{
    public static final String B_TEXT = "this is my B field";
    public static final String A_TEXT = "this is my A field";

    public test.wsdl.polymorphism.A getBAsA(boolean sendC)
            throws java.rmi.RemoteException {
        if (sendC) {
            C myC = new C();
            myC.setA(A_TEXT);
            return myC;
        } else {
            B myB = new B();
            myB.setB(B_TEXT);
            myB.setA(A_TEXT);
            System.out.println("returning A B myB="+myB);
            return myB;
        }
    }

}

Re: passing parameter subclasses using Axis

Posted by Davanum Srinivas <di...@yahoo.com>.
See Releases at http://xml.apache.org/axis/

--- Chad <ch...@optusnet.com.au> wrote:
> Dims 
> latest RC1 (release candidate 1) is this a nightly drop
> sorry for my ignorance
> 
> Chad


=====
Davanum Srinivas - http://xml.apache.org/~dims/

__________________________________________________
Do You Yahoo!?
Yahoo! Finance - Get real-time stock quotes
http://finance.yahoo.com

Re: passing parameter subclasses using Axis

Posted by Chad <ch...@optusnet.com.au>.
Dims 
latest RC1 (release candidate 1) is this a nightly drop
sorry for my ignorance

Chad

RE: passing parameter subclasses using Axis

Posted by Davanum Srinivas <di...@yahoo.com>.
Chad,

Glen is on vacation...Can you please try latest RC1 (and log a bugzilla bug with all the code
needed to reproduce the problem)?

Thanks,
dims

--- Chad <ch...@optusnet.com.au> wrote:
> Glen thanks for your response.
> Sorry about the lateness of my follow up questions.
> 
> I have downloaded ,altered (to work outside of junit and from a main)
> and used your test scripts.
> in test1PolymorphismTestGetBAsA 
> 	value = binding.getBAsA(false); 
> value came across as an A when it should have been a B ( a B was sent
> back) 
> 
> I am using beta 3
> I am using a separate webapp directory rather than using
> $tomcatHome/webapps/axis
> the axis jars are in $tomcatHome/common/lib (made no difference putting
> them in WEB-INF/lib)
> Java 1.3.1
> windows ME and cygwin (sorry)
> 
> further help would be appreciated.
> 
> Chad
> 
> WSDL2Java command from $tomcatHome/webapps/poly
> java -cp ".;$tccp" org.apache.axis.wsdl.WSDL2Java -S true --all
> -Nhttp://xml.apache.org/axis/PolymorphismTest=test.wsdl.polymorphism
> polymorphism.wsdl
> 
> Deployment command from $tomcatHome/webapps/poly
> java -cp ".;$tccp" org.apache.axis.client.AdminClient
> -lhttp://localhost:8080/poly/servlet/AxisServlet
> test\\wsdl\\polymorphism\\deploy.wsdd
> 
> 
> 
> Source files as I had them follow
> ----------------------------------------
> 
> package test.wsdl.polymorphism;
> 
> import java.net.*;
> 
> public class PolymorphismTest_ServiceTestCase  {
>     public PolymorphismTest_ServiceTestCase() {
> 
>     }
>     public void test1PolymorphismTestGetBAsA() {
>         test.wsdl.polymorphism.PolymorphismTestSoap binding;
>         try {
>             binding = new
> test.wsdl.polymorphism.PolymorphismTest_ServiceLocator().getPolymorphismTest(new
> URL("http://localhost:8080/poly/services/PolymorphismTest"));
>         }
>         catch (Exception e) {
>             throw new RuntimeException("JAX-RPC ServiceException caught:
> " + e);
>         }
> 
>         try {
>             test.wsdl.polymorphism.A value = null;
> 
>             // Passing false here gets us a "B"
>             value = binding.getBAsA(false);
> 
>             // Check out the return value for correctness.
>             if(!(value instanceof B) ){throw new RuntimeException("value
> not B value="+value);}
>             B myB = (B)value;
>            /* assertEquals("B field didn't match",
>                          PolymorphismTestSoapImpl.B_TEXT,
>                          myB.getB());
>             assertEquals("A field didn't match",
>                          PolymorphismTestSoapImpl.A_TEXT,
>                          myB.getA());*/
>         }
>         catch (java.rmi.RemoteException re) {
>             throw new RuntimeException("Remote Exception caught: " +
> re);
>         }
>     }
> 
>     public void test1PolymorphismTestGetCAsA() {
>         test.wsdl.polymorphism.PolymorphismTestSoap binding;
>         try {
>             binding = new
> test.wsdl.polymorphism.PolymorphismTest_ServiceLocator().getPolymorphismTest(new
> URL("http://localhost:8080/poly/services/PolymorphismTest"));
>         }
>         catch (Exception e) {
>             throw new RuntimeException("JAX-RPC ServiceException caught:
> " + e);
>         }
> 
>         try {
>             test.wsdl.polymorphism.A value = null;
> 
>             // Passing true here gets us a "C" on the server side, but
> since
>             // there's no type mapping for that we should just get the
> "A"
>             // part.
>             value = binding.getBAsA(true);
> 
>             // Check out the return value for correctness.
>             if(!( value instanceof A)) {throw new
> RuntimeException("value not A value="+value);}
>             /*assertEquals("A field didn't match",
>                          PolymorphismTestSoapImpl.A_TEXT,
>                          value.getA());*/
>         }
>         catch (java.rmi.RemoteException re) {
>             throw new RuntimeException("Remote Exception caught: " +
> re);
>         }
>     }
> 
>     public static void main(String[] args)
>     {
>         PolymorphismTest_ServiceTestCase p = new
> PolymorphismTest_ServiceTestCase();
>         p.test1PolymorphismTestGetBAsA();
>         p.test1PolymorphismTestGetCAsA();
>     }
> 
> }
> 
> /**
>  * PolymorphismTestSoapImpl.java
>  *
>  * This file was auto-generated from WSDL
>  * by the Apache Axis WSDL2Java emitter.
>  */
> 
> package test.wsdl.polymorphism;
> 
> public class PolymorphismTestSoapImpl implements
> test.wsdl.polymorphism.PolymorphismTestSoap{
>     public static final String B_TEXT = "this is my B field";
>     public static final String A_TEXT = "this is my A field";
> 
>     public test.wsdl.polymorphism.A getBAsA(boolean sendC)
>             throws java.rmi.RemoteException {
>         if (sendC) {
>             C myC = new C();
>             myC.setA(A_TEXT);
>             return myC;
>         } else {
>             B myB = new B();
>             myB.setB(B_TEXT);
>             myB.setA(A_TEXT);
>             System.out.println("returning A B myB="+myB);
>             return myB;
>         }
>     }
> 
> }


=====
Davanum Srinivas - http://xml.apache.org/~dims/

__________________________________________________
Do You Yahoo!?
Yahoo! Finance - Get real-time stock quotes
http://finance.yahoo.com