Top Description Inners Fields Constructors Methods
javax.xml.catalog

pack-priv final Class CatalogResolverImpl

extends Object
implements CatalogResolver
Class Inheritance
All Implemented Interfaces
javax.xml.catalog.CatalogResolver, org.w3c.dom.ls.LSResourceResolver, javax.xml.transform.URIResolver, javax.xml.stream.XMLResolver, org.xml.sax.EntityResolver
Imports
com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl, java.io.IOException, .InputStream, .Reader, .StringReader, java.net.URL, javax.xml.parsers.ParserConfigurationException, .SAXParserFactory, javax.xml.transform.Source, javax.xml.transform.sax.SAXSource, org.w3c.dom.ls.LSInput, org.xml.sax.InputSource, .SAXException, .XMLReader

Implements CatalogResolver.

This class implements a SAX EntityResolver, StAX XMLResolver, Schema Validation LSResourceResolver and Transform URIResolver.

Since
9

Nested and Inner Type Summary

Modifier and TypeClass and Description
pack-priv class

Field Summary

Modifier and TypeField and Description
pack-priv Catalog
pack-priv CatalogResolverImpl
pack-priv CatalogResolver.NotFoundAction

Constructor Summary

AccessConstructor and Description
public
CatalogResolverImpl(Catalog
A Catalog.
catalog
)

Construct an instance of the CatalogResolver from a Catalog.

public
CatalogResolverImpl(Catalog
a Catalog object
catalog
,
CatalogResolver.NotFoundAction
the action type
action
)

Construct an instance of the CatalogResolver from a Catalog and the action type.

Method Summary

Modifier and TypeMethod and Description
public Source
resolve(String
the href attribute that specifies the URI of a style sheet, which may be relative or absolute
href
,
String
The base URI against which the href attribute will be made absolute if the absolute URI is required
base
)

Implements javax.xml.catalog.CatalogResolver.resolve.

Implements URIResolver.

public InputSource
resolveEntity(String
the public identifier of the external entity being referenced, or null if none was supplied
publicId
,
String
the system identifier of the external entity being referenced. A system identifier is required on all external entities. XML requires a system identifier on all external entities, so this value is always specified.
systemId
)

Implements javax.xml.catalog.CatalogResolver.resolveEntity.

Implements org.xml.sax.EntityResolver.

public InputStream
resolveEntity(String
the public identifier of the external entity being referenced, or null if none was supplied
publicId
,
String
the system identifier of the external entity being referenced. A system identifier is required on all external entities. XML requires a system identifier on all external entities, so this value is always specified.
systemId
,
String
the absolute base URI, not used by the CatalogResolver
baseUri
,
String
the namespace of the entity to resolve, not used by the CatalogResolver.
namespace
)

Implements javax.xml.catalog.CatalogResolver.resolveEntity.

Implements javax.xml.stream.XMLResolver.

public LSInput
resolveResource(String
the type of the resource being resolved, not used by the CatalogResolver
type
,
String
the namespace of the resource being resolved, not used by the CatalogResolver
namespaceURI
,
String
the public identifier of the external entity being referenced, or null if no public identifier was supplied or if the resource is not an entity.
publicId
,
String
the system identifier, a URI reference of the external resource being referenced
systemId
,
String
the absolute base URI, not used by the CatalogResolver
baseURI
)

Implements javax.xml.catalog.CatalogResolver.resolveResource.

Implements org.w3c.dom.ls.LSResourceResolver.

private void
setEntityResolver(SAXSource source)

Establish an entityResolver for newly resolved URIs.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

catalogback to summary
pack-priv Catalog catalog
entityResolverback to summary
pack-priv CatalogResolverImpl entityResolver
resolveTypeback to summary
pack-priv CatalogResolver.NotFoundAction resolveType

Constructor Detail

CatalogResolverImplback to summary
public CatalogResolverImpl(Catalog catalog)

Construct an instance of the CatalogResolver from a Catalog.

Parameters
catalog:Catalog

A Catalog.

CatalogResolverImplback to summary
public CatalogResolverImpl(Catalog catalog, CatalogResolver.NotFoundAction action)

Construct an instance of the CatalogResolver from a Catalog and the action type.

Parameters
catalog:Catalog

a Catalog object

action:CatalogResolver.NotFoundAction

the action type

