Use bootstrap classloader to only provide access to JRE classes
This commit is contained in:
committed by
Egor.Ushakov
parent
592a24cd85
commit
5de2e5b11b
@@ -30,7 +30,8 @@ public class ClasspathHelper {
|
|||||||
|
|
||||||
private static Method findMethodOnClasspath(String targetClass, String methodSignature) {
|
private static Method findMethodOnClasspath(String targetClass, String methodSignature) {
|
||||||
try {
|
try {
|
||||||
Class cls = Class.forName(targetClass);
|
// use bootstrap classloader to only provide access to JRE classes
|
||||||
|
Class cls = new ClassLoader(null) {}.loadClass(targetClass);
|
||||||
for (Method mtd : cls.getMethods()) {
|
for (Method mtd : cls.getMethods()) {
|
||||||
// use contains() to ignore access modifiers and thrown exceptions
|
// use contains() to ignore access modifiers and thrown exceptions
|
||||||
if (mtd.toString().contains(methodSignature)) {
|
if (mtd.toString().contains(methodSignature)) {
|
||||||
|
|||||||
@@ -394,6 +394,8 @@ public class InvocationExprent extends Exprent {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
// TODO: tap into IDEA indices to access libraries methods details
|
||||||
|
|
||||||
// try to check the class on the classpath
|
// try to check the class on the classpath
|
||||||
Method mtd = ClasspathHelper.findMethod(classname, name, descriptor);
|
Method mtd = ClasspathHelper.findMethod(classname, name, descriptor);
|
||||||
return mtd != null && mtd.isVarArgs();
|
return mtd != null && mtd.isVarArgs();
|
||||||
|
|||||||
Reference in New Issue
Block a user