Package info.monitorenter.reflection
Class ObjectRecorder
java.lang.Object
java.lang.Thread
info.monitorenter.reflection.ObjectRecorder
- All Implemented Interfaces:
Runnable
The
ObjectRecorder
takes records(inspections) of an objects
state using reflection and accessibility- framework.
It's strategy is to:
- try to set any field accessible. - try to get the value of the field. - if not succeed: try to invoke a bean- conform getter. - if NoSuchMethod, it's useless (no implementation of MagicClazz here).
Furthermore the ObjectRecorder
has a history - size (buffer) and
an adjustable distance between each inspection.
- Version:
- $Revision: 1.10 $
- Author:
- Achim Westermann
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionfinal class
Data container for the inspection of the internal intance.Nested classes/interfaces inherited from class java.lang.Thread
Thread.State, Thread.UncaughtExceptionHandler
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected IRingBuffer<ObjectRecorder.ObjectInspection>
Fast buffer to store recorded fiels.protected EventListenerList
The listeners on this recorder.protected Field[]
The fields to inspect on the instance.protected long
The time - interval between to inspections of the Object.protected Object
The instance to inspect.protected static final boolean
Verbosity constant.Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
-
Constructor Summary
ConstructorsConstructorDescriptionObjectRecorder
(Object toinspect, long interval) Creates an instance that will inspect the given Object in the given time interval. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Adds a change listener that will be informed about new recordings of the inspected instances.boolean
protected void
Informs the listeners about a change of this instance.getAttributeHistory
(String attributeName) The History returned by this Method represents the past of the field specified by attributeName.String[]
Returns the names of the fields to inspect.Returns the inspected instance.getLastValue
(String fieldname) Returns the last recorded value taken from the given field along with the time stamp identifying the time this value was recored.Returns the internal fifo buffer that stores theObjectRecorder.ObjectInspection
instances that have been done.int
hashCode()
void
inspect()
Makes a record of the state of the object specified in the constructor.void
Removes the given listener for changes of the inpsected instance.void
run()
void
setHistoryLength
(int length) Define the amount of recorded states of the Object to inspect that remain in memory.void
setInterval
(long sleeptime) Sets the interval for inpection of the instance to inspect in ms.toString()
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, yield
-
Field Details
-
VERBOSE
protected static final boolean VERBOSEVerbosity constant.- See Also:
-
m_buffer
Fast buffer to store recorded fiels. -
m_changeListeners
The listeners on this recorder. -
m_fields
The fields to inspect on the instance. -
m_interval
protected long m_intervalThe time - interval between to inspections of the Object. -
m_toinspect
The instance to inspect.
-
-
Constructor Details
-
ObjectRecorder
Creates an instance that will inspect the given Object in the given time interval.- Parameters:
toinspect
- the instance to inspect.interval
- the interval of inspection in ms.
-
-
Method Details
-
addChangeListener
Adds a change listener that will be informed about new recordings of the inspected instances.- Parameters:
x
- the change listener that will be informed about new recordings of the inspected instances.
-
equals
-
fireChange
protected void fireChange()Informs the listeners about a change of this instance. -
getAttributeHistory
The History returned by this Method represents the past of the field specified by attributeName. It starts from low index with the newest values taken from the inspected Object and ends with the oldest.- Parameters:
attributeName
- field name of the internal instance to inspect.- Returns:
- An array filled with TimeStampedValues that represent the past of the last inspections of the field with attributeName.
- Throws:
NoSuchAttributeException
- if the attribute / field described by the given argument does not exist on the internal Object to instpect.- See Also:
-
getAttributeNames
Returns the names of the fields to inspect.- Returns:
- the names of the fields to inspect.
-
getInspected
Returns the inspected instance.- Returns:
- the inspected instance.
-
getLastValue
Returns the last recorded value taken from the given field along with the time stamp identifying the time this value was recored.- Parameters:
fieldname
- the field whose value was recorded.- Returns:
- the last recorded value taken from the given field along with the time stamp identifying the time this value was recored.
- Throws:
NoSuchAttributeException
- if no such field exists on the Object to inspect.
-
getRingBuffer
Returns the internal fifo buffer that stores theObjectRecorder.ObjectInspection
instances that have been done.- Returns:
- the internal fifo buffer that stores the
ObjectRecorder.ObjectInspection
instances that have been done.
-
hashCode
public int hashCode() -
inspect
public void inspect()Makes a record of the state of the object specified in the constructor. The new record is stored in a RingBuffer and contains all retrieveable values of the Object specified in the constructor. Reflection is used to get the values. If a field is private it's value is tried to be taken from the Object by invoking a getter - method conform with the bean - specification: The name of the method has to be "get" followed by the name of the field with first letter upper case. -
removeChangeListener
Removes the given listener for changes of the inpsected instance.- Parameters:
x
- the listener to remove.
-
run
public void run() -
setHistoryLength
public void setHistoryLength(int length) Define the amount of recorded states of the Object to inspect that remain in memory.Default value is 100.
- Parameters:
length
- the amount of recorded states of the Object to inspect that remain in memory.
-
setInterval
public void setInterval(long sleeptime) Sets the interval for inpection of the instance to inspect in ms.- Parameters:
sleeptime
- the interval for inpection of the instance to inspect in ms.- See Also:
-
toString
-