Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] Should this work Aspects.aspectOf(SimpleAroundAspect.class, testC lass) ?

the aspect is singleton (@Aspect without perclause) hence there is no
aspect bound to a particular instance or class.
For such aspect you have to use Aspects.aspectOf(aspectClass)
That said you should have a NoAspectBoundException.
I'll file a bug
Alex



On 10/17/05, AVERY, Neil, FM <Neil.AVERY@xxxxxxxx> wrote:
>
> Ive defined an aspect which successfully gets applied to a testclass,
> however when I try Aspects.aspectOf() using the instance and Aspect class, I
> get the following exception:
>
> org.aspectj.lang.NoAspectBoundException: Exception while
> initializing org.stuff.SimpleAroundAspect: java.lang.NoSuchMethodException:
> org.stuff.SimpleAroundAspect.aspectOf(java.lang.Object)
>  at org.aspectj.lang.Aspects.aspectOf(Aspects.java:68)
>  at
> org.stuff.aspectof.AspectOfTest.testAspectCanBeRetrieved(AspectOfTest.java:28)
>  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
>  at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>  at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>  at java.lang.reflect.Method.invoke(Method.java:585)
>  at junit.framework.TestCase.runTest(TestCase.java:154)
>  at junit.framework.TestCase.runBare(TestCase.java:127)
>  at
> junit.framework.TestResult$1.protect(TestResult.java:106)
>  at
> junit.framework.TestResult.runProtected(TestResult.java:124)
>  at junit.framework.TestResult.run(TestResult.java:109)
>  at junit.framework.TestCase.run(TestCase.java:118)
>  at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478)
>  at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)
>  at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
> Caused by: java.lang.NoSuchMethodException:
> org.stuff.SimpleAroundAspect.aspectOf(java.lang.Object)
>  at java.lang.Class.getDeclaredMethod(Class.java:1909)
>  at
> org.aspectj.lang.Aspects.getPerObjectAspectOf(Aspects.java:143)
>  at org.aspectj.lang.Aspects.aspectOf(Aspects.java:63)
>  ... 14 more
>
>
>
> ASPECT:
> package org.stuff;
>
> import org.aspectj.lang.ProceedingJoinPoint;
> import org.aspectj.lang.annotation.*;
>
> @Aspect
> public class SimpleAroundAspect {
>  public static int callCount = 0;
>
>   @Around("call(* org.stuff.TestClass.*(..))")
>   public Object invoke(ProceedingJoinPoint thisJoinPoint) throws Throwable {
>
>    System.err.println("called onto SimpleAroundAspect count:" +
> callCount++);
>    return thisJoinPoint.proceed();
>   };
> }
> AOP-XML
>
>
> <aspectj>
>  <aspects>
>    <aspect name="org.stuff.SimpleAroundAspect"/>
>  </aspects>
>  <weaver options="-verbose -showWeaveInfo -1.5">
>   <include within="org.stuff.*"/>
>   <include within="org.stuff.*.*"/>
>   <include within="org.stuff.*.*.*"/>
>   <exclude within="org.eclipse.*"/>
>  </weaver>
> </aspectj>
>
>
> TEST:
> package org.stuff.aspectof;
>
> import org.aspectj.lang.Aspects;
> import org.stuff.SimpleAroundAspect;
> import org.stuff.TestClass;
>
> import junit.framework.TestCase;
>
> public class AspectOfTest extends TestCase {
>
>  public void testAspectCanBeRetrieved() throws Exception {
>   TestClass testClass = new TestClass();
>   testClass.doStuff(100);
>   Object aspect = Aspects.aspectOf(SimpleAroundAspect.class);
>   assertNotNull(aspect);
>
> >>>>  aspect = Aspects.aspectOf(SimpleAroundAspect.class, testClass);
>   assertNotNull(aspect);
>  }
> }
>
>
>
>
> ***********************************************************************************
>  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
> ********************************************************************************
>
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>
>
>
>


Back to the top