LiveBeansView escapes double quotes in resource descriptions
Issue: SPR-12252
(cherry picked from commit 92f7121)
This commit is contained in:
@@ -175,8 +175,7 @@ public class LiveBeansView implements LiveBeansViewMBean, ApplicationContextAwar
|
||||
else {
|
||||
result.append("\"type\": null,\n");
|
||||
}
|
||||
String resource = StringUtils.replace(bd.getResourceDescription(), "\\", "/");
|
||||
result.append("\"resource\": \"").append(resource).append("\",\n");
|
||||
result.append("\"resource\": \"").append(getEscapedResourceDescription(bd)).append("\",\n");
|
||||
result.append("\"dependencies\": [");
|
||||
String[] dependencies = bf.getDependenciesForBean(beanName);
|
||||
if (dependencies.length > 0) {
|
||||
@@ -201,7 +200,7 @@ public class LiveBeansView implements LiveBeansViewMBean, ApplicationContextAwar
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine whether the specified bean is eligible for inclusion in the
|
||||
* Determine whether the specified bean is eligible for inclusion in the
|
||||
* LiveBeansView JSON snapshot.
|
||||
* @param beanName the name of the bean
|
||||
* @param bd the corresponding bean definition
|
||||
@@ -213,4 +212,31 @@ public class LiveBeansView implements LiveBeansViewMBean, ApplicationContextAwar
|
||||
(!bd.isLazyInit() || bf.containsSingleton(beanName)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine a resource description for the given bean definition and
|
||||
* apply basic JSON escaping (backslashes, double quotes) to it.
|
||||
* @param bd the bean definition to build the resource description for
|
||||
* @return the JSON-escaped resource description
|
||||
*/
|
||||
protected String getEscapedResourceDescription(BeanDefinition bd) {
|
||||
String resourceDescription = bd.getResourceDescription();
|
||||
if (resourceDescription == null) {
|
||||
return null;
|
||||
}
|
||||
StringBuilder result = new StringBuilder(resourceDescription.length() + 16);
|
||||
for (int i = 0; i < resourceDescription.length(); i++) {
|
||||
char character = resourceDescription.charAt(i);
|
||||
if (character == '\\') {
|
||||
result.append('/');
|
||||
}
|
||||
else if (character == '"') {
|
||||
result.append("\\").append('"');
|
||||
}
|
||||
else {
|
||||
result.append(character);
|
||||
}
|
||||
}
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user