Fix TypeReference#getName for CGLIB proxies

This commit makes sure that the double '$' sign typically used by
generated cglib proxies are not used as an inner class separator.

Closes gh-29252
This commit is contained in:
Stephane Nicoll
2022-10-04 15:57:20 +02:00
parent 9820e3341d
commit f2e9d112b1
3 changed files with 33 additions and 1 deletions

View File

@@ -49,7 +49,7 @@ final class SimpleTypeReference extends AbstractTypeReference {
if (!className.contains("$")) {
return createTypeReference(className);
}
String[] elements = className.split("\\$");
String[] elements = className.split("(?<!\\$)\\$(?!\\$)");
SimpleTypeReference typeReference = createTypeReference(elements[0]);
for (int i = 1; i < elements.length; i++) {
typeReference = new SimpleTypeReference(typeReference.getPackageName(), elements[i], typeReference);