Invoke KCallablesJvm.setAccessible only when required
Closes-32536
This commit is contained in:
@@ -130,9 +130,11 @@ public abstract class CoroutinesUtils {
|
|||||||
KType type = parameter.getType();
|
KType type = parameter.getType();
|
||||||
if (!(type.isMarkedNullable() && arg == null) && type.getClassifier() instanceof KClass<?> kClass
|
if (!(type.isMarkedNullable() && arg == null) && type.getClassifier() instanceof KClass<?> kClass
|
||||||
&& KotlinDetector.isInlineClass(JvmClassMappingKt.getJavaClass(kClass))) {
|
&& KotlinDetector.isInlineClass(JvmClassMappingKt.getJavaClass(kClass))) {
|
||||||
KFunction<?> valueClassConstructor = KClasses.getPrimaryConstructor(kClass);
|
KFunction<?> constructor = KClasses.getPrimaryConstructor(kClass);
|
||||||
KCallablesJvm.setAccessible(valueClassConstructor, true);
|
if (!KCallablesJvm.isAccessible(constructor)) {
|
||||||
arg = valueClassConstructor.call(arg);
|
KCallablesJvm.setAccessible(constructor, true);
|
||||||
|
}
|
||||||
|
arg = constructor.call(arg);
|
||||||
}
|
}
|
||||||
argMap.put(parameter, arg);
|
argMap.put(parameter, arg);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -319,9 +319,11 @@ public class InvocableHandlerMethod extends HandlerMethod {
|
|||||||
KType type = parameter.getType();
|
KType type = parameter.getType();
|
||||||
if (!(type.isMarkedNullable() && arg == null) && type.getClassifier() instanceof KClass<?> kClass
|
if (!(type.isMarkedNullable() && arg == null) && type.getClassifier() instanceof KClass<?> kClass
|
||||||
&& KotlinDetector.isInlineClass(JvmClassMappingKt.getJavaClass(kClass))) {
|
&& KotlinDetector.isInlineClass(JvmClassMappingKt.getJavaClass(kClass))) {
|
||||||
KFunction<?> valueClassConstructor = KClasses.getPrimaryConstructor(kClass);
|
KFunction<?> constructor = KClasses.getPrimaryConstructor(kClass);
|
||||||
KCallablesJvm.setAccessible(valueClassConstructor, true);
|
if (!KCallablesJvm.isAccessible(constructor)) {
|
||||||
arg = valueClassConstructor.call(arg);
|
KCallablesJvm.setAccessible(constructor, true);
|
||||||
|
}
|
||||||
|
arg = constructor.call(arg);
|
||||||
}
|
}
|
||||||
argMap.put(parameter, arg);
|
argMap.put(parameter, arg);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -330,9 +330,11 @@ public class InvocableHandlerMethod extends HandlerMethod {
|
|||||||
KType type = parameter.getType();
|
KType type = parameter.getType();
|
||||||
if (!(type.isMarkedNullable() && arg == null) && type.getClassifier() instanceof KClass<?> kClass
|
if (!(type.isMarkedNullable() && arg == null) && type.getClassifier() instanceof KClass<?> kClass
|
||||||
&& KotlinDetector.isInlineClass(JvmClassMappingKt.getJavaClass(kClass))) {
|
&& KotlinDetector.isInlineClass(JvmClassMappingKt.getJavaClass(kClass))) {
|
||||||
KFunction<?> valueClassConstructor = KClasses.getPrimaryConstructor(kClass);
|
KFunction<?> constructor = KClasses.getPrimaryConstructor(kClass);
|
||||||
KCallablesJvm.setAccessible(valueClassConstructor, true);
|
if (!KCallablesJvm.isAccessible(constructor)) {
|
||||||
arg = valueClassConstructor.call(arg);
|
KCallablesJvm.setAccessible(constructor, true);
|
||||||
|
}
|
||||||
|
arg = constructor.call(arg);
|
||||||
}
|
}
|
||||||
argMap.put(parameter, arg);
|
argMap.put(parameter, arg);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user