I forgot to add that although I have not yet looked at making Byteman
work over javassist instead of ASM (thanks Scott for raising the IRA
issue) I did find and fix a bug in javassist when implementing
overriding method injection. So, there has been some payoff to the
javassist project.
regards,
Andrew Dinn
-----------
On 12/01/2009 06:10 PM, Andrew Dinn wrote:
Byteman release 1.2.0 has now been released and is available from
the
project downloads page
http://www.jboss.org/byteman/downloads.
This release is primarily a feature upgrade extending the Byteman rule
language to support two new types of rules:
interface rules
-- rule code is injected through an interface into all classes which
implement the interface
overriding rules
-- rule code is injected down class hierarchies into a both the target
class's method and into the methods of subclasses which provides an
overriding implementation
These two new modes of injection may be used in isolation but they also
work in combination. For example, the following rule adds trace code to
the run method of every implementor of Runnable and to every overriding
implementation, effectively tracing every run() operation in the JVM.
RULE trace any Runnable.run() call
INTERFACE ^java.lang.Runnable
METHOD run()
IF TRUE
DO System.out.println("Running runnable " + $0 +
" " + $0.getClass().getName())
ENDRULE
Full details of the syntax and operation of these two new rule types are
included in the 1.2.0 programmers guide.
The release also includes several bug fixes including, most notably, a
much more reliable implementation of tool bytemancheck, which performs
offline rule syntax and type checking. Release notes are available from
the project downloads page
http://www.jboss.org/byteman/downloads.