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 di...@apache.org on 2002/11/24 15:43:59 UTC
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 mseibert@us.ibm.com
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 apache@apache.org.
*
* 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 <di...@yahoo.com>
*/
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 apache@apache.org.
*
* 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 <di...@yahoo.com>
*/
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",