[aspectwerkz-user] Aspect.aspectOf() behaviour

"AVERY, Neil, FM" <[email protected]> Mon, 17 Oct 2005 14:24:06 +0100
Newsgroups gmane.comp.java.aspectwerkz.user
Message-ID <DDCC15E558B3F142A8F72A157FBB63BE144A6CAA@lon0348xns.fm.rbsgrp.net>
All,
If I apply a 'perTarget' Aspect to a object and call
Aspects.aspectOf(SimpleAroundAspect.class, testClass) then I get an
exception, NoAspectBound...(see below)
 
However, if a prior invocation has occured then Aspects.aspectOf(..) will
return the Aspect that was bound.... 
 
Ideally I would like to get access to an aspect bound to the object instance
regardless of whether or not it has been invoked. Is it possible to
determine/control the behaviour as its the kind of thing that will affect
component lifecycle when interacting with aspects...?
 
Cheers Neil.
 
TEST:
 public void testDifferendAspectInstanceGetsApplied() throws Exception {
  
  TestClass testClass = new TestClass();
>>>//  testClass.doStuff();
  
  Object aspect1 = Aspects.aspectOf(SimpleAroundAspect.class, testClass);
 }
}
THROWS:
org.aspectj.lang.NoAspectBoundException: Exception while initializing
org.stuff.SimpleAroundAspect: java.lang.reflect.InvocationTargetException
 at org.aspectj.lang.Aspects.aspectOf(Aspects.java:66)
 at
org.stuff.aspectof.SimpleAspectTest.testDifferendAspectInstanceGetsApplied(S
impleAspectTest.java:27)
 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(RemoteTestRu
nner.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.reflect.InvocationTargetException
 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 org.aspectj.lang.Aspects.aspectOf(Aspects.java:63)
 ... 14 more
Caused by: org.aspectj.lang.NoAspectBoundException
 at org.stuff.SimpleAroundAspect.aspectOf(SimpleAroundAspect.java:1)
 ... 19 more
 
ASPECT:
package org.stuff;
 
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
 
@Aspect("pertarget(call(* org.stuff.TestClass.*(..)))")
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();
  }; 
} 

 
 
 
 


***********************************************************************************
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                                                         
                                                                                                       ********************************************************************************