Skip to content

Commit

Permalink
Invoke KCallablesJvm.setAccessible only when required
Browse files Browse the repository at this point in the history
Closes-32536
  • Loading branch information
sdeleuze committed Mar 28, 2024
1 parent b28153e commit 048e4f0
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -130,9 +130,11 @@ public static Publisher<?> invokeSuspendingFunction(
KType type = parameter.getType();
if (!(type.isMarkedNullable() && arg == null) && type.getClassifier() instanceof KClass<?> kClass
&& KotlinDetector.isInlineClass(JvmClassMappingKt.getJavaClass(kClass))) {
KFunction<?> valueClassConstructor = KClasses.getPrimaryConstructor(kClass);
KCallablesJvm.setAccessible(valueClassConstructor, true);
arg = valueClassConstructor.call(arg);
KFunction<?> constructor = KClasses.getPrimaryConstructor(kClass);
if (!KCallablesJvm.isAccessible(constructor)) {
KCallablesJvm.setAccessible(constructor, true);
}
arg = constructor.call(arg);
}
argMap.put(parameter, arg);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -319,9 +319,11 @@ public static Object invokeFunction(Method method, Object target, Object[] args)
KType type = parameter.getType();
if (!(type.isMarkedNullable() && arg == null) && type.getClassifier() instanceof KClass<?> kClass
&& KotlinDetector.isInlineClass(JvmClassMappingKt.getJavaClass(kClass))) {
KFunction<?> valueClassConstructor = KClasses.getPrimaryConstructor(kClass);
KCallablesJvm.setAccessible(valueClassConstructor, true);
arg = valueClassConstructor.call(arg);
KFunction<?> constructor = KClasses.getPrimaryConstructor(kClass);
if (!KCallablesJvm.isAccessible(constructor)) {
KCallablesJvm.setAccessible(constructor, true);
}
arg = constructor.call(arg);
}
argMap.put(parameter, arg);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -330,9 +330,11 @@ public static Object invokeFunction(Method method, Object target, Object[] args,
KType type = parameter.getType();
if (!(type.isMarkedNullable() && arg == null) && type.getClassifier() instanceof KClass<?> kClass
&& KotlinDetector.isInlineClass(JvmClassMappingKt.getJavaClass(kClass))) {
KFunction<?> valueClassConstructor = KClasses.getPrimaryConstructor(kClass);
KCallablesJvm.setAccessible(valueClassConstructor, true);
arg = valueClassConstructor.call(arg);
KFunction<?> constructor = KClasses.getPrimaryConstructor(kClass);
if (!KCallablesJvm.isAccessible(constructor)) {
KCallablesJvm.setAccessible(constructor, true);
}
arg = constructor.call(arg);
}
argMap.put(parameter, arg);
}
Expand Down

0 comments on commit 048e4f0

Please sign in to comment.