[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
RE: [aspectj-users] Introduction on more than just one class
|
The method suggested below will work in AspectJ-1.0, but is not permitted in AspectJ-1.1. In order to enable truly modular compilation of aspects AspectJ-1.1 doesn't permit performing introduction on a type pattern. The 1.1 answer is to use an interface combined with declare parents, i.e.
aspect A {
interface Bar { }
public void Bar.bar() {
System.out.println("An introduced method");
}
declare parents: Foo* implements Bar;
}
This is explained in slightly more detail in the changes file for 1.1,
http://dev.eclipse.org/viewcvs/indextech.cgi/~checkout~/aspectj-home/README-11.html#SINGLE_INTERCLASS_TARGET
-Jim
> -----Original Message-----
> From: Valentin Crettaz [mailto:Valentin.Crettaz@xxxxxxx]
> Sent: Wednesday, March 19, 2003 2:08 AM
> To: aspectj-users@xxxxxxxxxxx
> Subject: Re: [aspectj-users] Introduction on more than just one class
>
> Yes, there is a very simple way of doing this using type patterns.
> You are not very far from the solution :)
>
> The bar() method can be introduced in the Foo1, Foo2, and Foo3 types using
> the following introduction
>
> public void (Foo*).bar() {
> System.out.println("An introduced method");
> }
>
> Consider reading the following sections about type patterns in the AspectJ
> programming guide:
> http://dev.eclipse.org/viewcvs/indextech.cgi/~checkout~/aspectj-
> home/doc/pro
> gguide/apas02.html
> http://dev.eclipse.org/viewcvs/indextech.cgi/~checkout~/aspectj-
> home/doc/pro
> gguide/apbs02.html#d0e5092
>
> Good luck
>
> Val
>
> ----- Original Message -----
> From: <PETER.FRIESE@xxxxxxxxxxxxx>
> To: <aspectj-users@xxxxxxxxxxx>
> Sent: Wednesday, March 19, 2003 10:59 AM
> Subject: [aspectj-users] Introduction on more than just one class
>
>
> > Hi,
> >
> > I want to introduce a method on more than one class - is there a way to
> do
> > this?
> >
> > Sample code (this is what I can do now):
> >
> > --------------------- 8< --------------------------
> > public aspect FooAspect {
> > public void Foo1.bar() {
> > System.out.println("An introduced method");
> > }
> > }
> >
> > public class Foo1 {
> > }
> > --------------------- >8 --------------------------
> >
> > Sample code (what I would like to do):
> >
> > --------------------- 8< --------------------------
> > public aspect FooAspect {
> > public void [Foo1, Foo2, Foo3].bar() {
> > System.out.println("An introduced method");
> > }
> > }
> >
> > public class Foo1 {
> > }
> >
> > public class Foo2 {
> > }
> >
> > public class Foo3 {
> > }
> > --------------------- >8 --------------------------
> >
> > TIA,
> > Peter
> > _______________________________________________
> > aspectj-users mailing list
> > aspectj-users@xxxxxxxxxxx
> > http://dev.eclipse.org/mailman/listinfo/aspectj-users
> >
>
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> http://dev.eclipse.org/mailman/listinfo/aspectj-users