[ http://issues.apache.org/jira/browse/AXIS-1955?page=all ]
Jayachandra Sekhara Rao Sunkara updated AXIS-1955: -------------------------------------------------- Attachment: Patch_BeanSerializer.diff Attaching the patch file for earlier mentioned change. > 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: 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 > Attachments: 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