Browse Source

Adapt DefaultParameterNameDiscoverer to Graal constraints

When compiling or running as a Graal native image, no
ParameterNameDiscoverer is used.

Issue: SPR-17005
pull/1653/merge
Sebastien Deleuze 7 years ago
parent
commit
e8034f2f96
  1. 16
      spring-core/src/main/java/org/springframework/core/DefaultParameterNameDiscoverer.java

16
spring-core/src/main/java/org/springframework/core/DefaultParameterNameDiscoverer.java

@ -25,7 +25,8 @@ import org.springframework.util.ClassUtils; @@ -25,7 +25,8 @@ import org.springframework.util.ClassUtils;
* debug information in the class file.
*
* <p>If Kotlin is present, {@link KotlinReflectionParameterNameDiscoverer} is added first
* in the list and used for Kotlin classes and interfaces.
* in the list and used for Kotlin classes and interfaces. When compiling or running as
* a Graal native image, no {@link ParameterNameDiscoverer} is used.
*
* <p>Further discoverers may be added through {@link #addDiscoverer(ParameterNameDiscoverer)}.
*
@ -41,13 +42,18 @@ public class DefaultParameterNameDiscoverer extends PrioritizedParameterNameDisc @@ -41,13 +42,18 @@ public class DefaultParameterNameDiscoverer extends PrioritizedParameterNameDisc
private static final boolean kotlinPresent =
ClassUtils.isPresent("kotlin.Unit", DefaultParameterNameDiscoverer.class.getClassLoader());
// See https://github.com/oracle/graal/blob/master/sdk/src/org.graalvm.nativeimage/src/org/graalvm/nativeimage/ImageInfo.java
private static final boolean inImageCode = (System.getProperty("org.graalvm.nativeimage.imagecode") != null);
public DefaultParameterNameDiscoverer() {
if (kotlinPresent) {
addDiscoverer(new KotlinReflectionParameterNameDiscoverer());
if (!inImageCode) {
if (kotlinPresent) {
addDiscoverer(new KotlinReflectionParameterNameDiscoverer());
}
addDiscoverer(new StandardReflectionParameterNameDiscoverer());
addDiscoverer(new LocalVariableTableParameterNameDiscoverer());
}
addDiscoverer(new StandardReflectionParameterNameDiscoverer());
addDiscoverer(new LocalVariableTableParameterNameDiscoverer());
}
}

Loading…
Cancel
Save