You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by di...@apache.org on 2007/07/24 03:53:54 UTC

svn commit: r558911 - in /webservices/axis2/trunk/java/modules/kernel: resources/ resources/axis2.xsd test/org/apache/axis2/validation/ test/org/apache/axis2/validation/ValidateAxis2XMLTest.java

Author: dims
Date: Mon Jul 23 18:53:53 2007
New Revision: 558911

URL: http://svn.apache.org/viewvc?view=rev&rev=558911
Log:
Adding a bare bones axis2.xsd and a test case that validates just the axis2.xml under conf directory

Added:
    webservices/axis2/trunk/java/modules/kernel/resources/
    webservices/axis2/trunk/java/modules/kernel/resources/axis2.xsd
    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/validation/
    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/validation/ValidateAxis2XMLTest.java

Added: webservices/axis2/trunk/java/modules/kernel/resources/axis2.xsd
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/resources/axis2.xsd?view=auto&rev=558911
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/resources/axis2.xsd (added)
+++ webservices/axis2/trunk/java/modules/kernel/resources/axis2.xsd Mon Jul 23 18:53:53 2007
@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements. See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership. The ASF licenses this file
+  ~ to you 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.
+  -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+  <xs:element name="axisconfig">
+    <xs:complexType mixed="true">
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="messageReceiver"/>
+        <xs:element ref="module"/>
+        <xs:element ref="parameter"/>
+        <xs:element ref="defaultModuleVersions"/>
+        <xs:element ref="deployer"/>
+        <xs:element ref="hostConfiguration"/>
+        <xs:element ref="listener"/>
+        <xs:element ref="messageBuilders"/>
+        <xs:element ref="messageFormatters"/>
+        <xs:element ref="messageReceivers"/>
+        <xs:element ref="moduleConfig"/>
+        <xs:element ref="phaseOrder"/>
+        <xs:element ref="targetResolvers"/>
+        <xs:element ref="transportReceiver"/>
+        <xs:element ref="transportSender"/>
+      </xs:choice>
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="defaultModuleVersions">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="module"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="deployer">
+    <xs:complexType>
+      <xs:attribute name="class" use="required"/>
+      <xs:attribute name="directory" use="required" type="xs:NCName"/>
+      <xs:attribute name="extension" use="required" type="xs:NMTOKEN"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="hostConfiguration">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="ip"/>
+        <xs:element ref="port"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="ip" type="xs:NMTOKEN"/>
+  <xs:element name="port" type="xs:integer"/>
+  <xs:element name="listener">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="parameter"/>
+      </xs:sequence>
+      <xs:attribute name="class" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="messageBuilders">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="messageBuilder"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="messageBuilder">
+    <xs:complexType>
+      <xs:attribute name="class" use="required"/>
+      <xs:attribute name="contentType" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="messageFormatters">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="messageFormatter"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="messageFormatter">
+    <xs:complexType>
+      <xs:attribute name="class" use="required"/>
+      <xs:attribute name="contentType" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="messageReceivers">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="messageReceiver"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="moduleConfig">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="parameter"/>
+      </xs:sequence>
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="phaseOrder">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="phase"/>
+      </xs:sequence>
+      <xs:attribute name="type" use="required" type="xs:NCName"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="phase">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="handler"/>
+      </xs:sequence>
+      <xs:attribute name="class"/>
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="handler">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" ref="order"/>
+      </xs:sequence>
+      <xs:attribute name="class" use="required"/>
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="order">
+    <xs:complexType>
+      <xs:attribute name="phase" use="required" type="xs:NCName"/>
+      <xs:attribute name="phaseLast" type="xs:boolean"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="targetResolvers">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="targetResolver"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="targetResolver">
+    <xs:complexType>
+      <xs:attribute name="class" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="transportReceiver">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element maxOccurs="unbounded" ref="parameter"/>
+      </xs:sequence>
+      <xs:attribute name="class" use="required"/>
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="transportSender">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="parameter"/>
+      </xs:sequence>
+      <xs:attribute name="class" use="required"/>
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="module">
+    <xs:complexType>
+      <xs:attribute name="name" type="xs:NCName"/>
+      <xs:attribute name="ref" type="xs:NCName"/>
+      <xs:attribute name="version" type="xs:decimal"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="parameter">
+    <xs:complexType mixed="true">
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="parameter"/>
+      </xs:sequence>
+      <xs:attribute name="locked" type="xs:boolean"/>
+      <xs:attribute name="name" use="required" type="xs:NCName"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="messageReceiver">
+    <xs:complexType>
+      <xs:attribute name="class" use="required"/>
+      <xs:attribute name="mep" use="required" type="xs:anyURI"/>
+    </xs:complexType>
+  </xs:element>
+</xs:schema>

