java.lang.Object
edu.internet2.middleware.grouperClientExt.org.apache.commons.lang3.concurrent.AbstractCircuitBreaker<T>
Type Parameters:
T - the type of the value monitored by this circuit breaker
All Implemented Interfaces:
CircuitBreaker<T>
Direct Known Subclasses:
EventCountCircuitBreaker, ThresholdCircuitBreaker

public abstract class AbstractCircuitBreaker<T> extends Object implements CircuitBreaker<T>
Base class for circuit breakers.
Since:
3.5
  • Field Details

  • Constructor Details

    • AbstractCircuitBreaker

      public AbstractCircuitBreaker()
      Creates an AbstractCircuitBreaker. It also creates an internal PropertyChangeSupport.
  • Method Details

    • isOpen

      public boolean isOpen()
      Returns the current open state of this circuit breaker. A return value of true means that the circuit breaker is currently open indicating a problem in the monitored sub system.
      Specified by:
      isOpen in interface CircuitBreaker<T>
      Returns:
      the current open state of this circuit breaker
    • isClosed

      public boolean isClosed()
      Returns the current closed state of this circuit breaker. A return value of true means that the circuit breaker is currently closed. This means that everything is okay with the monitored sub system.
      Specified by:
      isClosed in interface CircuitBreaker<T>
      Returns:
      the current closed state of this circuit breaker
    • checkState

      public abstract boolean checkState()
      Checks the state of this circuit breaker and changes it if necessary. The return value indicates whether the circuit breaker is now in state CLOSED; a value of true typically means that the current operation can continue.
      Specified by:
      checkState in interface CircuitBreaker<T>
      Returns:
      true if the circuit breaker is now closed; false otherwise
    • incrementAndCheckState

      public abstract boolean incrementAndCheckState(T increment)
      Increments the monitored value and performs a check of the current state of this circuit breaker. This method works like CircuitBreaker.checkState(), but the monitored value is incremented before the state check is performed.
      Specified by:
      incrementAndCheckState in interface CircuitBreaker<T>
      Parameters:
      increment - value to increment in the monitored value of the circuit breaker
      Returns:
      true if the circuit breaker is now closed; false otherwise
    • close

      public void close()
      Closes this circuit breaker. Its state is changed to closed. If this circuit breaker is already closed, this method has no effect.
      Specified by:
      close in interface CircuitBreaker<T>
    • open

      public void open()
      Opens this circuit breaker. Its state is changed to open. Depending on a concrete implementation, it may close itself again if the monitored sub system becomes available. If this circuit breaker is already open, this method has no effect.
      Specified by:
      open in interface CircuitBreaker<T>
    • isOpen

      protected static boolean isOpen(AbstractCircuitBreaker.State state)
      Converts the given state value to a boolean open property.
      Parameters:
      state - the state to be converted
      Returns:
      the boolean open flag
    • changeState

      protected void changeState(AbstractCircuitBreaker.State newState)
      Changes the internal state of this circuit breaker. If there is actually a change of the state value, all registered change listeners are notified.
      Parameters:
      newState - the new state to be set
    • addChangeListener

      public void addChangeListener(PropertyChangeListener listener)
      Adds a change listener to this circuit breaker. This listener is notified whenever the state of this circuit breaker changes. If the listener is null, it is silently ignored.
      Parameters:
      listener - the listener to be added
    • removeChangeListener

      public void removeChangeListener(PropertyChangeListener listener)
      Removes the specified change listener from this circuit breaker.
      Parameters:
      listener - the listener to be removed