Component Monitoring

Yan provides a simple implementation of component monitoring.

Monitor Events

The following events can be monitored currently:

  • Before Constructor
  • After Constructor
  • Constructor Failed
  • Before Method
  • After Method
  • Method Failed
  • Before Java Bean Getter
  • After Java Bean Getter
  • Java Bean Getter Failed
  • Before Java Bean Setter
  • After Java Bean Setter
  • Java Bean Setter Failed

Several monitor interfaces are available. The most important three monitor interfaces are:

Monitor Individual Component

Granularity of Yan's monitor support is as fine as the component level. You can add monintoring support for any individual component you want.
For example:

ComponentMonitor monitor = ...;
Monitors monitors = new Monitors(monitor);
Component monitored = monitors.ctor(MyClass.class);
  • ComponentMonitor is the monitor object. It is notified when any of the monitored events happens.
  • new Monitors(monitor) creates a Monitors object that helps creating monitored components.
  • monitors.ctor(MyClass.class) creates a Component based on the constructor of MyClass and monitored by monitor.

Container That Monitors

For convenience, the MonitoringContainer class automatically monitors constructors and methods registered in it.
For example:

ComponentMonitor monitor = ...;
Container yan = new MonitoringContainer(monitor);
yan.registerConstructor(A.class);
yan.registerStaticMethod(B.class, "newInstance");
  • new MonitoringContainer(monitor) creates a Container that will automatically monitor constructors and methods.
  • A.class is registered using constructor, it is automatically monitored by the container.
  • B.class is registered using a static method, it is also automatically monitored.

Empty Monitor

NopComponentMonitor is an empty implementation of ComponentMonitor. It can be used as a base class. Subclasses can then only override methods of interest.

Monitor Queue

ComponentMonitorQueue class encapsulates a queue of various monitors such as ComponentMonitor, CtorMonitor, MethodMonitor. The following code creates a ComponentMonitor object that distribute events to every monitor object in the queue:

CtorMonitor cmonitor = ...;
MethodMonitor mmonitor = ...;
ComponentMonitorQueue queue = new ComponentMonitorQueue()
  .addCtorMonitor(cmonitor)
  .addMethodMonitor(mmonitor);
Component Monitor monitor = queue.getComponentMonitor();

Labels

 
(None)