AspectJ and method overriding [message #70145] |
Wed, 11 July 2007 05:45  |
Eclipse User |
|
|
|
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
|
|
|
Re: AspectJ and method overriding some errors in my Aspects Name [message #70165 is a reply to message #70145] |
Wed, 11 July 2007 08:14  |
Eclipse User |
|
|
|
Escuse me, some errors exist in my code : I have replace my aspects A
and B name respectively by MyAspectA and MyAspectB to avoid confusing
with my interfaces
aspect MyAspectA {
declare parents: A implements ServiceListener;
public void A.serviceChanged(ServiceEvent evt) {
// Beginning of A treatment
...
// End of A treatment
}
}
aspect MyAspectB {
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
}
}
|
|
|
Re: AspectJ and method overriding some errors in my Aspects Name [message #596174 is a reply to message #70145] |
Wed, 11 July 2007 08:14  |
Eclipse User |
|
|
|
Escuse me, some errors exist in my code : I have replace my aspects A
and B name respectively by MyAspectA and MyAspectB to avoid confusing
with my interfaces
aspect MyAspectA {
declare parents: A implements ServiceListener;
public void A.serviceChanged(ServiceEvent evt) {
// Beginning of A treatment
...
// End of A treatment
}
}
aspect MyAspectB {
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
}
}
|
|
|
Powered by
FUDForum. Page generated in 0.04130 seconds