[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [aspectj-dev] Static join point with null arguments for array type parameter (ClassNotFoundException).
|
Yep - bug: would you please submit a bug report? Thanks very much for reporting this.
Wes
> ------------Original Message------------
> From: "Lasse Reichstein Nielsen" <atwork@xxxxxxxxxx>
> To: aspectj-dev@xxxxxxxxxxx
> Date: Mon, Jul-19-2004 9:09 AM
> Subject: [aspectj-dev] Static join point with null arguments for array type parameter (ClassNotFoundException).
>
> I have a simple example program with an aspect (included below). When
> calling
> with a null argument for the array parameter the first time it is
> called,
> the
> "thisStaticJoinPoint" signature reports "ClassNotFoundException" as the
>
> type
> of that parameter, also for the next call where the argument is not
> null.
>
> However, if I *switch* the calls, so the first call is with a non-null
>
> argument,
> then the static join point correctly reports the array type, also for
> the
> next
> call.
>
> Tested with both AspectJ 1.1 from command line and AJDT 1.1.11 from
> Eclipse 3.
>
> I *think* it is a bug. At least, it's annoying, since I have to make
> sure
> that
> all calls are with non-null arguments :)
>
> --- Main.java ---
> package dk.infimum.aspectjtest;
> public class Main {
>
> public static void main(String[] args) {
> Main obj = new Main();
> // swap following lines to change behavior
> obj.test(null, null);
> obj.test(null, new Main[]{});
> }
>
> void test(Main dummy, Main[] dummy2) {}
>
> }
> --- end Main.java ---
>
> and
>
> --- MainAspect.aj ---
> import org.aspectj.lang.reflect.MethodSignature;
>
> public aspect MainAspect {
>
> pointcut testcall(): execution(* test*(..));
>
> before(): testcall() {
> MethodSignature sig = (MethodSignature)
> thisJoinPointStaticPart.getSignature();
> System.out.println(sig);
> Class[] params = sig.getParameterTypes();
> for(int i=0;i<params.length;i++) {
> Class cls = params[i];
> System.out.println(" - " + cls.getName());
> }
> }
> }
> --- end MainAspect.aj ---
>
> The output from running Main is:
>
> ---
> void dk.infimum.aspectjtest.Main.test(Main, ClassNotFoundException)
> - dk.infimum.aspectjtest.Main
> - java.lang.ClassNotFoundException
> void dk.infimum.aspectjtest.Main.test(Main, ClassNotFoundException)
> - dk.infimum.aspectjtest.Main
> - java.lang.ClassNotFoundException
> ---
>
> However, if I swap the calls to dummy, the output becomes:
>
> ---
> void dk.infimum.aspectjtest.Main.test(Main, Main[])
> - dk.infimum.aspectjtest.Main
> - [Ldk.infimum.aspectjtest.Main;
> void dk.infimum.aspectjtest.Main.test(Main, Main[])
> - dk.infimum.aspectjtest.Main
> - [Ldk.infimum.aspectjtest.Main;
> ---
>
> Please help :)
> Regards
> /L
> --
> Lasse R. Nielsen - atwork@xxxxxxxxxx
> 'Faith without judgement merely degrades the spirit divine'
>
> _______________________________________________
> aspectj-dev mailing list
> aspectj-dev@xxxxxxxxxxx
> http://dev.eclipse.org/mailman/listinfo/aspectj-dev
>