Added: webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/validation/ValidateAxis2XMLTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/validation/ValidateAxis2XMLTest.java?view=auto&rev=558911
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/validation/ValidateAxis2XMLTest.java (added)
+++ webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/validation/ValidateAxis2XMLTest.java Mon Jul 23 18:53:53 2007
@@ -0,0 +1,106 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.axis2.validation;
+
+import junit.framework.TestCase;
+import org.apache.axis2.AbstractTestCase;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXNotRecognizedException;
+import org.xml.sax.helpers.DefaultHandler;
+
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import java.io.File;
+
+public class ValidateAxis2XMLTest extends TestCase {
+
+
+    private static String validationFeature
+            = "http://xml.org/sax/features/validation";
+
+    private static String schemaValidationFeature
+            = "http://apache.org/xml/features/validation/schema";
+
+    private static String extSchemaProp
+            = "http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation";
+
+    private static boolean validate(File xmlSource, File xsdSource) {
+
+        boolean valid = true;
+        try {
+            SAXParserFactory factory = SAXParserFactory.newInstance();
+
+            // configures the xerces parser for schema validation.
+            factory.setFeature(validationFeature, true);
+            factory.setFeature(schemaValidationFeature, true);
+
+            SAXParser parser = factory.newSAXParser();
+
+            //validate against the given schemaURL
+            parser.setProperty(extSchemaProp, xsdSource.toURL().toString());
+
+            // parse (validates) the xml
+            parser.parse(xmlSource, new DefaultHandler());
+
+        } catch (SAXNotRecognizedException snre) {
+            System.out.println("SAX not recognised " + snre);
+            valid = false;
+        } catch (SAXException se) {
+            System.out.println("SAX parser " + se);
+            valid = false;
+        } catch (Exception e) {
+            System.out.println("error parsing " + e);
+            valid = false;
+        }
+
+        return valid;
+    }
+
+    public void testDefaultAxis2XML() throws Exception {
+        String xmlFile =
+                AbstractTestCase.basedir + "/conf/axis2.xml";
+        String xsdFile =
+                AbstractTestCase.basedir + "/resources/axis2.xsd";
+        assertTrue(validate(new File(xmlFile), new File(xsdFile)));
+    }
+
+    public static void main(String args[]) {
+        File f1 = new File(args[0]);
+        File f2 = new File(args[1]);
+        if (f1.isDirectory()) {
+            recurseDirectory(f1, f2);
+        } else {
+            System.out.println(f1.getAbsolutePath() + " : " + (validate(f1, f2) ? "OK" : "INVALID"));
+        }
+    }
+
+    private static void recurseDirectory(File f1, File f2) {
+        File[] array = f1.listFiles();
+        for (int i = 0; i < array.length; i++) {
+            File file = array[i];
+            if (file.isDirectory()) {
+                recurseDirectory(file, f2);
+            } else {
+                if (file.getName().endsWith("axis2.xml")) {
+                    System.out.println(file.getAbsolutePath() + " : " + (validate(file, f2) ? "OK" : "INVALID"));
+                }
+            }
+        }
+    }
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org