AspectJ and method overriding [message #596164] |
Wed, 11 July 2007 09:45 |
Mickael GAUVIN Messages: 39 Registered: July 2009 |
Member |
|
|
Hello,
I'm working on a project where OSGi mecanism is hidden in Aspects.
I have somme problem with methods overriding. Currently I have 2
interfaces A and B, B inheriting from A. I have the interface
ServiceListener provided by OSGi framework. All objects implementing A
and B must implement ServiceListener so they must have the method
serviceChanged(ServiceEvent event) implemented.
Here it is my two aspects :
aspect A {
declare parents: A implements ServiceListener;
public void A.serviceChanged(ServiceEvent evt) {
// Beginning of A treatment
...
// End of A treatment
}
}
aspect B {
declare parents: B implements ServiceListener;
public void B.serviceChanged(ServiceEvent evt) {
// Beginning of A treatment
...
// End of A treatment
// Beginning of B treatment
...
// End of B treatment
}
}
As I wish B execute the same code of A (its parent), I'm obliged to
rewrite all the A treatment. To avoid this useless recopy I wanted to
use the key word "super" to obtain this B aspect:
aspect B {
declare parents: B implements ServiceListener;
public void B.serviceChanged(ServiceEvent evt) {
-> super.serviceChanged(evt);
// Debut traitment B
...
// Fin traitement B
}
}
but that code doesn't work, surely because here, super is interpreted as
the aspect B parent that is Object and not as the B parent that is A.
If you have any help for this problem, I will be happy.
Thanks
Mickaël Gauvin
|
|
|
Powered by
FUDForum. Page generated in 0.02764 seconds