Release Notes v0.3.1
- Added 'wraps' clause. Bindings can be defined using 'wraps' clause in class declaration. Wrapper recycing mechanism is generated. Wrappee object is accessible through field $wrappee.
- Added 'new'-operator for Caesar classes.
- Added flexible aspect deployment mechanism. New deployment strategies are provided besides thread based deployment: aspects can be deployed on entire JVM process or to a remote process.
- Added CAESAR_HOME variable to the Plugin, which can be used in CLASSPATH variables.
- The type checking according Family polymorphism rules is not implemented. Currently the type checks are too strong and therefore the source code must be supplemented by numerous type casts.
- It is not possible for Caesar classes to inherit from pure Java classes. Nevertheless Caesar classes can implement Java interfaces.
- Caesar does not support abstract classes, so abstract methods must be replaced with methods with empty bodies.
- Class scoping does not work in some cases, therefore in some places, for example in method signatures, classes should be specified by fully qualified names.
- Direct access to data members of another object is not possible, even if this object is of the same class or it is the outer object. Access to inherited data members is possible.
- Constructors of Caesar classes cannot take parameters. So more sophisticated initialization must be achieved through additional initializing method call after the object is created.
- Some language constructs are currently expressed by a temporary syntax. Access to outer object is achieved through variable $outer.
- Pointcut language cannot refer to Caesar type system but rather to the underlying generated Java classes and interfaces.