Improve performance of some string operations
Issue: SPR-16293
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2016 the original author or authors.
|
||||
* Copyright 2002-2017 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.
|
||||
@@ -339,10 +339,10 @@ public class CachedIntrospectionResults {
|
||||
PropertyDescriptor getPropertyDescriptor(String name) {
|
||||
PropertyDescriptor pd = this.propertyDescriptorCache.get(name);
|
||||
if (pd == null && StringUtils.hasLength(name)) {
|
||||
// Same lenient fallback checking as in PropertyTypeDescriptor...
|
||||
pd = this.propertyDescriptorCache.get(name.substring(0, 1).toLowerCase() + name.substring(1));
|
||||
// Same lenient fallback checking as in Property...
|
||||
pd = this.propertyDescriptorCache.get(StringUtils.uncapitalize(name));
|
||||
if (pd == null) {
|
||||
pd = this.propertyDescriptorCache.get(name.substring(0, 1).toUpperCase() + name.substring(1));
|
||||
pd = this.propertyDescriptorCache.get(StringUtils.capitalize(name));
|
||||
}
|
||||
}
|
||||
return (pd == null || pd instanceof GenericTypeAwarePropertyDescriptor ? pd :
|
||||
|
||||
@@ -225,11 +225,9 @@ public final class Property {
|
||||
Field field = ReflectionUtils.findField(declaringClass, name);
|
||||
if (field == null) {
|
||||
// Same lenient fallback checking as in CachedIntrospectionResults...
|
||||
field = ReflectionUtils.findField(declaringClass,
|
||||
name.substring(0, 1).toLowerCase() + name.substring(1));
|
||||
field = ReflectionUtils.findField(declaringClass, StringUtils.uncapitalize(name));
|
||||
if (field == null) {
|
||||
field = ReflectionUtils.findField(declaringClass,
|
||||
name.substring(0, 1).toUpperCase() + name.substring(1));
|
||||
field = ReflectionUtils.findField(declaringClass, StringUtils.capitalize(name));
|
||||
}
|
||||
}
|
||||
return field;
|
||||
|
||||
@@ -424,7 +424,7 @@ public class PathMatchingResourcePatternResolver implements ResourcePatternResol
|
||||
int prefixIndex = filePath.indexOf(':');
|
||||
if (prefixIndex == 1) {
|
||||
// Possibly "c:" drive prefix on Windows, to be upper-cased for proper duplicate detection
|
||||
filePath = filePath.substring(0, 1).toUpperCase() + filePath.substring(1);
|
||||
filePath = StringUtils.capitalize(filePath);
|
||||
}
|
||||
UrlResource jarResource = new UrlResource(ResourceUtils.JAR_URL_PREFIX +
|
||||
ResourceUtils.FILE_URL_PREFIX + filePath + ResourceUtils.JAR_URL_SEPARATOR);
|
||||
@@ -489,18 +489,18 @@ public class PathMatchingResourcePatternResolver implements ResourcePatternResol
|
||||
Set<Resource> result = new LinkedHashSet<Resource>(16);
|
||||
for (Resource rootDirResource : rootDirResources) {
|
||||
rootDirResource = resolveRootDirResource(rootDirResource);
|
||||
URL rootDirURL = rootDirResource.getURL();
|
||||
URL rootDirUrl = rootDirResource.getURL();
|
||||
if (equinoxResolveMethod != null) {
|
||||
if (rootDirURL.getProtocol().startsWith("bundle")) {
|
||||
rootDirURL = (URL) ReflectionUtils.invokeMethod(equinoxResolveMethod, null, rootDirURL);
|
||||
rootDirResource = new UrlResource(rootDirURL);
|
||||
if (rootDirUrl.getProtocol().startsWith("bundle")) {
|
||||
rootDirUrl = (URL) ReflectionUtils.invokeMethod(equinoxResolveMethod, null, rootDirUrl);
|
||||
rootDirResource = new UrlResource(rootDirUrl);
|
||||
}
|
||||
}
|
||||
if (rootDirURL.getProtocol().startsWith(ResourceUtils.URL_PROTOCOL_VFS)) {
|
||||
result.addAll(VfsResourceMatchingDelegate.findMatchingResources(rootDirURL, subPattern, getPathMatcher()));
|
||||
if (rootDirUrl.getProtocol().startsWith(ResourceUtils.URL_PROTOCOL_VFS)) {
|
||||
result.addAll(VfsResourceMatchingDelegate.findMatchingResources(rootDirUrl, subPattern, getPathMatcher()));
|
||||
}
|
||||
else if (ResourceUtils.isJarURL(rootDirURL) || isJarResource(rootDirResource)) {
|
||||
result.addAll(doFindPathMatchingJarResources(rootDirResource, rootDirURL, subPattern));
|
||||
else if (ResourceUtils.isJarURL(rootDirUrl) || isJarResource(rootDirResource)) {
|
||||
result.addAll(doFindPathMatchingJarResources(rootDirResource, rootDirUrl, subPattern));
|
||||
}
|
||||
else {
|
||||
result.addAll(doFindPathMatchingFileResources(rootDirResource, subPattern));
|
||||
|
||||
@@ -481,24 +481,24 @@ public abstract class JdbcUtils {
|
||||
StringBuilder result = new StringBuilder();
|
||||
boolean nextIsUpper = false;
|
||||
if (name != null && name.length() > 0) {
|
||||
if (name.length() > 1 && name.substring(1, 2).equals("_")) {
|
||||
result.append(name.substring(0, 1).toUpperCase());
|
||||
if (name.length() > 1 && name.charAt(1) == '_') {
|
||||
result.append(Character.toUpperCase(name.charAt(0)));
|
||||
}
|
||||
else {
|
||||
result.append(name.substring(0, 1).toLowerCase());
|
||||
result.append(Character.toLowerCase(name.charAt(0)));
|
||||
}
|
||||
for (int i = 1; i < name.length(); i++) {
|
||||
String s = name.substring(i, i + 1);
|
||||
if (s.equals("_")) {
|
||||
char c = name.charAt(i);
|
||||
if (c == '_') {
|
||||
nextIsUpper = true;
|
||||
}
|
||||
else {
|
||||
if (nextIsUpper) {
|
||||
result.append(s.toUpperCase());
|
||||
result.append(Character.toUpperCase(c));
|
||||
nextIsUpper = false;
|
||||
}
|
||||
else {
|
||||
result.append(s.toLowerCase());
|
||||
result.append(Character.toLowerCase(c));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ import javax.servlet.http.Part;
|
||||
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.web.multipart.MultipartException;
|
||||
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
||||
import org.springframework.web.multipart.MultipartResolver;
|
||||
@@ -67,11 +68,11 @@ public class StandardServletMultipartResolver implements MultipartResolver {
|
||||
@Override
|
||||
public boolean isMultipart(HttpServletRequest request) {
|
||||
// Same check as in Commons FileUpload...
|
||||
if (!"post".equals(request.getMethod().toLowerCase())) {
|
||||
if (!"post".equalsIgnoreCase(request.getMethod())) {
|
||||
return false;
|
||||
}
|
||||
String contentType = request.getContentType();
|
||||
return (contentType != null && contentType.toLowerCase().startsWith("multipart/"));
|
||||
return StringUtils.startsWithIgnoreCase(contentType, "multipart/");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user