diff --git a/spring-beans/src/main/java/org/springframework/beans/CachedIntrospectionResults.java b/spring-beans/src/main/java/org/springframework/beans/CachedIntrospectionResults.java index 07ca078212f7..37ade58ce8c8 100644 --- a/spring-beans/src/main/java/org/springframework/beans/CachedIntrospectionResults.java +++ b/spring-beans/src/main/java/org/springframework/beans/CachedIntrospectionResults.java @@ -341,10 +341,10 @@ Class getBeanClass() { 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 : diff --git a/spring-core/src/main/java/org/springframework/core/convert/Property.java b/spring-core/src/main/java/org/springframework/core/convert/Property.java index dac0ee6eb1ab..b4c0e284994d 100644 --- a/spring-core/src/main/java/org/springframework/core/convert/Property.java +++ b/spring-core/src/main/java/org/springframework/core/convert/Property.java @@ -239,11 +239,9 @@ private Field getField() { 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)); } } } diff --git a/spring-core/src/main/java/org/springframework/core/io/support/PathMatchingResourcePatternResolver.java b/spring-core/src/main/java/org/springframework/core/io/support/PathMatchingResourcePatternResolver.java index 4d198678ebb4..cdcb8ed4997c 100644 --- a/spring-core/src/main/java/org/springframework/core/io/support/PathMatchingResourcePatternResolver.java +++ b/spring-core/src/main/java/org/springframework/core/io/support/PathMatchingResourcePatternResolver.java @@ -427,7 +427,7 @@ protected void addClassPathManifestEntries(Set result) { 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); diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/support/JdbcUtils.java b/spring-jdbc/src/main/java/org/springframework/jdbc/support/JdbcUtils.java index 1e55c05f0da0..e26ef2979d57 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/support/JdbcUtils.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/support/JdbcUtils.java @@ -469,24 +469,24 @@ public static String convertUnderscoreNameToPropertyName(@Nullable String name) 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)); } } } diff --git a/spring-web/src/main/java/org/springframework/web/multipart/support/StandardServletMultipartResolver.java b/spring-web/src/main/java/org/springframework/web/multipart/support/StandardServletMultipartResolver.java index 370d1c81cf84..15e9cc48eb8c 100644 --- a/spring-web/src/main/java/org/springframework/web/multipart/support/StandardServletMultipartResolver.java +++ b/spring-web/src/main/java/org/springframework/web/multipart/support/StandardServletMultipartResolver.java @@ -21,6 +21,7 @@ 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 void setResolveLazily(boolean resolveLazily) { @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