public abstract class AbstractRefreshableTargetSource extends Object implements TargetSource, Refreshable
TargetSource implementation that
wraps a refreshable target object. Subclasses can determine whether a
refresh is required, and need to provide fresh target objects.
Implements the Refreshable interface in order to allow for
explicit control over the refresh status.
requiresRefresh(),
freshTarget()| Modifier and Type | Field and Description |
|---|---|
protected Log |
logger
Logger available to subclasses
|
protected Object |
targetObject |
| Constructor and Description |
|---|
AbstractRefreshableTargetSource() |
| Modifier and Type | Method and Description |
|---|---|
protected abstract Object |
freshTarget()
Obtain a fresh target object.
|
long |
getLastRefreshTime()
Return the last time an actual refresh happened (as timestamp).
|
long |
getRefreshCount()
Return the number of actual refreshes since startup.
|
Object |
getTarget()
Return a target instance.
|
Class<?> |
getTargetClass()
Return the type of targets returned by this
TargetSource. |
boolean |
isStatic()
Not static.
|
void |
refresh()
Refresh the underlying target object.
|
void |
releaseTarget(Object object)
No need to release target.
|
protected boolean |
requiresRefresh()
Determine whether a refresh is required.
|
void |
setRefreshCheckDelay(long refreshCheckDelay)
Set the delay between refresh checks, in milliseconds.
|
protected Log logger
protected Object targetObject
public void setRefreshCheckDelay(long refreshCheckDelay)
Note that an actual refresh will only happen when
requiresRefresh() returns true.
public Class<?> getTargetClass()
TargetSourceTargetSource.
Can return null, although certain usages of a
TargetSource might just work with a predetermined
target class.
getTargetClass in interface TargetClassAwaregetTargetClass in interface TargetSourceTargetSourcepublic boolean isStatic()
isStatic in interface TargetSourcetrue if the target is immutableTargetSource.getTarget()public final Object getTarget()
TargetSourcegetTarget in interface TargetSourcepublic void releaseTarget(Object object)
releaseTarget in interface TargetSourceobject - object obtained from a call to TargetSource.getTarget()public final void refresh()
Refreshablerefresh in interface Refreshablepublic long getRefreshCount()
RefreshablegetRefreshCount in interface Refreshablepublic long getLastRefreshTime()
RefreshablegetLastRefreshTime in interface Refreshableprotected boolean requiresRefresh()
The default implementation always returns true, triggering
a refresh every time the delay has elapsed. To be overridden by subclasses
with an appropriate check of the underlying target resource.
protected abstract Object freshTarget()
Only invoked if a refresh check has found that a refresh is required
(that is, requiresRefresh() has returned true).