Hi,
Is it possible to pass subclasses as parameters like in JAXWS 2.x?

My issue is this:

I'm unable to get an Axis2 client to pass a subclass to a JAXWS web service
because although wsdl2java generates a the subclass (when using xmlbeans), I
can't seem to properly create an instance in order to pass it. Does anyone
know how to do this?
thanks...


The details:


I've created a test web service under JAXWS, which exposes a method with a
polymorphic parameter:
@WebService
@XmlSeeAlso(SubBean.class)
public class Hello {
    @WebMethod testAbstractBeanArg(@WebParam AbstractBean bean) {...}
}

The @XmlSeeAlso annotation ensures the subclass SubBean also gets
represented in the WSDL:

<xs:complexType name="subBean">
  <xs:complexContent>
    <xs:extension base="tns:abstractBean">
      <xs:sequence>
        <xs:element name="desc" type="xs:string" minOccurs="0" /> 
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

When I generate client-side code using JAXWS's wsimport, and invoke the
method, I get a SubBean class as expected.
When I generate client-side code using Axis2's wsdl2java (with xmlbeans), I
have no idea how to create an instance. Based on the tutorial and my
generated classes, I tried this:

            TestAbstractBeanArgDocument req =
                    TestAbstractBeanArgDocument.Factory.newInstance();
            SubBeanImpl bean = new SubBeanImpl(req.type);
            bean.setDesc("sub bean desc");
            req.addNewTestAbstractBeanArg().setArg0(bean);
            TestAbstractBeanArgResponseDocument res =
stub.testAbstractBeanArg(req);
           
System.out.println(res.getTestAbstractBeanArgResponse().getReturn());

This throws the following exception inside the setDesc method:

java.lang.NullPointerException
        at ws.impl.SubBeanImpl.setDesc(SubBeanImpl.java:79)
        at samples.quickstart.clients.ADBClient.test(ADBClient.java:59)
        at samples.quickstart.clients.ADBClient.main(ADBClient.java:44)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at
org.apache.tools.ant.taskdefs.ExecuteJava.run(ExecuteJava.java:202)
        at
org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:134)
        at org.apache.tools.ant.taskdefs.Java.run(Java.java:710)
        at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:178)
        at org.apache.tools.ant.taskdefs.Java.execute(Java.java:84)
        at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
        at org.apache.tools.ant.Task.perform(Task.java:364)
        at org.apache.tools.ant.Target.execute(Target.java:341)
        at org.apache.tools.ant.Target.performTasks(Target.java:369)
        at
org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1185)
        at
org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:40)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1068)
        at
org.apache.tools.ant.module.bridge.impl.BridgeImpl.run(BridgeImpl.java:240)
        at
org.apache.tools.ant.module.run.TargetExecutor.run(TargetExecutor.java:293)
        at
org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:131)

the line that causes the exception is the one in bold below:

    public void setDesc(java.lang.String desc)
    {
        synchronized (monitor())
        {
            check_orphaned();
            org.apache.xmlbeans.SimpleValue target = null;
            target =
(org.apache.xmlbeans.SimpleValue)get_store().find_element_user(DESC$0, 0);
            if (target == null)
            {
                target =
(org.apache.xmlbeans.SimpleValue)get_store().add_element_user(DESC$0);
            }
            target.setStringValue(desc);
        }
    }

-- 
View this message in context: 
http://www.nabble.com/Passing-subclasses-in-method-parameters-tp19705964p19705964.html
Sent from the Axis - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to