org.apache.xml.resolver
Class Resolver

java.lang.Object
  extended by org.apache.xml.resolver.Catalog
      extended by org.apache.xml.resolver.Resolver

public class Resolver
extends Catalog

An extension to OASIS Open Catalog files, this class supports suffix-based matching and an external RFC2483 resolver.

Version:
1.0
Author:
Norman Walsh Norman.Walsh@Sun.COM
See Also:
Catalog

Field Summary
static int RESOLVER
          The RESOLVER Catalog Entry type.
static int SYSTEMREVERSE
          The SYSTEMREVERSE Catalog Entry type.
static int SYSTEMSUFFIX
          The SYSTEMSUFFIX Catalog Entry type.
static int URISUFFIX
          The URISUFFIX Catalog Entry type.
 
Fields inherited from class org.apache.xml.resolver.Catalog
BASE, CATALOG, DELEGATE_PUBLIC, DELEGATE_SYSTEM, DELEGATE_URI, DOCTYPE, DOCUMENT, DTDDECL, ENTITY, LINKTYPE, NOTATION, OVERRIDE, PUBLIC, REWRITE_SYSTEM, REWRITE_URI, SGMLDECL, SYSTEM, SYSTEM_SUFFIX, URI, URI_SUFFIX
 
Constructor Summary
Resolver()
           
 
Method Summary
 void addEntry(CatalogEntry entry)
          Cleanup and process a Catalog entry.
 java.util.Vector resolveAllSystem(java.lang.String systemId)
          Return the applicable SYSTEM system identifiers.
 java.util.Vector resolveAllSystemReverse(java.lang.String systemId)
          Find the URNs for a given system identifier in all catalogs.
 java.lang.String resolvePublic(java.lang.String publicId, java.lang.String systemId)
          Return the applicable PUBLIC or SYSTEM identifier, resorting to external resolvers if necessary.
 java.lang.String resolveSystem(java.lang.String systemId)
          Return the applicable SYSTEM system identifier, resorting to external RESOLVERs if necessary.
 java.lang.String resolveSystemReverse(java.lang.String systemId)
          Find the URN for a given system identifier.
 java.lang.String resolveURI(java.lang.String uri)
          Return the applicable URI.
 void setupReaders()
          Setup readers.
 
Methods inherited from class org.apache.xml.resolver.Catalog
addReader, getCatalogManager, getCurrentBase, getDefaultOverride, loadSystemCatalogs, parseAllCatalogs, parseCatalog, parseCatalog, parseCatalog, resolveDoctype, resolveDocument, resolveEntity, resolveNotation, setCatalogManager, unknownEntry
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

URISUFFIX

public static final int URISUFFIX
The URISUFFIX Catalog Entry type.

URI suffix entries match URIs that end in a specified suffix.


SYSTEMSUFFIX

public static final int SYSTEMSUFFIX
The SYSTEMSUFFIX Catalog Entry type.

System suffix entries match system identifiers that end in a specified suffix.


RESOLVER

public static final int RESOLVER
The RESOLVER Catalog Entry type.

A hook for providing support for web-based backup resolvers.


SYSTEMREVERSE

public static final int SYSTEMREVERSE
The SYSTEMREVERSE Catalog Entry type.

This is a bit of a hack. There's no actual SYSTEMREVERSE entry, but this entry type is used to indicate that a reverse lookup is being performed. (This allows the Resolver to implement RFC2483 I2N and I2NS.)

Constructor Detail

Resolver

public Resolver()
Method Detail

setupReaders

public void setupReaders()
Setup readers.

Overrides:
setupReaders in class Catalog

addEntry

public void addEntry(CatalogEntry entry)
Cleanup and process a Catalog entry.

This method processes each Catalog entry, changing mapped relative system identifiers into absolute ones (based on the current base URI), and maintaining other information about the current catalog.

Overrides:
addEntry in class Catalog
Parameters:
entry - The CatalogEntry to process.

resolveURI

public java.lang.String resolveURI(java.lang.String uri)
                            throws java.net.MalformedURLException,
                                   java.io.IOException
