Class AbstractCircuitBreaker<T>
- java.lang.Object
-
- 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 java.lang.Object implements CircuitBreaker<T>
Base class for circuit breakers.- Since:
- 3.5
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
AbstractCircuitBreaker.State
An internal enumeration representing the different states of a circuit breaker.
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
PROPERTY_NAME
The name of the open property as it is passed to registered change listeners.protected java.util.concurrent.atomic.AtomicReference<AbstractCircuitBreaker.State>
state
The current state of this circuit breaker.
-
Constructor Summary
Constructors Constructor Description AbstractCircuitBreaker()
Creates anAbstractCircuitBreaker
.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
addChangeListener(java.beans.PropertyChangeListener listener)
Adds a change listener to this circuit breaker.protected void
changeState(AbstractCircuitBreaker.State newState)
Changes the internal state of this circuit breaker.abstract boolean
checkState()
Checks the state of this circuit breaker and changes it if necessary.void
close()
Closes this circuit breaker.abstract boolean
incrementAndCheckState(T increment)
Increments the monitored value and performs a check of the current state of this circuit breaker.boolean
isClosed()
Returns the current closed state of this circuit breaker.boolean
isOpen()
Returns the current open state of this circuit breaker.protected static boolean
isOpen(AbstractCircuitBreaker.State state)
Converts the given state value to a boolean open property.void
open()
Opens this circuit breaker.void
removeChangeListener(java.beans.PropertyChangeListener listener)
Removes the specified change listener from this circuit breaker.
-
-
-
Field Detail
-
PROPERTY_NAME
public static final java.lang.String PROPERTY_NAME
The name of the open property as it is passed to registered change listeners.- See Also:
- Constant Field Values
-
state
protected final java.util.concurrent.atomic.AtomicReference<AbstractCircuitBreaker.State> state
The current state of this circuit breaker.
-
-
Method Detail
-
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 interfaceCircuitBreaker<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 interfaceCircuitBreaker<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 stateCLOSED
; a value of true typically means that the current operation can continue.- Specified by:
checkState
in interfaceCircuitBreaker<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 likeCircuitBreaker.checkState()
, but the monitored value is incremented before the state check is performed.- Specified by:
incrementAndCheckState
in interfaceCircuitBreaker<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 interfaceCircuitBreaker<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 interfaceCircuitBreaker<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(java.beans.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(java.beans.PropertyChangeListener listener)
Removes the specified change listener from this circuit breaker.- Parameters:
listener
- the listener to be removed
-
-