Class ObjectRecorder

java.lang.Object
java.lang.Thread
info.monitorenter.reflection.ObjectRecorder
All Implemented Interfaces:
Runnable

public class ObjectRecorder extends Thread
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
  • Field Details

    • VERBOSE

      protected static final boolean VERBOSE
      Verbosity constant.
      See Also:
    • m_buffer

      Fast buffer to store recorded fiels.
    • m_changeListeners

      protected EventListenerList m_changeListeners
      The listeners on this recorder.
    • m_fields

      protected Field[] m_fields
      The fields to inspect on the instance.
    • m_interval

      protected long m_interval
      The time - interval between to inspections of the Object.
    • m_toinspect

      protected Object m_toinspect
      The instance to inspect.
  • Constructor Details

    • ObjectRecorder

      public ObjectRecorder(Object toinspect, long interval)
      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

      public void addChangeListener(ChangeListener x)
      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

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
      See Also:
    • fireChange

      protected void fireChange()
      Informs the listeners about a change of this instance.

    • getAttributeHistory

      public TimeStampedValue[] getAttributeHistory(String attributeName) throws NoSuchAttributeException
      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

      public String[] getAttributeNames()
      Returns the names of the fields to inspect.

      Returns:
      the names of the fields to inspect.
    • getInspected

      public Object getInspected()
      Returns the inspected instance.

      Returns:
      the inspected instance.
    • getLastValue

      public TimeStampedValue getLastValue(String fieldname) throws NoSuchAttributeException
      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 the ObjectRecorder.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()
      Overrides:
      hashCode in class Object
      See Also:
    • 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

      public void removeChangeListener(ChangeListener x)
      Removes the given listener for changes of the inpsected instance.

      Parameters:
      x - the listener to remove.
    • run

      public void run()
      Specified by:
      run in interface Runnable
      Overrides:
      run in class Thread
      See Also:
    • 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

      public String toString()
      Overrides:
      toString in class Thread
      See Also: