From 787b09b202f0eb507d5e5c687bde5282c5a6bb22 Mon Sep 17 00:00:00 2001 From: Sam Brannen Date: Wed, 26 Feb 2020 14:18:56 +0100 Subject: [PATCH] Relax GraalVM check in DefaultParameterNameDiscoverer Prior to this commit, DefaultParameterNameDiscoverer did not register any discovers when compiling or running as a GraalVM native image. This commit relaxes the GraalVM check so that it is only applied to the registration of KotlinReflectionParameterNameDiscoverer. Consequently, StandardReflectionParameterNameDiscoverer and LocalVariableTableParameterNameDiscoverer are once again always registered by DefaultParameterNameDiscoverer. Closes gh-24600 --- .../core/DefaultParameterNameDiscoverer.java | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/spring-core/src/main/java/org/springframework/core/DefaultParameterNameDiscoverer.java b/spring-core/src/main/java/org/springframework/core/DefaultParameterNameDiscoverer.java index 4bc362f0de6..337a38080c2 100644 --- a/spring-core/src/main/java/org/springframework/core/DefaultParameterNameDiscoverer.java +++ b/spring-core/src/main/java/org/springframework/core/DefaultParameterNameDiscoverer.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,14 +23,15 @@ package org.springframework.core; * debug information in the class file. * *

If a Kotlin reflection implementation is present, - * {@link KotlinReflectionParameterNameDiscoverer} is added first in the list and used - * for Kotlin classes and interfaces. When compiling or running as a Graal native image, - * no {@link ParameterNameDiscoverer} is used. + * {@link KotlinReflectionParameterNameDiscoverer} is added first in the list and + * used for Kotlin classes and interfaces. When compiling or running as a GraalVM + * native image, the {@code KotlinReflectionParameterNameDiscoverer} is not used. * *

Further discoverers may be added through {@link #addDiscoverer(ParameterNameDiscoverer)}. * * @author Juergen Hoeller * @author Sebastien Deleuze + * @author Sam Brannen * @since 4.0 * @see StandardReflectionParameterNameDiscoverer * @see LocalVariableTableParameterNameDiscoverer @@ -39,13 +40,11 @@ package org.springframework.core; public class DefaultParameterNameDiscoverer extends PrioritizedParameterNameDiscoverer { public DefaultParameterNameDiscoverer() { - if (!GraalDetector.inImageCode()) { - if (KotlinDetector.isKotlinReflectPresent()) { - addDiscoverer(new KotlinReflectionParameterNameDiscoverer()); - } - addDiscoverer(new StandardReflectionParameterNameDiscoverer()); - addDiscoverer(new LocalVariableTableParameterNameDiscoverer()); + if (KotlinDetector.isKotlinReflectPresent() && !GraalDetector.inImageCode()) { + addDiscoverer(new KotlinReflectionParameterNameDiscoverer()); } + addDiscoverer(new StandardReflectionParameterNameDiscoverer()); + addDiscoverer(new LocalVariableTableParameterNameDiscoverer()); } }