Return the applicable URI.

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

In the Resolver (as opposed to the Catalog) class, if the URI isn't found by the usual algorithm, URISUFFIX entries are considered.

URI comparison is case sensitive.

Overrides:
resolveURI in class Catalog
Parameters:
uri - The URI to locate in the catalog.
Returns:
The resolved URI.
Throws:
java.net.MalformedURLException - The system identifier of a subordinate catalog cannot be turned into a valid URL.
java.io.IOException - Error reading subordinate catalog file.

resolveSystem

public java.lang.String resolveSystem(java.lang.String systemId)
                               throws java.net.MalformedURLException,
                                      java.io.IOException
Return the applicable SYSTEM system identifier, resorting to external RESOLVERs if necessary.

If a SYSTEM entry exists in the Catalog for the system ID specified, return the mapped value.

In the Resolver (as opposed to the Catalog) class, if the URI isn't found by the usual algorithm, SYSTEMSUFFIX entries are considered.

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

Overrides:
resolveSystem in class Catalog
Parameters:
systemId - The system ID to locate in the catalog.
Returns:
The system identifier to use for systemId.
Throws:
java.net.MalformedURLException - The formal system identifier of a subordinate catalog cannot be turned into a valid URL.
java.io.IOException - Error reading subordinate catalog file.

resolvePublic

public java.lang.String resolvePublic(java.lang.String publicId,
                                      java.lang.String systemId)
                               throws java.net.MalformedURLException,
                                      java.io.IOException
Return the applicable PUBLIC or SYSTEM identifier, resorting to external resolvers if necessary.

This method searches the Catalog and returns the system identifier specified for the given system or public identifiers. If no appropriate PUBLIC or SYSTEM entry is found in the Catalog, null is returned.

Note that a system or public identifier in the current catalog (or subordinate catalogs) will be used in preference to an external resolver. Further, if a systemId is present, the external resolver(s) will be queried for that before the publicId.

Overrides:
resolvePublic in class Catalog
Parameters:
publicId - The public identifier to locate in the catalog. Public identifiers are normalized before comparison.
systemId - The nominal system identifier for the entity in question (as provided in the source document).
Returns:
The system identifier to use. Note that the nominal system identifier is not returned if a match is not found in the catalog, instead null is returned to indicate that no match was found.
Throws:
java.net.MalformedURLException - The formal system identifier of a subordinate catalog cannot be turned into a valid URL.
java.io.IOException - Error reading subordinate catalog file.

resolveAllSystemReverse

public java.util.Vector resolveAllSystemReverse(java.lang.String systemId)
                                         throws java.net.MalformedURLException,
                                                java.io.IOException
Find the URNs for a given system identifier in all catalogs.

Parameters:
systemId - The system ID to locate.
Returns:
A vector of URNs that map to the systemId.
Throws:
java.net.MalformedURLException
java.io.IOException

resolveSystemReverse

public java.lang.String resolveSystemReverse(java.lang.String systemId)
                                      throws java.net.MalformedURLException,
                                             java.io.IOException
Find the URN for a given system identifier.

Parameters:
systemId - The system ID to locate.
Returns:
A (single) URN that maps to the systemId.
Throws:
java.net.MalformedURLException
java.io.IOException

resolveAllSystem

public java.util.Vector resolveAllSystem(java.lang.String systemId)
                                  throws java.net.MalformedURLException,
                                         java.io.IOException
Return the applicable SYSTEM system identifiers.

If one or more SYSTEM entries exists in the Catalog for the system ID specified, return the mapped values.

The caller is responsible for doing any necessary normalization of the system identifier before calling this method. For example, a relative system identifier in a document might be converted to an absolute system identifier before attempting to resolve it.

Note that this function will force all subordinate catalogs to be loaded.

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

Parameters:
systemId - The system ID to locate in the catalog.
Returns:
The system identifier to use for the notation.
Throws:
java.net.MalformedURLException - The formal system identifier of a subordinate catalog cannot be turned into a valid URL.
java.io.IOException - Error reading subordinate catalog file.