Author: gdaniels
Date: Sat Sep 17 23:09:48 2005
New Revision: 289897
URL: http://svn.apache.org/viewcvs?rev=289897&view=rev
Log:
* Rough in test framework
* Fix problem with element forms, change bizarre capitalization of enum values
for form
* Add a couple of tests
Added:
webservices/commons/trunk/XmlSchema/test/
webservices/commons/trunk/XmlSchema/test-resources/
webservices/commons/trunk/XmlSchema/test-resources/elementForm.xsd
webservices/commons/trunk/XmlSchema/test-resources/forwardRef.xsd
webservices/commons/trunk/XmlSchema/test/tests/
webservices/commons/trunk/XmlSchema/test/tests/TestElementForm.java
webservices/commons/trunk/XmlSchema/test/tests/TestForwardRefs.java
Modified:
webservices/commons/trunk/XmlSchema/build.xml
webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/enum/Enum.java
webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/xml/schema/SchemaBuilder.java
webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/xml/schema/XmlSchema.java
webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/xml/schema/XmlSchemaAttribute.java
webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/xml/schema/XmlSchemaElement.java
webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/xml/schema/XmlSchemaForm.java
webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/xml/schema/XmlSchemaSerializer.java
Modified: webservices/commons/trunk/XmlSchema/build.xml
URL:
http://svn.apache.org/viewcvs/webservices/commons/trunk/XmlSchema/build.xml?rev=289897&r1=289896&r2=289897&view=diff
==============================================================================
--- webservices/commons/trunk/XmlSchema/build.xml (original)
+++ webservices/commons/trunk/XmlSchema/build.xml Sat Sep 17 23:09:48 2005
@@ -11,12 +11,20 @@
<property name="dist.dir" value="${build.dir}/dist"/>
<property name="dist.zip" value="${project.name}.zip"/>
<property name="srcdist.zip" value="${project.name}-src.zip"/>
+ <property name="test.dir" value="${basedir}/test"/>
+ <property name="test_classes.dir" value="${build.dir}/test-classes"/>
+ <property name="test_reports.dir" value="${build.dir}/test-reports"/>
<target name="prepare">
<mkdir dir="${build_classes.dir}"/>
<mkdir dir="${build_lib.dir}"/>
</target>
+ <target name="prepare-tests">
+ <mkdir dir="${test_classes.dir}"/>
+ <mkdir dir="${test_reports.dir}"/>
+ </target>
+
<target name="compile" depends="prepare" description="compiles the src and
puts it in build/classes">
<javac srcdir="${src.dir}" destdir="${build_classes.dir}"
debug="true"
deprecation="true">
@@ -24,7 +32,29 @@
</javac>
</target>
- <target name="jar" depends="compile" description="compiles the src and
creates XmlSchema.jar in build/lib">
+ <target name="compile-tests" depends="prepare-tests, compile"
description="compiles the tests and puts them in build/test-classes">
+ <javac srcdir="${test.dir}" destdir="${test_classes.dir}"
debug="true"
+ deprecation="true">
+ <include name="**/*.java" />
+ </javac>
+ </target>
+
+ <target name="test" depends="compile-tests" description="Runs the unit
tests">
+ <junit printsummary="yes" haltonfailure="yes">
+ <classpath>
+ <pathelement location="${build_classes.dir}"/>
+ <pathelement location="${test_classes.dir}"/>
+ </classpath>
+
+ <batchtest todir="${test_reports.dir}">
+ <fileset dir="${test.dir}">
+ <include name="**/*Test*.java"/>
+ </fileset>
+ </batchtest>
+ </junit>
+ </target>
+
+ <target name="jar" depends="compile, test" description="compiles the src
and creates XmlSchema.jar in build/lib">
<jar jarfile="${build_lib.dir}/${output.jar}" compress="true"
basedir="${build_classes.dir}"/>
</target>
Modified:
webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/enum/Enum.java
URL:
http://svn.apache.org/viewcvs/webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/enum/Enum.java?rev=289897&r1=289896&r2=289897&view=diff
==============================================================================
--- webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/enum/Enum.java
(original)
+++ webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/enum/Enum.java
Sat Sep 17 23:09:48 2005
@@ -92,7 +92,7 @@
break;
}
if (i == values.length - 1)
- throw new EnumValueException("Bad Enumeration value");
+ throw new EnumValueException("Bad Enumeration value '" +
value + "'");
}
}
}
Modified:
webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/xml/schema/SchemaBuilder.java
URL:
http://svn.apache.org/viewcvs/webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/xml/schema/SchemaBuilder.java?rev=289897&r1=289896&r2=289897&view=diff
==============================================================================
---
webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/xml/schema/SchemaBuilder.java
(original)
+++
webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/xml/schema/SchemaBuilder.java
Sat Sep 17 23:09:48 2005
@@ -88,7 +88,7 @@
schema.items.add(type);
collection.resolveType(type.getQName(), type);
} else if (el.getLocalName().equals("element")) {
- XmlSchemaElement element = handleElement(schema, el, schemaEl);
+ XmlSchemaElement element = handleElement(schema, el, schemaEl,
true);
if (element.qualifiedName != null)
schema.elements.collection.put(element.qualifiedName,
element);
else if (element.refName != null)
@@ -951,7 +951,7 @@
sequence.items.add(seq);
} else if (el.getLocalName().equals("element")) {
XmlSchemaElement element = handleElement(schema, el,
- schemaEl);
+ schemaEl, false);
sequence.items.add(element);
} else if (el.getLocalName().equals("group")) {
XmlSchemaGroupRef group = handleGroupRef(schema, el,
@@ -1021,7 +1021,7 @@
choice.items.add(seq);
} else if (el.getLocalName().equals("element")) {
XmlSchemaElement element =
- handleElement(schema, el, schemaEl);
+ handleElement(schema, el, schemaEl, false);
choice.items.add(element);
} else if (el.getLocalName().equals("group")) {
XmlSchemaGroupRef group =
@@ -1051,7 +1051,7 @@
el != null; el = XDOMUtil.getNextSiblingElementNS(el,
XmlSchema.SCHEMA_NS)) {
if (el.getLocalName().equals("element")) {
- XmlSchemaElement element = handleElement(schema, el, schemaEl);
+ XmlSchemaElement element = handleElement(schema, el, schemaEl,
false);
all.items.add(element);
} else if (el.getLocalName().equals("annotation")) {
XmlSchemaAnnotation annotation = handleAnnotation(el);
@@ -1361,8 +1361,10 @@
* ********
* handle_complex_content_restriction
*/
- XmlSchemaElement handleElement(XmlSchema schema, Element el,
- Element schemaEl) {
+ XmlSchemaElement handleElement(XmlSchema schema,
+ Element el,
+ Element schemaEl,
+ boolean isGlobal) {
XmlSchemaElement element = new XmlSchemaElement();
@@ -1372,8 +1374,16 @@
// String namespace = (schema.targetNamespace==null)?
// "" : schema.targetNamespace;
- element.qualifiedName = new QName(schema.targetNamespace,
- element.name);
+ boolean isQualified =
schema.getElementFormDefault().getValue().equals(XmlSchemaForm.QUALIFIED);
+ if (el.hasAttribute("form")) {
+ String formDef = el.getAttribute("form");
+ element.form = new XmlSchemaForm(formDef);
+ isQualified = formDef.equals(XmlSchemaForm.QUALIFIED);
+ }
+
+ String ns = isQualified || isGlobal ? schema.targetNamespace :
+ null;
+ element.qualifiedName = new QName(ns, element.name);
Element annotationEl =
XDOMUtil.getFirstChildElementNS(el,
@@ -1502,10 +1512,6 @@
if (el.hasAttribute("fixed"))
element.fixedValue = el.getAttribute("fixed");
- if (el.hasAttribute("form")) {
- String formDef = getEnumString(el, "form");
- element.form = new XmlSchemaForm(formDef);
- }
if (el.hasAttribute("id"))
element.id = el.getAttribute("id");
@@ -1768,7 +1774,7 @@
char c = Character.toUpperCase(value.charAt(0));
return new XmlSchemaForm(c + value.substring(1));
} else
- return new XmlSchemaForm("Unqualified");
+ return new XmlSchemaForm("unqualified");
}
//Check value entered by user and change according to .net spec,
Modified:
webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/xml/schema/XmlSchema.java
URL:
http://svn.apache.org/viewcvs/webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/xml/schema/XmlSchema.java?rev=289897&r1=289896&r2=289897&view=diff
==============================================================================
---
webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/xml/schema/XmlSchema.java
(original)
+++
webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/xml/schema/XmlSchema.java
Sat Sep 17 23:09:48 2005
@@ -117,8 +117,8 @@
*/
public XmlSchema(XmlSchemaCollection parent) {
this.parent = parent;
- attributeFormDefault = new XmlSchemaForm("Qualified");
- elementFormDefault = new XmlSchemaForm("Qualified");
+ attributeFormDefault = new XmlSchemaForm(XmlSchemaForm.UNQUALIFIED);
+ elementFormDefault = new XmlSchemaForm(XmlSchemaForm.UNQUALIFIED);
blockDefault = new XmlSchemaDerivationMethod("None");
finalDefault = new XmlSchemaDerivationMethod("None");
items = new XmlSchemaObjectCollection();
Modified:
webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/xml/schema/XmlSchemaAttribute.java
URL:
http://svn.apache.org/viewcvs/webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/xml/schema/XmlSchemaAttribute.java?rev=289897&r1=289896&r2=289897&view=diff
==============================================================================
---
webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/xml/schema/XmlSchemaAttribute.java
(original)
+++
webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/xml/schema/XmlSchemaAttribute.java
Sat Sep 17 23:09:48 2005
@@ -85,7 +85,7 @@
* Creates new XmlSchemaAttribute
*/
public XmlSchemaAttribute() {
- form = new XmlSchemaForm("None");
+ form = new XmlSchemaForm(XmlSchemaForm.NONE);
use = new XmlSchemaUse("None");
}
Modified:
webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/xml/schema/XmlSchemaElement.java
URL:
http://svn.apache.org/viewcvs/webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/xml/schema/XmlSchemaElement.java?rev=289897&r1=289896&r2=289897&view=diff
==============================================================================
---
webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/xml/schema/XmlSchemaElement.java
(original)
+++
webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/xml/schema/XmlSchemaElement.java
Sat Sep 17 23:09:48 2005
@@ -137,7 +137,7 @@
constraints = new XmlSchemaObjectCollection();
isAbstract = false;
isNillable = false;
- form = new XmlSchemaForm("None");
+ form = new XmlSchemaForm(XmlSchemaForm.NONE);
finalDerivation = new XmlSchemaDerivationMethod("None");
block = new XmlSchemaDerivationMethod("None");
}
Modified:
webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/xml/schema/XmlSchemaForm.java
URL:
http://svn.apache.org/viewcvs/webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/xml/schema/XmlSchemaForm.java?rev=289897&r1=289896&r2=289897&view=diff
==============================================================================
---
webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/xml/schema/XmlSchemaForm.java
(original)
+++
webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/xml/schema/XmlSchemaForm.java
Sat Sep 17 23:09:48 2005
@@ -75,7 +75,11 @@
public class XmlSchemaForm extends Enum {
- static String[] members = new String[]{"None", "Qualified", "Unqualified"};
+ public static final String QUALIFIED = "qualified";
+ public static final String UNQUALIFIED = "unqualified";
+ public static final String NONE = "none";
+
+ static String[] members = new String[]{NONE, QUALIFIED, UNQUALIFIED};
/**
* Creates new XmlSchemaForm
Modified:
webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/xml/schema/XmlSchemaSerializer.java
URL:
http://svn.apache.org/viewcvs/webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/xml/schema/XmlSchemaSerializer.java?rev=289897&r1=289896&r2=289897&view=diff
==============================================================================
---
webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/xml/schema/XmlSchemaSerializer.java
(original)
+++
webservices/commons/trunk/XmlSchema/src/org/apache/axis/xsd/xml/schema/XmlSchemaSerializer.java
Sat Sep 17 23:09:48 2005
@@ -168,7 +168,7 @@
if (schemaObj.attributeFormDefault != null) {
String formQualified = schemaObj.attributeFormDefault.getValue();
- if (!formQualified.equals("None"))
+ if (!formQualified.equals(XmlSchemaForm.NONE))
serializedSchema.setAttributeNS(XmlSchema.SCHEMA_NS,
"attributeFormDefault",
convertString(formQualified));
}
@@ -176,7 +176,7 @@
if (schemaObj.elementFormDefault != null) {
String formQualified = schemaObj.elementFormDefault.getValue();
- if (!formQualified.equals("None"))
+ if (!formQualified.equals(XmlSchemaForm.NONE))
serializedSchema.setAttributeNS(XmlSchema.SCHEMA_NS,
"elementFormDefault",
convertString(formQualified));
}
@@ -570,7 +570,7 @@
elementObj.fixedValue);
String formDef = elementObj.form.getValue();
- if (!formDef.equals("None")) {
+ if (!formDef.equals(XmlSchemaForm.NONE)) {
formDef = convertString(formDef);
serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "form", formDef);
}
@@ -1082,7 +1082,7 @@
attributeObj.fixedValue);
String formType = attributeObj.form.getValue();
- if (!formType.equals("None")) {
+ if (!formType.equals(XmlSchemaForm.NONE)) {
formType = convertString(formType);
attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "form", formType);
}
Added: webservices/commons/trunk/XmlSchema/test-resources/elementForm.xsd
URL:
http://svn.apache.org/viewcvs/webservices/commons/trunk/XmlSchema/test-resources/elementForm.xsd?rev=289897&view=auto
==============================================================================
--- webservices/commons/trunk/XmlSchema/test-resources/elementForm.xsd (added)
+++ webservices/commons/trunk/XmlSchema/test-resources/elementForm.xsd Sat Sep
17 23:09:48 2005
@@ -0,0 +1,19 @@
+<schema
+ xmlns="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:tns="http://unqualified-elements.example.com"
+ targetNamespace="http://unqualified-elements.example.com">
+
+ <element name="unQualifiedLocals">
+ <complexType>
+ <sequence>
+ <element name="unqualified" type="xsd:string"/>
+ <element name="qualified" form="qualified" type="xsd:int"/>
+<!-- <element ref="tns:global"/>-->
+ </sequence>
+ </complexType>
+ </element>
+
+ <element name="global" type="xsd:int"/>
+
+</schema>
Added: webservices/commons/trunk/XmlSchema/test-resources/forwardRef.xsd
URL:
http://svn.apache.org/viewcvs/webservices/commons/trunk/XmlSchema/test-resources/forwardRef.xsd?rev=289897&view=auto
==============================================================================
--- webservices/commons/trunk/XmlSchema/test-resources/forwardRef.xsd (added)
+++ webservices/commons/trunk/XmlSchema/test-resources/forwardRef.xsd Sat Sep
17 23:09:48 2005
@@ -0,0 +1,62 @@
+<schema
+ xmlns="http://www.w3.org/2001/XMLSchema"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:tns="http://soapinterop.org/types"
+ targetNamespace="http://soapinterop.org/types">
+
+ <element name="attrTest">
+ <complexType>
+ <attribute name="forward" type="xsd:int"/>
+ <sequence>
+ <element name="foo" type="xsd:string"/>
+ </sequence>
+ </complexType>
+ </element>
+
+ <complexType name="Struct">
+ <sequence>
+ <element name="varString" type="xsd:string"/>
+ <element name="varInt" type="xsd:int"/>
+ <element name="varFloat" type="xsd:float"/>
+ <element name="varStruct" type="tns:Struct"/>
+ <element name="varForward" type="tns:Forward"/>
+ </sequence>
+ </complexType>
+
+ <complexType name="Forward">
+ <sequence>
+ <element name="soapStruct" type="tns:Struct"/>
+ </sequence>
+ </complexType>
+
+ <complexType name="BaseStruct">
+ <sequence>
+ <element name="structMessage" type="tns:Struct"/>
+ <element name="shortMessage" type="xsd:short"/>
+ </sequence>
+ </complexType>
+
+ <complexType name="ExtendedStruct">
+ <complexContent>
+ <extension base="tns:BaseStruct">
+ <sequence>
+ <element name="stringMessage" type="xsd:string"/>
+ <element name="intMessage" type="xsd:int"/>
+ <element name="anotherIntMessage" type="xsd:int"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="MoreExtendedStruct">
+ <complexContent>
+ <extension base="tns:ExtendedStruct">
+ <sequence>
+ <element name="booleanMessage" type="xsd:boolean"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+
+ <element name="foo" type="tns:ExtendedStruct"/>
+</schema>
Added: webservices/commons/trunk/XmlSchema/test/tests/TestElementForm.java
URL:
http://svn.apache.org/viewcvs/webservices/commons/trunk/XmlSchema/test/tests/TestElementForm.java?rev=289897&view=auto
==============================================================================
--- webservices/commons/trunk/XmlSchema/test/tests/TestElementForm.java (added)
+++ webservices/commons/trunk/XmlSchema/test/tests/TestElementForm.java Sat Sep
17 23:09:48 2005
@@ -0,0 +1,61 @@
+/*
+* Copyright 2004,2005 The Apache Software Foundation.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package tests;
+
+import junit.framework.TestCase;
+
+import java.io.InputStream;
+import java.io.FileInputStream;
+import java.util.Iterator;
+
+import org.apache.axis.xsd.xml.schema.XmlSchemaCollection;
+import org.apache.axis.xsd.xml.schema.XmlSchemaElement;
+import org.apache.axis.xsd.xml.schema.XmlSchemaComplexType;
+import org.apache.axis.xsd.xml.schema.XmlSchemaSequence;
+import org.apache.axis.xsd.xml.schema.XmlSchemaObjectCollection;
+
+import javax.xml.transform.stream.StreamSource;
+import javax.xml.namespace.QName;
+
+/**
+ * TestElementForm
+ */
+public class TestElementForm extends TestCase {
+ String NS = "http://unqualified-elements.example.com";
+ QName UNQUAL = new QName(NS, "unQualifiedLocals");
+ private XmlSchemaCollection schema;
+
+ protected void setUp() throws Exception {
+ InputStream is = new FileInputStream("test-resources/elementForm.xsd");
+ schema = new XmlSchemaCollection();
+ schema.read(new StreamSource(is), null);
+ }
+
+ public void testLocalElements() throws Exception {
+ XmlSchemaElement element = schema.getElementByQName(UNQUAL);
+ assertNotNull("Couldn't find unQualifiedLocals element", element);
+ XmlSchemaComplexType type =
(XmlSchemaComplexType)element.getSchemaType();
+ XmlSchemaSequence seq = (XmlSchemaSequence)type.getParticle();
+ XmlSchemaObjectCollection items = seq.getItems();
+ XmlSchemaElement subElement;
+ subElement = (XmlSchemaElement)items.getItem(0);
+ QName qname = subElement.getQName();
+ assertEquals("Namespace on unqualified element", "",
qname.getNamespaceURI());
+ subElement = (XmlSchemaElement)items.getItem(1);
+ qname = subElement.getQName();
+ assertEquals("Bad namespace on qualified element", NS,
qname.getNamespaceURI());
+ }
+}
Added: webservices/commons/trunk/XmlSchema/test/tests/TestForwardRefs.java
URL:
http://svn.apache.org/viewcvs/webservices/commons/trunk/XmlSchema/test/tests/TestForwardRefs.java?rev=289897&view=auto
==============================================================================
--- webservices/commons/trunk/XmlSchema/test/tests/TestForwardRefs.java (added)
+++ webservices/commons/trunk/XmlSchema/test/tests/TestForwardRefs.java Sat Sep
17 23:09:48 2005
@@ -0,0 +1,36 @@
+package tests;
+
+import junit.framework.TestCase;
+
+import java.io.InputStream;
+import java.io.FileInputStream;
+
+import org.apache.axis.xsd.xml.schema.XmlSchemaCollection;
+import org.apache.axis.xsd.xml.schema.XmlSchemaElement;
+import org.apache.axis.xsd.xml.schema.XmlSchemaType;
+import org.apache.axis.xsd.xml.schema.XmlSchemaComplexType;
+import org.apache.axis.xsd.xml.schema.XmlSchemaSequence;
+
+import javax.xml.transform.stream.StreamSource;
+import javax.xml.namespace.QName;
+
+/**
+ */
+public class TestForwardRefs extends TestCase {
+ public void testForwardRefs() throws Exception {
+ QName ELEMENT_QNAME = new QName("http://soapinterop.org/types",
+ "attrTest");
+ InputStream is = new FileInputStream("test-resources/forwardRef.xsd");
+ XmlSchemaCollection schema = new XmlSchemaCollection();
+ schema.read(new StreamSource(is), null);
+
+ XmlSchemaElement elem = schema.getElementByQName(ELEMENT_QNAME);
+ assertNotNull(elem);
+ XmlSchemaType type = elem.getSchemaType();
+ assertNotNull(type);
+ assertTrue(type instanceof XmlSchemaComplexType);
+ XmlSchemaComplexType cType = (XmlSchemaComplexType)type;
+ XmlSchemaSequence seq = (XmlSchemaSequence)cType.getParticle();
+ assertNotNull(seq);
+ }
+}