Class NaiveUserAgent

  • All Implemented Interfaces:
    DocumentListener, UserAgentCallback
    Direct Known Subclasses:
    DelegatingUserAgent

    public class NaiveUserAgent
    extends Object
    implements UserAgentCallback, DocumentListener

    NaiveUserAgent is a simple implementation of UserAgentCallback which places no restrictions on what XML, CSS or images are loaded, and reports visited links without any filtering. The most straightforward process available in the JDK is used to load the resources in question--either using java.io or java.net classes.

    The NaiveUserAgent has a small cache for images, the size of which (number of images) can be passed as a constructor argument. There is no automatic cleaning of the cache; call clearImageCache() to remove the least-accessed elements--for example, you might do this when a new document is about to be loaded. The NaiveUserAgent is also a DocumentListener; if registered with a source of document events (like the panel hierarchy), it will respond to the DocumentListener.documentStarted() call and attempt to shrink its cache.

    Author:
    Torbjoern Gannholm
    • Constructor Detail

      • NaiveUserAgent

        public NaiveUserAgent()
    • Method Detail

      • setProtocolsStreamFactory

        public void setProtocolsStreamFactory​(Map<String,​FSStreamFactory> protocolsStreamFactory)
      • setExternalCache

        public void setExternalCache​(FSCache cache)
      • setUriResolver

        public void setUriResolver​(FSUriResolver resolver)
      • getDefaultUriResolver

        public FSUriResolver getDefaultUriResolver()
      • clearImageCache

        public void clearImageCache()
        Empties the image cache entirely.
      • hasProtocolFactory

        protected boolean hasProtocolFactory​(String protocol)
      • openStream

        protected InputStream openStream​(String uri)
        Gets a InputStream for the resource identified by a resolved URI.
      • openReader

        protected Reader openReader​(String uri)
        Gets a reader for the identified resource by a resolved URI.
      • getCacheText

        protected String getCacheText​(String uri)
      • getCacheReader

        protected Reader getCacheReader​(String uri)
      • getCSSResource

        public CSSResource getCSSResource​(String uri)
        Retrieves the CSS located at the given URI. It's assumed the URI does point to a CSS file--the URI will be resolved, accessed (using the set FSStreamFactory or URL::openStream), opened, read and then passed into the CSS parser. The result is packed up into an CSSResource for later consumption.
        Specified by:
        getCSSResource in interface UserAgentCallback
        Parameters:
        uri - Location of the CSS source.
        Returns:
        A CSSResource containing the CSS reader or null if not available.
      • getImageResource

        public ImageResource getImageResource​(String uri)
        Retrieves the image located at the given URI. It's assumed the URI does point to an image--the URI will be accessed (using the set HttpStreamFactory or URL::openStream), opened, read and then passed into the JDK image-parsing routines. The result is packed up into an ImageResource for later consumption.
        Specified by:
        getImageResource in interface UserAgentCallback
        Parameters:
        uri - Location of the image source.
        Returns:
        An ImageResource containing the image.
      • getXMLResource

        public XMLResource getXMLResource​(String uri)
        Retrieves the XML located at the given URI. It's assumed the URI does point to a XML--the URI will be accessed (using the set HttpStreamFactory or URL::openStream), opened, read and then passed into the XML parser (XMLReader) configured for Flying Saucer. The result is packed up into an XMLResource for later consumption.
        Specified by:
        getXMLResource in interface UserAgentCallback
        Parameters:
        uri - Location of the XML source.
        Returns:
        An XMLResource containing the image.
      • getBinaryResource

        public byte[] getBinaryResource​(String uri)
        Description copied from interface: UserAgentCallback
        Retrieves a binary resource located at a given URI and returns its contents as a byte array or null if the resource could not be loaded.
        Specified by:
        getBinaryResource in interface UserAgentCallback
      • isVisited

        public boolean isVisited​(String uri)
        Returns true if the given URI was visited, meaning it was requested at some point since initialization.
        Specified by:
        isVisited in interface UserAgentCallback
        Parameters:
        uri - A URI which might have been visited.
        Returns:
        Always false; visits are not tracked in the NaiveUserAgent.
      • setBaseURL

        public void setBaseURL​(String uri)
        URL relative to which URIs are resolved.
        Specified by:
        setBaseURL in interface UserAgentCallback
        Parameters:
        uri - A URI which anchors other, possibly relative URIs.
      • getBaseURL

        public String getBaseURL()
        Returns the current baseUrl for this class.
        Specified by:
        getBaseURL in interface UserAgentCallback
        Returns:
        the base uri, possibly in the implementations private uri-space
      • documentStarted

        public void documentStarted()
        Description copied from interface: DocumentListener
        Indicates document has been requested (e.g. a new document is going to be loaded). This will be called before any activity takes place for the document.
        Specified by:
        documentStarted in interface DocumentListener
      • documentLoaded

        public void documentLoaded()
        Description copied from interface: DocumentListener
        Indicates document layout has complete, e.g. document is fully "loaded" for display; this is not a callback for the document source (e.g. XML) being loaded. This method will be called on every layout run (including, for example, after panel resizes).
        Specified by:
        documentLoaded in interface DocumentListener
      • onLayoutException

        public void onLayoutException​(Throwable t)
        Description copied from interface: DocumentListener
        Called when document layout failed with an exception. All Throwable objects thrown (except for ThreadDeath) during layout and not otherwise handled will be provided to this method. If a DocumentListener has been defined an XHTML panel, the listener is entirely responsible for handling the exception. No other action will be taken.
        Specified by:
        onLayoutException in interface DocumentListener
      • onRenderException

        public void onRenderException​(Throwable t)
        Description copied from interface: DocumentListener
        Called when document render failed with an exception. All Throwable objects thrown (except for ThreadDeath) during render and not otherwise handled will be provided to this method. If a DocumentListener has been defined an XHTML panel, the listener is entirely responsible for handling the exception. No other action will be taken.
        Specified by:
        onRenderException in interface DocumentListener
      • resolveURI

        public String resolveURI​(String uri)
        Description copied from interface: UserAgentCallback
        Used to find a uri that may be relative to the BaseURL. The returned value will always only be used via methods in the same implementation of this interface, therefore may be a private uri-space.
        Specified by:
        resolveURI in interface UserAgentCallback
        Parameters:
        uri - an absolute or relative (to baseURL) uri to be resolved.
        Returns:
        the full uri in uri-spaces known to the current implementation.
      • setExternalByteCache

        public void setExternalByteCache​(FSMultiThreadCache<byte[]> byteCache)