ApacheCatalog (Apache Ant API)
Description: declaration: package: org.apache.tools.ant.types.resolver, class: ApacheCatalog

Package org.apache.tools.ant.types.resolver

# Class ApacheCatalog

java.lang.Object
org.apache.xml.resolver.Catalog
org.apache.tools.ant.types.resolver.ApacheCatalog

public class ApacheCatalog extends org.apache.xml.resolver.Catalog
This class extends the Catalog class provided by Norman Walsh's resolver library in xml-commons in order to add classpath entity and URI resolution. Since XMLCatalog already does classpath resolution, we simply add all CatalogEntry instances back to the controlling XMLCatalog instance. This is done via a callback mechanism. ApacheCatalog is only used for external catalog files. Inline entries (currently `<dtd>` and `<entity>`) are not added to ApacheCatalog. See XMLCatalog.java for the details of the entity and URI resolution algorithms.

Since:
  Ant 1.6
See Also:
  - `XMLCatalog`

- ## Field Summary

  ### Fields inherited from class org.apache.xml.resolver.Catalog

  `base, BASE, CATALOG, catalogCwd, catalogEntries, catalogFiles, catalogManager, catalogs, default_override, DELEGATE_PUBLIC, DELEGATE_SYSTEM, DELEGATE_URI, DOCTYPE, DOCUMENT, DTDDECL, ENTITY, LINKTYPE, localCatalogFiles, localDelegate, NOTATION, OVERRIDE, PUBLIC, readerArr, readerMap, REWRITE_SYSTEM, REWRITE_URI, SGMLDECL, SYSTEM, SYSTEM_SUFFIX, URI, URI_SUFFIX`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ApacheCatalog()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addEntry(org.apache.xml.resolver.CatalogEntry entry)`
  This method overrides the superclass method of the same name in order to add catalog entries back to the controlling XMLCatalog instance.
  `protected org.apache.xml.resolver.Catalog`
  `newCatalog()`
  Create a new ApacheCatalog instance.
  `void`
  `setResolver(ApacheCatalogResolver resolver)`
  Set the resolver object to callback.

  ### Methods inherited from class org.apache.xml.resolver.Catalog

  `addDelegate, addReader, copyReaders, encodedByte, fixSlashes, getCatalogManager, getCurrentBase, getDefaultOverride, loadSystemCatalogs, makeAbsolute, normalizeURI, parseAllCatalogs, parseCatalog, parseCatalog, parseCatalog, parseCatalogFile, parsePendingCatalogs, resolveDoctype, resolveDocument, resolveEntity, resolveLocalPublic, resolveLocalSystem, resolveLocalURI, resolveNotation, resolvePublic, resolveSubordinateCatalogs, resolveSystem, resolveURI, setCatalogManager, setupReaders, unknownEntry`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### ApacheCatalog

    public ApacheCatalog()

- ## Method Details

  - ### newCatalog

    protected org.apache.xml.resolver.Catalog newCatalog()

    Create a new ApacheCatalog instance.

    This method overrides the superclass method of the same name in order to set the resolver object for callbacks. The reason we have to do this is that internally Catalog creates a new instance of itself for each external catalog file processed. That is, if two external catalog files are processed, there will be a total of two ApacheCatalog instances, and so on.

    Overrides:
      `newCatalog` in class `org.apache.xml.resolver.Catalog`
    Returns:
      the catalog.

  - ### setResolver

    public void setResolver(ApacheCatalogResolver resolver)
    Set the resolver object to callback.
    Parameters:
      `resolver` - the apache catalog resolver.

  - ### addEntry

    public void addEntry(org.apache.xml.resolver.CatalogEntry entry)

    This method overrides the superclass method of the same name in order to add catalog entries back to the controlling XMLCatalog instance. In this way, we can add classpath lookup for these entries.

    When we add an external catalog file, the entries inside it get parsed by this method. Therefore, we override it to add each of them back to the controlling XMLCatalog instance. This is done by performing a callback to the ApacheCatalogResolver, which in turn calls the XMLCatalog.

    XMLCatalog currently only understands `PUBLIC` and `URI` entry types, so we ignore the other types.

    Overrides:
      `addEntry` in class `org.apache.xml.resolver.Catalog`
    Parameters:
      `entry` - The CatalogEntry to process.