diff options
author | jhugunin <jhugunin> | 2003-01-08 01:14:07 +0000 |
---|---|---|
committer | jhugunin <jhugunin> | 2003-01-08 01:14:07 +0000 |
commit | 831703ca87b7d420dc6ead90a7e93e4d9bc8608f (patch) | |
tree | e9381360796fd70aad6bfced5f4415a3ff94b8a9 /weaver | |
parent | f9ade7a9e1d81d48620ba68e126fbf0c90b6813e (diff) | |
download | aspectj-831703ca87b7d420dc6ead90a7e93e4d9bc8608f.tar.gz aspectj-831703ca87b7d420dc6ead90a7e93e4d9bc8608f.zip |
fixed handling of reflective signatures for static intialization join points
Diffstat (limited to 'weaver')
-rw-r--r-- | weaver/src/org/aspectj/weaver/Member.java | 6 | ||||
-rw-r--r-- | weaver/src/org/aspectj/weaver/bcel/BcelWorld.java | 14 |
2 files changed, 18 insertions, 2 deletions
diff --git a/weaver/src/org/aspectj/weaver/Member.java b/weaver/src/org/aspectj/weaver/Member.java index 284454fdf..d5b048129 100644 --- a/weaver/src/org/aspectj/weaver/Member.java +++ b/weaver/src/org/aspectj/weaver/Member.java @@ -516,6 +516,8 @@ public class Member implements Comparable { // ---- reflective thisJoinPoint stuff public String getSignatureMakerName() { + if (getName().equals("<clinit>")) return "makeInitializerSig"; + Kind kind = getKind(); if (kind == METHOD) { return "makeMethodSig"; @@ -539,6 +541,8 @@ public class Member implements Comparable { public String getSignatureType() { Kind kind = getKind(); + if (getName().equals("<clinit>")) return "org.aspectj.lang.reflect.InitializerSignature"; + if (kind == METHOD) { return "org.aspectj.lang.reflect.MethodSignature"; } else if (kind == CONSTRUCTOR) { @@ -557,6 +561,8 @@ public class Member implements Comparable { } public String getSignatureString(World world) { + if (getName().equals("<clinit>")) return getStaticInitializationSignatureString(world); + Kind kind = getKind(); if (kind == METHOD) { return getMethodSignatureString(world); diff --git a/weaver/src/org/aspectj/weaver/bcel/BcelWorld.java b/weaver/src/org/aspectj/weaver/bcel/BcelWorld.java index 1e4b603ec..401311151 100644 --- a/weaver/src/org/aspectj/weaver/bcel/BcelWorld.java +++ b/weaver/src/org/aspectj/weaver/bcel/BcelWorld.java @@ -237,8 +237,18 @@ public class BcelWorld extends World { int mods = mg.getAccessFlags(); if (mg.getEnclosingClass().isInterface()) { mods |= Modifier.INTERFACE; - } - return new ResolvedMember(mg.getName().equals("<init>") ? Member.CONSTRUCTOR : Member.METHOD, + } + + org.aspectj.weaver.Member.Kind kind; + if (mg.getName().equals("<init>")) { + kind = Member.CONSTRUCTOR; + } else if (mg.getName().equals("<clinit>")) { + kind = Member.STATIC_INITIALIZATION; + } else { + kind = Member.METHOD; + } + + return new ResolvedMember(kind, TypeX.forName(mg.getClassName()), mods, fromBcel(mg.getReturnType()), |