Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/xml/XMLCatalog.java')
-rw-r--r--bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/xml/XMLCatalog.java364
1 files changed, 0 insertions, 364 deletions
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/xml/XMLCatalog.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/xml/XMLCatalog.java
deleted file mode 100644
index 99c631375..000000000
--- a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/xml/XMLCatalog.java
+++ /dev/null
@@ -1,364 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2006 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 Corporation - initial API and implementation
- *******************************************************************************/
-
-
-package org.eclipse.wst.wsdl.validation.internal.xml;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.parsers.FactoryConfigurationError;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-
-import org.apache.xerces.jaxp.SAXParserFactoryImpl;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXNotRecognizedException;
-import org.xml.sax.SAXNotSupportedException;
-import org.xml.sax.helpers.DefaultHandler;
-
-/**
- * XMLCatalog This class can be used to register, obtain and delete an instance
- * of an XML catalog. Method definitions are provided for the catalog to set a
- * location in the catalog and resolve an entity from the catalog.
- */
-public class XMLCatalog implements IXMLCatalog
-{
- //private final static String _APACHE_FEATURE_CONTINUE_AFTER_FATAL_ERROR = "http://apache.org/xml/features/continue-after-fatal-error";
-
- private final static String _APACHE_FEATURE_NAMESPACE_PREFIXES = "http://xml.org/sax/features/namespace-prefixes";
-
- private final static String _APACHE_FEATURE_NAMESPACES = "http://xml.org/sax/features/namespaces";
-
- //private final static String _APACHE_FEATURE_VALIDATION = "http://xml.org/sax/features/validation";
-
- //private final static String _APACHE_FEATURE_VALIDATION_SCHEMA = "http://apache.org/xml/features/validation/schema";
-
- private final static String FILE_PROTOCOL = "file:///";
-
- private static IXMLCatalog instance = null;
-
- private static String extxmlcatalogclass = null;
-
- private static ClassLoader extclassLoader = null;
-
- private static IXMLCatalog extXMLCatalogInstance = null;
-
- private static List schemadirs = new ArrayList();
-
- private static List entities = new ArrayList();
-
- /**
- * A hashtable to hold the XML catalog entries.
- */
- protected Map catalog = new Hashtable();
-
- /**
- * Return an instance of the XML catalog. Assigns all registered schemas to
- * the XML catalog.
- *
- * @return The instance of the XML catalog.
- */
- public static IXMLCatalog getInstance()
- {
- if (instance == null)
- {
- instance = new XMLCatalog();
-
- // Add the registered entities to the catalog.
- Iterator entityIter = entities.iterator();
- while (entityIter.hasNext())
- {
- XMLCatalogEntityHolder entity = (XMLCatalogEntityHolder) entityIter.next();
- instance.addEntryToCatalog(entity.getPublicId(), entity.getSystemId());
- }
-
- // Add the schemas in the schema directories to the catalog.
- if (schemadirs.size() > 0)
- {
- SAXParser saxParser = null;
- try
- {
- SAXParserFactory parserfactory = new SAXParserFactoryImpl();
- parserfactory.setFeature(_APACHE_FEATURE_NAMESPACE_PREFIXES, true);
- parserfactory.setFeature(_APACHE_FEATURE_NAMESPACES, true);
- saxParser = parserfactory.newSAXParser();
- }
- catch (FactoryConfigurationError e)
- {
- }
- catch (SAXNotRecognizedException e)
- {
- }
- catch (ParserConfigurationException e)
- {
- }
- catch (SAXNotSupportedException e)
- {
- }
- catch (SAXException e)
- {
- }
- Iterator schemadirIter = schemadirs.iterator();
- SchemaNamespaceHandler handler = ((XMLCatalog) instance).new SchemaNamespaceHandler();
- while (schemadirIter.hasNext())
- {
- String schemadir = (String) schemadirIter.next();
- registerSchemasForDir(instance, schemadir, saxParser, handler);
- }
- }
- }
- return instance;
- }
-
- /**
- * Register the schemas in the given directory and all subdirectories with the
- * XML catalog.
- *
- * @param catalog
- * The catalog to register the schemas with.
- * @param schemadir
- * The schema directory to search for schema files.
- * @param parser
- * The SAXParser to use to parse the schemas for their
- * targetNamespace.
- * @param handler
- * The handler to use to get the targetNamespace.
- */
- private static void registerSchemasForDir(IXMLCatalog catalog, String schemadir, SAXParser parser,
- SchemaNamespaceHandler handler)
- {
- // Remove file: and file:/ from beginning of file location if they are present.
- if(schemadir.startsWith("file:"))
- {
- schemadir = schemadir.substring(5);
- }
- while(schemadir.startsWith("//"))
- {
- schemadir = schemadir.substring(1);
- }
-
- File dir = new File(schemadir);
- if (dir.isDirectory())
- {
- File[] files = dir.listFiles();
- int numfiles = files.length;
- for (int i = 0; i < numfiles; i++)
- {
- File tempfile = files[i];
- String tempfilepath = tempfile.getAbsolutePath();
- tempfilepath = tempfilepath.replace('\\','/');
- while(tempfilepath.startsWith("/"))
- {
- tempfilepath = tempfilepath.substring(1);
- }
- tempfilepath = FILE_PROTOCOL + tempfilepath;
- if (tempfile.isDirectory())
- {
- registerSchemasForDir(catalog, tempfilepath, parser, handler);
- } else
- {
- handler.reset();
- try
- {
- parser.parse(tempfilepath, handler);
- }
- catch (Exception e)
- {
- // TODO: log error.
- }
- String targetNamespace = handler.getTargetNamespace();
- if (targetNamespace != null)
- {
- catalog.addEntryToCatalog(targetNamespace, tempfilepath);
- }
- }
- }
- }
- }
-
- /**
- * Get the instance of the extension XML catalog. Returns the instance if one
- * is registered and can be created, null otherwise.
- *
- * @return The instance of the extension XML catalog if one is registered,
- * null otherwise.
- */
- public static IXMLCatalog getExtensionCatalogInstance()
- {
- if (extXMLCatalogInstance == null)
- {
- if (extxmlcatalogclass != null && extclassLoader != null)
- {
- try
- {
- Class catalogClass = extclassLoader != null ? extclassLoader.loadClass(extxmlcatalogclass) : Class
- .forName(extxmlcatalogclass);
- extXMLCatalogInstance = (IXMLCatalog) catalogClass.newInstance();
- }
- catch (Exception e)
- {
- //TODO: Log error
- }
- }
- }
- return extXMLCatalogInstance;
- }
-
- /**
- * Set the class of the XML catalog to be used.
- *
- * @param xmlcatalog
- * The class of the XML catalog to be used.
- * @param classloader
- * The classloader to use to load the catalog.
- */
- public static void setExtensionXMLCatalog(String xmlcatalog, ClassLoader classloader)
- {
- extxmlcatalogclass = xmlcatalog;
- extclassLoader = classloader;
- }
-
- /**
- * Resets the instance of the XML catalog to null. For deleting the catalog if
- * necessary.
- */
- public static void reset()
- {
- instance = null;
- extxmlcatalogclass = null;
- extclassLoader = null;
- extXMLCatalogInstance = null;
- entities = new ArrayList();
- schemadirs = new ArrayList();
- }
-
- /**
- * Add a schema directory to be checked for schemas to register in the
- * catalog.
- *
- * @param schemadir
- * The directory to check for schemas.
- */
- public static void addSchemaDir(String schemadir)
- {
- schemadirs.add(schemadir);
- }
-
- /**
- * Add an entity to the catalog.
- *
- * @param entity
- * The entity to add to the catalog.
- */
- public static void addEntity(XMLCatalogEntityHolder entity)
- {
- entities.add(entity);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.wsdl.validate.internal.xml.IXMLCatalog#addEntryToCatalog(java.lang.String,
- * java.lang.String)
- */
- public void addEntryToCatalog(String publicId, String systemId)
- {
- catalog.put(publicId, systemId);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.wsdl.validate.internal.xml.IXMLCatalog#resolveEntityLocation(java.lang.String,
- * java.lang.String)
- */
- public String resolveEntityLocation(String publicId, String systemId)
- {
- String resolvedlocation = null;
- // First try to resolve using the ext catalog.
- IXMLCatalog extcatalog = getExtensionCatalogInstance();
- if (extcatalog != null)
- {
- resolvedlocation = extcatalog.resolveEntityLocation(publicId, systemId);
- }
- if (resolvedlocation == null)
- {
- // if there's no system id use the public id
- if (systemId == null || systemId.equals(""))
- {
- systemId = publicId;
- }
- resolvedlocation = (String) catalog.get(systemId);
- }
- return resolvedlocation;
- }
-
- /**
- * A handler used in parsing to get the targetNamespace string of a schema.
- */
- protected class SchemaNamespaceHandler extends DefaultHandler
- {
- private final String TARGET_NAMESPACE = "targetNamespace";
-
- private final String SCHEMA = "schema";
-
- private String targetNamespace = null;
-
- /**
- * @see org.xml.sax.ContentHandler#startElement(java.lang.String,
- * java.lang.String, java.lang.String, org.xml.sax.Attributes)
- */
- public void startElement(String uri, String localname, String arg2, Attributes attributes) throws SAXException
- {
- if (localname.equals(SCHEMA))
- {
-
- int numAtts = attributes.getLength();
- for (int i = 0; i < numAtts; i++)
- {
-
- String attname = attributes.getQName(i);
- if (attname.equals(TARGET_NAMESPACE))
- {
- targetNamespace = attributes.getValue(i);
- }
- }
-
- }
- super.startElement(uri, localname, arg2, attributes);
- }
-
- /**
- * Return the targetNamespace found by parsing the file.
- *
- * @return The targetNamespace found by parsing the file.
- */
- public String getTargetNamespace()
- {
- return targetNamespace;
- }
-
- /**
- * Reset the state of the handler so it can be reused.
- */
- public void reset()
- {
- targetNamespace = null;
- }
- }
-}

Back to the top