Browse Source

Fix typo in ClassUtils.forName()

See gh-31258
Closes gh-31428
pull/31432/head
Johnny Lim 2 years ago committed by Brian Clozel
parent
commit
15f7e8ef2f
  1. 2
      spring-core/src/main/java/org/springframework/util/ClassUtils.java
  2. 29
      spring-core/src/test/java/a/ClassHavingNestedClass.java
  3. 2
      spring-core/src/test/java/org/springframework/util/ClassUtilsTests.java

2
spring-core/src/main/java/org/springframework/util/ClassUtils.java

@ -306,7 +306,7 @@ public abstract class ClassUtils { @@ -306,7 +306,7 @@ public abstract class ClassUtils {
catch (ClassNotFoundException ex) {
int lastDotIndex = name.lastIndexOf(PACKAGE_SEPARATOR);
int previousDotIndex = name.lastIndexOf(PACKAGE_SEPARATOR, lastDotIndex -1);
if (lastDotIndex != -1 && previousDotIndex != 1 && Character.isUpperCase(name.charAt(previousDotIndex + 1))) {
if (lastDotIndex != -1 && previousDotIndex != -1 && Character.isUpperCase(name.charAt(previousDotIndex + 1))) {
String nestedClassName =
name.substring(0, lastDotIndex) + NESTED_CLASS_SEPARATOR + name.substring(lastDotIndex + 1);
try {

29
spring-core/src/test/java/a/ClassHavingNestedClass.java

@ -0,0 +1,29 @@ @@ -0,0 +1,29 @@
/*
* Copyright 2002-2023 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.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package a;
/**
* Test class for {@code org.springframework.util.ClassUtilsTests}.
*
* @author Johnny Lim
*/
public class ClassHavingNestedClass {
public static class NestedClass {
}
}

2
spring-core/src/test/java/org/springframework/util/ClassUtilsTests.java

@ -86,6 +86,8 @@ class ClassUtilsTests { @@ -86,6 +86,8 @@ class ClassUtilsTests {
void forNameWithNestedType() throws ClassNotFoundException {
assertThat(ClassUtils.forName("org.springframework.util.ClassUtilsTests$NestedClass", classLoader)).isEqualTo(NestedClass.class);
assertThat(ClassUtils.forName("org.springframework.util.ClassUtilsTests.NestedClass", classLoader)).isEqualTo(NestedClass.class);
assertThat(ClassUtils.forName("a.ClassHavingNestedClass$NestedClass", classLoader)).isEqualTo(a.ClassHavingNestedClass.NestedClass.class);
assertThat(ClassUtils.forName("a.ClassHavingNestedClass.NestedClass", classLoader)).isEqualTo(a.ClassHavingNestedClass.NestedClass.class);
}
@Test

Loading…
Cancel
Save