Annotations will be used as the metadata model.
We know how to do annotations in jdk1.4
Some things that need changing/accounting for:
* The annotations need to be processed *BEFORE* the class is loaded (hence ClassData Model)
* The ClassData model needs to include annotation overrides from the jboss-aop.xml
* The MicroContainer needs to override the annotations per instance
We need to be able to easily determine that an annotation introduces a dependency.
This can easily be achieved by an annotation on the annotation, e.g.
@Security(domain="default")
We need to know "default" is dependency on the security domain, so we annotate the
annotation.
@Depends (value="domain"}
public @interface{String domain;}
The @Depends annotation can be extended to introduce extra configuration
where the configuration needs special processing, e.g. mapping the name
jboss.security:service=SecurityDomain,name=default
Other considerations:
In the invocation metadata we need to differentiate real metadata like the
security annotation and invocation attachments like the cluster view.
Annotations: Used when we want typed access to policy
Attachments: Used when an invocation has generic untyped data that is not policy
Things TODO:
We need to verify serialization of annotations between jdk1.4 and java5
Bill needs to fix the problem where a class is compiled with our jdk1.4 style
annotations which are not loaded properly running under java5
Other possiblities:
Add our annotation processing to RetroWeaver