Method Detail

resolveback to summary
public Source resolve(String href, String base)

Implements javax.xml.catalog.CatalogResolver.resolve.

Doc from javax.xml.catalog.CatalogResolver.resolve.

Implements URIResolver. The method searches through the catalog entries in the main and alternative catalogs to attempt to find a match with the specified href attribute. The href attribute will be used literally, with no attempt to be made absolute to the base.

If the value is a URN, the href attribute is recognized as a publicId, and used to search public entries. If the value is a URI, it is taken as a systemId, and used to search both system and uri entries.

Parameters
href:String

the href attribute that specifies the URI of a style sheet, which may be relative or absolute

base:String

The base URI against which the href attribute will be made absolute if the absolute URI is required

Returns:Source

a javax.xml.transform.Source object if a mapping is found. If no mapping is found, returns an empty javax.xml.transform.Source object if the javax.xml.catalog.resolve property is set to ignore; returns a javax.xml.transform.Source object with the original URI (href, or href resolved with base if base is not null) if the javax.xml.catalog.resolve property is set to continue.

Annotations
@Override
resolveEntityback to summary
public InputSource resolveEntity(String publicId, String systemId)

Implements javax.xml.catalog.CatalogResolver.resolveEntity.

Doc from javax.xml.catalog.CatalogResolver.resolveEntity.

Implements org.xml.sax.EntityResolver. The method searches through the catalog entries in the main and alternative catalogs to attempt to find a match with the specified publicId or systemId.

Parameters
publicId:String

the public identifier of the external entity being referenced, or null if none was supplied

systemId:String

the system identifier of the external entity being referenced. A system identifier is required on all external entities. XML requires a system identifier on all external entities, so this value is always specified.

Returns:InputSource

a org.xml.sax.InputSource object if a mapping is found. If no mapping is found, returns a org.xml.sax.InputSource object containing an empty java.io.Reader if the javax.xml.catalog.resolve property is set to ignore; returns null if the javax.xml.catalog.resolve property is set to continue.

Annotations
@Override
resolveEntityback to summary
public InputStream resolveEntity(String publicId, String systemId, String baseUri, String namespace)

Implements javax.xml.catalog.CatalogResolver.resolveEntity.

Doc from javax.xml.catalog.CatalogResolver.resolveEntity.

Implements javax.xml.stream.XMLResolver. For the purpose of resolving publicId and systemId, this method is equivalent to resolveEntity(java.lang.String, java.lang.String).

The systemId will be used literally, with no attempt to be made absolute to the baseUri. The baseUri and namespace are not used in the search for a match in a catalog. However, a relative systemId in an xml source may have been made absolute by the parser with the baseURI, thus making it unable to find a system entry. In such a case, a systemSuffix entry is recommended over a system entry.

Parameters
publicId:String

the public identifier of the external entity being referenced, or null if none was supplied

systemId:String

the system identifier of the external entity being referenced. A system identifier is required on all external entities. XML requires a system identifier on all external entities, so this value is always specified.

baseUri:String

the absolute base URI, not used by the CatalogResolver

namespace:String

the namespace of the entity to resolve, not used by the CatalogResolver.

Returns:InputStream

an java.io.InputStream object if a mapping is found; null if no mapping is found and the javax.xml.catalog.resolve property is set to continue or ignore. Note that for XMLResolver, it is not possible to ignore a reference, ignore is therefore treated the same as continue.

Annotations
@Override
resolveResourceback to summary
public LSInput resolveResource(String type, String namespaceURI, String publicId, String systemId, String baseURI)

Implements javax.xml.catalog.CatalogResolver.resolveResource.

Doc from javax.xml.catalog.CatalogResolver.resolveResource.

Implements org.w3c.dom.ls.LSResourceResolver. For the purpose of resolving publicId and systemId, this method is equivalent to resolveEntity(java.lang.String, java.lang.String).

The systemId will be used literally, with no attempt to be made absolute to the baseUri. The baseUri, namespaceUri and type are not used in the search for a match in a catalog. However, a relative systemId in a source may have been made absolute by the parser with the baseURI, thus making it unable to find a system entry. In such a case, a systemSuffix entry is recommended over a system entry.

Parameters
type:String

the type of the resource being resolved, not used by the CatalogResolver

namespaceURI:String

