Class PollHandler

  • All Implemented Interfaces:
    java.lang.Runnable, Handler
    Direct Known Subclasses:
    RePollHandler

    public class PollHandler
    extends java.lang.Thread
    implements Handler
    Handler for periodically polling another web site, whose results are (optionally) added to the server's properties. This also includes the ability to request URL's on a cron-like schedule.

    The result of fetching the url is expected to be a text document in java Properties format.

    Properties:

    url
    URL to fetch periodically. any ${...} constructs are evaluated at each poll, with the values in the server properties object. If the URL starts with "/", then the current server is used.
    post
    The "post" data, if any. ${...} are evaluates as per url above.
    headers
    A list of white space delimited tokens that refer to additional HTTP headers that are added onto the polled request. For each token the server properties [token].name and [token].value define a new http header.
    interval
    The interval (in seconds) to fetch the url. Defaults to 10 seconds. If match is specified, this is the interval used to check for a time/date match. At each "interval", the current time format is computed, based on "format", below. If the computed format has not changed since the previous poll, then no poll is done. The interval is recalculated after each poll.
    fast
    If set, don't wait "interval" before 1st poll.
    prepend
    The string to prepend to the properties. If not supplied no properties are loaded.
    namespace
    The namespace to use to store the properties to. If the sessionTable (see below)parameter is identical to the sessionTable parameter of the SetTemplate, then this specifies the namespace parameter that may be used with the SetTemplate "namespace" parameter to obtain the extracted data. Defaults to the "prepend" parameter.
    match
    If specified, a regular expression that must match the current time for this URL to run. The format to match is specified by the "format" parameter, below. "EEE-dd-HH-mm" (eg: Thu-Dec, 14, 14:12 pm).
    format
    a date format specifier to use for matching "match" patterns. Defaults to "EE-MM-dd-HH-mm".
    proxy
    If specified, connect through a proxy. This should be in the form host:port, or host it the desired port is 80.
    sessionTable
    The name of the SessionManager table to use for storing values. By default, properties are stored in server.props. The value should match the sessionTable used by the SetTemplate to allow values obtained by this handler to be accessable from within templates.

    If the sessionTable is set, the namespace value is used to name the table (e.g. the namespace specified by SetTemplate. If no namespace parameter is given, then prepend is used as the namespace parameter.

    If prepend is specified, the following additional properties are created, and added to the properties with the specified prefix.

    count.attempts
    The total number of polls attemped.
    count.errors
    The total number of poll failures.
    error.at
    The poll attempt # for the last failure.
    error.msg
    The message describing the last failure.
    error.time
    The timestamp of the last failure.
    timestamp
    The timestamp for the last successful poll.
    Version:
    %V% PollHandler.java 2.5
    Author:
    Stephen Uhler
    • Nested Class Summary

      • Nested classes/interfaces inherited from class java.lang.Thread

        java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
    • Field Summary

      Fields 
      Modifier and Type Field Description
      int interval  
      java.lang.String post  
      java.lang.String url  
      • Fields inherited from class java.lang.Thread

        MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
    • Constructor Summary

      Constructors 
      Constructor Description
      PollHandler()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void fillProps​(java.util.Properties props, HttpRequest target)
      Fill the properties from the input stream
      boolean init​(Server server, java.lang.String prefix)
      Set up the initial configuration, and kick off a thread to periodically fetch the url.
      boolean respond​(Request request)
      This might allow control over the polling via requests at a later date.
      void run()
      Periodically poll the url, and copy the results into the server properties.
      • Methods inherited from class java.lang.Thread

        activeCount, checkAccess, clone, countStackFrames, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, suspend, toString, yield
      • Methods inherited from class java.lang.Object

        equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • url

        public java.lang.String url
      • post

        public java.lang.String post
      • interval

        public int interval
    • Constructor Detail

      • PollHandler

        public PollHandler()
    • Method Detail

      • init

        public boolean init​(Server server,
                            java.lang.String prefix)
        Set up the initial configuration, and kick off a thread to periodically fetch the url.
        Specified by:
        init in interface Handler
        Parameters:
        server - The HTTP server that created this Handler. Typical Handlers will use Server.props to obtain run-time configuration information.
        prefix - The handlers name. The string this Handler may prepend to all of the keys that it uses to extract configuration information from Server.props. This is set (by the Server and ChainHandler) to help avoid configuration parameter namespace collisions.
        Returns:
        true if this Handler initialized successfully, false otherwise. If false is returned, this Handler should not be used.
      • respond

        public boolean respond​(Request request)
        This might allow control over the polling via requests at a later date. For now, it always returns false.
        Specified by:
        respond in interface Handler
        Parameters:
        request - The Request object that represents the HTTP request.
        Returns:
        true if the request was handled. A request was handled if a response was supplied to the client, typically by calling Request.sendResponse() or Request.sendError.
      • run

        public void run()
        Periodically poll the url, and copy the results into the server properties.
        Specified by:
        run in interface java.lang.Runnable
        Overrides:
        run in class java.lang.Thread
      • fillProps

        public void fillProps​(java.util.Properties props,
                              HttpRequest target)
                       throws java.io.IOException
        Fill the properties from the input stream
        Throws:
        java.io.IOException