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 "clint dovholuk (JIRA)" <ax...@ws.apache.org> on 2005/06/13 15:54:48 UTC
[jira] Commented: (AXIS-1955) Axis 1.2rc3 does not write derived types from abstract classes to wsdl
[ http://issues.apache.org/jira/browse/AXIS-1955?page=comments#action_12313467 ]
clint dovholuk commented on AXIS-1955:
--------------------------------------
ok, this works great for an attribute that is a single class. but it turns out that if you use an array, it doesn't write the wsdl properly.
for example:
public class Myclass
{
private AbstractSomething thing1;
private AbstractSomethingElse[] thing2;
/*
... more code...
*/
}
AbstractSomething will be written to the wsdl, AbstractSomethingElse will not...
should i post another bug or reopen this one?
Thanks,
-Clint
> Axis 1.2rc3 does not write derived types from abstract classes to wsdl
> ----------------------------------------------------------------------
>
> Key: AXIS-1955
> URL: http://issues.apache.org/jira/browse/AXIS-1955
> Project: Apache Axis
> Type: Bug
> Components: WSDL processing
> Versions: 1.2RC3
> Environment: os: ms windows xp pro build 2600 with sp 2
> app server: resin 2.1.14
> ide: eclipse 3.1M6 (used to launch and debug the app)
> hardware: p4 3GHz + 1.0 G ram and ample hd space
> Reporter: clint dovholuk
> Fix For: 1.2.1
> Attachments: 1955Patch_cvs_diff.txt, Patch_BeanSerializer.diff, test.jar
>
> After upgrading to Axis 1.2rc3 I noticed that the wsdl is no longer being written properly when using derived types from abstract classes.
> Test Case: (i hope you perserve spaces as this is indented properly when i submit it)
> create these files and compile them:
> TestObj.java
> package test;
> public class TestObj {
> public void testShapeHolder(ShapeHolder shapeHolder) {
> System.err.println("SHAPE CLASS: " + shapeHolder.getClass());
> }
> /*
> this is commented out on purpose, you will remove it in the last steps of the test case
> public void testAbstractShape(AbstractShape shape) {
> System.err.println("SHAPE CLASS: " + shape.getClass());
> }
> */
> }
>
> ShapeTester.java
> package test;
> public class ShapeTester {
> private AbstractShape shape;
> public AbstractShape getShape () { return shape; }
> //public void setShape (AbstractShape shape) { this.shape = shape; }
> }
>
> AbstractShape.java
> package test;
> public abstract class AbstractShape {}
>
> Square.java
> package test;
> public class Square extends AbstractShape {}
>
> Circle.java
> package test;
> public class Circle extends AbstractShape {}
>
> Add this service to the server-config.wsdd
> <service name="absTest" provider="java:RPC">
> <parameter name="allowedMethods" value="*" />
> <parameter name="className" value="test.TestObj" />
> <beanMapping qname="THENS:ShapeTester" xmlns:THENS="myWebApp:ShapeTester" languageSpecificType="java:test.ShapeTester"/>
> <beanMapping qname="THENS:Square" xmlns:THENS="myWebApp:Square" languageSpecificType="java:test.Square" />
> <beanMapping qname="THENS:Circle" xmlns:THENS="myWebApp:Circle" languageSpecificType="java:test.Circle" />
> </service>
>
>
> install axis 1.1 and get it running
>
> hit the wsdl and look at the wsdl:types, on my box it looks like:
> <wsdl:types>
> <schema targetNamespace="http://test" xmlns="http://www.w3.org/2001/XMLSchema">
> <import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
> <complexType abstract="true" name="AbstractShape">
> <sequence />
> </complexType>
> </schema>
> <schema targetNamespace="myWebApp:Circle" xmlns="http://www.w3.org/2001/XMLSchema">
> <import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
> <complexType name="Circle">
> <complexContent>
> <extension base="tns2:AbstractShape">
> <sequence />
> </extension>
> </complexContent>
> </complexType>
> </schema>
> <schema targetNamespace="myWebApp:ShapeTester" xmlns="http://www.w3.org/2001/XMLSchema">
> <import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
> <complexType name="ShapeTester">
> <sequence>
> <element name="shape" nillable="true" type="tns2:AbstractShape" />
> </sequence>
> </complexType>
> </schema>
> <schema targetNamespace="myWebApp:Square" xmlns="http://www.w3.org/2001/XMLSchema">
> <import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
> <complexType name="Square">
> <complexContent>
> <extension base="tns2:AbstractShape">
> <sequence />
> </extension>
> </complexContent>
> </complexType>
> </schema>
> </wsdl:types>
>
> replace axis libraries (I replaced axis.jar, saaj.jar, and wsdl.jar) with corresponding axis 1.2rc3 jars
>
> hit the wsdl and look at the wsdl:types, i NOW get: (that can't be right, is it?)
> <wsdl:types>
> <schema targetNamespace="http://test" xmlns="http://www.w3.org/2001/XMLSchema">
> <import namespace="myWebApp:ShapeTester" />
> <import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
> <complexType abstract="true" name="AbstractShape">
> <sequence />
> </complexType>
> </schema>
> <schema targetNamespace="myWebApp:ShapeTester" xmlns="http://www.w3.org/2001/XMLSchema">
> <import namespace="http://test" />
> <import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
> <complexType name="ShapeTester">
> <sequence>
> <element name="shape" nillable="true" type="tns2:AbstractShape" />
> </sequence>
> </complexType>
> </schema>
> </wsdl:types>
>
> uncomment the method in TestObj named testAbstractShape
>
> restart the application
>
> hit the wsdl. you now get the FULL wsdl written out including the types:
> <wsdl:types>
> <schema targetNamespace="http://test" xmlns="http://www.w3.org/2001/XMLSchema">
> <import namespace="myWebApp:ShapeTester" />
> <import namespace="myWebApp:Circle" />
> <import namespace="myWebApp:Square" />
> <import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
> <complexType abstract="true" name="AbstractShape">
> <sequence />
> </complexType>
> </schema>
> <schema targetNamespace="myWebApp:ShapeTester" xmlns="http://www.w3.org/2001/XMLSchema">
> <import namespace="myWebApp:Circle" />
> <import namespace="http://test" />
> <import namespace="myWebApp:Square" />
> <import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
> <complexType name="ShapeTester">
> <sequence>
> <element name="shape" nillable="true" type="tns2:AbstractShape" />
> </sequence>
> </complexType>
> </schema>
> <schema targetNamespace="myWebApp:Square" xmlns="http://www.w3.org/2001/XMLSchema">
> <import namespace="myWebApp:ShapeTester" />
> <import namespace="myWebApp:Circle" />
> <import namespace="http://test" />
> <import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
> <complexType name="Square">
> <complexContent>
> <extension base="tns2:AbstractShape">
> <sequence />
> </extension>
> </complexContent>
> </complexType>
> </schema>
> <schema targetNamespace="myWebApp:Circle" xmlns="http://www.w3.org/2001/XMLSchema">
> <import namespace="myWebApp:ShapeTester" />
> <import namespace="http://test" />
> <import namespace="myWebApp:Square" />
> <import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
> <complexType name="Circle">
> <complexContent>
> <extension base="tns2:AbstractShape">
> <sequence />
> </extension>
> </complexContent>
> </complexType>
> </schema>
> </wsdl:types>
>
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira