Class DefaultInputResolver

java.lang.Object
com.ctc.wstx.io.DefaultInputResolver

public final class DefaultInputResolver extends Object
Static utility class that implements the entity (external DTD subset, external parsed entities) resolution logics.
  • 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.
      xmlVersion - 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.
      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 entity
      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 a WstxInputSource 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
    • 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