Thanks Dean.
With your suggested pointcut definition, I get a compilation error --
name pattern expected.
I don't want the object of the class, what I want is an instance of the
Profiling annotation. I have tried the below but didn't execute my
Advice.
@Pointcut("call(* java.sql.Statement+.execute*(..)) &&
withincode(@com.xyz.Profiling * *(..)) && @annotation(profiling)")void
profilingSQLExecute(com.xyz.Profiling profiling) {}
Dipak
________________________________
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Dean Wampler
Sent: Thursday, January 24, 2008 3:11 PM
To: [email protected]
Subject: Re: [aspectj-users] How to access "withincode" type
I presume you want the object of the class that implements
"makeProfileDataBaseCall". I'll call the interface that declares it
"ProfileMaker", since I don't know what it's really called. Try this
pointcut:
@Pointcut("call(* java.sql.Statement+.execute*(..)) &&
withincode(@com.xyz.Profiling * ..ProfileMaker+.*(..)) &&
target(profileMaker) && @annotation(profiling)")
void profilingSQLExecute(ProfileMaker profileMaker, com.xyz.Profiling
profiling) {}
(I forgot what you called the pointcut method before, so I just made up
a name). Note that you use "target()" and "@annotation" to bind the
object and annotation, respectively, to variables declared in the
method. These variables will then be available in the advice, so you can
get the value of the annotation, etc. The advice method would require
the same argument signature.
Notice also that I used "..ProfileMaker+" to refer to any subclass
(i.e., implementer) of the interface and I used ".." before the name,
which is the package wildcard with arbitrarily-deep nesting.
HTH,
dean
On Jan 24, 2008, at 12:48 PM, Parmar, Dipak (IS Consultant) wrote:
Here is my pointcut definition
@Pointcut("call(* java.sql.Statement+.execute*(..)) &&
withincode(@com.xyz.Profiling * *(..)) ")
Here is my sample mathod
@Profiling(type=ProfilingType.JDBC)
public void makeProfileDataBaseCall() {
.............
CallableStatement statement = connection.prepareCall("{
call PACKAGE.PROCEDURE(?) }");
statement.execute();
........................
}
How I can get an instance of "makeProfileDataBaseCall" method and its
annotation? "joinPoint.getSignature()" gives the "execute" method but
not "makeProfileDataBaseCall" method.
If this can't be possible, then is there a way to re-write the above
pointcut that limit only JDBC type of profiling.
Thanks,
DP
_______________________________________________
aspectj-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/aspectj-users
Dean Wampler, Ph.D.
dean at objectmentor.com
http://www.objectmentor.com
See also:
http://www.aspectprogramming.com AOP advocacy site
http://aquarium.rubyforge.org AOP for Ruby
http://www.contract4j.org Design by Contract for Java5
_______________________________________________
aspectj-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/aspectj-users