Once again, Dims proves that he is "da MAN"! Dims, how does this work? Do we need to document it special?
-- Tom Jordahl Macromedia Server Development -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] Sent: Sunday, November 24, 2002 9:44 AM To: [EMAIL PROTECTED] Subject: cvs commit: xml-axis/java/src/org/apache/axis/wsdl/symbolTable SchemaUtils.java dims 2002/11/24 06:43:59 Modified: java/src/org/apache/axis Constants.java java/src/org/apache/axis/encoding DefaultTypeMappingImpl.java java/src/org/apache/axis/wsdl/symbolTable SchemaUtils.java Added: java/test/wsdl/dataset build.xml DataService.wsdl DataServiceTestCase.java java/src/org/apache/axis/types Schema.java java/src/org/apache/axis/holders SchemaHolder.java Log: Fix for Bug 8419 - DotNet's DataSet is not supported Notes: - Added test case - support for xsd:schema in wsdl2java Revision Changes Path 1.1 xml-axis/java/test/wsdl/dataset/build.xml Index: build.xml =================================================================== <?xml version="1.0" ?> <!DOCTYPE project [ <!ENTITY properties SYSTEM "file:../../../xmls/properties.xml"> <!ENTITY paths SYSTEM "file:../../../xmls/path_refs.xml"> <!ENTITY taskdefs SYSTEM "file:../../../xmls/taskdefs.xml"> <!ENTITY taskdefs_post_compile SYSTEM "file:../../../xmls/taskdefs_post_compile.xml"> <!ENTITY targets SYSTEM "file:../../../xmls/targets.xml"> ]> <!-- =================================================================== <description> Test/Sample Component file for Axis Notes: This is a build file for use with the Jakarta Ant build tool. Prerequisites: jakarta-ant from http://jakarta.apache.org Build Instructions: To compile ant compile To execute ant run Author: Matt Seibert [EMAIL PROTECTED] Copyright: Copyright (c) 2002-2003 Apache Software Foundation. </description> ==================================================================== --> <project default="compile"> <property name="axis.home" location="../../.." /> <property name="componentName" value="test/wsdl/dataset" /> &properties; &paths; &taskdefs; &taskdefs_post_compile; &targets; <target name="clean"> <echo message="Removing ${build.dir}/classes/${componentName} and ${build.dir}/work/${componentName}" /> <delete dir="${build.dir}/classes/${componentName}"/> <delete dir="${build.dir}/work/${componentName}"/> </target> <target name="copy" depends="setenv"/> <target name="compile" depends="copy"> <echo message="Compiling test.wsdl.dataset"/> <!-- This is a DII test with multiple output params --> <wsdl2java url="${axis.home}/test/wsdl/dataset/DataService.wsdl" output="${axis.home}/build/work" serverSide="no" testcase="no"> <mapping namespace="http://tempuri.org/" package="test.wsdl.dataset"/> </wsdl2java> <copy todir="${build.dir}/work/test/wsdl/dataset" overwrite="yes"> <fileset dir="${axis.home}/test/wsdl/dataset"> <include name="*TestCase.java"/> </fileset> </copy> <javac srcdir="${build.dir}/work" destdir="${build.dest}" fork="${javac.fork}" debug="${debug}"> <classpath refid="classpath" /> <include name="test/wsdl/dataset/*.java" /> <include name="test/wsdl/dataset/**/*.java" /> </javac> </target> <target name="run" > <antcall target="execute-Component-noServer" /> </target> </project> 1.1 xml-axis/java/test/wsdl/dataset/DataService.wsdl Index: DataService.wsdl =================================================================== <?xml version="1.0" encoding="utf-8"?> <definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:s0="http://tempuri.org/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace="http://tempuri.org/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <types> <s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/"> <s:import namespace="http://www.w3.org/2001/XMLSchema" /> <s:element name="GetTitleAuthors"> <s:complexType /> </s:element> <s:element name="GetTitleAuthorsResponse"> <s:complexType> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="GetTitleAuthorsResult"> <s:complexType> <s:sequence> <s:element ref="s:schema" /> <s:any /> </s:sequence> </s:complexType> </s:element> </s:sequence> </s:complexType> </s:element> <s:element name="PutTitleAuthors"> <s:complexType> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="DS"> <s:complexType> <s:sequence> <s:element ref="s:schema" /> <s:any /> </s:sequence> </s:complexType> </s:element> </s:sequence> </s:complexType> </s:element> <s:element name="PutTitleAuthorsResponse"> <s:complexType> <s:sequence> <s:element minOccurs="1" maxOccurs="1" name="PutTitleAuthorsResult" type="s:int" /> </s:sequence> </s:complexType> </s:element> <s:element name="DataSet" nillable="true"> <s:complexType> <s:sequence> <s:element ref="s:schema" /> <s:any /> </s:sequence> </s:complexType> </s:element> </s:schema> </types> <message name="GetTitleAuthorsSoapIn"> <part name="parameters" element="s0:GetTitleAuthors" /> </message> <message name="GetTitleAuthorsSoapOut"> <part name="parameters" element="s0:GetTitleAuthorsResponse" /> </message> <message name="PutTitleAuthorsSoapIn"> <part name="parameters" element="s0:PutTitleAuthors" /> </message> <message name="PutTitleAuthorsSoapOut"> <part name="parameters" element="s0:PutTitleAuthorsResponse" /> </message> <message name="GetTitleAuthorsHttpGetIn" /> <message name="GetTitleAuthorsHttpGetOut"> <part name="Body" element="s0:DataSet" /> </message> <message name="GetTitleAuthorsHttpPostIn" /> <message name="GetTitleAuthorsHttpPostOut"> <part name="Body" element="s0:DataSet" /> </message> <portType name="DataServiceSoap"> <operation name="GetTitleAuthors"> <input message="s0:GetTitleAuthorsSoapIn" /> <output message="s0:GetTitleAuthorsSoapOut" /> </operation> <operation name="PutTitleAuthors"> <input message="s0:PutTitleAuthorsSoapIn" /> <output message="s0:PutTitleAuthorsSoapOut" /> </operation> </portType> <portType name="DataServiceHttpGet"> <operation name="GetTitleAuthors"> <input message="s0:GetTitleAuthorsHttpGetIn" /> <output message="s0:GetTitleAuthorsHttpGetOut" /> </operation> </portType> <portType name="DataServiceHttpPost"> <operation name="GetTitleAuthors"> <input message="s0:GetTitleAuthorsHttpPostIn" /> <output message="s0:GetTitleAuthorsHttpPostOut" /> </operation> </portType> <binding name="DataServiceSoap" type="s0:DataServiceSoap"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /> <operation name="GetTitleAuthors"> <soap:operation soapAction="http://tempuri.org/GetTitleAuthors" style="document" /> <input> <soap:body use="literal" /> </input> <output> <soap:body use="literal" /> </output> </operation> <operation name="PutTitleAuthors"> <soap:operation soapAction="http://tempuri.org/PutTitleAuthors" style="document" /> <input> <soap:body use="literal" /> </input> <output> <soap:body use="literal" /> </output> </operation> </binding> <binding name="DataServiceHttpGet" type="s0:DataServiceHttpGet"> <http:binding verb="GET" /> <operation name="GetTitleAuthors"> <http:operation location="/GetTitleAuthors" /> <input> <http:urlEncoded /> </input> <output> <mime:mimeXml part="Body" /> </output> </operation> </binding> <binding name="DataServiceHttpPost" type="s0:DataServiceHttpPost"> <http:binding verb="POST" /> <operation name="GetTitleAuthors"> <http:operation location="/GetTitleAuthors" /> <input> <mime:content type="application/x-www-form-urlencoded" /> </input> <output> <mime:mimeXml part="Body" /> </output> </operation> </binding> <service name="DataService"> <port name="DataServiceSoap" binding="s0:DataServiceSoap"> <soap:address location="http://samples.gotdotnet.com/quickstart/aspplus/samples/services/DataService/VB/DataService.asmx" /> </port> <port name="DataServiceHttpGet" binding="s0:DataServiceHttpGet"> <http:address location="http://samples.gotdotnet.com/quickstart/aspplus/samples/services/DataService/VB/DataService.asmx" /> </port> <port name="DataServiceHttpPost" binding="s0:DataServiceHttpPost"> <http:address location="http://samples.gotdotnet.com/quickstart/aspplus/samples/services/DataService/VB/DataService.asmx" /> </port> </service> </definitions> 1.1 xml-axis/java/test/wsdl/dataset/DataServiceTestCase.java Index: DataServiceTestCase.java =================================================================== /** * DataServiceTestCase.java * * This file was auto-generated from WSDL * by the Apache Axis WSDL2Java emitter. */ package test.wsdl.dataset; public class DataServiceTestCase extends junit.framework.TestCase { public DataServiceTestCase(java.lang.String name) { super(name); } public void test1DataServiceSoapGetTitleAuthors() throws Exception { test.wsdl.dataset.DataServiceSoap binding; try { binding = new test.wsdl.dataset.DataServiceLocator().getDataServiceSoap(); } catch (javax.xml.rpc.ServiceException jre) { if(jre.getLinkedCause()!=null) jre.getLinkedCause().printStackTrace(); throw new junit.framework.AssertionFailedError("JAX-RPC ServiceException caught: " + jre); } assertTrue("binding is null", binding != null); // Test operation test.wsdl.dataset.GetTitleAuthorsResult value = null; value = binding.getTitleAuthors(); assertTrue(value != null); // TBD - validate results } } 1.99 +1 -0 xml-axis/java/src/org/apache/axis/Constants.java Index: Constants.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/Constants.java,v retrieving revision 1.98 retrieving revision 1.99 diff -u -r1.98 -r1.99 --- Constants.java 22 Nov 2002 20:12:24 -0000 1.98 +++ Constants.java 24 Nov 2002 14:43:58 -0000 1.99 @@ -542,6 +542,7 @@ public static final QName XSD_ANYURI = new QName(URI_2001_SCHEMA_XSD, "anyURI"); public static final QName XSD_LANGUAGE = new QName(URI_2001_SCHEMA_XSD, "language"); public static final QName XSD_ID = new QName(URI_2001_SCHEMA_XSD, "ID"); + public static final QName XSD_SCHEMA = new QName(URI_2001_SCHEMA_XSD, "schema"); public static final QName XML_LANG = new QName(NS_URI_XML, "lang"); 1.64 +8 -0 xml-axis/java/src/org/apache/axis/encoding/DefaultTypeMappingImpl.java Index: DefaultTypeMappingImpl.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/encoding/DefaultTypeMappingImpl.java,v retrieving revision 1.63 retrieving revision 1.64 diff -u -r1.63 -r1.64 --- DefaultTypeMappingImpl.java 22 Nov 2002 20:12:25 -0000 1.63 +++ DefaultTypeMappingImpl.java 24 Nov 2002 14:43:58 -0000 1.64 @@ -565,6 +565,14 @@ new SimpleDeserializerFactory(org.apache.axis.types.URI.class, Constants.XSD_ANYURI) ); + + // a xsd:schema + myRegister(Constants.XSD_SCHEMA, org.apache.axis.types.Schema.class, + new BeanSerializerFactory(org.apache.axis.types.Schema.class, + Constants.XSD_SCHEMA), + new BeanDeserializerFactory(org.apache.axis.types.Schema.class, + Constants.XSD_SCHEMA) + ); // All array objects automatically get associated with the SOAP_ARRAY. // There is no way to do this with a hash table, 1.1 xml-axis/java/src/org/apache/axis/types/Schema.java Index: Schema.java =================================================================== /* * The Apache Software License, Version 1.1 * * * Copyright (c) 2001 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Axis" and "Apache Software Foundation" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache", * nor may "Apache" appear in their name, without prior written * permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package org.apache.axis.types; /** * Custom class for supporting XSD schema * * @author Davanum Srinivas <[EMAIL PROTECTED]> */ public class Schema implements java.io.Serializable { private org.apache.axis.message.MessageElement[] _any; private org.apache.axis.types.URI targetNamespace; // attribute private org.apache.axis.types.NormalizedString version; // attribute private org.apache.axis.types.Id id; // attribute public Schema() { } public org.apache.axis.message.MessageElement[] get_any() { return _any; } public void set_any(org.apache.axis.message.MessageElement[] _any) { this._any = _any; } public org.apache.axis.types.URI getTargetNamespace() { return targetNamespace; } public void setTargetNamespace(org.apache.axis.types.URI targetNamespace) { this.targetNamespace = targetNamespace; } public org.apache.axis.types.NormalizedString getVersion() { return version; } public void setVersion(org.apache.axis.types.NormalizedString version) { this.version = version; } public org.apache.axis.types.Id getId() { return id; } public void setId(org.apache.axis.types.Id id) { this.id = id; } private java.lang.Object __equalsCalc = null; public synchronized boolean equals(java.lang.Object obj) { if (!(obj instanceof Schema)) return false; Schema other = (Schema) obj; if (obj == null) return false; if (this == obj) return true; if (__equalsCalc != null) { return (__equalsCalc == obj); } __equalsCalc = obj; boolean _equals; _equals = true && ((_any == null && other.get_any() == null) || (_any != null && java.util.Arrays.equals(_any, other.get_any()))) && ((targetNamespace == null && other.getTargetNamespace() == null) || (targetNamespace != null && targetNamespace.equals(other.getTargetNamespace()))) && ((version == null && other.getVersion() == null) || (version != null && version.equals(other.getVersion()))) && ((id == null && other.getId() == null) || (id != null && id.equals(other.getId()))); __equalsCalc = null; return _equals; } private boolean __hashCodeCalc = false; public synchronized int hashCode() { if (__hashCodeCalc) { return 0; } __hashCodeCalc = true; int _hashCode = 1; if (get_any() != null) { for (int i = 0; i < java.lang.reflect.Array.getLength(get_any()); i++) { java.lang.Object obj = java.lang.reflect.Array.get(get_any(), i); if (obj != null && !obj.getClass().isArray()) { _hashCode += obj.hashCode(); } } } if (getTargetNamespace() != null) { _hashCode += getTargetNamespace().hashCode(); } if (getVersion() != null) { _hashCode += getVersion().hashCode(); } if (getId() != null) { _hashCode += getId().hashCode(); } __hashCodeCalc = false; return _hashCode; } // Type metadata private static org.apache.axis.description.TypeDesc typeDesc = new org.apache.axis.description.TypeDesc(Schema.class); static { org.apache.axis.description.FieldDesc field = new org.apache.axis.description.AttributeDesc(); field.setFieldName("targetNamespace"); field.setXmlName(new javax.xml.namespace.QName("", "targetNamespace")); field.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "anyURI")); typeDesc.addFieldDesc(field); field = new org.apache.axis.description.AttributeDesc(); field.setFieldName("version"); field.setXmlName(new javax.xml.namespace.QName("", "version")); field.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "normalizedString")); typeDesc.addFieldDesc(field); field = new org.apache.axis.description.AttributeDesc(); field.setFieldName("id"); field.setXmlName(new javax.xml.namespace.QName("", "id")); field.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "ID")); typeDesc.addFieldDesc(field); }; /** * Return type metadata object */ public static org.apache.axis.description.TypeDesc getTypeDesc() { return typeDesc; } /** * Get Custom Serializer */ public static org.apache.axis.encoding.Serializer getSerializer( java.lang.String mechType, java.lang.Class _javaType, javax.xml.namespace.QName _xmlType) { return new org.apache.axis.encoding.ser.BeanSerializer( _javaType, _xmlType, typeDesc); } /** * Get Custom Deserializer */ public static org.apache.axis.encoding.Deserializer getDeserializer( java.lang.String mechType, java.lang.Class _javaType, javax.xml.namespace.QName _xmlType) { return new org.apache.axis.encoding.ser.BeanDeserializer( _javaType, _xmlType, typeDesc); } } 1.1 xml-axis/java/src/org/apache/axis/holders/SchemaHolder.java Index: SchemaHolder.java =================================================================== /* * The Apache Software License, Version 1.1 * * * Copyright (c) 2001 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Axis" and "Apache Software Foundation" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache", * nor may "Apache" appear in their name, without prior written * permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package org.apache.axis.holders; /** * Custom class for supporting XSD schema * * @author Davanum Srinivas <[EMAIL PROTECTED]> */ public final class SchemaHolder implements javax.xml.rpc.holders.Holder { public org.apache.axis.types.Schema value; public SchemaHolder() { } public SchemaHolder(org.apache.axis.types.Schema value) { this.value = value; } } 1.17 +1 -0 xml-axis/java/src/org/apache/axis/wsdl/symbolTable/SchemaUtils.java Index: SchemaUtils.java =================================================================== RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/symbolTable/SchemaUtils.java,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- SchemaUtils.java 30 Aug 2002 15:31:30 -0000 1.16 +++ SchemaUtils.java 24 Nov 2002 14:43:59 -0000 1.17 @@ -1111,6 +1111,7 @@ // list of all of the XSD types in Schema 2001 private static String schemaTypes[] = { + "schema", "string", "normalizedString", "token",