JBAOP-91 - Annotations
adrian.brock Apr 26, 2006 11:12 AMThis is the first of a few threads I'm going to start so we can
create a more detailed roadmap for what is required in the
JBoss MC/AOP integration.
i.e. there should be more detailed tasks within JIRA.
I'll start with the hardest one. :-)
I don't expect all of this to get done for JBoss MC-2.0.0M1
This thread is about annotations.
http://jira.jboss.com/jira/browse/JBAOP-91
Currently there are 5 sources of annotations:
* The Java class file, i.e. put there by the compiler
* Specifying an annotation in some -aop.xml
* Specifying an annotation in a jboss mc deployment instance override
* The scoped MetaData repository
* annotationc (are we keeping this now we have JBoss Retro?)
I think there are 5 implementations of the annotation stuff, some share
implementation details, others don't.
* Javassist (javassist.bytecode.annotation.AnnotationImpl)
* AOP
* JBoss Retro (uses Javassist)
* ClassInfo in the container project (not currently used by the MC/AOP integration)
* MetaData Repository
I think Hibernate has some stuff as well?
Issues:
1) Single model
We need a single model for this stuff.
The biggest issue is that the full solution requires an understanding
of the classloading model:
http://www.jboss.com/index.html?module=bb&op=viewtopic&t=77746
http://jira.jboss.com/jira/browse/JBMICROCONT-31
I don't expect this to get done for 2.0.0M1
2) Tests
We need tests of defining annotations in each source.
This includes deployment time annotations that for example
add introductions, but also runtime annotations (see 3 below)
3) MetaData repository
Part of the metadata repository is to be able to override annotations
at the request/thread level. e.g. override some configuration option
like transaction timeout for a particular request or thread.
There are no current tests for this.
I couldn't find the original discussion on this
(there are too many threads on the metadata repository :-),
but this obviously requires some extra meta-annotation. e.g. the
security-domain annotation should only be overridable at deployment time,
not by the client code invoking the service. :-)
Additionally, it should be possible for a remote client to do this
override with the annotations getting marshalled with the
remote request and used on the server.
4) The Microcontainer needs extra metadata so it can override
field, constructor, method, parameter, etc. annotations for an instance.
I don't know what support aop has already for this?
Again these need testing.