diff options
Diffstat (limited to 'bundles/org.eclipse.wst.xml.core/src-catalog/org/eclipse/wst/xml/core/internal/catalog/CatalogReader.java')
-rw-r--r-- | bundles/org.eclipse.wst.xml.core/src-catalog/org/eclipse/wst/xml/core/internal/catalog/CatalogReader.java | 321 |
1 files changed, 0 insertions, 321 deletions
diff --git a/bundles/org.eclipse.wst.xml.core/src-catalog/org/eclipse/wst/xml/core/internal/catalog/CatalogReader.java b/bundles/org.eclipse.wst.xml.core/src-catalog/org/eclipse/wst/xml/core/internal/catalog/CatalogReader.java deleted file mode 100644 index d53a15b02c..0000000000 --- a/bundles/org.eclipse.wst.xml.core/src-catalog/org/eclipse/wst/xml/core/internal/catalog/CatalogReader.java +++ /dev/null @@ -1,321 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2002, 2010 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 - * Jens Lukowski/Innoopract - initial renaming/restructuring - * Jesper Steen Moeller - Added XML Catalogs 1.1 support - * - *******************************************************************************/ -package org.eclipse.wst.xml.core.internal.catalog; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Stack; - -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.parsers.SAXParser; -import javax.xml.parsers.SAXParserFactory; - -import org.eclipse.wst.common.uriresolver.internal.URI; -import org.eclipse.wst.common.uriresolver.internal.util.URIHelper; -import org.eclipse.wst.xml.core.internal.Logger; -import org.eclipse.wst.xml.core.internal.XMLCoreMessages; -import org.eclipse.wst.xml.core.internal.catalog.provisional.ICatalogElement; -import org.eclipse.wst.xml.core.internal.catalog.provisional.ICatalogEntry; -import org.eclipse.wst.xml.core.internal.catalog.provisional.IDelegateCatalog; -import org.eclipse.wst.xml.core.internal.catalog.provisional.IRewriteEntry; -import org.eclipse.wst.xml.core.internal.catalog.provisional.ISuffixEntry; -import org.xml.sax.Attributes; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; -import org.xml.sax.helpers.DefaultHandler; - -/** - * - * - */ -public final class CatalogReader -{ - public static void read(Catalog xmlCatalog, InputStream input) throws IOException - { - try - { - SAXParserFactory factory = SAXParserFactory.newInstance(); - factory.setNamespaceAware(true); - factory.setValidating(false); - factory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);//$NON-NLS-1$ - SAXParser parser = factory.newSAXParser(); - parser.parse(new InputSource(input), new CatalogContentHandler(xmlCatalog)); - } - catch (ParserConfigurationException e) - { - Logger.logException(e); - } - catch (SAXException e) - { - Logger.logException(e); - } - } - protected static class CatalogContentHandler extends DefaultHandler - { - protected Catalog catalog; - protected Stack baseURIStack = new Stack(); - - public CatalogContentHandler(Catalog xmlCatalog) - { - this.catalog = xmlCatalog; - String base = xmlCatalog.getBase(); - if(base == null || base == "") { //$NON-NLS-1$ - base = xmlCatalog.getLocation(); - } - baseURIStack.push(base); - } - - public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException - { - // set base attribute xml:base - String base = attributes.getValue(OASISCatalogConstants.ATTR_BASE); //$NON-NLS-1$ - if (base != null && !base.equals("")) //$NON-NLS-1$ - { - // since the xml:base attribute can be relative to the enclosing element's effective base, we're maintaining a - // stack of absolute URIs - if (URI.createURI(base).isRelative()) - { - base = URI.resolveRelativeURI(base, baseURIStack.peek().toString()); - } - - baseURIStack.push(URIHelper.ensureURIProtocolFormat(base)); - } else { - baseURIStack.push(baseURIStack.peek()); - } - - // processing for backward compatibility start - if (localName.equals(CompatabilityConstants.TAG_USER_ENTRY)) - { - String typeName = attributes.getValue("", CompatabilityConstants.ATT_TYPE); //$NON-NLS-1$ - boolean isSystem = false; - if (typeName != null) - { - isSystem = (typeName.compareToIgnoreCase("SYSTEM") == 0); //$NON-NLS-1$ - } - ICatalogEntry catalogEntry = new CatalogEntry(isSystem ? ICatalogEntry.ENTRY_TYPE_SYSTEM : ICatalogEntry.ENTRY_TYPE_PUBLIC); - catalogEntry.setKey(attributes.getValue("", CompatabilityConstants.ATT_ID)); //$NON-NLS-1$ - String entryUri = attributes.getValue("", CompatabilityConstants.ATT_URI); //$NON-NLS-1$ - - // For relative URIs, try to resolve them using the corresponding base URI. - catalogEntry.setURI(resolveRelative(entryUri)); - - String webURL = attributes.getValue("", CompatabilityConstants.ATT_WEB_URL); //$NON-NLS-1$ - if (webURL != null) - { - catalogEntry.setAttributeValue( - ICatalogEntry.ATTR_WEB_URL, webURL); - } - catalog.addCatalogElement(catalogEntry); - return; - } - // processing for backward compatibility end - ICatalogElement catalogElement = null; - - if (OASISCatalogConstants.TAG_PUBLIC.equals(localName)) - { - // 6.5.3. The public Entry - catalogElement = createEntry(attributes, ICatalogEntry.ENTRY_TYPE_PUBLIC, OASISCatalogConstants.ATTR_PUBLIC_ID); - } - else if (OASISCatalogConstants.TAG_SYSTEM.equals(localName)) - { - // 6.5.4. The system Element - catalogElement = createEntry(attributes, ICatalogEntry.ENTRY_TYPE_SYSTEM, OASISCatalogConstants.ATTR_SYSTEM_ID); - } - else if (OASISCatalogConstants.TAG_URI.equals(localName)) - { - // 6.5.9. The uri Element - catalogElement = createEntry(attributes, ICatalogEntry.ENTRY_TYPE_URI, OASISCatalogConstants.ATTR_NAME); - } - else if (OASISCatalogConstants.TAG_REWRITE_SYSTEM.equals(localName)) - { - // 6.5.5. The rewriteSystem Element - catalogElement = createRewrite(attributes, IRewriteEntry.REWRITE_TYPE_SYSTEM, OASISCatalogConstants.ATTR_SYSTEM_ID_START_STRING); - } - else if (OASISCatalogConstants.TAG_REWRITE_URI.equals(localName)) - { - // 6.5.9. The uri Element - catalogElement = createRewrite(attributes, IRewriteEntry.REWRITE_TYPE_URI, OASISCatalogConstants.ATTR_URI_START_STRING); - } - else if (OASISCatalogConstants.TAG_DELEGATE_PUBLIC.equals(localName)) - { - // 6.5.7. The delegatePublic Element - catalogElement = createDelegate(attributes, IDelegateCatalog.DELEGATE_TYPE_PUBLIC, OASISCatalogConstants.ATTR_PUBLIC_ID_START_STRING); - } - else if (OASISCatalogConstants.TAG_DELEGATE_SYSTEM.equals(localName)) - { - // 6.5.8. The delegateSystem Element - catalogElement = createDelegate(attributes, IDelegateCatalog.DELEGATE_TYPE_SYSTEM, OASISCatalogConstants.ATTR_SYSTEM_ID_START_STRING); - } - else if (OASISCatalogConstants.TAG_DELEGATE_URI.equals(localName)) - { - // 6.5.12. The delegateURI Element - catalogElement = createDelegate(attributes, IDelegateCatalog.DELEGATE_TYPE_URI, OASISCatalogConstants.ATTR_URI_START_STRING); - } - else if (OASISCatalogConstants.TAG_SYSTEM_SUFFIX.equals(localName)) - { - // 6.5.6. The systemSuffix Element - catalogElement = createSuffix(attributes, ISuffixEntry.SUFFIX_TYPE_SYSTEM, OASISCatalogConstants.ATTR_SYSTEM_ID_SUFFFIX); - } - else if (OASISCatalogConstants.TAG_URI_SUFFIX.equals(localName)) - { - // 6.5.11. The uriSuffix Element - catalogElement = createSuffix(attributes, ISuffixEntry.SUFFIX_TYPE_URI, OASISCatalogConstants.ATTR_URI_SUFFIX); - } - else if (OASISCatalogConstants.TAG_NEXT_CATALOG.equals(localName)) - { - catalogElement = createNextCatalog(attributes); - } - - if (catalogElement == null) - { - // do not set the extra information - return; - } - - String attrId = attributes.getValue("", OASISCatalogConstants.ATTR_ID);//$NON-NLS-1$ - if (attrId != null && ! "".equals(attrId)) catalogElement.setId(attrId);//$NON-NLS-1$ - // process any other attributes - for (int j = 0; j < attributes.getLength(); j++) - { - String attrName = attributes.getLocalName(j); - if (!attrName.equals(OASISCatalogConstants.ATTR_URI) && !attrName.equals(OASISCatalogConstants.ATTR_NAME) && !attrName.equals(OASISCatalogConstants.ATTR_PUBLIC_ID) - && !attrName.equals(OASISCatalogConstants.ATTR_SYSTEM_ID) && !attrName.equals(OASISCatalogConstants.ATTR_CATALOG) && !attrName.equals(OASISCatalogConstants.ATTR_ID) - && !attrName.equals(OASISCatalogConstants.ATTR_BASE)) - { - String attrValue = attributes.getValue(attrName); - if (attrValue != null && !attrValue.equals("")) //$NON-NLS-1$ - { - catalogElement.setAttributeValue(attrName, attrValue); - } - } - } - catalog.addCatalogElement(catalogElement); - - } - - private ICatalogElement createNextCatalog(Attributes attributes) { - String location = attributes.getValue("", OASISCatalogConstants.ATTR_CATALOG); //$NON-NLS-1$ - NextCatalog delegate = new NextCatalog(); - delegate.setBase((String)baseURIStack.peek()); - delegate.setCatalogLocation(location); - return delegate; - } - - private ICatalogEntry createEntry(Attributes attributes, int entryType, String keyAttributeName) { - String key = attributes.getValue("", keyAttributeName); //$NON-NLS-1$ - if (key == null || key.equals("")) //$NON-NLS-1$ - { - Logger.log(Logger.ERROR, XMLCoreMessages.Catalog_entry_key_not_set); - return null; - } - String entryURI = attributes.getValue("", OASISCatalogConstants.ATTR_URI); //$NON-NLS-1$ - if (entryURI == null || entryURI.equals("")) //$NON-NLS-1$ - { - Logger.log(Logger.ERROR, XMLCoreMessages.Catalog_entry_uri_not_set); - return null; - } - CatalogEntry entry = new CatalogEntry(entryType); - entry.setKey(key); - entry.setURI(resolveRelative(entryURI)); - return entry; - } - - private IRewriteEntry createRewrite(Attributes attributes, int entryType, String prefixStringName) { - String startString = attributes.getValue("", prefixStringName); //$NON-NLS-1$ - if (startString == null || startString.equals("")) //$NON-NLS-1$ - { - Logger.log(Logger.ERROR, XMLCoreMessages.Catalog_rewrite_startString_not_set); - return null; - } - String prefix = attributes.getValue("", OASISCatalogConstants.ATTR_REWRITE_PREFIX); //$NON-NLS-1$ - if (prefix == null || prefix.equals("")) //$NON-NLS-1$ - { - Logger.log(Logger.ERROR, XMLCoreMessages.Catalog_rewrite_prefix_not_set); - return null; - } - RewriteEntry entry = new RewriteEntry(entryType); - entry.setStartString(startString); - entry.setRewritePrefix(resolveRelative(prefix)); - return entry; - } - - private IDelegateCatalog createDelegate(Attributes attributes, int entryType, String startStringAttrName) { - String startString = attributes.getValue("", startStringAttrName); //$NON-NLS-1$ - if (startString == null || startString.equals("")) //$NON-NLS-1$ - { - Logger.log(Logger.ERROR, XMLCoreMessages.Catalog_delegate_prefix_not_set); - return null; - } - String catalogUri = attributes.getValue("", OASISCatalogConstants.ATTR_CATALOG); //$NON-NLS-1$ - if (catalogUri == null || catalogUri.equals("")) //$NON-NLS-1$ - { - Logger.log(Logger.ERROR, XMLCoreMessages.Catalog_delegate_prefix_not_set); - return null; - } - DelegateCatalog entry = new DelegateCatalog(entryType); - entry.setStartString(startString); - entry.setCatalogLocation(catalogUri); - return entry; - } - - private ISuffixEntry createSuffix(Attributes attributes, int entryType, String suffixAttrName) { - String suffix = attributes.getValue("", suffixAttrName); //$NON-NLS-1$ - if (suffix == null || suffix.equals("")) //$NON-NLS-1$ - { - Logger.log(Logger.ERROR, XMLCoreMessages.Catalog_suffix_string_not_set); - return null; - } - String uri = attributes.getValue("", OASISCatalogConstants.ATTR_URI); //$NON-NLS-1$ - if (uri == null || uri.equals("")) //$NON-NLS-1$ - { - Logger.log(Logger.ERROR, XMLCoreMessages.Catalog_suffix_uri_not_set); - return null; - } - SuffixEntry entry = new SuffixEntry(entryType); - entry.setSuffix(suffix); - entry.setURI(resolveRelative(uri)); - return entry; - } - - private String resolveRelative(String entryURI) - { - if(URI.createURI(entryURI).isRelative()) - { - entryURI = URI.resolveRelativeURI(entryURI, baseURIStack.peek().toString()); - } - return URIHelper.ensureURIProtocolFormat(entryURI); - } - - public void endElement(String uri, String localName, String qName) throws SAXException - { - if (baseURIStack.size() > 0) - { - baseURIStack.pop(); - } - } - - } - - // for backward compatability - interface CompatabilityConstants{ - - public static final String TAG_ID_XML_CATALOG_SETTINGS = "XMLCatalogSettings"; //$NON-NLS-1$ - public static final String TAG_ID_USER_ENTRIES = "UserEntries"; //$NON-NLS-1$ - public static final String TAG_USER_ENTRY = "UserEntry"; //$NON-NLS-1$ - public static final String ATT_TYPE = "TYPE"; //$NON-NLS-1$ - public static final String ATT_ID = "ID"; //$NON-NLS-1$ - public static final String ATT_URI = "URI"; //$NON-NLS-1$ - public static final String ATT_WEB_URL = "WEB_URL"; //$NON-NLS-1$ - } -} |