Class AbstractPollingBinding

  • All Implemented Interfaces:
    Binding
    Direct Known Subclasses:
    HttpBinding, QueryBinding

    public abstract class AbstractPollingBinding
    extends java.lang.Object
    implements Binding
    Abstract base class which takes care of executing bindings which have a polling option in a thread-safe manner. Also has a debouncing feature built in.
    • Method Detail

      • startup

        public void startup()
        Description copied from interface: Binding
        Start up the binding. Will be called on-queue
        Specified by:
        startup in interface Binding
      • shutdown

        public void shutdown()
        Description copied from interface: Binding
        Shut down the binding. Will be called on-queue
        Specified by:
        shutdown in interface Binding
      • isReady

        protected abstract boolean isReady()
        Indicates whether or not the instance of the underlying implementation is ready for execution.
      • isDirty

        protected abstract boolean isDirty()
        If any dependencies of the implementation have changed, this method should return true, which will kick off another execution if dependencies have changed while the execution was running.
      • execute

        protected abstract QualifiedValue execute()
                                           throws java.lang.Exception
        Perform the blocking execution of this polling binding. This should always execute on the _executor service_
        Returns:
        The resulting QualifiedValue from the binding execution
        Throws:
        java.lang.Exception - If there is a problem executing the binding
      • preExecutionPrep

        protected void preExecutionPrep()
        This method will be called before execute() is called to give implementations the opportunity to prepare any data before execution begins. This method will be called within a synchronized block holding this lock.
      • scheduleNow

        protected void scheduleNow()
        Schedule the next execution immediately. This method is debounced.
      • onUserRefresh

        public void onUserRefresh()
        Description copied from interface: Binding
        Called to prompt the binding to produce a value as soon as possible. This _not_ the normal way that bindings work. Bindings are expected to produce a value un-prompted after startup, and then again whenever they feel is appropriate. This is there to allow the user to call component.refreshBinding(property) and prompt a non-polling binding to run.
        Specified by:
        onUserRefresh in interface Binding