Class CatalogManager

  • All Implemented Interfaces:
    XMLCatalogResolver
    Direct Known Subclasses:
    ResourceCache

    public class CatalogManager
    extends java.lang.Object
    implements XMLCatalogResolver
    The CatalogManager manages a list of OASIS XML Catalogs and performs lookup operations on those catalogs.

    The manager's job is to implement the semantics of XML Catalogs.

    This class loads OASIS XML Catalog files and provides methods for searching the catalog. All of the XML Catalog entry types defined in §6 (catalog, group, public, system, rewriteSystem, systemSuffix, delegatePublic, delegateSystem, uri, rewriteURI, uriSuffix, delegateURI, and nextCatalog) are supported. In addition, the following TR9401 Catalog entry types from §D are supported: doctype, document, entity, and notation. (The other types do not apply to XML.)

    For each of the query methods, the manager either returns the mapping indicated by the catalog, or null to indicate that no match was found.

    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.util.List<java.net.URI> catalogs()  
      CatalogLoader getCatalogLoader()
      Get the catalog loader.
      ResolverConfiguration getResolverConfiguration()
      Get the resolver configuration.
      org.xmlresolver.catalog.entry.EntryCatalog loadCatalog​(java.net.URI catalog)
      Load the specified catalog.
      org.xmlresolver.catalog.entry.EntryCatalog loadCatalog​(java.net.URI catalog, org.xml.sax.InputSource source)
      Load the specified catalog from a given input source.
      org.xmlresolver.catalog.entry.EntryCatalog loadCatalog​(java.net.URI catalog, org.xmlresolver.utils.SaxProducer producer)
      Load the specified catalog by sending events to the ContentHandler.
      java.net.URI lookupDoctype​(java.lang.String entityName, java.lang.String systemId, java.lang.String publicId)
      Lookup the specified document type in the catalog.
      java.net.URI lookupDocument()
      Lookup the default document in the catalog.
      java.net.URI lookupEntity​(java.lang.String entityName, java.lang.String systemId, java.lang.String publicId)
      Lookup the specified entity in the catalog.
      java.net.URI lookupNamespaceURI​(java.lang.String uri, java.lang.String nature, java.lang.String purpose)
      Lookup the specified namespace URI in the catalog.
      java.net.URI lookupNotation​(java.lang.String notationName, java.lang.String systemId, java.lang.String publicId)
      Lookup the specified notation in the catalog.
      java.net.URI lookupPublic​(java.lang.String systemId, java.lang.String publicId)
      Lookup the specified system and public identifiers in the catalog.
      java.net.URI lookupSystem​(java.lang.String systemId)
      Lookup the specified system identifier in the catalog.
      java.net.URI lookupURI​(java.lang.String uri)
      Lookup the specified URI in the catalog.
      java.lang.String normalizedForComparison​(java.lang.String uri)  
      void setCatalogLoader​(CatalogLoader loader)
      Set the catalog loader.
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • getResolverConfiguration

        public ResolverConfiguration getResolverConfiguration()
        Get the resolver configuration.
        Returns:
        the resolver configuration
      • getCatalogLoader

        public CatalogLoader getCatalogLoader()
        Get the catalog loader.

        This method returns the catalog loader that will be used by this manager if it attempts to load a catalog.

        Returns:
        the catalog loader.
      • setCatalogLoader

        public void setCatalogLoader​(CatalogLoader loader)
        Set the catalog loader.

        This method sets the catalog loader that will be used by this manager if it attempts to load a catalog.

        Parameters:
        loader - the catalog loader.
      • catalogs

        public java.util.List<java.net.URI> catalogs()
      • loadCatalog

        public org.xmlresolver.catalog.entry.EntryCatalog loadCatalog​(java.net.URI catalog)
        Load the specified catalog.

        The manager maintains a set of the catalogs that it has loaded. If an attempt is made to load a catalog twice, the previously loaded catalog is returned.

        Parameters:
        catalog - The catalog URI.
        Returns:
        The parsed catalog.
      • loadCatalog

        public org.xmlresolver.catalog.entry.EntryCatalog loadCatalog​(java.net.URI catalog,
                                                                      org.xml.sax.InputSource source)
        Load the specified catalog from a given input source.

        This method exists so that a catalog can be loaded even if it doesn't have a URI that can be dereferenced. It must still have a URI.

        The manager maintains a set of the catalogs that it has loaded. If an attempt is made to load a catalog twice, the previously loaded catalog is returned.

        Parameters:
        catalog - The catalog URI.
        source - The input source.
        Returns:
        The parsed catalog.
      • loadCatalog

        public org.xmlresolver.catalog.entry.EntryCatalog loadCatalog​(java.net.URI catalog,
                                                                      org.xmlresolver.utils.SaxProducer producer)
        Load the specified catalog by sending events to the ContentHandler.

        This method exists so that a catalog can be loaded even if it doesn't have a URI that can be dereferenced. It must still have a URI.

        The manager maintains a set of the catalogs that it has loaded. If an attempt is made to load a catalog twice, the previously loaded catalog is returned.

        Parameters:
        catalog - The catalog URI.
        producer - The producer that delivers events to the ContentHandler.
        Returns:
        The parsed catalog.
      • lookupURI

        public java.net.URI lookupURI​(java.lang.String uri)
        Lookup the specified URI in the catalog.

        If a URI entry exists in the catalog for the URI specified, return the mapped value.

        Specified by:
        lookupURI in interface XMLCatalogResolver
        Parameters:
        uri - The URI to locate in the catalog.
        Returns:
        The mapped value, or null if no matching entry is found.
      • lookupNamespaceURI

        public java.net.URI lookupNamespaceURI​(java.lang.String uri,
                                               java.lang.String nature,
                                               java.lang.String purpose)
        Lookup the specified namespace URI in the catalog.

        If a URI entry exists in the catalog for the URI specified, and with the specified nature and purpose, return the mapped value.

        Parameters:
        uri - The URI to locate in the catalog.
        nature - The RDDL nature of the requested resource
        purpose - The RDDL purpose of the requested resource
        Returns:
        The mapped value, or null if no matching entry is found.
      • lookupPublic

        public java.net.URI lookupPublic​(java.lang.String systemId,
                                         java.lang.String publicId)
        Lookup the specified system and public identifiers in the catalog.

        If a SYSTEM or PUBLIC entry exists in the catalog for the system and public identifiers specified, return the mapped value.

        On Windows and MacOS operating systems, the comparison between the system identifier provided and the SYSTEM entries in the Catalog is case-insensitive.

        Specified by:
        lookupPublic in interface XMLCatalogResolver
        Parameters:
        systemId - The nominal system identifier for the entity in question (as provided in the source document).
        publicId - The public identifier to locate in the catalog. Public identifiers are normalized before comparison.
        Returns:
        The mapped value, or null if no matching entry is found.
      • lookupSystem

        public java.net.URI lookupSystem​(java.lang.String systemId)
        Lookup the specified system identifier in the catalog.

        If a SYSTEM entry exists in the catalog for the system identifier specified, return the mapped value.

        On Windows-based operating systems, the comparison between the system identifier provided and the SYSTEM entries in the Catalog is case-insensitive.

        Specified by:
        lookupSystem in interface XMLCatalogResolver
        Parameters:
        systemId - The system identifier to locate in the catalog.
        Returns:
        The mapped value, or null if no matching entry is found.
      • lookupDoctype

        public java.net.URI lookupDoctype​(java.lang.String entityName,
                                          java.lang.String systemId,
                                          java.lang.String publicId)
        Lookup the specified document type in the catalog.

        If a DOCTYPE entry exists in the catalog for the specified arguments, return the mapped value.

        Specified by:
        lookupDoctype in interface XMLCatalogResolver
        Parameters:
        entityName - The name of the entity (element) for which a doctype is required.
        publicId - The nominal public identifier for the doctype (as provided in the source document).
        systemId - The nominal system identifier for the doctype (as provided in the source document).
        Returns:
        The mapped value, or null if no matching entry is found.
      • lookupDocument

        public java.net.URI lookupDocument()
        Lookup the default document in the catalog.

        If a DOCUMENT entry exists in the catalog, return the mapped value.

        Specified by:
        lookupDocument in interface XMLCatalogResolver
        Returns:
        The mapped value, or null if no matching entry is found.
      • lookupEntity

        public java.net.URI lookupEntity​(java.lang.String entityName,
                                         java.lang.String systemId,
                                         java.lang.String publicId)
        Lookup the specified entity in the catalog.

        If an ENTITY entry exists in the catalog for the specified arguments, return the mapped value.

        Specified by:
        lookupEntity in interface XMLCatalogResolver
        Parameters:
        entityName - The name of the entity
        systemId - The nominal system identifier for the entity
        publicId - The nominal public identifier for the entity
        Returns:
        The mapped value, or null if no matching entry is found.
      • lookupNotation

        public java.net.URI lookupNotation​(java.lang.String notationName,
                                           java.lang.String systemId,
                                           java.lang.String publicId)
        Lookup the specified notation in the catalog.

        If a NOTATION entry exists in the catalog for the specified arguments, return the mapped value.

        Specified by:
        lookupNotation in interface XMLCatalogResolver
        Parameters:
        notationName - The name of the notation
        systemId - The nominal system identifier for the entity
        publicId - The nominal public identifier for the entity
        Returns:
        The mapped value, or null if no matching entry is found.
      • normalizedForComparison

        public java.lang.String normalizedForComparison​(java.lang.String uri)