[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [ajdt-dev] passing context to advices
|
Ah, thanx Matthew, now i see..
so my code won't work then, because build and getItems have completely different parameters......
so how can i get the arguments of the withincode call? because those are the ones i need......
I assume if i use static JointPOint info to get Arguments, i will still get argtuments for the pointcut
associated with call...
can you give me some more hints?
regards
marco
On 3/15/06, Matthew Webster <matthew_webster@xxxxxxxxxx> wrote:
Marco,
Yoy can't use call & execution together
because that won't match anything. Using call & withincode is fine
but to understand why it doesn't match we need to know the signatures of
both getItems() and build(). The pointcut you end up with for your around
advice is:
call
(* com.Manager.getItems(..)) && withincode(* com.ProcessorBean.build(..,DTO))
&& args(demand);
So we are looking for a call to getItems()
that takes a single argument of type DTO within a method build() that has
at least one argument the last of which is also a DTO (because args goes
with call not withincode) e.g.
private void build
(DTO dto) {
Collection
items = bean2.getItems(dto);
}
public
Collection getItems (DTO dto) {
return null;
}
Matthew Webster
AOSD Project
Java Technology Centre, MP146
IBM Hursley Park, Winchester, SO21 2JN, England
Telephone: +44 196 2816139 (external) 246139 (internal)
Email: Matthew Webster/UK/IBM @ IBMGB, matthew_webster@xxxxxxxxxx
http://w3.hursley.ibm.com/~websterm/
Please respond to AspectJ
Development Tools developer discussions <ajdt-dev@xxxxxxxxxxx>
Sent by:
ajdt-dev-bounces@xxxxxxxxxxx
To:
AspectJ Development
Tools developer discussions <ajdt-dev@xxxxxxxxxxx>
cc:
Subject:
Re: [ajdt-dev]
passing context to advices
Use "call" or "execution" instead
of "withincode". Withincode matches join points within the context
of the function block, but you want to match on invocations of the function.
Dean
Marco Mistroni wrote:
hello all,
i have following code which shows, in ajdt, no cross references..
pointcut getItems() :
call (* com.Manager.getItems(..));
pointcut build(DTO demand) :
withincode(* com.ProcessorBean.build(..,DTO))
&& args(demand);
Object around(DTO demand) :
(build(demand) && getItems()){
System.err.println("We are there...");
return proceed(demand);
}
if instead i omit the DTO parameter (menaing, i don't pass as argument
of my build pointcut, everything
works fine
anyone can tell me what's wrong? more likely i am using wrong syntax.....
thanx and regards
marco
_______________________________________________
ajdt-dev mailing list
ajdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ajdt-dev
--
Dean Wampler, Ph.D.
dean at aspectprogramming.com
http://www.aspectprogramming.com
http://www.contract4j.org
I want my tombstone to say:
Unknown Application Error in Dean Wampler.exe.
Application Terminated.
[Okay] [Cancel]
_______________________________________________
ajdt-dev mailing list
ajdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ajdt-dev
_______________________________________________
ajdt-dev mailing list
ajdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ajdt-dev