That's the right idea, but I believe
call( @MyAnnotation * *.new(..) )
results in a syntax error since "@MyAnnotation * *" is not a
typepattern.
Wes
------------Original Message------------
From: Scott <aspectj-users@xxxxxxxxxxx>
To: aspectj-users@xxxxxxxxxxx
Date: Thu, Apr-20-2006 1:03 PM
Subject: Re: [aspectj-users] AW: Pointcut on a constructor with
acustom@Annotation Moritz,
Have you tried it this way
yet?
@AfterReturning(pointcut = "call( @MyAnnotation * *.new(..) )",
returning = "obj") public void beforeConstructor(Object obj) {
System.out.println(obj); }
-Scott
=========================================
On 4/20/06, Moritz
Post <moritzpost@xxxxxx>
wrote:
Hello
Ron
> Please take a look at this FAQ entry: > http://www.eclipse.org/aspectj/doc/released/faq.html#q:adviseconstructors > >
Basically, you can't use @target for the call to a constructor:
there > isn't > one. You could use @target for execution of the
constructor or you could > bind the returned object with after
returning advice and then use > reflection > to test for an
annotation on the object.
If I was only concerned with the
constructor, I could use an @AfterReturning advise like the following to
get the newly created object:
@AfterReturning(pointcut = "call(*
.new(..))", returning = "obj") public void beforeConstructor(Object obj)
{ System.out.println (obj); }
This
return the new object in the "obj" Object.
But my problem is the
combination of the above with an @Annotation. The pointcut should only
kick in if the class has a specific annotation.
> Hallo
Again > > Sorry, I hit send accidentally. :( > >
> Hallo Mailingliste > > > > I am struggling to create
a proper pointcut on a constructor. I want to > > catch all
creations of an object which is annotated with a custom > >
annotation. Like: > > > > @MyAnnotation > >
public class TheClass { > > > > public
TheClass { > > } > > > > } >
> > > So whenever a classlass is instantiated I want to get the
instance of > that > class (having the MyAnnotation
annotation). > > Therefore I developed the following
Pointcut: > > So I continue here with the mentioned
pointcut: > > @AfterReturning(pointcut = "call(* .new(..))
&& @target(MyAnnotation)", > returning =
"obj") > public void objectCreation()
{ > } > > The problem here is, that the
combination of the call(* .new(..)) and the > @target(MyAnnotation)
does not work. I can either remove the @target and > it > works
fine or I can remove the call(..) and let the @target be the key. >
But > together those two do not work. > > Am I doing
something completely wrong? Or is there another suggested way >
to > intercept a newly created object? > > Any help is
appreciated > > Regards > Moritz
Post
Regards Moritz
Post
_______________________________________________
aspectj-users mailing list aspectj-users@xxxxxxxxxxx https://dev.eclipse.org/mailman/listinfo/aspectj-users
_______________________________________________
aspectj-users mailing list aspectj-users@xxxxxxxxxxx https://dev.eclipse.org/mailman/listinfo/aspectj-users
|