the namespace of the resource being resolved, not used by the CatalogResolver

publicId:String

the public identifier of the external entity being referenced, or null if no public identifier was supplied or if the resource is not an entity.

systemId:String

the system identifier, a URI reference of the external resource being referenced

baseURI:String

the absolute base URI, not used by the CatalogResolver

Returns:LSInput

a org.w3c.dom.ls.LSInput object if a mapping is found; null if no mapping is found and the javax.xml.catalog.resolve property is set to continue or ignore. Note that for org.w3c.dom.ls.LSResourceResolver, it is not possible to ignore a reference, ignore is therefore treated the same as continue.

Annotations
@Override
setEntityResolverback to summary
private void setEntityResolver(SAXSource source)

Establish an entityResolver for newly resolved URIs.

This is called from the URIResolver to set an EntityResolver on the SAX parser to be used for new XML documents that are encountered as a result of the document() function, xsl:import, or xsl:include. This is done because the XSLT processor calls out to the SAXParserFactory itself to create a new SAXParser to parse the new document. The new parser does not automatically inherit the EntityResolver of the original (although arguably it should). Quote from JAXP specification on Class SAXTransformerFactory:

If an application wants to set the ErrorHandler or EntityResolver for an XMLReader used during a transformation, it should use a URIResolver to return the SAXSource which provides (with getXMLReader) a reference to the XMLReader

javax.xml.catalog back to summary

pack-priv Class CatalogResolverImpl.LSInputImpl

extends Object
implements LSInput
Class Inheritance
All Implemented Interfaces
org.w3c.dom.ls.LSInput

Implements LSInput. All that we need is the systemId since the Catalog has already resolved it.

Field Summary

Modifier and TypeField and Description
private String

Constructor Summary

AccessConstructor and Description
public
LSInputImpl(String systemId)

Method Summary

Modifier and TypeMethod and Description
public String
getBaseURI()

Implements org.w3c.dom.ls.LSInput.getBaseURI.

The base URI to be used (see section 5.1.4 in [IETF RFC 2396]) for resolving a relative systemId to an absolute URI.

public InputStream
getByteStream()

Implements org.w3c.dom.ls.LSInput.getByteStream.

An attribute of a language and binding dependent type that represents a stream of bytes.

public boolean
getCertifiedText()

Implements org.w3c.dom.ls.LSInput.getCertifiedText.

If set to true, assume that the input is certified (see section 2.13 in [XML 1.1]) when parsing [XML 1.1].

public Reader
getCharacterStream()

Implements org.w3c.dom.ls.LSInput.getCharacterStream.

An attribute of a language and binding dependent type that represents a stream of 16-bit units.

public String
getEncoding()

Implements org.w3c.dom.ls.LSInput.getEncoding.

The character encoding, if known.

public String
getPublicId()

Implements org.w3c.dom.ls.LSInput.getPublicId.

The public identifier for this input source.

public String
getStringData()

Implements org.w3c.dom.ls.LSInput.getStringData.

String data to parse.

public String
getSystemId()

Implements org.w3c.dom.ls.LSInput.getSystemId.

The system identifier, a URI reference [IETF RFC 2396], for this input source.

public void
setBaseURI(String baseURI)

Implements org.w3c.dom.ls.LSInput.setBaseURI.

The base URI to be used (see section 5.1.4 in [IETF RFC 2396]) for resolving a relative systemId to an absolute URI.

public void
setByteStream(InputStream byteStream)

Implements org.w3c.dom.ls.LSInput.setByteStream.

An attribute of a language and binding dependent type that represents a stream of bytes.

public void
setCertifiedText(boolean certifiedText)

Implements org.w3c.dom.ls.LSInput.setCertifiedText.

If set to true, assume that the input is certified (see section 2.13 in [XML 1.1]) when parsing [XML 1.1].

public void
setCharacterStream(Reader characterStream)

Implements org.w3c.dom.ls.LSInput.setCharacterStream.

An attribute of a language and binding dependent type that represents a stream of 16-bit units.

public void
setEncoding(String encoding)

Implements org.w3c.dom.ls.LSInput.setEncoding.

The character encoding, if known.

public void
setPublicId(String publicId)

Implements org.w3c.dom.ls.LSInput.setPublicId.

The public identifier for this input source.

public void
setStringData(String stringData)

