Adrian Sampaleanu wrote:
> Hi all,
> 
> I suppose you are probably aware of what's going on with AspectJ 
> development, but if not, this post might be interesting:
> 
> http://www.nabble.com/%40DeclareMixin-support-td22378859.html

Well, to add things like Named in Qi4j you would rather do it by simply 
having the Composite extend that interface:
interface MyComposite extends Named, Composite {}

This is just basic Composite Oriented Programming, and is not a feature 
but a principle.

If you don't like having to add "Named" everywhere, I suggest doing a 
base interface which acts sort of like a pointcut:
interface DomainObject extends Named {}

interface MyComposite1 extends DomainObject, Composite {}
interface MyComposite2 extends DomainObject, Composite {}

If you now want to add ACL to all DomainObjects, change it to:
interface DomainObject extends Named, ACL {}

and both Composites will get it.

This gets you very very far.

We have, however, also talked about doing more dynamic mixin additions, 
in the thread about @Abilities, which solves point 2) in his blog post, 
as there can then be two methods with the same name, but since they 
belong to different interfaces they will do different things.

I would like to also note that @DeclareMixins("SomeC*") is rather 
horrible. If you refactor SomeClass to AnyClass it will all of a sudden 
not be Named anymore. Yeuch...

/Rickard

_______________________________________________
qi4j-dev mailing list
[email protected]
http://lists.ops4j.org/mailman/listinfo/qi4j-dev

Reply via email to