瀏覽代碼

handling privileged access to types correctly

fixed bugs in other privileged access handling
tags/V_1_1_b2
jhugunin 21 年之前
父節點
當前提交
2a5c5a8d91

+ 9
- 0
org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/PrivilegedHandler.java 查看文件

return ret; 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() { public ResolvedMember[] getMembers() {
Collection m = accessors.keySet(); Collection m = accessors.keySet();
int len = m.size(); int len = m.size();
return ret; return ret;
} }




} }

+ 1
- 1
org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/problem/AjProblemReporter.java 查看文件

* @author Jim Hugunin * @author Jim Hugunin
*/ */
public class AjProblemReporter extends ProblemReporter { public class AjProblemReporter extends ProblemReporter {
private static final boolean DUMP_STACK = false;
private static final boolean DUMP_STACK = true;
public EclipseWorld world; public EclipseWorld world;



+ 4
- 0
weaver/src/org/aspectj/weaver/bcel/BcelTypeMunger.java 查看文件

} else if (member.getKind() == Member.METHOD) { } else if (member.getKind() == Member.METHOD) {
addMethodDispatch(gen, member, addMethodDispatch(gen, member,
AjcMemberMaker.privilegedAccessMethodForMethod(aspectType, member)); AjcMemberMaker.privilegedAccessMethodForMethod(aspectType, member));
return true;
} else if (member.getKind() == Member.STATIC_INITIALIZATION) {
gen.forcePublic();
return true;
} else { } else {
throw new RuntimeException("unimplemented"); throw new RuntimeException("unimplemented");
} }

+ 4
- 0
weaver/src/org/aspectj/weaver/bcel/LazyClassGen.java 查看文件

throw new BCException("Class " + this.getName() + " does not have a method " throw new BCException("Class " + this.getName() + " does not have a method "
+ name + " with signature " + signature); + name + " with signature " + signature);
} }
public void forcePublic() {
myGen.setAccessFlags(Utility.makePublic(myGen.getAccessFlags()));
}
} }

Loading…
取消
儲存