You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by di...@apache.org on 2006/02/16 16:50:23 UTC

svn commit: r378285 - in /webservices/commons/modules/XmlSchema: test-resources/credit-card-faults.xsd test-resources/resSvc.xsd test/tests/NISTSchemaTest.java

Author: dims
Date: Thu Feb 16 07:50:20 2006
New Revision: 378285

URL: http://svn.apache.org/viewcvs?rev=378285&view=rev
Log:
oops!

Added:
    webservices/commons/modules/XmlSchema/test-resources/credit-card-faults.xsd
    webservices/commons/modules/XmlSchema/test-resources/resSvc.xsd
    webservices/commons/modules/XmlSchema/test/tests/NISTSchemaTest.java

Added: webservices/commons/modules/XmlSchema/test-resources/credit-card-faults.xsd
URL: http://svn.apache.org/viewcvs/webservices/commons/modules/XmlSchema/test-resources/credit-card-faults.xsd?rev=378285&view=auto
==============================================================================
--- webservices/commons/modules/XmlSchema/test-resources/credit-card-faults.xsd (added)
+++ webservices/commons/modules/XmlSchema/test-resources/credit-card-faults.xsd Thu Feb 16 07:50:20 2006
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+	targetNamespace="http://finance.example.com/CreditCardFaults/xsd"
+	xmlns:tns="http://finance.example.com/CreditCardFaults/xsd"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://www.w3.org/2001/XMLSchema ../../../xmlcatalog/xsd/XMLSchema.xsd">
+
+	<element name="CreditCardNumber" type="string"></element>
+
+	<element name="CreditCardType">
+		<simpleType>
+			<restriction base="string">
+				<enumeration value="AMEX" />
+				<enumeration value="MASTERCARD" />
+				<enumeration value="VISA" />
+			</restriction>
+		</simpleType>
+	</element>
+
+	<element name="ExpirationDate" type="date"></element>
+
+	<element name="InvalidCreditCardNumber">
+		<complexType>
+			<sequence>
+				<element ref="tns:CreditCardType"></element>
+				<element ref="tns:CreditCardNumber"></element>
+			</sequence>
+		</complexType>
+	</element>
+
+	<element name="InvalidExpirationDate">
+		<complexType>
+			<sequence>
+				<element ref="tns:CreditCardNumber"></element>
+				<element ref="tns:ExpirationDate"></element>
+			</sequence>
+		</complexType>
+	</element>
+
+	<element name="ExpiredCreditCard">
+		<complexType>
+			<sequence>
+				<element ref="tns:CreditCardNumber"></element>
+			</sequence>
+		</complexType>
+	</element>
+
+	<element name="CancelledCreditCard">
+		<complexType>
+			<sequence>
+				<element ref="tns:CreditCardNumber"></element>
+			</sequence>
+		</complexType>
+	</element>
+
+</schema>
\ No newline at end of file

Added: webservices/commons/modules/XmlSchema/test-resources/resSvc.xsd
URL: http://svn.apache.org/viewcvs/webservices/commons/modules/XmlSchema/test-resources/resSvc.xsd?rev=378285&view=auto
==============================================================================
--- webservices/commons/modules/XmlSchema/test-resources/resSvc.xsd (added)
+++ webservices/commons/modules/XmlSchema/test-resources/resSvc.xsd Thu Feb 16 07:50:20 2006
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+	targetNamespace="http://greath.example.com/2004/schemas/resSvc"
+	xmlns="http://greath.example.com/2004/schemas/resSvc"
+	xmlns:cc="http://finance.example.com/CreditCardFaults/xsd">
+
+	<xs:import xmlns:xs="http://www.w3.org/2001/XMLSchema"
+		namespace="http://finance.example.com/CreditCardFaults/xsd"
+		schemaLocation="credit-card-faults.xsd" />
+
+	<xs:element name="checkAvailability" type="tCheckAvailability" />
+	<xs:complexType name="tCheckAvailability">
+		<xs:sequence>
+			<xs:element name="checkInDate" type="xs:date" />
+			<xs:element name="checkOutDate" type="xs:date" />
+			<xs:element name="roomType" type="xs:string" />
+		</xs:sequence>
+	</xs:complexType>
+
+	<xs:element name="checkAvailabilityResponse" type="xs:double" />
+
+	<xs:element name="makeReservation" type="tMakeReservation" />
+	<xs:complexType name="tMakeReservation">
+		<xs:sequence>
+			<xs:element ref="cc:CreditCardType" />
+			<xs:element ref="cc:CreditCardNumber" />
+			<xs:element name="checkInDate" type="xs:date" />
+			<xs:element name="checkOutDate" type="xs:date" />
+			<xs:element name="roomType" type="xs:string" />
+		</xs:sequence>
+	</xs:complexType>
+
+	<xs:element name="makeReservationResponse" type="xs:double" />
+
+	<xs:element name="invalidDataError" type="xs:string" />
+
+</xs:schema>

