Hi
·
I have already tried the first point but we are
using the tag libraries so it fails. Otherwise this works for the code in the
scriptlets.
·
Second point I tried but it’s not solving our
problem.
public aspect Example{
pointcut requiredField() :
execution(* encompass.studymaintenance.beans.*.*get*(..));
before() : requiredField() {
System.out.println("entering: " + thisJoinPoint);
System.out.println(" at: " + thisJoinPoint.getSourceLocation());
}
But it was not able to serve my purpose as I want the
beans to return formatted text to the JSP using Tag Libraries. So I need to
apply advice only when it's called from the JSP tag libraries and not from
anywhere else. With the execution approach it will execute for all the calls to
the getters of the bean. But I want the advice to execute only when called from
jsp.
Also I tried to get the source location with the
execution approach but it's not giving the correct value from where the joint
point is called.
Will appreciate if someone can help me.
Thanks
Saurabh
---------------------------------------------------------------------------------------------------------------------------------------------
>Hi,
>
>First, it looks like you are compiling your jsps
separately from your
>aspects, and then recompiling them with your
aspects. Not exactly
>sure how jspc works, if it produces Java source or
Java byte code.
>Regardless, you probably want to put the jsp code on
your in path so
>that ajc knows to apply aspects to it.
>
>Second, try using execution, not call. This will
pick out the join
>point inside the called method, not at the method
that is doing the
>calling. If you do this, then you may not even need
to put your jsps
>through ajc at all since it is only the beans that
should be affected
>by the advice. Of course, this implies that *any*
time one of these
>bean get methods are called, you want the advice to
run (in your
>description you say that you only want it to run when
called by a
>jsp).
>
>On Fri, Jan 23, 2009 at 4:35 AM, Saurabh Khattar,
HCL-Industry
>Solutions <ksaurabh@xxxxxx> wrote:
> Hi all
>
>
>
> I am trying to implemenet AspectJ in my application.
>
>
>
> My application have package containing all the
beans( mypackage.beans). What
> I want to do is whenever I the getters of the beans
are called from the jsp
> it should call the advice and return the formatted
value.
>
>
>
> What I have done is:
>
>
>
> STEP1: Created an aspect :
>
>
>
> public aspect Example{
>
>
>
> pointcut requiredField() :
call(*mypackage.beans.*get*(..));
>
> before() : requiredField() {
>
> System.out.println("entering: " +
thisJoinPoint);
>
> System.out.println(" at: " +
thisJoinPoint.getSourceLocation());
>
> }
>
> }\
>
>
>
> STEP 2: I am usning ant in the project to build. So
I first precompiled by
> jsp through JspC. And then I am trying to compile
these jsp servlets
> through iajc.
>
>
>
> <iajc source="${javac.source}"
>
>
deprecation="false"
>
>
debug="${javac.debug}"
>
> debuglevel =
> "${javac.debuglevel}"
>
>
destdir="@{output.dir}"
>
>
classpathref="@{classpath.pathref}"
>
> fork =
"true"
>
> maxmem
="512m">
>
> <sourceroots>
>
> <path
refid="@{src.pathref}" /> <!—path for
> the Java source-->
>
> <path
location="jasper_src" /> <!--path
> for the jsp servlets source-->
>
> </sourceroots>
>
> </iajc>
>
>
>
>
>
> My problem is that I am using JSTL in my JSP's and
whenever I am fetching
> value from my bean in my jsp I am using tags rather
than writing java code
> in scriptlets to fetch the data. And the jsp
compiler converts these tags
> into :
>
>
>
>
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate("${bean.value}",
> java.lang.Object.class,
(PageContext)_jspx_page_context, null, false));
>
>
>
> This function gets the value from the bean by
calling the getter function
> only but all this is done internally.Due to this the
jointpoint is not
> applied here. Also this functions gets the vale from
the bean at runtime so
> I am not able to identify the jointpoint.
>
>
>
> Kindly let me know how to overcome this problem and
my advice is called
> whenever jsp gets the value from bean.
>
>
>
> Thanks in Advance.
>
>
>
> Saurabh