[aspectwerkz-user] Custom annotations with jdk5 and ElementType.TYPE?
"AVERY, Neil, FM" <[email protected]> Tue, 5 Jul 2005 15:16:50 +0100
| Newsgroups | gmane.comp.java.aspectwerkz.user |
|---|---|
| Message-ID | <6C6F6659FF768141BE4E4945FA71AE0E2283FC11@lon0349xns.fm.rbsgrp.net> |
Thanks Alex,
(what a silly mistake I made) the test now works, however..what I would
really like to be able to do is use a TYPE annotation to bind an aspect to a
class instance. (the same as if I were using an interface to bind aspects).
Config:
<aspect class="WithinAspect" deployment-model="perInstance">
<pointcut name="withinInvocation" expression="execution(*
@org.neo.swarm.interceptor.within.InterceptWithin.*(..))"/>
<advice name="execute" type="around" bind-to="withinInvocation"/>
</aspect>
Annotation:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface InterceptWithin {
}
Applied to this class:
@InterceptWithin
public class SomeComponent {
public String doStuff(){
return "stuff";
}
}
Is this possible or is my config broken again? AW doesn't like to formatting
of the XML and blows up with the error blow
Many thanks
Neil.
Error....
AspectWerkz - INFO - Pre-processor
org.codehaus.aspectwerkz.transform.AspectWerkzPreProcessor loaded and
initialized
org.codehaus.aspectwerkz.exception.DefinitionException: expression is not
well-formed [execution(*
@org.neo.swarm.interceptor.within.InterceptWithin.*(..))]: Encountered
"@org.neo.swarm.interceptor.within.InterceptWithin" at line 1, column 13.
Was expecting one of:
<METHOD_CLASS_PATTERN> ...
"(" ...
at
org.codehaus.aspectwerkz.expression.ExpressionInfo.<init>(ExpressionInfo.jav
a:96)
-----Original Message-----
From: Alexandre Vasseur [mailto:[email protected]]
Sent: 05 July 2005 12:58
To: [email protected]
Subject: Re: [aspectwerkz-user] Custom annotations with jdk5
Hi Neil
Use the full qualified name of the annotation in the pointcut expression (I
guess this one is in some package)
Alex
On 7/5/05, AVERY, Neil, FM <[email protected]> wrote:
> Hi All,
> Im trying to get a simple testcase working where I define my own
> aspect which is driven by an Annotation Ive defined - however I cannot
> get it to work. My component does get aspectised in the test case.
>
> Is there something Im doing wrong in my pointcut definition?
>
> The aspect:
> public class WithinAspect {
>
> public Object execute(JoinPoint jp) throws Throwable{
> System.err.println("within got Aspect called with:" + jp);
> return jp.proceed();
> }
> }
>
> The component being Aspectised:
> public class SomeComponent {
> @InterceptWithinInvocation
> public String doStuff(){
> return "stuff";
> }
> }
>
> Config awerkz-aop.xml:
> <aspectwerkz>
> <system id="test">
> <package name="org.neo.swarm.interceptor.within">
>
> <aspect class="WithinAspect"
> deployment-model="perInstance">
> <pointcut name="withinInvocation"
> expression="execution(@InterceptWithinInvocation * *.doStuff(..))"/>
> <!-- this works <pointcut name="withinInvocation"
> expression="execution(* *.doStuff(..))"/> -->
>
> <advice name="execute" type="around"
> bind-to="withinInvocation"/>
> </aspect>
> </package>
> </system>
> </aspectwerkz>
>
> The annotation:
> @Retention(RetentionPolicy.RUNTIME)
> @Target(ElementType.METHOD)
> public @interface InterceptWithinInvocation {
> }
>
> The test:
> public void testWithin() throws Exception {
> SomeComponent component = new SomeComponent();
> component.doStuff();
> }
>
>
> **********************************************************************
> *************
> The Royal Bank of Scotland plc. Registered in Scotland No 90312.
Registered Office: 36 St Andrew Square, Edinburgh EH2 2YB.
> Authorised and regulated by the Financial Services Authority
>
> This e-mail message is confidential and for use by the addressee only.
> If the message is received by anyone other than the addressee, please
> return the message to the sender by replying to it and then delete the
> message from your computer. Internet e-mails are not necessarily
> secure. The Royal Bank of Scotland plc does not accept responsibility
> for changes made to this message after it was sent.
>
> Whilst all reasonable care has been taken to avoid the transmission of
> viruses, it is the responsibility of the recipient to ensure that the
> onward transmission, opening or use of this message and any
> attachments will not adversely affect its systems or data. No
> responsibility is accepted by The Royal Bank of Scotland plc in this
> regard and the recipient should carry out such virus and other checks
> as it considers appropriate.
>
> Visit our websites at: http://www.rbs.co.uk/CBFM
> http://www.rbsmarkets.com
>
> **********************************************************************
> **********
>
>