Logo
StartDownloadsDocumentationPublicationsContactCommunityDevelopers

0.8.5M1 Release Notes

Important upgrade information:

If you are updgrading from a version earlier then:

  • 0.8.5x: Make sure to alter all your existing aspects and connectors since four keywords have changed for compliance with AspectJ’s terminology. See below.
  • 0.8.x: you have to redo the install procedure as outlined by the installation instructions. The classpath has changed.
  • 0.7.4: the HotSwap 2 startup command is Modified for compliance with Java 1.5 final! See here for the new command.

Latest public build detailed information: Click here. See also for known limitations and bugs of current version.

Major Changes for latest build:

Terminology Compatible with AspectJ

  • replace → around
  • execute → execution
  • calledmethod → thisJoinPoint
  • calledobject → thisJoinPointObject

Stateful Aspects Improvements

  • Strict vs non-strict stateful aspects
//makes sure no intermeidate transitions between t1 and t2 are allowed. Intermediate transitions that are not in the context pointcut are allowed though
TestHook(m1(..args),m2(..args),context(..args)) {
    strict[execution(context)]:
    t1: execution(m1)>t2;
    t2: execution(m2);
}
  • Empty context for strict and complement stateful aspects supported
//makes sure no intermeidate transitions between t1 and t2 are allowed. 
TestHook(m1(..args),m2(..args),context(..args)) {
    strict:
    t1: execution(m1)>t2;
    t2: execution(m2);
}
  • Jumping Stateful Aspects when combined with run-time weaver (optional)

Various language extensions

  • Introduced around throwing advice that allows NOT to rethrow the captured exception
around throwing(IOException ex) {
     Log.log(ex);
     if(shouldRethrow)
        throw ex; //exception is rethrown
     else return null; //exception is captured and not thrown further (not possible with after throwing)
}
  • Introduced around returning advice that allows altering the return value
//this example only works when compiling using: target:1.5 flag; Use wrapper classes (Integer) with 1.4
around returning(int price) {
     return price*discountPercentage;
}
  • Hook polymorphism supported in connectors
  • Subtype pattern matching supported in connector,
logging.TestHook test = new logging.TTestHook(* Serializable.*+(*)); //matches all methods on classes that implement the Serializable interface.

Weaving Technology

  • Finish rebuild of optimized run-time weaver, for benchmarks see AWBench.

Internal Updgrades

  • Moved to Javassist 3
  • Ported testing framework to JUnit
kernel/0.8.5m1.txt · Last modified: 10.06.2005 14:24
SiteMapRecent Content by SSEL ©2002-2005     Latest JAsCo Release: JAsCo 0.8.7 (revised 2005-11-25 16:29:02)