Skip to main content

This CGIT instance is deprecated, and repositories have been moved to Gitlab or Github. See the repository descriptions for specific locations.

summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml')
-rw-r--r--bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLConvertor.java69
-rw-r--r--bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLDocumentCache.java77
-rw-r--r--bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLDocumentCacheUser.java117
-rw-r--r--bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLTags.java60
-rw-r--r--bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLTraversal.java129
-rw-r--r--bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLUtils.java1528
-rw-r--r--bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLVisitor.java186
-rw-r--r--bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/dom/DOMParser.java93
-rw-r--r--bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/dom/ElementLocation.java91
-rw-r--r--bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/jaxp/DocumentBuilderFactoryImpl.java100
-rw-r--r--bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/jaxp/DocumentBuilderImpl.java248
-rw-r--r--bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/schema/TargetNamespaceProcessor.java142
-rw-r--r--bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/schema/XMLSchemaProcessor.java170
-rw-r--r--bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/schema/XMLSchemaValidator.java152
14 files changed, 0 insertions, 3162 deletions
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLConvertor.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLConvertor.java
deleted file mode 100644
index 82b134cbc..000000000
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLConvertor.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- *
- * Copyright (c) 2002-2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.wsi.internal.core.xml;
-
-import java.io.FileOutputStream;
-
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
-
-/**
- * This class converts a XML document using an XSL file.
- *
- * @version 1.0.1
- * @author Peter Brittenham (peterbr@us.ibm.com)
- */
-public class XMLConvertor
-{
-
- /**
- * Transforms an XML document using an XSL file.
- * @param args arguments for main.
- */
- public static void main(String[] args)
- {
- try
- {
- if (args.length < 3)
- {
- System.out.println(
- "Usage: XMLConvertor <xslFile> <inXMLFile> <outFile>");
- }
-
- else
- {
- // Get transformer
- Transformer transformer =
- TransformerFactory.newInstance().newTransformer(
- new StreamSource(args[0]));
-
- // Transform the XML document using the specificed XSL file
- transformer.transform(
- new StreamSource(args[1]),
- new StreamResult(new FileOutputStream(args[2])));
-
- // Display results
- System.out.println(
- "Created " + args[2] + " from " + args[0] + " and " + args[1] + ".");
- }
- }
-
- catch (Exception e)
- {
- e.printStackTrace();
- }
-
- System.exit(0);
- }
-}
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLDocumentCache.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLDocumentCache.java
deleted file mode 100644
index 41087524a..000000000
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLDocumentCache.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002-2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.wsi.internal.core.xml;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * This class creates a HashMap to cache XML documents.
- * @author Peter Brittenham (peterbr@us.ibm.com)
- * @version 1.0.1
- */
-public class XMLDocumentCache extends HashMap
-{
- static XMLDocumentCache instance;
-
- /**
- * Comment for <code>serialVersionUID</code>
- */
- private static final long serialVersionUID = 3834028043709657401L;
-
- /**
- * Constructor for XMLDocumentCache.
- * @param initialCapacity the initial capacity.
- * @param loadFactor the load factor.
- */
- public XMLDocumentCache(int initialCapacity, float loadFactor)
- {
- super(initialCapacity, loadFactor);
- instance = this;
- }
-
- /**
- * Constructor for XMLDocumentCache.
- * @param initialCapacity the initial capacity.
- */
- public XMLDocumentCache(int initialCapacity)
- {
- super(initialCapacity);
- instance = this;
- }
-
- /**
- * Constructor for XMLDocumentCache.
- */
- public XMLDocumentCache()
- {
- super();
- instance = this;
- }
-
- /**
- * Constructor for XMLDocumentCache.
- * @param t the map whose mappings are to be placed in this map.
- */
- public XMLDocumentCache(Map t)
- {
- super(t);
- instance = this;
- }
-
- public static XMLDocumentCache instance()
- {
- if (instance == null)
- instance = new XMLDocumentCache();
-
- return instance;
- }
-}
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLDocumentCacheUser.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLDocumentCacheUser.java
deleted file mode 100644
index a50f07e31..000000000
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLDocumentCacheUser.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002-2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.wsi.internal.core.xml;
-
-import java.net.URL;
-
-import org.eclipse.wst.wsi.internal.core.WSIException;
-import org.w3c.dom.Document;
-
-/**
- * This is an abstract class that takes advantage of cached XML documents.
- * @author Peter Brittenham (peterbr@us.ibm.com)
- * @version 1.0.1
- */
-
-public abstract class XMLDocumentCacheUser
-{
- /**
- * Get document from cache.
- * @see #setDocument
- *
- * @param key a String.
- * @return a Document object corresponding to the key.
- */
- protected Document getDocument(String key)
- {
- return (Document) XMLDocumentCache.instance().get(key);
- }
-
- /**
- * Put document with corresponding key in cache.
- * @see #getDocument
- *
- * @param key a String used as a key to identify specified document.
- * @param document a document.
- */
- protected void setDocument(String key, Object document)
- {
- XMLDocumentCache.instance().put(key, document);
- }
-
- /**
- * Get document list.
- * @return a XMLDocumentCache object representing the document list value.
- */
- public XMLDocumentCache getDocumentList()
- {
- return XMLDocumentCache.instance();
- }
-
- /**
- * Parse XML document.
- * @param urlString a String locating the XML document.
- * @param baseURI a base url to assist in locating the XML document.
- * @return a Document object.
- * @throws WSIException if document cannot be parsed.
- */
- public Document parseXMLDocumentURL(String urlString, String baseURI)
- throws WSIException
- {
- return parseXMLDocumentURL(urlString, baseURI, null);
- }
-
- /**
- * Parse XML document and validate with a schema document.
- * @param urlString a String locating the XML document.
- * @param baseURI a base url to assist in locating the XML document.
- * @param schema a String identifying related schema document.
- * @return a Document object.
- * @throws WSIException if document cannot be parsed.
- */
- public Document parseXMLDocumentURL(
- String urlString,
- String baseURI,
- String schema)
- throws WSIException
- {
- Document document = null;
-
- try
- {
- // Create URL reference to document
- URL url = XMLUtils.createURL(urlString, baseURI);
-
- // TODO: Add schema to the xml document cache, so that you can detect when it has already
- // been parsed using a specific schema definition
-
- // If the document is not in the cache, then read and parse it
- if ((document = getDocument(urlString)) == null)
- {
- document = XMLUtils.parseXMLDocumentURL(url, schema);
- // Add document to cache
- setDocument(urlString, document);
- }
- }
-
- catch (WSIException e)
- {
- throw e;
- }
-
- catch (Exception e)
- {
- throw new WSIException(e.getMessage(), e);
- }
-
- return document;
- }
-}
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLTags.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLTags.java
deleted file mode 100644
index e12d04f0c..000000000
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLTags.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002-2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.wsi.internal.core.xml;
-
-import javax.xml.namespace.QName;
-
-/**
- * This class contains information on XML tags.
- *
- * @author Peter Brittenham (peterbr@us.ibm.com)
- * @version 1.0.1
- */
-public interface XMLTags
-{
- /**
- * Namespaces.
- */
- public final static String NS_URI_XSI =
- "http://www.w3.org/2001/XMLSchema-instance";
- public final static String NS_URI_XMLNS = "http://www.w3.org/2000/xmlns/";
- public final static String NS_URI_XSD = "http://www.w3.org/2001/XMLSchema";
- public final static String XSD_SCHEMALOCATION =
- "http://www.w3.org/2001/XMLSchema.xsd";
-
- /**
- * Qualified names of XSD elements and attributes.
- */
- public final static QName ELEM_XSD_ANNOTATION =
- new QName(NS_URI_XSD, "annotation");
- public final static QName ELEM_XSD_IMPORT = new QName(NS_URI_XSD, "import");
- public final static QName ELEM_XSD_INCLUDE = new QName(NS_URI_XSD, "include");
- public final static QName ELEM_XSD_SCHEMA = new QName(NS_URI_XSD, "schema");
- public final static QName ELEM_XSD_ELEMENT = new QName(NS_URI_XSD, "element");
- public final static QName ELEM_XSD_ATTRIBUTE =
- new QName(NS_URI_XSD, "attribute");
- public final static QName ELEM_XSD_COMPLEXTYPE =
- new QName(NS_URI_XSD, "complexType");
-
- public final static QName ATTR_XSI_TYPE = new QName(NS_URI_XSI, "type");
- public final static QName ATTR_XSI_NIL = new QName(NS_URI_XSI, "nil");
-
- public final static QName ATTR_XSD_NAME = new QName(NS_URI_XSD, "name");
- public final static QName ATTR_XSD_TYPE = new QName(NS_URI_XSD, "type");
- public final static QName ATTR_XSD_BASE = new QName(NS_URI_XSD, "base");
- public final static QName ATTR_XSD_NAMESPACE =
- new QName(NS_URI_XSD, "namespace");
- public final static QName ATTR_XSD_SCHEMALOCATION =
- new QName(NS_URI_XSD, "schemaLocation");
- public final static QName ATTR_XSD_TARGETNAMESPACE =
- new QName(NS_URI_XSD, "targetNamespace");
-
-}
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLTraversal.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLTraversal.java
deleted file mode 100644
index f6233f0db..000000000
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLTraversal.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002-2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.wsi.internal.core.xml;
-
-import org.w3c.dom.Attr;
-import org.w3c.dom.CDATASection;
-import org.w3c.dom.Comment;
-import org.w3c.dom.Document;
-import org.w3c.dom.DocumentType;
-import org.w3c.dom.Element;
-import org.w3c.dom.Entity;
-import org.w3c.dom.EntityReference;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.Notation;
-import org.w3c.dom.ProcessingInstruction;
-import org.w3c.dom.Text;
-
-/**
- * We don't have access to the node source code, so this does
- * our double-dispatch the hard way.
- */
-public abstract class XMLTraversal extends XMLVisitor
-{
- /**
- * Returning false from action would terminates traversal.
- * However, this always returns true. -- a no-op.
- * @param n - an XML node.
- * @return always true.
- */
- public boolean action(Node n)
- {
- return true;
- }
-
- public void visit(CDATASection s)
- {
- action(s);
- }
-
- public void visit(Document e)
- {
- if (action(e))
- {
- // This does visit DocumentType, which is considered a child Node.
- for (Node n = e.getFirstChild(); n != null; n = n.getNextSibling())
- {
- doVisit(n);
- }
- }
- }
-
- public void visit(DocumentType type)
- {
- if (action(type))
- {
- visit(type.getEntities());
- visit(type.getNotations());
- }
- }
-
- public void visit(Attr e)
- {
- action(e);
- }
-
- public void visit(Element node)
- {
- if (action(node))
- {
- visit(node.getAttributes());
- for (Node n = node.getFirstChild(); n != null; n = n.getNextSibling())
- {
- doVisit(n);
- }
- }
- }
-
- public void visit(Comment e)
- {
- action(e);
- }
-
- public void visit(Text e)
- {
- action(e);
- }
-
- public void visit(EntityReference e)
- {
- action(e);
- }
-
- public void visit(Entity e)
- {
- action(e);
- }
-
- public void visit(Notation n)
- {
- action(n);
- }
-
- public void visit(ProcessingInstruction i)
- {
- action(i);
- }
-
- public void visit(NamedNodeMap map)
- {
- if (map != null)
- {
- for (int i = 0; i < map.getLength(); ++i)
- {
- doVisit(map.item(i));
- }
- }
- }
-}
-
-// END OF FILE
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLUtils.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLUtils.java
deleted file mode 100644
index 137833d93..000000000
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLUtils.java
+++ /dev/null
@@ -1,1528 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002-2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.wsi.internal.core.xml;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.net.MalformedURLException;
-import java.net.URI;
-import java.net.URL;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Vector;
-
-import javax.xml.namespace.QName;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-
-import org.apache.xml.serialize.OutputFormat;
-import org.apache.xml.serialize.XMLSerializer;
-import org.eclipse.wst.wsi.internal.core.WSIException;
-import org.eclipse.wst.wsi.internal.core.WSITag;
-import org.eclipse.wst.wsi.internal.core.util.NullUtil;
-import org.w3c.dom.Attr;
-import org.w3c.dom.CharacterData;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-import org.xml.sax.XMLReader;
-
-import com.ibm.wsdl.util.StringUtils;
-
-/**
- * Set of XML related utilities.
- *
- * @version 1.0.1
- * @author Peter Brittenham
- */
-public final class XMLUtils
-{
- /**
- * Some sax features that need to be set.
- */
- public static final String FEATURE_NAMESPACE_PREFIXES = "http://xml.org/sax/features/namespace-prefixes";
- public static final String FEATURE_NAMESPACES = "http://xml.org/sax/features/namespaces";
- public static final String FEATURE_VALIDATION_SCHEMA = "http://apache.org/xml/features/validation/schema";
- public static final String JAXP_SCHEMA_LANGUAGE = "http://java.sun.com/xml/jaxp/properties/schemaLanguage";
- public static final String W3C_XML_SCHEMA = "http://www.w3.org/2001/XMLSchema";
- public static final String W3C_SOAP_12_SCHEMA = "http://schemas.xmlsoap.org/soap/envelope/";
- public static final String JAXP_SCHEMA_SOURCE = "http://java.sun.com/xml/jaxp/properties/schemaSource";
- public static final String PROPERTY_EXTERNAL_SCHEMA_LOCATION = "http://apache.org/xml/properties/schema/external-schemaLocation";
-
- public static final String SOAP_ELEM_ENVELOPE = "Envelope";
- public static final String SOAP_ELEM_HEADER = "Header";
- public static final String SOAP_ELEM_BODY = "Body";
- public static final String SOAP_ELEM_FAULT = "Fault";
- public static final String SOAP_ELEM_FAULT_CODE = "faultcode";
- public static final String SOAP_ELEM_FAULT_STRING = "faultstring";
- public static final String SOAP_ELEM_FAULT_DETAIL = "detail";
- public static final String SOAP_ELEM_FAULT_ACTOR = "faultactor";
- public static final String SOAP_ATTR_MUST_UNDERSTAND = "mustUnderstand";
- public static final String SOAP_ATTR_ACTOR = "actor";
-
- /**
- * Get XMLReader.
- *
- * @return the XMLReader value
- * @throws WSIException if there are problems getting the XMLReader
- * implementation.
- */
- public static XMLReader getXMLReader() throws WSIException {
- XMLReader xmlReader = null;
-
- try
- {
- xmlReader = (new org.apache.xerces.jaxp.SAXParserFactoryImpl())
- .newSAXParser().getXMLReader();
-
- // Set namespace aware
- xmlReader.setFeature(FEATURE_NAMESPACE_PREFIXES, true);
- xmlReader.setFeature(FEATURE_NAMESPACES, true);
- }
-
- catch (Exception e)
- {
- throw new WSIException("Could not get XMLReader implementation.", e);
- }
-
- return xmlReader;
- }
-
- /**
- * Parse text string as an XML document and return the document element.
- *
- * @param text XML document text.
- * @param validate true if the document will be validate, false otherwise
- * @return a Document object.
- * @throws WSIException if there is a problem parsing the XML document.
- */
- public static Document parseXML(String text, boolean validate)
- throws WSIException {
- return parseXML(new StringReader(text), validate);
- }
-
- /**
- * Parse text string as an XML document and return the document element.
- *
- * @param text XML document text.
- * @return a Document object.
- * @throws WSIException if there is a problem parsing the XML document.
- */
- public static Document parseXML(String text) throws WSIException {
- return parseXML(new StringReader(text));
- }
-
- /**
- * Parse the XML document and return the document element.
- *
- * @param uri the location of the XML document.
- * @return a Document object.
- * @throws WSIException if there is a problem parsing the XML document.
- * @throws IOException if an I/O exception of some sort has occurred.
- */
- public static Document parseXMLDocument(String uri)
- throws WSIException, IOException
- {
- return parseXMLDocument(uri, null);
- }
-
- /**
- * Parse the XML document and return the document element.
- *
- * @param uri the location of the XML document.
- * @param schema a String identifying related schema document.
- * @return a Document object.
- * @throws WSIException if there is a problem parsing the XML document.
- * @throws IOException if an I/O exception of some sort has occurred.
- */
- public static Document parseXMLDocument(String uri, String schema)
- throws WSIException, IOException
- {
- URL url = StringUtils.getURL(null, uri);
- InputStream inputStream = (InputStream)url.getContent();
- InputSource inputSource = new InputSource(inputStream);
- inputSource.setSystemId(url.toString());
-
- if (schema == null)
- return parseXML(inputSource, false);
- else
- return parseXML(inputSource, schema);
- }
-
- /**
- * Parses an XML document from a reader and returns the document object.
- *
- * @param url a String locating the XML document.
- * @param schema a String identifying related schema document.
- * @param baseURI a base url to assist in locating the XML document.
- * @return Document.
- * @throws WSIException if there is a problem parsing the XML document.
- */
- public static Document parseXMLDocumentURL(String url, String schema,
- String baseURI) throws WSIException {
- try
- {
- parseXMLDocumentURL(createURL(url, baseURI), schema);
- }
-
- catch (Exception e)
- {
- throw new WSIException(e.getMessage(), e);
- }
-
- return parseXMLDocumentURL(url, schema);
- }
-
- /**
- * Parses an XML document from a reader and returns the document object.
- *
- * @param url a URL object identifying the XML document.
- * @param schema a String identifying related schema document.
- * @return Document.
- * @throws WSIException if there is a problem parsing the XML document.
- */
- public static Document parseXMLDocumentURL(URL url, String schema)
- throws WSIException {
- try
- {
- InputStream inputStream = (InputStream)url.getContent();
- InputSource inputSource = new InputSource(inputStream);
- inputSource.setSystemId(url.toString());
-
- Document doc = null;
-
- if (schema == null)
- doc = parseXML(inputSource);
- else
- doc = parseXML(inputSource, schema);
-
- inputStream.close();
- return doc;
- }
-
- catch (WSIException e)
- {
- throw e;
- }
-
- catch (Throwable t)
- {
- throw new WSIException(t.getMessage());
- }
- }
-
- /**
- * Parses an XML document from a reader and returns the document object.
- *
- * @param urlString a String locating the XML document.
- * @param baseURI a base url to assist in locating the XML document.
- * @return Document object.
- * @throws WSIException if there is a problem parsing the XML document.
- */
- public static Document parseXMLDocumentURL(String urlString, String baseURI)
- throws WSIException {
- Document document = null;
-
- try
- {
- URL url = createURL(urlString, baseURI);
-
- document = parseXMLDocumentURL(url);
- }
-
- catch (WSIException we)
- {
- throw we;
- }
-
- catch (Exception e)
- {
- throw new WSIException(e.getMessage(), e);
- }
-
- return document;
- }
-
- /**
- * Parses an XML document from a reader and returns the document object.
- *
- * @param url a URL object identifying the XML document.
- * @return Document.
- * @throws WSIException if there is a problem parsing the XML document.
- */
- public static Document parseXMLDocumentURL(URL url) throws WSIException {
- Document document = null;
-
- try
- {
- Reader reader = new InputStreamReader(url.openStream());
- InputSource source = new InputSource(reader);
- source.setSystemId(url.toString());
- document = parseXML(source);
-
- reader.close();
- }
-
- catch (Exception e)
- {
- throw new WSIException(e.getMessage(), e);
- }
-
- return document;
- }
-
- /**
- * Parse an XML document from a reader and return the document object.
- *
- * @param reader a Reader object.
- * @param validate true if the document will be validate, false otherwise
- * @return a Document object.
- * @throws WSIException if there is a problem parsing the XML document.
- */
- public static Document parseXML(InputSource source, boolean validate)
- throws WSIException {
- Document doc = null;
- ClassLoader currentLoader = Thread.currentThread().getContextClassLoader();
- try
- {
- Thread.currentThread().setContextClassLoader(XMLUtils.class.getClassLoader());
-
- // Get the document factory
- DocumentBuilderFactory factory = new org.eclipse.wst.wsi.internal.core.xml.jaxp.DocumentBuilderFactoryImpl();
-
- // Set namespace aware, but for now do not validate
- factory.setNamespaceAware(true);
- factory.setIgnoringElementContentWhitespace(true);
-
- // ADD: This should be set to true when we have access to the schema
- // document
- factory.setValidating(false);
-
- // Parse the document
- DocumentBuilder builder = factory.newDocumentBuilder();
- doc = builder.parse(source);
- // workaround for compatibility Xerces 2.2.1 with Xerces 2.6.2,
- // Xerces 2.6.2 supported XML 1.1 but WSI-tool and Xerces 2.2.1
- // supported only XML 1.0
- if (doc instanceof org.apache.xerces.dom.DocumentImpl)
- {
- if (((org.apache.xerces.dom.DocumentImpl) doc).getXmlVersion().equals(
- "1.1"))
- {
- throw new WSIException("Fatal Error: XML version &quot;1.1&quot; "
- + "is not supported, only XML 1.0 is supported.");
- }
- }
- }
- catch (Exception e)
- {
- throw new WSIException("Could not parse XML document.", e);
- }
- finally
- {
- Thread.currentThread().setContextClassLoader(currentLoader);
- }
-
- // Return document
- return doc;
- }
-
- /**
- * Parse an XML document from a reader and return the document object.
- *
- * @param reader a Reader object.
- * @param validate true if the document will be validate, false otherwise
- * @return a Document object.
- * @throws WSIException if there is a problem parsing the XML document.
- */
- public static Document parseXML(Reader reader, boolean validate)
- throws WSIException {
- Document doc = null;
- ClassLoader currentLoader = Thread.currentThread().getContextClassLoader();
- try
- {
- Thread.currentThread().setContextClassLoader(XMLUtils.class.getClassLoader());
-
- // Create input source
- InputSource inputSource = new InputSource(reader);
-
- // Get the document factory
- DocumentBuilderFactory factory = new org.eclipse.wst.wsi.internal.core.xml.jaxp.DocumentBuilderFactoryImpl();
-
- // Set namespace aware, but for now do not validate
- factory.setNamespaceAware(true);
- factory.setIgnoringElementContentWhitespace(true);
-
- // ADD: This should be set to true when we have access to the schema
- // document
- factory.setValidating(false);
-
- // Parse the document
- DocumentBuilder builder = factory.newDocumentBuilder();
- doc = builder.parse(inputSource);
- // workaround for compatibility Xerces 2.2.1 with Xerces 2.6.2,
- // Xerces 2.6.2 supported XML 1.1 but WSI-tool and Xerces 2.2.1
- // supported only XML 1.0
- if (doc instanceof org.apache.xerces.dom.DocumentImpl)
- {
- if (((org.apache.xerces.dom.DocumentImpl) doc).getXmlVersion().equals(
- "1.1"))
- {
- throw new WSIException("Fatal Error: XML version &quot;1.1&quot; "
- + "is not supported, only XML 1.0 is supported.");
- }
- }
- }
- catch (Exception e)
- {
- throw new WSIException("Could not parse XML document.", e);
- }
- finally
- {
- Thread.currentThread().setContextClassLoader(currentLoader);
- }
-
- // Return document
- return doc;
- }
-
- /**
- * Parse an XML document from a input source and return the document object.
- *
- * @param source a InputSource object.
- * @return a Document object.
- * @throws WSIException if there is a problem parsing the XML document.
- */
- public static Document parseXML(Reader reader) throws WSIException {
- return parseXML(reader, false);
- }
-
- /**
- * Parse an XML document from a input source and return the document object.
- *
- * @param source a InputSource object.
- * @return a Document object.
- * @throws WSIException if there is a problem parsing the XML document.
- */
- public static Document parseXML(InputSource source) throws WSIException {
- return parseXML(source, false);
- }
-
- /**
- * Parse text string as an XML document and return the document element.
- *
- * @param text XML document text.
- * @param schema a String identifying related schema document.
- * @return a Document object.
- * @throws WSIException if there is a problem parsing the XML document.
- */
- public static Document parseXML(String text, String schema)
- throws WSIException {
- return parseXML(new StringReader(text), schema);
- }
-
- /**
- * Parse text string as an XML document and return the document element.
- *
- * @param text XML document text.
- * @param schemas a collection of related schema documents.
- * @return a Document object.
- * @throws WSIException if there is a problem parsing the XML document.
- */
- public static Document parseXML(String text, Collection schemas)
- throws WSIException {
- return parseXML(new StringReader(text), schemas);
- }
-
-
- /**
- * Parse the XML document and return the document element.
- *
- * @param text XML document text.
- * @param schemaString a StringReader object.
- * @return a Document object.
- * @throws WSIException if there is a problem parsing the XML document.
- * @throws IOException if an I/O exception of some sort has occurred.
- */
- public static Document parseXML(String text, StringReader schemaString)
- throws WSIException, IOException {
- return parseXML(new StringReader(text), schemaString);
- }
-
- /**
- * Parse the XML document and return the document element.
- *
- * @param reader a Reader object.
- * @param schema a String identifying related schema document.
- * @return a Document object.
- * @throws WSIException if there is a problem parsing the XML document.
- */
- public static Document parseXML(Reader reader, String schema)
- throws WSIException {
- Document doc = null;
- ClassLoader currentLoader = Thread.currentThread().getContextClassLoader();
- try
- {
- Thread.currentThread().setContextClassLoader(XMLUtils.class.getClassLoader());
- // Create input source
- InputSource inputSource = new InputSource(reader);
-
- // Get the document factory
- DocumentBuilderFactory factory = new org.eclipse.wst.wsi.internal.core.xml.jaxp.DocumentBuilderFactoryImpl();
-
- // Set namespace aware, but for now do not validate
- factory.setNamespaceAware(true);
- factory.setIgnoringElementContentWhitespace(true);
-
- try
- {
- factory.setValidating(false);
- factory.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
- }
- catch (IllegalArgumentException e)
- {
- String errMessage = "Error: JAXP DocumentBuilderFactory attribute not recognized: "
- + JAXP_SCHEMA_LANGUAGE
- + "\n"
- + "Check to see if parser conforms to JAXP 1.2 spec.";
- throw new WSIException(errMessage, e);
- }
- factory.setAttribute(JAXP_SCHEMA_SOURCE, new InputSource(schema));
-
- // Parse the document
- DocumentBuilder builder = factory.newDocumentBuilder();
- builder.setErrorHandler(new ErrHandler());
- doc = builder.parse(inputSource);
-
- // workaround for compatibility Xerces 2.2.1 with Xerces 2.6.2,
- // Xerces 2.6.2 supported XML 1.1 but WSI-tool and Xerces 2.2.1
- // supported only XML 1.0
- if (doc instanceof org.apache.xerces.dom.DocumentImpl)
- {
- if (((org.apache.xerces.dom.DocumentImpl) doc).getXmlVersion().equals("1.1"))
- {
- throw new WSIException("Fatal Error: XML version &quot;1.1&quot; "
- + "is not supported, only XML 1.0 is supported.");
- }
- }
- }
- catch (Exception e)
- {
- throw new WSIException("Could not parse XML document.", e);
- }
- finally
- {
- Thread.currentThread().setContextClassLoader(currentLoader);
- }
- // Return document
- return doc;
- }
-
- /**
- * Parse the XML document and return the document element.
- *
- * @param reader a Reader object.
- * @param schema a String identifying related schema document.
- * @return a Document object.
- * @throws WSIException if there is a problem parsing the XML document.
- */
- public static Document parseXML(InputSource source, String schema)
- throws WSIException {
- Document doc = null;
- ClassLoader currentLoader = Thread.currentThread().getContextClassLoader();
- try
- {
- Thread.currentThread().setContextClassLoader(XMLUtils.class.getClassLoader());
- // Get the document factory
- DocumentBuilderFactory factory = new org.eclipse.wst.wsi.internal.core.xml.jaxp.DocumentBuilderFactoryImpl();
-
- // Set namespace aware, but for now do not validate
- factory.setNamespaceAware(true);
- factory.setIgnoringElementContentWhitespace(true);
-
- factory.setValidating(false);
- try
- {
- factory.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
- }
-
- catch (IllegalArgumentException e)
- {
- String errMessage = "Error: JAXP DocumentBuilderFactory attribute not recognized: "
- + JAXP_SCHEMA_LANGUAGE
- + "\n"
- + "Check to see if parser conforms to JAXP 1.2 spec.";
- throw new WSIException(errMessage, e);
- }
- factory.setAttribute(JAXP_SCHEMA_SOURCE, new InputSource(schema));
-
- // Parse the document
- DocumentBuilder builder = factory.newDocumentBuilder();
- builder.setErrorHandler(new ErrHandler());
- doc = builder.parse(source);
-
- // workaround for compatibility Xerces 2.2.1 with Xerces 2.6.2,
- // Xerces 2.6.2 supported XML 1.1 but WSI-tool and Xerces 2.2.1
- // supported only XML 1.0
- if (doc instanceof org.apache.xerces.dom.DocumentImpl)
- {
- if (((org.apache.xerces.dom.DocumentImpl) doc).getXmlVersion().equals(
- "1.1"))
- {
- throw new WSIException("Fatal Error: XML version &quot;1.1&quot; "
- + "is not supported, only XML 1.0 is supported.");
- }
- }
- }
- catch (Exception e)
- {
- throw new WSIException("Could not parse XML document.", e);
- }
- finally
- {
- Thread.currentThread().setContextClassLoader(currentLoader);
- }
-
- // Return document
- return doc;
-
- }
-
- /**
- * Parse the XML document and return the document element.
- *
- * @param filename a Reader object.
- * @param schemaString a StringReader object.
- * @return a Document object.
- * @throws WSIException if there is a problem parsing the XML document.
- */
- public static Document parseXML(Reader filename, StringReader schemaString)
- throws WSIException {
-
- Document doc = null;
- ClassLoader currentLoader = Thread.currentThread().getContextClassLoader();
- try
- {
- Thread.currentThread().setContextClassLoader(XMLUtils.class.getClassLoader());
-
- // Create input source
- InputSource inputSource = new InputSource(filename);
-
- // Get the document factory
- DocumentBuilderFactory factory = new org.eclipse.wst.wsi.internal.core.xml.jaxp.DocumentBuilderFactoryImpl();
-
- // Set namespace aware, but for now do not validate
- factory.setNamespaceAware(true);
- factory.setIgnoringElementContentWhitespace(true);
-
- factory.setValidating(false);
- try
- {
- factory.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
- } catch (IllegalArgumentException e)
- {
- String errMessage = "Error: JAXP DocumentBuilderFactory attribute not recognized: "
- + JAXP_SCHEMA_LANGUAGE
- + "\n"
- + "Check to see if parser conforms to JAXP 1.2 spec.";
- throw new WSIException(errMessage, e);
- }
- factory.setAttribute(JAXP_SCHEMA_SOURCE, new InputSource(schemaString));
-
- // Parse the document
- DocumentBuilder builder = factory.newDocumentBuilder();
- builder.setErrorHandler(new ErrHandler());
- doc = builder.parse(inputSource);
- }
- catch (Exception e)
- {
- throw new WSIException("Could not parse XML document.", e);
- }
- finally
- {
- Thread.currentThread().setContextClassLoader(currentLoader);
- }
-
- // Return document
- return doc;
-
- }
-
- /**
- * Parse the XML document and return the document element.
- *
- * @param filename a Reader object
- * @param schemaStrings a collection of related schema documents.
- * @return a Document object.
- * @throws WSIException if there is a problem parsing the XML document.
- */
- public static Document parseXML(Reader filename, Collection schemaStrings)
- throws WSIException {
-
- Document doc = null;
- ClassLoader currentLoader = Thread.currentThread().getContextClassLoader();
- try
- {
- Thread.currentThread().setContextClassLoader(XMLUtils.class.getClassLoader());
-
- // Create input source
- InputSource inputSource = new InputSource(filename);
-
- // Get the document factory
- DocumentBuilderFactory factory = new org.eclipse.wst.wsi.internal.core.xml.jaxp.DocumentBuilderFactoryImpl();
-
- // Set namespace aware, but for now do not validate
- factory.setNamespaceAware(true);
- factory.setIgnoringElementContentWhitespace(true);
-
- factory.setValidating(false);
- try
- {
- factory.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
- } catch (IllegalArgumentException e)
- {
- String errMessage = "Error: JAXP DocumentBuilderFactory attribute not recognized: "
- + JAXP_SCHEMA_LANGUAGE
- + "\n"
- + "Check to see if parser conforms to JAXP 1.2 spec.";
- throw new WSIException(errMessage, e);
- }
- // convert schema strings to array of InputSources
- Iterator i = schemaStrings.iterator();
- Vector readers = new Vector();
- while (i.hasNext())
- {
- String nextSchema = (String) i.next();
- readers.add(new InputSource(new StringReader(nextSchema)));
- }
- InputSource[] inputSources = (InputSource[]) readers
- .toArray(new InputSource[]{});
- // pass an array of schema strings (each of which contains a schema)
- factory.setAttribute(JAXP_SCHEMA_SOURCE, inputSources);
-
- // Parse the document
- DocumentBuilder builder = factory.newDocumentBuilder();
- builder.setErrorHandler(new ErrHandler());
- doc = builder.parse(inputSource);
- }
- catch (Exception e)
- {
- throw new WSIException("Could not parse XML document.", e);
- }
- finally
- {
- Thread.currentThread().setContextClassLoader(currentLoader);
- }
-
- // Return document
- return doc;
-
- }
-
- /**
- * Get attribute value with the given name defined for the specified element.
- *
- * @param element an Element object.
- * @param attrName a name of an attribute
- * @return the attribute value.
- */
- public static String getAttributeValue(Element element, String attrName) {
- String attrValue = null;
- Attr attr = null;
-
- // Get the attribute using its name
- if ((attr = element.getAttributeNode(attrName)) != null)
- {
- attrValue = attr.getValue().trim();
- }
-
- // Return attribute value
- return attrValue;
- }
-
- /**
- * Get attribute value.
- *
- * @param element an Element object.
- * @param attrName a name of an attribute
- * @param defaultValue a default value for the specified attribute.
- * @return the attribute value if found. Otherwise the specified default
- * value.
- */
- public static String getAttributeValue(Element element, String attrName,
- String defaultValue) {
- String returnValue = defaultValue;
- String attrValue = null;
-
- if ((attrValue = getAttributeValue(element, attrName)) != null)
- returnValue = attrValue;
-
- return returnValue;
- }
-
- /**
- * Get attribute value.
- *
- * @param element an Element object.
- * @param namespace a namespace.
- * @param attrName a name of an attribute
- * @return the attribute value.
- */
- public static String getAttributeValueNS(Element element, String namespace,
- String attrName) {
- String attrValue = null;
- Attr attr = null;
-
- // Get the attribute using its name
- if ((attr = element.getAttributeNodeNS(namespace, attrName)) != null)
- {
- attrValue = attr.getValue().trim();
- }
-
- // Return attribute value
- return attrValue;
- }
-
- /**
- * Get the first child element from the input elment.
- *
- * @param element an Element object.
- * @return the firstchild element.
- */
- public static Element getFirstChild(Element element) {
- // Return the first child element
- return findNextSibling(element.getFirstChild());
- }
-
- /**
- * Get the next sibling element.
- *
- * @param element - an Element object.
- * @return the next sibling element.
- */
- public static Element getNextSibling(Element element) {
- // Return next sibling element
- return findNextSibling(element.getNextSibling());
- }
-
- /**
- * Find the next sibling element.
- *
- * @param startNode XML start node.
- * @return the next sibling element.
- */
- protected static Element findNextSibling(Node startNode) {
- Node node = null;
- Element returnElement = null;
-
- // Find the next sibling element
- for (node = startNode; node != null && returnElement == null; node = node
- .getNextSibling())
- {
- // If this node is an element node, then return it
- if (node.getNodeType() == Node.ELEMENT_NODE)
- {
- returnElement = (Element) node;
- }
- }
-
- // Return next sibling element
- return (Element) returnElement;
- }
-
- /**
- * Find the previous sibling element.
- *
- * @param startNode XML start node.
- * @return the previous sibling element.
- */
- public static Element findPreviousSibling(Node startNode) {
- if (startNode == null)
- return null;
-
- while (startNode != null)
- {
- startNode = startNode.getPreviousSibling();
- if (startNode == null)
- return null;
- if (startNode.getNodeType() == Node.ELEMENT_NODE)
- return (Element) startNode;
- }
-
- return null;
- }
-
- /**
- * Get the text that is associated with this element.
- *
- * @param element an Element object.
- * @return the text that is associated with this element.
- */
- public static String getText(Element element) {
- String text = null;
-
- // Get first child element
- Node node = element.getFirstChild();
-
- // NodeList nodeList = element.getChildNodes();
-
- // int length = nodeList.getLength();
-
- // Process while there are nodes and the text hasn't been found
- while ((node != null) && (text == null))
- {
- // If a text node or cdata section is found, then get text
- if ((node.getNodeType() == Node.TEXT_NODE)
- || (node.getNodeType() == Node.CDATA_SECTION_NODE))
- {
- text = ((CharacterData) node).getData();
- }
-
- // Get next sibling
- node = node.getNextSibling();
- }
-
- if (text != null)
- text = text.trim();
-
- return text;
- }
-
- /**
- * Determine if an element is represented by the QName.
- *
- * @param qname a QName object.
- * @param element an Element object.
- * @return true if an element is represented by the QName.
- */
- public static boolean equals(QName qname, Element element) {
- boolean equals = false;
-
- // If both the namespace URI and local name are the same, then they are
- // equal
- if ((qname.getNamespaceURI().equals(element.getNamespaceURI()))
- && (qname.getLocalPart().equals(element.getLocalName())))
- {
- equals = true;
- }
-
- return equals;
- }
-
- /**
- * XML encode a text string.
- *
- * @param text - a String.
- * @return an XML encoded text string.
- */
- public static String xmlEscapedString(String text)
- {
- if (text == null) return text;
- else
- {
- StringBuffer sb = new StringBuffer(text.length()*2);
- int size = text.length();
- for (int i=0; i<size; i++)
- {
- char c = text.charAt(i);
- switch (c)
- {
- case '<':
- sb.append("&lt;");
- break;
- case '>':
- sb.append("&gt;");
- break;
- case '&':
- sb.append("&amp;");
- break;
- case '"':
- sb.append("&quot;");
- break;
- case '\'':
- sb.append("&apos;");
- break;
- case '\r':
- sb.append("&#xd;");
- break;
- default:
- sb.append(c);
- }
- }
- return sb.toString();
- }
- }
-
- /**
- * XML encode a text string.
- *
- * @param text - a String.
- * @return an XML encoded text string.
- */
- public static String xmlRemoveEscapedString(String text)
- {
- if (text == null) return text;
- else
- {
- StringBuffer sb = new StringBuffer(text);
-
- int i = sb.indexOf("&#xd;");
- while(i != -1)
- {
- sb.replace(i, i+5, "\r");
- i = sb.indexOf("&#xd;");
- }
-
- i = sb.indexOf("&lt;");
- while(i != -1)
- {
- sb.replace(i, i+4, "<");
- i = sb.indexOf("&lt;");
- }
-
- i = sb.indexOf("&gt;");
- while(i != -1)
- {
- sb.replace(i, i+4, ">");
- i = sb.indexOf("&gt;");
- }
-
- i = sb.indexOf("&quot;");
- while(i != -1)
- {
- sb.replace(i, i+6, "\"");
- i = sb.indexOf("&quot;");
- }
-
- i = sb.indexOf("&apos;");
- while(i != -1)
- {
- sb.replace(i, i+6, "\'");
- i = sb.indexOf("&apos;");
- }
-
- i = sb.indexOf("&amp;");
- while(i != -1)
- {
- sb.replace(i, i+5, "&");
- i = sb.indexOf("&amp;");
- }
- return sb.toString();
- }
- }
- /**
- * Get the specified element from a parent element.
- *
- * @param elementName the element tag to serach for.
- * @param parentElement the parent element.
- * @return an element given the name and the parent element.
- */
- public static Element getElement(String elementName, Element parentElement) {
- Element returnElement = null;
- NodeList nl;
-
- // Get the list of elements
- if ((nl = parentElement.getElementsByTagName(elementName)) != null)
- {
- // Return first element found
- returnElement = (Element) nl.item(0);
- }
-
- // Return element
- return returnElement;
- }
-
- /**
- * Determine if this element matches specified local name in the specified
- * namespace.
- *
- * @param element an Element object.
- * @param namespaceURI a namespace.
- * @param localName a local name.
- * @return true if this element matches specified local name in the specified
- * namespace.
- */
- public static boolean isElement(Element element, String namespaceURI,
- String localName) {
- boolean isElement = false;
-
- if (element != null)
- {
- // Check is
- if (element.getNamespaceURI().equals(namespaceURI)
- && element.getLocalName().equals(localName))
- {
- isElement = true;
- }
- }
-
- return isElement;
- }
-
- /**
- * Determine if this element matches specified local name in the specified
- * namespace.
- *
- * @param element an Element object.
- * @param namespaceURIs a list of valid namespaces.
- * @param localName a local name.
- * @return true if this element matches specified local name in the specified
- * namespace.
- */
- public static boolean isElement(Element element, List namespaceURIs,
- String localName) {
- boolean isElement = false;
-
- if (element != null)
- {
- // Check is
- if (namespaceURIs.contains(element.getNamespaceURI())
- && element.getLocalName().equals(localName))
- {
- isElement = true;
- }
- }
-
- return isElement;
- }
-
- /**
- * Get element text as a boolean.
- *
- * @param element an Element object.
- * @param defaultValue a boolean to be used as a default value.
- * @return element text as a boolean value.
- */
- public static boolean getBooleanValue(Element element, boolean defaultValue) {
- boolean returnValue = defaultValue;
- String booleanValue = null;
-
- // Get value as a string
- if ((booleanValue = XMLUtils.getText(element)) != null)
- {
- returnValue = Boolean.valueOf(booleanValue).booleanValue();
- }
-
- // Return boolean
- return returnValue;
- }
-
- /**
- * Get attribute value as a boolean.
- *
- * @param element an Element object.
- * @param attrName a name of an attribute.
- * @param defaultValue a boolean to be used as a default value.
- * @return attribute value as a boolean.
- */
- public static boolean getBooleanValue(Element element, String attrName,
- boolean defaultValue) {
- boolean returnValue = defaultValue;
- String booleanValue = null;
-
- // Get value as a string
- if ((booleanValue = XMLUtils.getAttributeValue(element, attrName)) != null)
- {
- returnValue = Boolean.valueOf(booleanValue).booleanValue();
- }
-
- // Return boolean
- return returnValue;
- }
-
- /**
- * Create QName.
- *
- * @param qnameString a qualified name.
- * @return a QName object.
- */
- public static QName createQName(String qnameString) {
- QName qname = null;
-
- // Locate local part
- int index = qnameString.lastIndexOf(":");
-
- // Create new QName
- if (index != -1)
- {
- qname = new QName(qnameString.substring(0, index), qnameString
- .substring(index + 1));
- }
-
- else
- {
- qname = new QName(qnameString);
- }
-
- return qname;
- }
-
- /**
- * Error Handler
- */
- private static class ErrHandler implements ErrorHandler
- {
- /**
- * Warning
- */
- public void warning(SAXParseException spe) throws SAXException {
- String message = "Warning: " + spe.getMessage();
- throw new SAXException(message);
- }
-
- /**
- * Error
- */
- public void error(SAXParseException spe) throws SAXException {
- String message = "Error: " + spe.getMessage();
- throw new SAXException(message);
- }
-
- /**
- * Fatal Error
- */
- public void fatalError(SAXParseException spe) throws SAXException {
- String message = "Fatal Error: " + spe.getMessage();
- throw new SAXException(message);
- }
- }
-
- /**
- * Determine if the string is a NMTOKEN data type.
- *
- * @param text a string value.
- * @return true if the string is a NMTOKEN data type.
- */
- public static boolean isNmtoken(String text) {
- boolean nmtoken = true;
-
- // ADD: Need to find a utility function that does this or write it from
- // scratch
-
- return nmtoken;
- }
-
- /**
- * The method searches the first direct descendant element with the given
- * qname.
- *
- * @param parent parent DOM element.
- * @param elementName QName of the element to be searched.
- * @return DOM element if the required element found, and null otherwise.
- */
- static public Element findChildElement(Element parent, QName elementName) {
- if (parent == null)
- throw new IllegalArgumentException("Parent element can not be NULL");
- if (elementName == null)
- throw new IllegalArgumentException("Element name can not be NULL");
- if (elementName.getLocalPart() == null)
- throw new IllegalArgumentException(
- "Local part of the element name can not be NULL");
-
- Node n = parent.getFirstChild();
- String local = elementName.getLocalPart();
- String ns = elementName.getNamespaceURI();
- while (n != null)
- {
- if (Node.ELEMENT_NODE == n.getNodeType()
- && local.equals(n.getLocalName())
- && NullUtil.equals(ns, n.getNamespaceURI()))
- return (Element) n;
- n = n.getNextSibling();
- }
-
- return null;
- }
-
- /**
- * The method searches the first sibling element with the given qname.
- *
- * @param active DOM element.
- * @param elementName QName of the element to be searched.
- * @return DOM element if the required element found, and null otherwise.
- */
- static public Element findElement(Element active, QName elementName) {
- if (active == null)
- throw new IllegalArgumentException("Active element can not be NULL");
- if (elementName == null)
- throw new IllegalArgumentException("Element name can not be NULL");
- if (elementName.getLocalPart() == null)
- throw new IllegalArgumentException(
- "Local part of the element name can not be NULL");
-
- Node n = active.getNextSibling();
- String local = elementName.getLocalPart();
- String ns = elementName.getNamespaceURI();
- while (n != null)
- {
- if (Node.ELEMENT_NODE == n.getNodeType()
- && local.equals(n.getLocalName())
- && NullUtil.equals(ns, n.getNamespaceURI()))
- return (Element) n;
- n = n.getNextSibling();
- }
-
- return null;
- }
-
- /**
- * The method returns attribute node by the given qname.
- *
- * @param el owner element.
- * @param attributeName QName of the attribute node to be searched.
- * @return attribute node by the given qname.
- */
- static public Attr getAttribute(Element el, QName attributeName) {
- if (el == null)
- throw new IllegalArgumentException("Element can not be NULL");
- if (attributeName == null)
- throw new IllegalArgumentException("Attribute name can not be NULL");
- if (attributeName.getLocalPart() == null)
- throw new IllegalArgumentException(
- "Local part of the attribute name can not be NULL");
-
- attributeName.getNamespaceURI();
- attributeName.getLocalPart();
- Attr a = el.getAttributeNodeNS(attributeName.getNamespaceURI(),
- attributeName.getLocalPart());
- if (a == null)
- // try to get with null namespace
- a = el.getAttributeNodeNS(null, attributeName.getLocalPart());
- return a;
- }
-
- /**
- * The method compares node's name to the given qname.
- *
- * @param n a node.
- * @param name a QName object.
- * @return true if the node's name is the same as the given qname.
- */
- static public boolean equals(Node n, QName name) {
- if (n == null || name == null)
- return false;
- return (NullUtil.equals(name.getLocalPart(), n.getLocalName()) && NullUtil
- .equals(name.getNamespaceURI(), n.getNamespaceURI()));
- }
-
- /**
- * The method searches namespace URI for the given prefix. The searching
- * mechanism is implemented according to the "XML Namespaces resolution"
- * algorithm ('http://www.w3.org/TR/2003/WD-DOM-Level-3-
- * Core-20030226/namespaces-algorithms.html').
- *
- * @param n a node.
- * @param prefix a prefix.
- * @return the namespace URI for the given prefix.
- */
- static public String findNamespaceURI(Node n, String prefix) {
- if (prefix == null)
- return null;
-
- while (n != null)
- {
- if (prefix.equals(n.getPrefix()))
- return n.getNamespaceURI();
-
- if (Node.ELEMENT_NODE == n.getNodeType())
- {
- NamedNodeMap m = n.getAttributes();
- if (m != null)
- for (int i = 0; i < m.getLength(); i++)
- {
- Node a = m.item(i);
- if (WSITag.NS_URI_XMLNS.equals(a.getNamespaceURI())
- && prefix.equals(a.getLocalName()))
- return a.getNodeValue();
- }
- }
-
- n = n.getParentNode();
- }
-
- return null;
- }
-
- /**
- * Serializes element.
- *
- * @param n a DOM element.
- * @return the serialized element.
- */
- public static String serialize(Element n) {
- String value = null;
- try
- {
- StringWriter writer = new StringWriter();
- XMLSerializer s = new XMLSerializer(writer, new OutputFormat("xml",
- "UTF-8", true));
- s.serialize(n);
- value = writer.toString();
- writer.close();
- } catch (Throwable t)
- {
- // nothing
- value = "EXCEPTION : " + t.getMessage();
- }
-
- return value;
- }
-
- /**
- * The method return list of child elements.
- *
- * @param parent an org.w3c.dom.Element object.
- * @return list of child elements.
- */
- static public Vector getChildElements(Element parent) {
- if (parent == null)
- throw new IllegalArgumentException("Element can not be NULL");
-
- Vector vect = new Vector();
- Element elem = getFirstChild(parent);
- while (elem != null)
- {
- vect.add(elem);
- elem = getNextSibling(elem);
- }
- return vect;
- }
-
- /**
- * Serializes document.
- *
- * @param doc an org.w3c.dom.Document object.
- * @param writer a java.io.Writer object.
- * @throws Exception if unable to serialize the document.
- */
- public static void serializeDoc(Document doc, Writer writer)
- throws java.lang.Exception {
- XMLSerializer s = new XMLSerializer(writer, new OutputFormat("xml",
- "UTF-8", true));
- s.serialize(doc);
- }
-
- /**
- * Serealizes element.
- *
- * @param elem an org.w3c.dom.Element object.
- * @param writer a java.io.Writer object.
- * @throws Exception if unable to serialize the DOM element.
- */
- public static void serializeElement(Element elem, Writer writer)
- throws java.lang.Exception {
- XMLSerializer s = new XMLSerializer(writer, new OutputFormat("xml",
- "UTF-8", true));
- s.serialize(elem);
- }
-
- /**
- * Remove all elements from list without namespace.
- *
- * @param vect a list of elements.
- */
- public static void removeAllElementsWithoutNS(Vector vect) {
- for (int i = 0; i < vect.size();)
- {
- if (((Element) vect.get(i)).getNamespaceURI() == null
- || ((Element) vect.get(i)).getNamespaceURI().equals(""))
- vect.remove(i);
- else
- i++;
- }
- }
-
- /**
- * Create URL using base URI.
- *
- * @param url a URL string.
- * @param baseURI a base url string to assist in creating a URL.
- * @return newly created URL.
- * @throws MalformedURLException if a malformed URL has occurred.
- */
- public static URL createURL(String url, String baseURI)
- throws MalformedURLException {
- URL returnURL = null;
- URI uri = null;
- try
- {
- returnURL = new URL(url);
- uri = new URI(url);
- uri = uri.normalize();
- returnURL = new URL(uri.toString());
- }
-
- catch (Exception mue)
- {
- int i = baseURI.lastIndexOf('/');
- int j = baseURI.lastIndexOf('\\');
- if (j > i)
- i = j;
- try
- {
- uri = new URI(baseURI.substring(0, i + 1) + url);
- uri = uri.normalize();
- returnURL = uri.toURL();
- }
- catch (Exception e)
- {
- return new URL(baseURI.substring(0, i + 1) + url);
- }
- }
- return returnURL;
- }
-
- /**
- * Create URL using base URI.
- *
- * @param url a URL string.
- * @param baseURI a base url string to assist in creating a URL.
- * @return newly created URL string.
- * @throws MalformedURLException if a malformed URL has occurred.
- */
- public static String createURLString(String url, String baseURI)
- throws MalformedURLException {
- return createURL(url, baseURI).toExternalForm();
- }
-
- /**
- * This method is used only for unit testing.
- *
- * @param args arguments for main.
- */
- public static void main(String[] args) {
- try
- {
- System.out.println("Filename: " + args[0] + ", schema: " + args[1]);
- parseXMLDocument(args[0], args[1]);
- System.out.println("Done.");
- }
-
- catch (Exception e)
- {
- System.err.println(e.toString());
- }
-
- System.exit(0);
- }
-}
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLVisitor.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLVisitor.java
deleted file mode 100644
index fc9ea3653..000000000
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLVisitor.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002-2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.wsi.internal.core.xml;
-
-import org.w3c.dom.Attr;
-import org.w3c.dom.CDATASection;
-import org.w3c.dom.Comment;
-import org.w3c.dom.Document;
-import org.w3c.dom.DocumentType;
-import org.w3c.dom.Element;
-import org.w3c.dom.Entity;
-import org.w3c.dom.EntityReference;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Notation;
-import org.w3c.dom.ProcessingInstruction;
-import org.w3c.dom.Text;
-
-/**
- * We don't have access to the node source code, so this does
- * our double-dispatch the hard way.
- */
-public class XMLVisitor
-{
- /**
- * Visit XML CDATASection node.
- * @param s an XML CDATASection node.
- */
- public void visit(CDATASection s)
- {
- }
-
- /**
- * Visit XML Document node.
- * @param e an XML Document node.
- */
- public void visit(Document e)
- {
- }
-
- /**
- * Visit XML DocumentType node.
- * @param e an ML DocumentType node.
- */
- public void visit(DocumentType e)
- {
- }
-
- /**
- * Visit XML Attribute node.
- * @param e an XML Atrribute node.
- */
- public void visit(Attr e)
- {
- }
-
- /**
- * Visit XML Element node.
- * @param e an XML Element node.
- */
- public void visit(Element e)
- {
- }
-
- /**
- * Visit XML Comment node.
- * @param e an XML Comment node.
- */
- public void visit(Comment e)
- {
- }
-
- /**
- * Visit XML Text node.
- * @param e an XML Text node.
- */
- public void visit(Text e)
- {
- }
-
- /**
- * Visit XML EntityReference node.
- * @param e an XML EntityReference node.
- */
- public void visit(EntityReference e)
- {
- }
-
- /**
- * Visit XML Entity node.
- * @param e an XML Entity node.
- */
- public void visit(Entity e)
- {
- }
-
- /**
- * Visit XML Notation node.
- * @param n an XML Notation node.
- */
- public void visit(Notation n)
- {
- }
-
- /**
- * Visit XML ProcessingInstruction node.
- * @param i an XML ProcessingInstruction node.
- */
- public void visit(ProcessingInstruction i)
- {
- }
-
- /**
- * Visit XML NamedNodeMap node.
- * @param i an XML NamedNodeMap node.
- */
- public void visit(NamedNodeMap i)
- {
- }
-
- /**
- * Visit XML node.
- * @param node an XML node.
- */
- public void doVisit(Object node)
- {
- if (node instanceof Element)
- {
- visit((Element) node);
- }
- else if (node instanceof Comment)
- {
- visit((Comment) node);
- }
- else if (node instanceof CDATASection)
- {
- // CDATASection extends Text, so it must come first
- visit((CDATASection) node);
- }
- else if (node instanceof Text)
- {
- visit((Text) node);
- }
- else if (node instanceof Attr)
- {
- visit((Attr) node);
- }
- else if (node instanceof Document)
- {
- visit((Document) node);
- }
- else if (node instanceof EntityReference)
- {
- visit((EntityReference) node);
- }
- else if (node instanceof Entity)
- {
- visit((Entity) node);
- }
- else if (node instanceof DocumentType)
- {
- visit((DocumentType) node);
- }
- else if (node instanceof Notation)
- {
- visit((Notation) node);
- }
- else if (node instanceof ProcessingInstruction)
- {
- visit((ProcessingInstruction) node);
- }
- else if (node instanceof NamedNodeMap)
- {
- visit((NamedNodeMap) node);
- }
- }
-}
-
-// END OF FILE
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/dom/DOMParser.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/dom/DOMParser.java
deleted file mode 100644
index 2ee0361d3..000000000
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/dom/DOMParser.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002-2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.wsi.internal.core.xml.dom;
-
-import org.apache.xerces.dom.ElementImpl;
-import org.apache.xerces.xni.Augmentations;
-import org.apache.xerces.xni.NamespaceContext;
-import org.apache.xerces.xni.QName;
-import org.apache.xerces.xni.XMLAttributes;
-import org.apache.xerces.xni.XMLLocator;
-import org.apache.xerces.xni.XNIException;
-import org.w3c.dom.Element;
-import org.xml.sax.SAXNotRecognizedException;
-import org.xml.sax.SAXNotSupportedException;
-
-/**
- * This class specializes org.apache.xerces.parsers.DOMParser.
- *
- * @author Peter Brittenham (peterbr@us.ibm.com)
- * @version 1.0.1
- */
-public class DOMParser extends org.apache.xerces.parsers.DOMParser
-{
- /**
- * Locator.
- */
- XMLLocator locator = null;
-
- /* (non-Javadoc)
- * @see org.apache.xerces.xni.XMLDocumentHandler#startDocument(org.apache.xerces.xni.XMLLocator, java.lang.String, org.apache.xerces.xni.NamespaceContext, org.apache.xerces.xni.Augmentations)
- */
- public void startDocument(
- XMLLocator locator,
- String encoding,
- NamespaceContext context,
- Augmentations augs)
- throws XNIException
- {
- this.locator = locator;
- super.startDocument(locator, encoding, context, augs);
- }
-
- /* (non-Javadoc)
- * @see org.apache.xerces.xni.XMLDocumentHandler#startElement(org.apache.xerces.xni.QName, org.apache.xerces.xni.XMLAttributes, org.apache.xerces.xni.Augmentations)
- */
- public void startElement(
- QName qname,
- XMLAttributes attributes,
- Augmentations augs)
- throws XNIException
- {
- Element element;
- ElementImpl elementImpl;
-
- // DEBUG:
- //System.err.println("1-line: " + locator.getLineNumber() + ", column: " + locator.getColumnNumber());
-
- super.startElement(qname, attributes, augs);
-
- // DEBUG:
- //System.err.println("2-line: " + locator.getLineNumber() + ", column: " + locator.getColumnNumber());
-
- try
- {
- element = (Element) getProperty(CURRENT_ELEMENT_NODE);
-
- elementImpl = (ElementImpl) element;
- // Setting the user data with an identifier such as ElementLocation.KEY_NAME
- // may be a long term good idea. The setUserData method with no id is used
- // to support JVMs with alternate versions of Xerces.
- elementImpl.setUserData(new ElementLocation(locator.getLineNumber(), locator.getColumnNumber()));
- }
- catch (ClassCastException cce)
- {
- }
- catch (SAXNotSupportedException snse)
- {
- // DEBUG:
- //System.err.println(snse.toString());
- }
- catch (SAXNotRecognizedException snre)
- {
- }
- }
-}
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/dom/ElementLocation.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/dom/ElementLocation.java
deleted file mode 100644
index fa9053363..000000000
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/dom/ElementLocation.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002-2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.wsi.internal.core.xml.dom;
-
-import org.eclipse.wst.wsi.internal.core.WSIConstants;
-import org.xml.sax.Locator;
-
-/**
- * This class provides line and column information for a node within an XML document.
- *
- * @version 1.0.1
- * @author Peter Brittenham (peterbr@us.ibm.com)
- */
-public class ElementLocation
-{
- /**
- * Line number.
- */
- public static final String KEY_NAME = ElementLocation.class.getName();
-
- /**
- * Line number.
- */
- protected int lineNumber = 0;
-
- /**
- * Column number.
- */
- protected int columnNumber = 0;
-
- /**
- * Element location.
- * @param lineNumber a line number.
- * @param columnNumber a column number.
- */
- public ElementLocation(int lineNumber, int columnNumber)
- {
- this.lineNumber = lineNumber;
- this.columnNumber = columnNumber;
- }
-
- /**
- * Element location.
- * @param locator a Locator object.
- */
- public ElementLocation(Locator locator)
- {
- this.lineNumber = locator.getLineNumber();
- this.columnNumber = locator.getColumnNumber();
- }
-
- /**
- * Get the line number.
- * @return an int representing the line number value.
- */
- public int getLineNumber()
- {
- return this.lineNumber;
- }
-
- /**
- * Get the column number.
- * @return an int representing the column number value.
- */
- public int getColumnNumber()
- {
- return this.columnNumber;
- }
-
- /**
- * Get string representation of this object.
- */
- public String toString()
- {
- return "Element Location:\n"
- + " "
- + WSIConstants.ATTR_LINE_NUMBER
- + "="
- + this.lineNumber
- + "\n";
- //+ " " + WSIConstants.ATTR_COLUMN_NUMBER + "=" + this.columnNumber + "\n";
- }
-}
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/jaxp/DocumentBuilderFactoryImpl.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/jaxp/DocumentBuilderFactoryImpl.java
deleted file mode 100644
index 4bec5cdfe..000000000
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/jaxp/DocumentBuilderFactoryImpl.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002-2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.wsi.internal.core.xml.jaxp;
-
-import java.util.Hashtable;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-/**
- * This class defines a factory API that enables us to obtain a parser that
- * produces DOM object trees from XML documents. Note this class specializes
- * javax.xml.parsers.DocumentBuilderFactory.
- *
- * @author Peter Brittenham (peterbr@us.ibm.com)
- */
-public class DocumentBuilderFactoryImpl extends DocumentBuilderFactory
-{
-
- protected Hashtable attributes = new Hashtable();
-
- /**
- * Creates a new instance of a DocumentBuilder using the currently
- * configured parameters.
- *
- * @return a new instance of a DocumentBuilder.
- * @throws ParserConfigurationException if a DocumentBuilder cannot
- * be created which satisfies the configuration requested.
- */
- public DocumentBuilder newDocumentBuilder()
- throws ParserConfigurationException
- {
- DocumentBuilder documentBuilder = null;
-
- try
- {
- documentBuilder = new DocumentBuilderImpl(this, attributes);
- }
-
- catch (Exception e)
- {
- throw new ParserConfigurationException(e.getMessage());
- }
-
- return documentBuilder;
- }
-
- /**
- * Allows the user to retrieve specific attributes on the underlying
- * implementation.
- *
- * @param name the name of the attribute.
- * @return the value of the attribute.
- * @throws IllegalArgumentException if the underlying implementation
- * doesn't recognize the attribute.
- */
- public Object getAttribute(String name) throws IllegalArgumentException
- {
- return attributes.get(name);
- }
-
- /**
- * Allows the user to set specific attributes on the underlying
- * implementation.
- *
- * @param name the name of the attribute.
- * @param value the value of the attribute.
- * @throws IllegalArgumentException if the underlying implementation
- * doesn't recognize the attribute.
- */
- public void setAttribute(String name, Object value)
- throws IllegalArgumentException
- {
- attributes.put(name, value);
- }
-
- public void setFeature(String arg0, boolean arg1)
- throws ParserConfigurationException
- {
- // currently we do not support setting any feature
- // as per spec, we should throw an exception
- throw new ParserConfigurationException(arg0 + " Not supported");
- }
-
- public boolean getFeature(String arg0)
- throws ParserConfigurationException
- {
- // as per spec, we should throw an exception
- throw new ParserConfigurationException(arg0 + " is not supported");
- }
-}
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/jaxp/DocumentBuilderImpl.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/jaxp/DocumentBuilderImpl.java
deleted file mode 100644
index 2858dd7cd..000000000
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/jaxp/DocumentBuilderImpl.java
+++ /dev/null
@@ -1,248 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002-2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.wsi.internal.core.xml.jaxp;
-
-
-import java.io.IOException;
-import java.util.Enumeration;
-import java.util.Hashtable;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-
-import org.apache.xerces.dom.DOMImplementationImpl;
-import org.apache.xerces.dom.DocumentImpl;
-import org.apache.xerces.impl.Constants;
-import org.eclipse.wst.wsi.internal.core.xml.XMLUtils;
-import org.eclipse.wst.wsi.internal.core.xml.dom.DOMParser;
-import org.w3c.dom.DOMImplementation;
-import org.w3c.dom.Document;
-import org.xml.sax.EntityResolver;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-
-/**
- * Using this class, we can obtain a Document from XML. This class is a
- * specialization of javax.xml.parsers.DocumentBuilder.
- *
- * An instance of this class can be obtained from the
- * DocumentBuilderFactory.newDocumentBuilder method. Once an instance
- * of this class is obtained, XML can be parsed from a variety of input
- * sources. These input sources are InputStreams, Files, URLs, and SAX
- * InputSources.
-
-This class will javax.xml.parsers.DocumentBuilderFactory...
- *
- * @author Peter Brittenham (peterbr@us.ibm.com)
- * @version 1.0.1
- */
-public class DocumentBuilderImpl extends DocumentBuilder
-{
- protected DOMParser domParser = null;
-
- protected EntityResolver entityResolver = null;
- protected ErrorHandler errorHandler = new DefaultHandler();
-
- protected static final String NAMESPACES_FEATURE =
- Constants.SAX_FEATURE_PREFIX + Constants.NAMESPACES_FEATURE;
- protected static final String VALIDATION_FEATURE =
- Constants.SAX_FEATURE_PREFIX + Constants.VALIDATION_FEATURE;
-
- /**
- * Constructor for DocumentBuilderImpl2.
- *
- * @param dbFactory a DocumentBuilderFactory object.
- * @throws SAXException if any parse errors occur.
- */
- public DocumentBuilderImpl(DocumentBuilderFactory dbFactory, Hashtable attributes)
- throws SAXException
- {
- // Create parser
- domParser = new DOMParser();
-
- // Set namespace aware
- domParser.setFeature(NAMESPACES_FEATURE, dbFactory.isNamespaceAware());
-
- // Set validating
- domParser.setFeature(VALIDATION_FEATURE, dbFactory.isValidating());
- if (dbFactory.isValidating()) domParser.setFeature(XMLUtils.FEATURE_VALIDATION_SCHEMA, true);
-
- // Do not defer node expansion
- domParser.setFeature(
- Constants.XERCES_FEATURE_PREFIX + Constants.DEFER_NODE_EXPANSION_FEATURE,
- false);
-
- // Set other features from the document factory builder
- domParser.setFeature(
- Constants.XERCES_FEATURE_PREFIX + Constants.INCLUDE_IGNORABLE_WHITESPACE,
- !dbFactory.isIgnoringElementContentWhitespace());
- domParser.setFeature(
- Constants.XERCES_FEATURE_PREFIX
- + Constants.CREATE_ENTITY_REF_NODES_FEATURE,
- !dbFactory.isExpandEntityReferences());
- domParser.setFeature(
- Constants.XERCES_FEATURE_PREFIX + Constants.INCLUDE_COMMENTS_FEATURE,
- !dbFactory.isIgnoringComments());
- domParser.setFeature(
- Constants.XERCES_FEATURE_PREFIX + Constants.CREATE_CDATA_NODES_FEATURE,
- !dbFactory.isCoalescing());
-
- // set features and properties specified at factory level
- if (attributes != null)
- {
- for (Enumeration i=attributes.keys(); i.hasMoreElements();)
- {
- String attribute = (String)i.nextElement();
- if (attribute.equals(XMLUtils.JAXP_SCHEMA_SOURCE))
- {
- // for multiple schema validation may be array of InputSource
- if(attributes.get(attribute) instanceof InputSource[])
- domParser.setProperty(attribute, (InputSource[])attributes.get(attribute));
- else
- domParser.setProperty(attribute, (InputSource)attributes.get(attribute));
- }
- else
- {
- domParser.setProperty(attribute, attributes.get(attribute));
- }
- }
- }
- }
-
- /**
- * Parse the content of the given input source as an XML document and return a new DOM.
- * @param is InputStream containing the content to be parsed.
- * @throws SAXException if any parse errors occur.
- * @throws IOException if any IO errors occur.
- */
- public Document parse(InputSource is) throws SAXException, IOException
- {
- ClassLoader currentLoader = Thread.currentThread().getContextClassLoader();
- try
- {
- Thread.currentThread().setContextClassLoader(XMLUtils.class.getClassLoader());
-
- // Set entity resolver
- if (this.entityResolver != null)
- domParser.setEntityResolver(this.entityResolver);
-
- // Set error handler
- if (this.errorHandler != null)
- domParser.setErrorHandler(this.errorHandler);
-
- // Parse input source
- domParser.parse(is);
-
- // Return the document that was created
- return domParser.getDocument();
- }
- finally
- {
- Thread.currentThread().setContextClassLoader(currentLoader);
- }
- }
-
- /**
- * Indicates whether or not this parser is configured to understand namespaces.
- * @return true if this parser is configured to understand namespaces; false otherwise.
- */
- public boolean isNamespaceAware()
- {
- boolean namespaceAware = false;
-
- try
- {
- namespaceAware = domParser.getFeature(NAMESPACES_FEATURE);
- }
-
- catch (SAXException se)
- {
- throw new RuntimeException(se.toString());
- }
-
- return namespaceAware;
- }
-
- /**
- * Indicates whether or not this parser is configured to validate XML documents.
- * @return true if this parser is configured to validate XML documents; false otherwise.
- */
- public boolean isValidating()
- {
- boolean validating = false;
-
- try
- {
- validating = domParser.getFeature(VALIDATION_FEATURE);
- }
-
- catch (SAXException se)
- {
- throw new RuntimeException(se.toString());
- }
-
- return validating;
- }
-
- /**
- * Specify the EntityResolver to be used to resolve entities present
- * in the XML document to be parsed. Setting this to null will result
- * in the underlying implementation using it's own default
- * implementation and behavior.
- *
- * @param er the EntityResolver to be used to resolve entities
- * present in the XML document to be parsed.
- */
- public void setEntityResolver(EntityResolver entityResolver)
- {
- this.entityResolver = entityResolver;
- }
-
- /**
- * Specify the ErrorHandler to be used to report errors present in
- * the XML document to be parsed. Setting this to null will result
- * in the underlying implementation using it's own default
- * implementation and behavior.
- *
- * param eh the ErrorHandler to be used to report errors present in
- * the XML document to be parsed.
- */
- public void setErrorHandler(ErrorHandler errorHandler)
- {
- this.errorHandler = errorHandler;
- }
-
- /**
- * Obtain a new instance of a DOM Document object to build a DOM
- * tree with. An alternative way to create a DOM Document object
- * is to use the getDOMImplementation method to get a DOM Level 2
- * DOMImplementation object and then use DOM Level 2 methods on
- * that object to create a DOM Document object.
- *
- * @return a new instance of a DOM Document object.
- */
- public Document newDocument()
- {
- return new DocumentImpl();
- }
-
- /**
- * Obtain an instance of a DOMImplementation object.
- * @return a new instance of a DOMImplementation.
- */
- public DOMImplementation getDOMImplementation()
- {
- return new DOMImplementationImpl();
- }
-
-}
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/schema/TargetNamespaceProcessor.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/schema/TargetNamespaceProcessor.java
deleted file mode 100644
index 6dc2435df..000000000
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/schema/TargetNamespaceProcessor.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002-2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.wsi.internal.core.xml.schema;
-
-import java.util.List;
-
-import org.eclipse.wst.wsi.internal.core.WSIException;
-import org.eclipse.wst.wsi.internal.core.util.TestUtils;
-import org.eclipse.wst.wsi.internal.core.xml.XMLUtils;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-/**
- * This class processes target namespaces. Note this class is a specialization
- * of org.wsi.xml.schema.XMLSchemaProcessor.
- *
- * @author Peter Brittenham (peterbr@us.ibm.com)
- * @version 1.0.1
- */
-public class TargetNamespaceProcessor extends XMLSchemaProcessor
-{
-
- /**
- * Constructor for TargetNamespaceProcess.
- *
- * @param context
- * document context
- * @param documentList
- * cache of previously parsed documents
- */
- public TargetNamespaceProcessor(String context)
- {
- super(context, false);
- }
-
- protected void processSchema(Element element)
- {
- String tns = null;
- Attr attr = XMLUtils.getAttribute(element, ATTR_XSD_TARGETNAMESPACE);
-
- // If the attribute was found and value is not null, then add it to the list
- if ((attr != null) && ((tns = attr.getValue()) != null))
- {
- // Add the targetNamespace to the return list
- returnList.add(tns);
- }
- }
-
- /**
- * Search for all schema elements, load the xsd documents, and then process
- * them.
- *
- * @param node
- * node.
- * @return a list.
- * @throws WSIException
- * if the XML schema file is not found or if it is not formatted
- * correctly.
- */
- public List processAllSchema(Node node) throws WSIException
- {
- return processAllSchema(node, context);
- }
-
- /**
- * Search for all schema elements, load the xsd documents, and then process
- * them.
- *
- * @param node
- * node.
- * @return a list.
- * @throws WSIException
- * if the XML schema file is not found or if it is not formatted
- * correctly.
- */
- private List processAllSchema(Node node, String ctx) throws WSIException
- {
- ClassLoader currentLoader = Thread.currentThread().getContextClassLoader();
- try
- {
- Thread.currentThread().setContextClassLoader(XMLUtils.class.getClassLoader());
-
- // if xsd:schema element is found -> process schema
- if (XMLUtils.equals(node, ELEM_XSD_SCHEMA))
- {
- processSchema((Element) node);
-
- Node n = node.getFirstChild();
- while (n != null)
- {
- if (Node.ELEMENT_NODE == n.getNodeType()&& XMLUtils.equals(n, ELEM_XSD_IMPORT))
- {
- Attr schemaLocation = XMLUtils.getAttribute((Element) n, ATTR_XSD_SCHEMALOCATION);
-
- // Try to parse imported XSD
- if (schemaLocation != null && schemaLocation.getValue() != null)
- {
- if (!schemaLocations.contains(schemaLocation.getValue()))
- {
- schemaLocations.add(schemaLocation.getValue());
- try
- {
- // Read and pParse the XML schema document
- Document document = parseXMLDocumentURL(schemaLocation.getValue(), ctx, TestUtils.getXMLSchemaLocation());
- processAllSchema(document.getDocumentElement(), XMLUtils.createURLString(schemaLocation.getValue(), ctx));
- }
- catch (WSIException e)
- {
- if (throwException) throw e;
- }
- catch (Throwable t)
- {
- // NOTE: An exception will occur if the XML schema file is not
- // found or if it is not formatted correctly
- if (throwException) throw new WSIException(t.getMessage(), t);
- }
- }
- }
- }
- n = n.getNextSibling();
- }
- }
-
- // Return list created by the class that extends this class
- return returnList;
- }
- finally
- {
- Thread.currentThread().setContextClassLoader(currentLoader);
- }
-}
-}
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/schema/XMLSchemaProcessor.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/schema/XMLSchemaProcessor.java
deleted file mode 100644
index e6e52e15a..000000000
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/schema/XMLSchemaProcessor.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002-2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.wsi.internal.core.xml.schema;
-
-import java.util.List;
-import java.util.Vector;
-
-import org.eclipse.wst.wsi.internal.core.WSIException;
-import org.eclipse.wst.wsi.internal.core.util.TestUtils;
-import org.eclipse.wst.wsi.internal.core.xml.XMLDocumentCacheUser;
-import org.eclipse.wst.wsi.internal.core.xml.XMLTags;
-import org.eclipse.wst.wsi.internal.core.xml.XMLUtils;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-/**
- * This abstract class is used to process an XML Schema.
- *
- * @author Peter Brittenham (peterbr@us.ibm.com)
- * @version 1.0.1
- */
-public abstract class XMLSchemaProcessor
- extends XMLDocumentCacheUser
- implements XMLTags
-{
- protected List returnList = new Vector();
- protected String context;
- protected boolean throwException = true;
- protected List schemaLocations = new Vector();
-
- /**
- * Constructor for XMLSchemaProcessor.
- * @param context document context.
- * @param documentList cache of previously parsed documents.
- */
- public XMLSchemaProcessor(String context)
- {
- this(context, true);
- }
-
- /**
- * Constructor for XMLSchemaProcessor.
- * @param context document context.
- * @param documentList cache of previously parsed documents.
- * @param throwException indicates if an exception should be thrown if there is a parsing problem.
- */
- public XMLSchemaProcessor(
- String context,
- boolean throwException)
- {
- super();
-
- this.context = context;
- this.throwException = throwException;
- }
-
- /**
- * Search for all schema elements, load the xsd documents, and then process them.
- * @param node node.
- * @return a list.
- * @throws WSIException if the XML schema file is not found or if it is not formatted correctly.
- */
- public List processAllSchema(Node node) throws WSIException
- {
- return processAllSchema(node, context);
- }
-
- /**
- * Search for all schema elements, load the xsd documents, and then process them.
- * @param node node.
- * @return a list.
- * @throws WSIException if the XML schema file is not found or if it is not formatted correctly.
- */
- private List processAllSchema(Node node, String ctx) throws WSIException
- {
- ClassLoader currentLoader = Thread.currentThread().getContextClassLoader();
- try
- {
- Thread.currentThread().setContextClassLoader(XMLSchemaProcessor.class.getClassLoader());
- // Process all nodes
- while (node != null)
- {
- // If this is an element node, then continue
- if (Node.ELEMENT_NODE == node.getNodeType())
- {
- // if xsd:schema element is found -> process schema
- if (XMLUtils.equals(node, ELEM_XSD_SCHEMA))
- {
- processSchema((Element) node);
-
- // Process all children of the schema element
- processAllSchema(node.getFirstChild(), ctx);
- }
-
- // if xsd:import element is found -> load schema and process schema
- else if (XMLUtils.equals(node, ELEM_XSD_IMPORT))
- {
-
- Attr schemaLocation =
- XMLUtils.getAttribute((Element) node, ATTR_XSD_SCHEMALOCATION);
-
- // Try to parse imported XSD
- if (schemaLocation != null && schemaLocation.getValue() != null)
- {
- if (!schemaLocations.contains(schemaLocation.getValue()))
- {
- schemaLocations.add(schemaLocation.getValue());
- try
- {
- // Read and pParse the XML schema document
- Document document =
- parseXMLDocumentURL(
- schemaLocation.getValue(),
- ctx,
- TestUtils.getXMLSchemaLocation());
-
- processAllSchema(document.getDocumentElement(),
- XMLUtils.createURLString(schemaLocation.getValue(), ctx));
- }
- catch (WSIException e)
- {
- if (throwException)
- throw e;
- }
-
- catch (Throwable t)
- {
- // NOTE: An exception will occur if the XML schema file is not found or if it is not formatted correctly
- if (throwException)
- throw new WSIException(t.getMessage(), t);
- }
- }
- }
- }
-
- else
- {
- // else iterate element recursively
- processAllSchema(node.getFirstChild(), ctx);
- }
- }
-
- // Get next sibiling
- node = node.getNextSibling();
- }
-
- }
- finally
- {
- Thread.currentThread().setContextClassLoader(currentLoader);
- }
-
-
- // Return list created by the class that extends this class
- return returnList;
- }
-
- protected abstract void processSchema(Element element);
-
-}
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/schema/XMLSchemaValidator.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/schema/XMLSchemaValidator.java
deleted file mode 100644
index 36ca130aa..000000000
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/schema/XMLSchemaValidator.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002-2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.wsi.internal.core.xml.schema;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.wst.wsi.internal.core.WSIException;
-import org.eclipse.wst.wsi.internal.core.util.TestUtils;
-import org.eclipse.wst.wsi.internal.core.xml.XMLUtils;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-
-import com.ibm.wsdl.util.xml.DOM2Writer;
-
-/**
- * This class is used to validate an XML Schema.
- *
- * @author Peter Brittenham (peterbr@us.ibm.com)
- * @version 1.0.1
- */
-public class XMLSchemaValidator extends XMLSchemaProcessor
-{
- private static final String XMLNS_PREFIX = "xmlns:";
-
- /**
- * Constructor for XMLSchemaValidator.
- * @param context document context.
- * @param documentList cache of previously parsed documents.
- */
- public XMLSchemaValidator(String context)
- {
- super(context);
- }
-
- protected void processSchema(Element element)
- {
- NamedNodeMap attrList;
-
- HashMap elementMap = new HashMap();
- HashMap nsMap = new HashMap();
-
- try
- {
- // Get schema content as a string
- String schema = DOM2Writer.nodeToString(element);
-
- // Get list of element namespaces
- if ((attrList = element.getAttributes()) != null)
- {
- addNamespaces(attrList, elementMap, null);
- }
-
- // If elementMap does not contain entry for it's own namespace, then add it
- if (elementMap.get(XMLNS_PREFIX + element.getPrefix()) == null)
- {
- elementMap.put(
- XMLNS_PREFIX + element.getPrefix(),
- element.getNamespaceURI());
- }
-
- // Get first parent node and then process all of them until you hit the top of the document
- Node parentNode = element.getParentNode();
- while (parentNode != null)
- {
- // Only process Element nodes
- if (parentNode.getNodeType() == Node.ELEMENT_NODE)
- {
- // Get the list of attributes for the parent node
- attrList = parentNode.getAttributes();
-
- // If there are attributes, look for the xmlns: attributes
- if (attrList != null)
- {
- addNamespaces(attrList, nsMap, elementMap);
- }
- }
-
- parentNode = parentNode.getParentNode();
- }
-
- // Build namespace list
- if (nsMap.size() > 0)
- {
- String attr;
- String namespaceList = "";
- Iterator iterator = nsMap.keySet().iterator();
- while (iterator.hasNext())
- {
- attr = (String) iterator.next();
- namespaceList += " " + attr + "=\"" + nsMap.get(attr) + "\"";
- }
-
- // Add namespace settings, since the DOM2Writer will miss any that are used as attribute values
- int index = schema.indexOf(">");
- if (index > 0)
- {
- String start = schema.substring(0, index);
- String end = schema.substring(index);
-
- schema = start + namespaceList + end;
- }
- }
-
- // Schema validate the XML schema document
- XMLUtils.parseXML(schema, TestUtils.getXMLSchemaLocation());
- }
-
- catch (WSIException we)
- {
- Throwable t = we.getTargetException();
- if (t != null)
- {
- returnList.add(t.getMessage());
- }
- }
- }
-
- private void addNamespaces(NamedNodeMap attrList, Map nsMap, Map elementMap)
- {
- Node attr;
- String nodeName;
-
- for (int i = 0; i < attrList.getLength(); i++)
- {
- attr = attrList.item(i);
-
- // Get the attribute node name
- nodeName = attr.getNodeName();
-
- // If it starts with xmlns:, then determine if it should be added to the list of namespaces
- if (nodeName.startsWith(XMLNS_PREFIX)
- && ((elementMap == null
- || (elementMap != null && elementMap.get(nodeName) == null))))
- {
- if (nsMap.get(nodeName) == null)
- nsMap.put(nodeName, attr.getNodeValue());
- }
- }
- }
-
-}

Back to the top