Added: webservices/commons/modules/XmlSchema/test/tests/NISTSchemaTest.java
URL: http://svn.apache.org/viewcvs/webservices/commons/modules/XmlSchema/test/tests/NISTSchemaTest.java?rev=378285&view=auto
==============================================================================
--- webservices/commons/modules/XmlSchema/test/tests/NISTSchemaTest.java (added)
+++ webservices/commons/modules/XmlSchema/test/tests/NISTSchemaTest.java Thu Feb 16 07:50:20 2006
@@ -0,0 +1,121 @@
+package tests;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileReader;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.ws.commons.schema.XmlSchema;
+import org.apache.ws.commons.schema.XmlSchemaCollection;
+import org.custommonkey.xmlunit.DetailedDiff;
+import org.custommonkey.xmlunit.Diff;
+import org.custommonkey.xmlunit.Difference;
+import org.custommonkey.xmlunit.DifferenceConstants;
+import org.custommonkey.xmlunit.IgnoreTextAndAttributeValuesDifferenceListener;
+import org.custommonkey.xmlunit.XMLTestCase;
+import org.w3c.dom.Element;
+
+public class NISTSchemaTest extends XMLTestCase {
+
+    private List failed = new ArrayList();
+
+    private List passed = new ArrayList();
+
+    private String schemaLocation = "target/xmlschema2002-01-16/nisttest/NISTTestsAll";
+    
+    public NISTSchemaTest(String name) {
+        super(name);
+        
+        schemaLocation = System.getProperty("nistTestLocation", schemaLocation);
+    }
+
+    public void testReadWrite() throws Exception {
+        traverse(new File(schemaLocation));
+        
+        System.out.println("Passed: " + passed.size() + "/" + (passed.size() + failed.size()));
+        
+        if (failed.size() > 0) {
+            fail("Some schemas didn't write correctly!");
+        }
+        
+        if (passed.size() == 0) {
+            fail("No schemas were located! Make sure the schema location is correct: " 
+                    + schemaLocation);
+        }
+    }
+
+    public XmlSchema loadSchema(File f) throws Exception {
+        XmlSchemaCollection col = new XmlSchemaCollection();
+        col.setBaseUri(schemaLocation);
+        XmlSchema xmlSchema = col.read(new FileReader(f), null);
+        return xmlSchema;
+    }
+
+    public void traverse(File f) throws Exception {
+
+        if (f.isDirectory()) {
+            File[] files = f.listFiles();
+            for (int i = 0; i < files.length; i++) {
+                traverse(files[i]);
+            }
+        } else if (f.getAbsolutePath().endsWith("xsd")) {
+            XmlSchema schema = loadSchema(f);
+            ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            schema.write(baos);
+
+            Diff diff = new Diff(new FileReader(f), new InputStreamReader(
+                    new ByteArrayInputStream(baos.toByteArray())));
+
+            DetailedDiff detaileddiffs = new DetailedDiff(diff);
+            detaileddiffs.overrideDifferenceListener(new SchemaAttrDiff());
+            boolean result = detaileddiffs.similar();
+
+            if (result) {
+                passed.add(f.getName());
+            } else {
+                failed.add(f.getName());
+                System.out.println("Failed: " + f.getName());
+            }
+        }
+    }
+
+    static class SchemaAttrDiff extends
+            IgnoreTextAndAttributeValuesDifferenceListener {
+
+        public int differenceFound(Difference difference) {
+            
+            if (difference.getId() == DifferenceConstants.ELEMENT_NUM_ATTRIBUTES.getId()) {
+                // control and test have to be elements
+                // check if they are schema elements .. they only
+                // seem to have the added attributeFormDefault and
+                // elementFormDefault attributes
+                // so shldnt have more than 2 attributes difference
+                Element actualEl = (Element) difference.getControlNodeDetail().getNode();
+                Element testEl = (Element) difference.getTestNodeDetail().getNode();
+                
+                if (actualEl.getLocalName().equals("schema")) {
+
+                    int expectedAttrs = Integer.parseInt(difference.getControlNodeDetail().getValue());
+                    int actualAttrs = Integer.parseInt(difference.getTestNodeDetail().getValue());
+                    if (Math.abs(actualAttrs - expectedAttrs) <= 2) {
+                        return RETURN_IGNORE_DIFFERENCE_NODES_SIMILAR;
+                    }
+                }
+            }
+            else if (difference.getId() == DifferenceConstants.ATTR_NAME_NOT_FOUND_ID) {
+                // sometimes the serializer throws in a few extra attributes...
+                Element actualEl = (Element) difference.getControlNodeDetail().getNode();
+                
+                if (actualEl.getLocalName().equals("schema")) {
+                    return RETURN_IGNORE_DIFFERENCE_NODES_SIMILAR;
+                }
+            }
+            
+            return super.differenceFound(difference);
+        }
+    }
+
+}