Hi, 
Sorry for the lengh of this post ! 
I create an abstract Aspect like this : 

package iep.perf; 

import java.util.Calendar; 
import java.io.File; 

public abstract aspect AbstractDurationMethod { 
   private static String rootTrace = ""; 

   private static Trace outDurationMethods; 
   static { 
       rootTrace = System.getProperty("rootTrace"); 

       outDurationMethods = new Trace(rootTrace + File.separator 
               + "outDurationMethods.log"); 
   } 

   public abstract pointcut methods(); 

   Object around(): methods() { 
       long deb = Calendar.getInstance().getTimeInMillis(); 
            
       Object retour= proceed(); 
       long fin = Calendar.getInstance().getTimeInMillis(); 
       outDurationMethods.append(outDurationMethods.getSdf().format( 
               Calendar.getInstance().getTime()) 
               + ";JointPoint =" 
               + thisJoinPoint.getSignature().getDeclaringTypeName() 
               + "." 
               + thisJoinPoint.getSignature().getName() 
               + ";duration=" 
               + (fin - deb) + " ms\n"); 
       outDurationMethods.flush(); 
       return retour; 
         } 

} 

I use classes Square and Circle found in eclipse documentation to test my 
aspects 

When i try this aspect with concrete-aspect tag in aop.xml : 

<concrete-aspect name="iep.perf.DurationMethod" 
           extends="iep.perf.AbstractDurationMethod"> 
           <pointcut name="methods" 
               expression="within(jlp.exemple1.*) &amp;&amp;  call (public * 
jlp..*(..))" /> 
       </concrete-aspect> 

I get this error : 
Exception in thread "main" java.lang.IllegalAccessError: tried to access method 
iep.perf.AbstractDurationMethod.ajc$around$iep_perf_AbstractDurationMethod$1$cd1
 
02c33proceed(Lorg/aspectj/runtime/internal/AroundClosure;)Ljava/lang/Object; 
fro 
m class jlp.exemple1.Main 
       at jlp.exemple1.Main.perimeter_aroundBody1$advice(Main.java:124) 
       at jlp.exemple1.Main.perimeter_aroundBody2(Main.java:1) 
       at jlp.exemple1.Main$AjcClosure3.run(Main.java:1) 
       at 
iep.perf.AbstractDurationMethod.ajc$around$iep_perf_AbstractDurationMethod$1$cd102c33proceed(AbstractDurationMethod.aj:1)
 
       at 
iep.perf.AbstractDurationMethod.ajc$around$iep_perf_AbstractDurationMethod$1$cd102c33(AbstractDurationMethod.aj:24)
 
       at jlp.exemple1.Main.main(Main.java:8) 

When I extend my Abstract Aspect like this : 
package iep.perf; 

public aspect ConcreteDurationMethod extends AbstractDurationMethod { 

   public pointcut methods():within(jlp.exemple1.*) &&  call (public * 
jlp..*(..)); 

} 

and modify my aop.xml like below : 
<aspect name="iep.perf.ConcreteCounterInstances"/> 
it runs fine ! 
But that i want is to use concrete-aspect tag. 
I use AspectJ 1.5.4 embedded in Eclipse Europa 3.3.1  Build id: M20070921-1145 

Do you think that is a bug, or otherwise what did i miss ? 
Thanks 
JLP 
_______________________________________________
aspectj-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/aspectj-users

Reply via email to