Browse Source

Revise CGLIB naming policy to only contain SpringCGLIB label once

See gh-29295
pull/29302/head
Juergen Hoeller 3 years ago
parent
commit
a1daaf0c19
  1. 19
      spring-core/src/main/java/org/springframework/cglib/core/SpringNamingPolicy.java

19
spring-core/src/main/java/org/springframework/cglib/core/SpringNamingPolicy.java

@ -31,20 +31,33 @@ public final class SpringNamingPolicy implements NamingPolicy { @@ -31,20 +31,33 @@ public final class SpringNamingPolicy implements NamingPolicy {
public static final SpringNamingPolicy INSTANCE = new SpringNamingPolicy();
private static final String LABEL = "$$SpringCGLIB$$";
private SpringNamingPolicy() {
}
public String getClassName(String prefix, String source, Object key, Predicate names) {
if (prefix == null) {
prefix = "org.springframework.cglib.empty.Object";
} else if (prefix.startsWith("java")) {
}
else if (prefix.startsWith("java")) {
prefix = "_" + prefix;
}
String base = prefix + "$$SpringCGLIB$$";
String base;
int existingLabel = prefix.indexOf(LABEL);
if (existingLabel >= 0) {
base = prefix.substring(0, existingLabel + LABEL.length());
}
else {
base = prefix + LABEL;
}
int index = 0;
String attempt = base + index;
while (names.evaluate(attempt))
while (names.evaluate(attempt)) {
attempt = base + index++;
}
return attempt;
}

Loading…
Cancel
Save