Browse Source

handling privileged access to types correctly

fixed bugs in other privileged access handling
tags/V_1_1_b2
jhugunin 21 years ago
parent
commit
2a5c5a8d91

+ 9
- 0
org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/PrivilegedHandler.java View File

@@ -49,6 +49,13 @@ public class PrivilegedHandler implements IPrivilegedHandler {
return ret;
}
public void notePrivilegedTypeAccess(ReferenceBinding type) {
ResolvedMember key =
new ResolvedMember(Member.STATIC_INITIALIZATION,
inAspect.world.fromEclipse(type), 0, ResolvedTypeX.VOID, "", TypeX.NONE);
accessors.put(key, key);
}
public ResolvedMember[] getMembers() {
Collection m = accessors.keySet();
int len = m.size();
@@ -60,4 +67,6 @@ public class PrivilegedHandler implements IPrivilegedHandler {
return ret;
}



}

+ 1
- 1
org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/problem/AjProblemReporter.java View File

@@ -41,7 +41,7 @@ import org.eclipse.jdt.internal.compiler.util.CharOperation;
* @author Jim Hugunin
*/
public class AjProblemReporter extends ProblemReporter {
private static final boolean DUMP_STACK = false;
private static final boolean DUMP_STACK = true;
public EclipseWorld world;


+ 4
- 0
weaver/src/org/aspectj/weaver/bcel/BcelTypeMunger.java View File

@@ -71,6 +71,10 @@ public class BcelTypeMunger extends ConcreteTypeMunger {
} else if (member.getKind() == Member.METHOD) {
addMethodDispatch(gen, member,
AjcMemberMaker.privilegedAccessMethodForMethod(aspectType, member));
return true;
} else if (member.getKind() == Member.STATIC_INITIALIZATION) {
gen.forcePublic();
return true;
} else {
throw new RuntimeException("unimplemented");
}

+ 4
- 0
weaver/src/org/aspectj/weaver/bcel/LazyClassGen.java View File

@@ -487,4 +487,8 @@ public final class LazyClassGen {
throw new BCException("Class " + this.getName() + " does not have a method "
+ name + " with signature " + signature);
}
public void forcePublic() {
myGen.setAccessFlags(Utility.makePublic(myGen.getAccessFlags()));
}
}

Loading…
Cancel
Save