summaryrefslogtreecommitdiffstats
path: root/weaver
diff options
context:
space:
mode:
authorjhugunin <jhugunin>2003-01-08 01:14:07 +0000
committerjhugunin <jhugunin>2003-01-08 01:14:07 +0000
commit831703ca87b7d420dc6ead90a7e93e4d9bc8608f (patch)
treee9381360796fd70aad6bfced5f4415a3ff94b8a9 /weaver
parentf9ade7a9e1d81d48620ba68e126fbf0c90b6813e (diff)
downloadaspectj-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.java6
-rw-r--r--weaver/src/org/aspectj/weaver/bcel/BcelWorld.java14
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()),