Author: bimargulies
Date: Wed May 27 00:42:56 2009
New Revision: 778936
URL: http://svn.apache.org/viewvc?rev=778936&view=rev
Log:
Enhance to eat WSDL files.
Modified:
webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/tools/ReadSchemaFromURL.java
Modified:
webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/tools/ReadSchemaFromURL.java
URL:
http://svn.apache.org/viewvc/webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/tools/ReadSchemaFromURL.java?rev=778936&r1=778935&r2=778936&view=diff
==============================================================================
---
webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/tools/ReadSchemaFromURL.java
(original)
+++
webservices/commons/branches/modules/XmlSchema/1_4_X_BRANCH/src/main/java/org/apache/ws/commons/schema/tools/ReadSchemaFromURL.java
Wed May 27 00:42:56 2009
@@ -20,16 +20,27 @@
package org.apache.ws.commons.schema.tools;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import javax.xml.namespace.NamespaceContext;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathExpressionException;
+import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import org.apache.ws.commons.schema.XmlSchemaCollection;
+import org.custommonkey.xmlunit.XMLConstants;
/**
*
@@ -42,18 +53,55 @@
* @throws ParserConfigurationException
* @throws IOException
* @throws SAXException
+ * @throws XPathExpressionException
*/
- public static void main(String[] args) throws
ParserConfigurationException, SAXException, IOException {
- if (args.length != 1) {
- System.err.println("Usage: ReadSchemaFromURL URL");
+ public static void main(String[] args) throws
ParserConfigurationException, SAXException, IOException,
XPathExpressionException {
+ if (args.length != 1 && args.length != 2) {
+ System.err.println("Usage: ReadSchemaFromURL URL -wsdl");
return;
}
+ boolean wsdl = false;
+ if (args.length == 2) {
+ wsdl = true;
+ }
XmlSchemaCollection collection = new XmlSchemaCollection();
DocumentBuilderFactory documentBuilderFactory =
DocumentBuilderFactory.newInstance();
documentBuilderFactory.setNamespaceAware(true);
DocumentBuilder documentBuilder =
documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.parse(args[0]);
- collection.read(document, args[0], null);
+ Element schema = document.getDocumentElement();
+ if (wsdl) {
+ NodeList schemas;
+ XPath xpath = XPathFactory.newInstance().newXPath();
+ xpath.setNamespaceContext(new NamespaceContext() {
+
+ public String getNamespaceURI(String prefix) {
+ if ("xsd".equals(prefix)) {
+ return XMLConstants.W3C_XML_SCHEMA_NS_URI;
+ }
+ return null;
+ }
+
+ public String getPrefix(String namespaceURI) {
+ if
(XMLConstants.W3C_XML_SCHEMA_NS_URI.equals(namespaceURI)) {
+ return "xsd";
+ }
+ return null;
+ }
+
+ public Iterator getPrefixes(String namespaceURI) {
+ List prefixes = new ArrayList();
+ prefixes.add("xsd");
+ return prefixes.iterator();
+ }});
+ schemas = (NodeList)xpath.evaluate("//xsd:schema", document,
XPathConstants.NODESET);
+ for (int x = 0; x < schemas.getLength(); x ++) {
+ schema = (Element)schemas.item(x);
+ collection.read(schema, args[0]);
+ }
+ } else {
+ collection.read(document, args[0], null);
+ }
System.out.println("Success.");
}