From 39ddd0f349e17af612fefdd8822468c2d280aa7f Mon Sep 17 00:00:00 2001 From: igor-suhorukov Date: Sun, 25 Feb 2018 20:34:35 +0100 Subject: [PATCH] Polish: String function use should be optimized for single characters (cherry picked from commit 49fd724) --- .../aop/aspectj/AspectJAdviceParameterNameDiscoverer.java | 4 ++-- .../aop/aspectj/annotation/AspectMetadata.java | 2 +- .../src/main/java/org/springframework/beans/BeanUtils.java | 4 ++-- .../java/org/springframework/beans/TypeConverterDelegate.java | 2 +- .../springframework/beans/factory/xml/BeansDtdResolver.java | 2 +- .../beans/factory/xml/UtilNamespaceHandler.java | 2 +- .../springframework/core/env/SimpleCommandLineArgsParser.java | 4 ++-- .../core/io/support/PathMatchingResourcePatternResolver.java | 4 ++-- .../src/main/java/org/springframework/util/StringUtils.java | 2 +- .../jdbc/core/metadata/GenericCallMetaDataProvider.java | 2 +- .../org/springframework/jdbc/datasource/init/ScriptUtils.java | 2 +- .../springframework/messaging/simp/stomp/StompDecoder.java | 4 ++-- .../interceptor/MethodMapTransactionAttributeSource.java | 2 +- .../web/multipart/commons/CommonsMultipartFile.java | 4 ++-- .../org/springframework/web/util/UriComponentsBuilder.java | 4 ++-- .../web/servlet/mvc/UrlFilenameViewController.java | 2 +- .../web/servlet/resource/AppCacheManifestTransformer.java | 4 ++-- .../web/servlet/resource/CssLinkResourceTransformer.java | 2 +- .../web/servlet/resource/ResourceHttpRequestHandler.java | 2 +- .../web/servlet/resource/ResourceUrlEncodingFilter.java | 2 +- .../web/servlet/resource/ResourceUrlProvider.java | 4 ++-- .../web/servlet/resource/WebJarsResourceResolver.java | 2 +- .../org/springframework/web/servlet/view/AbstractView.java | 2 +- 23 files changed, 32 insertions(+), 32 deletions(-) diff --git a/spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer.java b/spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer.java index bd1e7a28a2..fa044c178a 100644 --- a/spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer.java +++ b/spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer.java @@ -415,7 +415,7 @@ public class AspectJAdviceParameterNameDiscoverer implements ParameterNameDiscov String[] tokens = StringUtils.tokenizeToStringArray(this.pointcutExpression, " "); for (int i = 0; i < tokens.length; i++) { String toMatch = tokens[i]; - int firstParenIndex = toMatch.indexOf("("); + int firstParenIndex = toMatch.indexOf('('); if (firstParenIndex != -1) { toMatch = toMatch.substring(0, firstParenIndex); } @@ -575,7 +575,7 @@ public class AspectJAdviceParameterNameDiscoverer implements ParameterNameDiscov if (toMatch.startsWith("!")) { toMatch = toMatch.substring(1); } - int firstParenIndex = toMatch.indexOf("("); + int firstParenIndex = toMatch.indexOf('('); if (firstParenIndex != -1) { toMatch = toMatch.substring(0, firstParenIndex); } diff --git a/spring-aop/src/main/java/org/springframework/aop/aspectj/annotation/AspectMetadata.java b/spring-aop/src/main/java/org/springframework/aop/aspectj/annotation/AspectMetadata.java index 5b905cfe2c..937690c7be 100644 --- a/spring-aop/src/main/java/org/springframework/aop/aspectj/annotation/AspectMetadata.java +++ b/spring-aop/src/main/java/org/springframework/aop/aspectj/annotation/AspectMetadata.java @@ -127,7 +127,7 @@ public class AspectMetadata implements Serializable { */ private String findPerClause(Class aspectClass) { String str = aspectClass.getAnnotation(Aspect.class).value(); - str = str.substring(str.indexOf("(") + 1); + str = str.substring(str.indexOf('(') + 1); str = str.substring(0, str.length() - 1); return str; } diff --git a/spring-beans/src/main/java/org/springframework/beans/BeanUtils.java b/spring-beans/src/main/java/org/springframework/beans/BeanUtils.java index c29eaf536d..ca0ea7ab45 100644 --- a/spring-beans/src/main/java/org/springframework/beans/BeanUtils.java +++ b/spring-beans/src/main/java/org/springframework/beans/BeanUtils.java @@ -311,8 +311,8 @@ public abstract class BeanUtils { public static Method resolveSignature(String signature, Class clazz) { Assert.hasText(signature, "'signature' must not be empty"); Assert.notNull(clazz, "Class must not be null"); - int firstParen = signature.indexOf("("); - int lastParen = signature.indexOf(")"); + int firstParen = signature.indexOf('('); + int lastParen = signature.indexOf(')'); if (firstParen > -1 && lastParen == -1) { throw new IllegalArgumentException("Invalid method signature '" + signature + "': expected closing ')' for args list"); diff --git a/spring-beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java b/spring-beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java index 6531d6b9a0..ef7d44eb06 100644 --- a/spring-beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java +++ b/spring-beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java @@ -325,7 +325,7 @@ class TypeConverterDelegate { if (Enum.class == requiredType) { // target type is declared as raw enum, treat the trimmed value as .FIELD_NAME - int index = trimmedValue.lastIndexOf("."); + int index = trimmedValue.lastIndexOf('.'); if (index > - 1) { String enumType = trimmedValue.substring(0, index); String fieldName = trimmedValue.substring(index + 1); diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/xml/BeansDtdResolver.java b/spring-beans/src/main/java/org/springframework/beans/factory/xml/BeansDtdResolver.java index ad096bff7b..fe971fdca9 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/xml/BeansDtdResolver.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/xml/BeansDtdResolver.java @@ -58,7 +58,7 @@ public class BeansDtdResolver implements EntityResolver { "] and system ID [" + systemId + "]"); } if (systemId != null && systemId.endsWith(DTD_EXTENSION)) { - int lastPathSeparator = systemId.lastIndexOf("/"); + int lastPathSeparator = systemId.lastIndexOf('/'); int dtdNameStart = systemId.indexOf(DTD_NAME, lastPathSeparator); if (dtdNameStart != -1) { String dtdFile = DTD_FILENAME + DTD_EXTENSION; diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/xml/UtilNamespaceHandler.java b/spring-beans/src/main/java/org/springframework/beans/factory/xml/UtilNamespaceHandler.java index ba6b41ac82..6736e0df13 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/xml/UtilNamespaceHandler.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/xml/UtilNamespaceHandler.java @@ -88,7 +88,7 @@ public class UtilNamespaceHandler extends NamespaceHandlerSupport { parserContext.getReaderContext().error("Attribute 'path' must not be empty", element); return; } - int dotIndex = path.indexOf("."); + int dotIndex = path.indexOf('.'); if (dotIndex == -1) { parserContext.getReaderContext().error( "Attribute 'path' must follow pattern 'beanName.propertyName'", element); diff --git a/spring-core/src/main/java/org/springframework/core/env/SimpleCommandLineArgsParser.java b/spring-core/src/main/java/org/springframework/core/env/SimpleCommandLineArgsParser.java index b7ad3c42d9..d9e0afb686 100644 --- a/spring-core/src/main/java/org/springframework/core/env/SimpleCommandLineArgsParser.java +++ b/spring-core/src/main/java/org/springframework/core/env/SimpleCommandLineArgsParser.java @@ -65,8 +65,8 @@ class SimpleCommandLineArgsParser { String optionName; String optionValue = null; if (optionText.contains("=")) { - optionName = optionText.substring(0, optionText.indexOf("=")); - optionValue = optionText.substring(optionText.indexOf("=")+1, optionText.length()); + optionName = optionText.substring(0, optionText.indexOf('=')); + optionValue = optionText.substring(optionText.indexOf('=')+1, optionText.length()); } else { optionName = optionText; 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 f9ae32cf31..131bb0a1ad 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 @@ -287,7 +287,7 @@ public class PathMatchingResourcePatternResolver implements ResourcePatternResol // Generally only look for a pattern after a prefix here, // and on Tomcat only after the "*/" separator for its "war:" protocol. int prefixEnd = (locationPattern.startsWith("war:") ? locationPattern.indexOf("*/") + 1 : - locationPattern.indexOf(":") + 1); + locationPattern.indexOf(':') + 1); if (getPathMatcher().isPattern(locationPattern.substring(prefixEnd))) { // a file pattern return findPathMatchingResources(locationPattern); @@ -525,7 +525,7 @@ public class PathMatchingResourcePatternResolver implements ResourcePatternResol * @see #retrieveMatchingFiles */ protected String determineRootDir(String location) { - int prefixEnd = location.indexOf(":") + 1; + int prefixEnd = location.indexOf(':') + 1; int rootDirEnd = location.length(); while (rootDirEnd > prefixEnd && getPathMatcher().isPattern(location.substring(prefixEnd, rootDirEnd))) { rootDirEnd = location.lastIndexOf('/', rootDirEnd - 2) + 1; diff --git a/spring-core/src/main/java/org/springframework/util/StringUtils.java b/spring-core/src/main/java/org/springframework/util/StringUtils.java index 793a084ef0..b2ed59a890 100644 --- a/spring-core/src/main/java/org/springframework/util/StringUtils.java +++ b/spring-core/src/main/java/org/springframework/util/StringUtils.java @@ -634,7 +634,7 @@ public abstract class StringUtils { // first path element. This is necessary to correctly parse paths like // "file:core/../core/io/Resource.class", where the ".." should just // strip the first "core" directory while keeping the "file:" prefix. - int prefixIndex = pathToUse.indexOf(":"); + int prefixIndex = pathToUse.indexOf(':'); String prefix = ""; if (prefixIndex != -1) { prefix = pathToUse.substring(0, prefixIndex + 1); diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericCallMetaDataProvider.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericCallMetaDataProvider.java index a9ece9582a..d427b80784 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericCallMetaDataProvider.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericCallMetaDataProvider.java @@ -338,7 +338,7 @@ public class GenericCallMetaDataProvider implements CallMetaDataProvider { } else if (found.isEmpty()) { if (metaDataProcedureName.contains(".") && !StringUtils.hasText(metaDataCatalogName)) { - String packageName = metaDataProcedureName.substring(0, metaDataProcedureName.indexOf(".")); + String packageName = metaDataProcedureName.substring(0, metaDataProcedureName.indexOf('.')); throw new InvalidDataAccessApiUsageException( "Unable to determine the correct call signature for '" + metaDataProcedureName + "' - package name should be specified separately using '.withCatalogName(\"" + diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/init/ScriptUtils.java b/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/init/ScriptUtils.java index 10076a01c6..423bc3f36a 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/init/ScriptUtils.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/init/ScriptUtils.java @@ -209,7 +209,7 @@ public abstract class ScriptUtils { } else if (script.startsWith(commentPrefix, i)) { // Skip over any content from the start of the comment to the EOL - int indexOfNextNewline = script.indexOf("\n", i); + int indexOfNextNewline = script.indexOf('\n', i); if (indexOfNextNewline > i) { i = indexOfNextNewline; continue; diff --git a/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompDecoder.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompDecoder.java index 21540819d0..d4700498f3 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompDecoder.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompDecoder.java @@ -251,7 +251,7 @@ public class StompDecoder { private String unescape(String inString) { StringBuilder sb = new StringBuilder(inString.length()); int pos = 0; // position in the old string - int index = inString.indexOf("\\"); + int index = inString.indexOf('\\'); while (index >= 0) { sb.append(inString.substring(pos, index)); @@ -276,7 +276,7 @@ public class StompDecoder { throw new StompConversionException("Illegal escape sequence at index " + index + ": " + inString); } pos = index + 2; - index = inString.indexOf("\\", pos); + index = inString.indexOf('\\', pos); } sb.append(inString.substring(pos)); diff --git a/spring-tx/src/main/java/org/springframework/transaction/interceptor/MethodMapTransactionAttributeSource.java b/spring-tx/src/main/java/org/springframework/transaction/interceptor/MethodMapTransactionAttributeSource.java index 81d5297240..dd3d42ae1e 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/interceptor/MethodMapTransactionAttributeSource.java +++ b/spring-tx/src/main/java/org/springframework/transaction/interceptor/MethodMapTransactionAttributeSource.java @@ -122,7 +122,7 @@ public class MethodMapTransactionAttributeSource */ public void addTransactionalMethod(String name, TransactionAttribute attr) { Assert.notNull(name, "Name must not be null"); - int lastDotIndex = name.lastIndexOf("."); + int lastDotIndex = name.lastIndexOf('.'); if (lastDotIndex == -1) { throw new IllegalArgumentException("'" + name + "' is not a valid method name: format is FQN.methodName"); } diff --git a/spring-web/src/main/java/org/springframework/web/multipart/commons/CommonsMultipartFile.java b/spring-web/src/main/java/org/springframework/web/multipart/commons/CommonsMultipartFile.java index 3d0b3f538f..84d4a05ef2 100644 --- a/spring-web/src/main/java/org/springframework/web/multipart/commons/CommonsMultipartFile.java +++ b/spring-web/src/main/java/org/springframework/web/multipart/commons/CommonsMultipartFile.java @@ -101,9 +101,9 @@ public class CommonsMultipartFile implements MultipartFile, Serializable { } // Check for Unix-style path - int unixSep = filename.lastIndexOf("/"); + int unixSep = filename.lastIndexOf('/'); // Check for Windows-style path - int winSep = filename.lastIndexOf("\\"); + int winSep = filename.lastIndexOf('\\'); // Cut off at latest possible point int pos = (winSep > unixSep ? winSep : unixSep); if (pos != -1) { diff --git a/spring-web/src/main/java/org/springframework/web/util/UriComponentsBuilder.java b/spring-web/src/main/java/org/springframework/web/util/UriComponentsBuilder.java index b7d376f3d3..5e63576023 100644 --- a/spring-web/src/main/java/org/springframework/web/util/UriComponentsBuilder.java +++ b/spring-web/src/main/java/org/springframework/web/util/UriComponentsBuilder.java @@ -713,8 +713,8 @@ public class UriComponentsBuilder implements Cloneable { } private void adaptForwardedHost(String hostToUse) { - int portSeparatorIdx = hostToUse.lastIndexOf(":"); - if (portSeparatorIdx > hostToUse.lastIndexOf("]")) { + int portSeparatorIdx = hostToUse.lastIndexOf(':'); + if (portSeparatorIdx > hostToUse.lastIndexOf(']')) { host(hostToUse.substring(0, portSeparatorIdx)); port(Integer.parseInt(hostToUse.substring(portSeparatorIdx + 1))); } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/UrlFilenameViewController.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/UrlFilenameViewController.java index d244bf543d..248db7a537 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/UrlFilenameViewController.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/UrlFilenameViewController.java @@ -139,7 +139,7 @@ public class UrlFilenameViewController extends AbstractUrlViewController { */ protected String extractViewNameFromUrlPath(String uri) { int start = (uri.charAt(0) == '/' ? 1 : 0); - int lastIndex = uri.lastIndexOf("."); + int lastIndex = uri.lastIndexOf('.'); int end = (lastIndex < 0 ? uri.length() : lastIndex); return uri.substring(start, end); } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/AppCacheManifestTransformer.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/AppCacheManifestTransformer.java index ba4922c27c..fd5b46010d 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/AppCacheManifestTransformer.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/AppCacheManifestTransformer.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2015 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. @@ -190,7 +190,7 @@ public class AppCacheManifestTransformer extends ResourceTransformerSupport { } private boolean hasScheme(String link) { - int schemeIndex = link.indexOf(":"); + int schemeIndex = link.indexOf(':'); return (link.startsWith("//") || (schemeIndex > 0 && !link.substring(0, schemeIndex).contains("/"))); } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/CssLinkResourceTransformer.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/CssLinkResourceTransformer.java index fa884f7a49..b47a22db31 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/CssLinkResourceTransformer.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/CssLinkResourceTransformer.java @@ -121,7 +121,7 @@ public class CssLinkResourceTransformer extends ResourceTransformerSupport { } private boolean hasScheme(String link) { - int schemeIndex = link.indexOf(":"); + int schemeIndex = link.indexOf(':'); return (schemeIndex > 0 && !link.substring(0, schemeIndex).contains("/")) || link.indexOf("//") == 0; } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceHttpRequestHandler.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceHttpRequestHandler.java index f3cec24044..2b31cb5f96 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceHttpRequestHandler.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceHttpRequestHandler.java @@ -349,7 +349,7 @@ public class ResourceHttpRequestHandler extends WebContentGenerator Charset charset = null; location = location.trim(); if (location.startsWith(URL_RESOURCE_CHARSET_PREFIX)) { - int endIndex = location.indexOf("]", URL_RESOURCE_CHARSET_PREFIX.length()); + int endIndex = location.indexOf(']', URL_RESOURCE_CHARSET_PREFIX.length()); if (endIndex == -1) { throw new IllegalArgumentException("Invalid charset syntax in location: " + location); } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceUrlEncodingFilter.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceUrlEncodingFilter.java index 30f3722982..d6ca1c33ec 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceUrlEncodingFilter.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceUrlEncodingFilter.java @@ -120,7 +120,7 @@ public class ResourceUrlEncodingFilter extends GenericFilterBean { } private int getQueryParamsIndex(String url) { - int index = url.indexOf("?"); + int index = url.indexOf('?'); return (index > 0 ? index : url.length()); } } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceUrlProvider.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceUrlProvider.java index 1a00f94339..15f635fdd2 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceUrlProvider.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceUrlProvider.java @@ -198,11 +198,11 @@ public class ResourceUrlProvider implements ApplicationListener 0) { suffixIndex = queryIndex; } - int hashIndex = lookupPath.indexOf("#"); + int hashIndex = lookupPath.indexOf('#'); if(hashIndex > 0) { suffixIndex = Math.min(suffixIndex, hashIndex); } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/WebJarsResourceResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/WebJarsResourceResolver.java index 71c2a490e5..3cf87abaf4 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/WebJarsResourceResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/WebJarsResourceResolver.java @@ -100,7 +100,7 @@ public class WebJarsResourceResolver extends AbstractResourceResolver { protected String findWebJarResourcePath(String path) { int startOffset = (path.startsWith("/") ? 1 : 0); - int endOffset = path.indexOf("/", 1); + int endOffset = path.indexOf('/', 1); if (endOffset != -1) { String webjar = path.substring(startOffset, endOffset); String partialPath = path.substring(endOffset + 1); diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/view/AbstractView.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/view/AbstractView.java index b5d5d41c1f..a4da16d757 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/view/AbstractView.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/view/AbstractView.java @@ -126,7 +126,7 @@ public abstract class AbstractView extends WebApplicationObjectSupport implement StringTokenizer st = new StringTokenizer(propString, ","); while (st.hasMoreTokens()) { String tok = st.nextToken(); - int eqIdx = tok.indexOf("="); + int eqIdx = tok.indexOf('='); if (eqIdx == -1) { throw new IllegalArgumentException("Expected = in attributes CSV string '" + propString + "'"); }