Package com.ctc.wstx.io
Class DefaultInputResolver
java.lang.Object
com.ctc.wstx.io.DefaultInputResolver
Static utility class that implements the entity (external DTD subset,
external parsed entities) resolution logics.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic Reader
constructOptimizedReader
(ReaderConfig cfg, InputStream in, boolean isXml11, String encoding) static WstxInputSource
resolveEntity
(WstxInputSource parent, URL pathCtxt, String entityName, String publicId, String systemId, XMLResolver customResolver, ReaderConfig cfg, int xmlVersion) Basic external resource resolver implementation; usable both with DTD and entity resolution.static WstxInputSource
resolveEntityUsing
(WstxInputSource refCtxt, String entityName, String publicId, String systemId, XMLResolver resolver, ReaderConfig cfg, int xmlVersion) A very simple utility expansion method used generally when the only way to resolve an entity is via passed resolver; and where failing to resolve it is not fatal.protected static WstxInputSource
sourceFrom
(WstxInputSource parent, ReaderConfig cfg, String refName, int xmlVersion, Object o) Factory method that accepts various types of Objects, and tries to create aWstxInputSource
from it.private static WstxInputSource
sourceFromIS
(WstxInputSource parent, ReaderConfig cfg, String refName, int xmlVersion, InputStream is, String pubId, String sysId) private static WstxInputSource
sourceFromR
(WstxInputSource parent, ReaderConfig cfg, String refName, int xmlVersion, Reader r, String pubId, String sysId) private static WstxInputSource
sourceFromSS
(WstxInputSource parent, ReaderConfig cfg, String refName, int xmlVersion, StreamSource ssrc) static WstxInputSource
sourceFromString
(WstxInputSource parent, ReaderConfig cfg, String refName, int xmlVersion, String refContent) We have multiple ways to look at what would it mean to get a String as the resolved result.private static WstxInputSource
sourceFromURL
(WstxInputSource parent, ReaderConfig cfg, String refName, int xmlVersion, URL url, String pubId)
-
Constructor Details
-
DefaultInputResolver
private DefaultInputResolver()
-
-
Method Details
-
resolveEntity
public static WstxInputSource resolveEntity(WstxInputSource parent, URL pathCtxt, String entityName, String publicId, String systemId, XMLResolver customResolver, ReaderConfig cfg, int xmlVersion) throws IOException, XMLStreamException Basic external resource resolver implementation; usable both with DTD and entity resolution.- Parameters:
parent
- Input source that contains reference to be expanded.pathCtxt
- Reference context to use for resolving path, if known. If null, reference context of the parent will be used; and if that is null (which is possible), the current working directory will be assumed.entityName
- Name/id of the entity being expanded, if this is an entity expansion; null otherwise (for example, when resolving external subset).publicId
- Public identifier of the resource, if known; null/empty otherwise. Default implementation just ignores the identifier.systemId
- System identifier of the resource. Although interface allows null/empty, default implementation considers this an error.customResolver
- Custom resolver to use first for resolution, if any (may be null).cfg
- Reader configuration object used by the parser that is resolving the entityxmlVersion
- Xml version as declared by the main parsed document. Currently only relevant for checking that XML 1.0 document does not include XML 1.1 external parsed entities. If XML_V_UNKNOWN, no checks will be done.- Returns:
- Input source, if entity could be resolved; null if it could not be resolved. In latter case processor may use its own default resolution mechanism.
- Throws:
IOException
XMLStreamException
-
resolveEntityUsing
public static WstxInputSource resolveEntityUsing(WstxInputSource refCtxt, String entityName, String publicId, String systemId, XMLResolver resolver, ReaderConfig cfg, int xmlVersion) throws IOException, XMLStreamException A very simple utility expansion method used generally when the only way to resolve an entity is via passed resolver; and where failing to resolve it is not fatal.- Throws:
IOException
XMLStreamException
-
sourceFrom
protected static WstxInputSource sourceFrom(WstxInputSource parent, ReaderConfig cfg, String refName, int xmlVersion, Object o) throws IllegalArgumentException, IOException, XMLStreamException Factory method that accepts various types of Objects, and tries to create aWstxInputSource
from it. Currently it's only called to locate external DTD subsets, when overriding default DOCTYPE declarations; not for entity expansion or for locating the main document entity.- Parameters:
parent
- Input source context active when resolving a new "sub-source"; usually the main document source.refName
- Name of the entity to be expanded, if any; may be null (and currently always is)o
- Object that should provide the new input source; non-type safe- Throws:
IllegalArgumentException
IOException
XMLStreamException
-
constructOptimizedReader
public static Reader constructOptimizedReader(ReaderConfig cfg, InputStream in, boolean isXml11, String encoding) throws XMLStreamException - Throws:
XMLStreamException
-
sourceFromSS
private static WstxInputSource sourceFromSS(WstxInputSource parent, ReaderConfig cfg, String refName, int xmlVersion, StreamSource ssrc) throws IOException, XMLStreamException - Throws:
IOException
XMLStreamException
-
sourceFromURL
private static WstxInputSource sourceFromURL(WstxInputSource parent, ReaderConfig cfg, String refName, int xmlVersion, URL url, String pubId) throws IOException, XMLStreamException - Throws:
IOException
XMLStreamException
-
sourceFromString
public static WstxInputSource sourceFromString(WstxInputSource parent, ReaderConfig cfg, String refName, int xmlVersion, String refContent) throws IOException, XMLStreamException We have multiple ways to look at what would it mean to get a String as the resolved result. The most straight-forward is to consider it literal replacement (with possible embedded entities), so let's use that (alternative would be to consider it to be a reference like URL -- those need to be returned as appropriate objects instead).Note: public to give access for unit tests that need it...
- Throws:
IOException
XMLStreamException
-
sourceFromIS
private static WstxInputSource sourceFromIS(WstxInputSource parent, ReaderConfig cfg, String refName, int xmlVersion, InputStream is, String pubId, String sysId) throws IOException, XMLStreamException - Throws:
IOException
XMLStreamException
-
sourceFromR
private static WstxInputSource sourceFromR(WstxInputSource parent, ReaderConfig cfg, String refName, int xmlVersion, Reader r, String pubId, String sysId) throws IOException, XMLStreamException - Throws:
IOException
XMLStreamException
-