Check out the new USENIX Web site.

Figure 2 - Interface for Kava MetaObject

public interface IMetaObject {

  public void beforeExecuteMethod(IExecutionContext context) 
  public void afterExecuteMethod(IExecutionContext context);
   /* called when a method is executed (including constructor/finalizer) */

  public void beforePutField(IFieldContext context);
  public void afterPutField(IFieldContext context);
   /* called when a field is accessed */

  public void beforeGetField(IFieldContext context);
  public void afterGetField(IFieldContext context);
   /* called when a field is read */

  public void beforeInvoke(IInvocationContext context);
  public void afterInvoke(IInvocationContext context);
   /* called when a method is invoked (including initialser */

  public void beforeException(IExceptionContext context);
  public void afterException(IExceptionContext context);
  /* called when an exception is thrown and caught */

}

Return to paper