Implements org.w3c.dom.ls.LSInput.setStringData.

String data to parse.

public void
setSystemId(String systemId)

Implements org.w3c.dom.ls.LSInput.setSystemId.

The system identifier, a URI reference [IETF RFC 2396], for this input source.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

systemIdback to summary
private String systemId

Constructor Detail

LSInputImplback to summary
public LSInputImpl(String systemId)

Method Detail

getBaseURIback to summary
public String getBaseURI()

Implements org.w3c.dom.ls.LSInput.getBaseURI.

Doc from org.w3c.dom.ls.LSInput.getBaseURI.

The base URI to be used (see section 5.1.4 in [IETF RFC 2396]) for resolving a relative systemId to an absolute URI.
If, when used, the base URI is itself a relative URI, an empty string, or null, the behavior is implementation dependent.

Annotations
@Override
getByteStreamback to summary
public InputStream getByteStream()

Implements org.w3c.dom.ls.LSInput.getByteStream.

Doc from org.w3c.dom.ls.LSInput.getByteStream.

An attribute of a language and binding dependent type that represents a stream of bytes.
If the application knows the character encoding of the byte stream, it should set the encoding attribute. Setting the encoding in this way will override any encoding specified in an XML declaration in the data.

Annotations
@Override
getCertifiedTextback to summary
public boolean getCertifiedText()

Implements org.w3c.dom.ls.LSInput.getCertifiedText.

Doc from org.w3c.dom.ls.LSInput.getCertifiedText.

If set to true, assume that the input is certified (see section 2.13 in [XML 1.1]) when parsing [XML 1.1].

Annotations
@Override
getCharacterStreamback to summary
public Reader getCharacterStream()

Implements org.w3c.dom.ls.LSInput.getCharacterStream.

Doc from org.w3c.dom.ls.LSInput.getCharacterStream.

An attribute of a language and binding dependent type that represents a stream of 16-bit units. The application must encode the stream using UTF-16 (defined in [Unicode] and in [ISO/IEC 10646]). It is not a requirement to have an XML declaration when using character streams. If an XML declaration is present, the value of the encoding attribute will be ignored.

Annotations
@Override
getEncodingback to summary
public String getEncoding()

Implements org.w3c.dom.ls.LSInput.getEncoding.

Doc from org.w3c.dom.ls.LSInput.getEncoding.

The character encoding, if known. The encoding must be a string acceptable for an XML encoding declaration ([XML 1.0] section 4.3.3 "Character Encoding in Entities").
This attribute has no effect when the application provides a character stream or string data. For other sources of input, an encoding specified by means of this attribute will override any encoding specified in the XML declaration or the Text declaration, or an encoding obtained from a higher level protocol, such as HTTP [IETF RFC 2616].

Annotations
@Override
getPublicIdback to summary
public String getPublicId()

Implements org.w3c.dom.ls.LSInput.getPublicId.

Doc from org.w3c.dom.ls.LSInput.getPublicId.

The public identifier for this input source. This may be mapped to an input source using an implementation dependent mechanism (such as catalogues or other mappings). The public identifier, if specified, may also be reported as part of the location information when errors are reported.

Annotations
@Override
getStringDataback to summary
public String getStringData()

Implements org.w3c.dom.ls.LSInput.getStringData.

Doc from org.w3c.dom.ls.LSInput.getStringData.

String data to parse. If provided, this will always be treated as a sequence of 16-bit units (UTF-16 encoded characters). It is not a requirement to have an XML declaration when using stringData. If an XML declaration is present, the value of the encoding attribute will be ignored.

Annotations
@Override
getSystemIdback to summary
public String getSystemId()

Implements org.w3c.dom.ls.LSInput.getSystemId.

Doc from org.w3c.dom.ls.LSInput.getSystemId.

The system identifier, a URI reference [IETF RFC 2396], for this input source. The system identifier is optional if there is a byte stream, a character stream, or string data. It is still useful to provide one, since the application will use it to resolve any relative URIs and can include it in error messages and warnings. (The LSParser will only attempt to fetch the resource identified by the URI reference if there is no other input available in the input source.)
If the application knows the character encoding of the object pointed to by the system identifier, it can set the encoding using the encoding attribute.
If the specified system ID is a relative URI reference (see section 5 in [IETF RFC 2396]), the DOM implementation will attempt to resolve the relative URI with the baseURI as the base, if that fails, the behavior is implementation dependent.

Annotations
@Override
setBaseURIback to summary
public void setBaseURI(String baseURI)

Implements org.w3c.dom.ls.LSInput.setBaseURI.

Doc from org.w3c.dom.ls.LSInput.setBaseURI.

The base URI to be used (see section 5.1.4 in [IETF RFC 2396]) for resolving a relative systemId to an absolute URI.
If, when used, the base URI is itself a relative URI, an empty string, or null, the behavior is implementation dependent.

Annotations
@Override
setByteStreamback to summary
public void setByteStream(InputStream byteStream)

Implements org.w3c.dom.ls.LSInput.setByteStream.

Doc from org.w3c.dom.ls.LSInput.setByteStream.

An attribute of a language and binding dependent type that represents a stream of bytes.
If the application knows the character encoding of the byte stream, it should set the encoding attribute. Setting the encoding in this way will override any encoding specified in an XML declaration in the data.

Annotations
@Override
setCertifiedTextback to summary
public void setCertifiedText(boolean certifiedText)

Implements org.w3c.dom.ls.LSInput.setCertifiedText.

Doc from org.w3c.dom.ls.LSInput.setCertifiedText.

If set to true, assume that the input is certified (see section 2.13 in [XML 1.1]) when parsing [XML 1.1].

Annotations
@Override
setCharacterStreamback to summary
public void setCharacterStream(Reader characterStream)

Implements org.w3c.dom.ls.LSInput.setCharacterStream.

Doc from org.w3c.dom.ls.LSInput.setCharacterStream.

An attribute of a language and binding dependent type that represents a stream of 16-bit units. The application must encode the stream using UTF-16 (defined in [Unicode] and in [ISO/IEC 10646]). It is not a requirement to have an XML declaration when using character streams. If an XML declaration is present, the value of the encoding attribute will be ignored.

Annotations
@Override
setEncodingback to summary
public void setEncoding(String encoding)

Implements org.w3c.dom.ls.LSInput.setEncoding.

Doc from org.w3c.dom.ls.LSInput.setEncoding.

The character encoding, if known. The encoding must be a string acceptable for an XML encoding declaration ([XML 1.0] section 4.3.3 "Character Encoding in Entities").
This attribute has no effect when the application provides a character stream or string data. For other sources of input, an encoding specified by means of this attribute will override any encoding specified in the XML declaration or the Text declaration, or an encoding obtained from a higher level protocol, such as HTTP [IETF RFC 2616].

Annotations
@Override
setPublicIdback to summary
public void setPublicId(String publicId)

Implements org.w3c.dom.ls.LSInput.setPublicId.

Doc from org.w3c.dom.ls.LSInput.setPublicId.

The public identifier for this input source. This may be mapped to an input source using an implementation dependent mechanism (such as catalogues or other mappings). The public identifier, if specified, may also be reported as part of the location information when errors are reported.

Annotations
@Override
setStringDataback to summary
public void setStringData(String stringData)

Implements org.w3c.dom.ls.LSInput.setStringData.

Doc from org.w3c.dom.ls.LSInput.setStringData.

String data to parse. If provided, this will always be treated as a sequence of 16-bit units (UTF-16 encoded characters). It is not a requirement to have an XML declaration when using stringData. If an XML declaration is present, the value of the encoding attribute will be ignored.

Annotations
@Override
setSystemIdback to summary
public void setSystemId(String systemId)

Implements org.w3c.dom.ls.LSInput.setSystemId.

Doc from org.w3c.dom.ls.LSInput.setSystemId.

The system identifier, a URI reference [IETF RFC 2396], for this input source. The system identifier is optional if there is a byte stream, a character stream, or string data. It is still useful to provide one, since the application will use it to resolve any relative URIs and can include it in error messages and warnings. (The LSParser will only attempt to fetch the resource identified by the URI reference if there is no other input available in the input source.)
If the application knows the character encoding of the object pointed to by the system identifier, it can set the encoding using the encoding attribute.
If the specified system ID is a relative URI reference (see section 5 in [IETF RFC 2396]), the DOM implementation will attempt to resolve the relative URI with the baseURI as the base, if that fails, the behavior is implementation dependent.

Annotations
@Override