Browse Source

Refine use of substring operations

Closes gh-25445
5.0.x
Juergen Hoeller 5 years ago
parent
commit
c0bd19aab5
  1. 2
      spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer.java
  2. 2
      spring-beans/src/main/java/org/springframework/beans/PropertyEditorRegistrySupport.java
  3. 4
      spring-context/src/main/java/org/springframework/scheduling/config/TaskExecutorFactoryBean.java
  4. 4
      spring-core/src/main/java/org/springframework/util/MimeTypeUtils.java
  5. 7
      spring-jms/src/main/java/org/springframework/jms/listener/DefaultMessageListenerContainer.java
  6. 2
      spring-jms/src/main/java/org/springframework/jms/listener/SimpleMessageListenerContainer.java
  7. 2
      spring-jms/src/main/java/org/springframework/jms/listener/endpoint/JmsActivationSpecConfig.java
  8. 4
      spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompDecoder.java
  9. 4
      spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompEncoder.java
  10. 6
      spring-test/src/main/java/org/springframework/test/web/servlet/setup/PatternMappingFilterProxy.java
  11. 23
      spring-web/src/main/java/org/springframework/web/util/UriTemplate.java
  12. 6
      spring-webflux/src/main/java/org/springframework/web/reactive/result/view/RedirectView.java
  13. 2
      spring-webmvc/src/main/java/org/springframework/web/servlet/tags/UrlTag.java
  14. 4
      spring-webmvc/src/main/java/org/springframework/web/servlet/view/RedirectView.java
  15. 2
      spring-websocket/src/main/java/org/springframework/web/socket/WebSocketExtension.java

2
spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer.java

@ -656,7 +656,7 @@ public class AspectJAdviceParameterNameDiscoverer implements ParameterNameDiscov @@ -656,7 +656,7 @@ public class AspectJAdviceParameterNameDiscoverer implements ParameterNameDiscov
}
if (tokens[currentIndex].endsWith(")")) {
sb.append(tokens[currentIndex].substring(0, tokens[currentIndex].length() - 1));
sb.append(tokens[currentIndex], 0, tokens[currentIndex].length() - 1);
return new PointcutBody(numTokensConsumed, sb.toString().trim());
}

2
spring-beans/src/main/java/org/springframework/beans/PropertyEditorRegistrySupport.java

@ -501,7 +501,7 @@ public class PropertyEditorRegistrySupport implements PropertyEditorRegistry { @@ -501,7 +501,7 @@ public class PropertyEditorRegistrySupport implements PropertyEditorRegistry {
if (endIndex != -1) {
String prefix = propertyPath.substring(0, startIndex);
String key = propertyPath.substring(startIndex, endIndex + 1);
String suffix = propertyPath.substring(endIndex + 1, propertyPath.length());
String suffix = propertyPath.substring(endIndex + 1);
// Strip the first key.
strippedPaths.add(nestedPath + prefix + suffix);
// Search for further keys to strip, with the first key stripped.

4
spring-context/src/main/java/org/springframework/scheduling/config/TaskExecutorFactoryBean.java

@ -106,8 +106,8 @@ public class TaskExecutorFactoryBean implements @@ -106,8 +106,8 @@ public class TaskExecutorFactoryBean implements
int maxPoolSize;
int separatorIndex = this.poolSize.indexOf('-');
if (separatorIndex != -1) {
corePoolSize = Integer.valueOf(this.poolSize.substring(0, separatorIndex));
maxPoolSize = Integer.valueOf(this.poolSize.substring(separatorIndex + 1, this.poolSize.length()));
corePoolSize = Integer.parseInt(this.poolSize.substring(0, separatorIndex));
maxPoolSize = Integer.parseInt(this.poolSize.substring(separatorIndex + 1));
if (corePoolSize > maxPoolSize) {
throw new IllegalArgumentException(
"Lower bound of pool-size range must not exceed the upper bound");

4
spring-core/src/main/java/org/springframework/util/MimeTypeUtils.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2018 the original author or authors.
* Copyright 2002-2020 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.
@ -199,7 +199,7 @@ public abstract class MimeTypeUtils { @@ -199,7 +199,7 @@ public abstract class MimeTypeUtils {
throw new InvalidMimeTypeException(mimeType, "does not contain subtype after '/'");
}
String type = fullType.substring(0, subIndex);
String subtype = fullType.substring(subIndex + 1, fullType.length());
String subtype = fullType.substring(subIndex + 1);
if (MimeType.WILDCARD_TYPE.equals(type) && !MimeType.WILDCARD_TYPE.equals(subtype)) {
throw new InvalidMimeTypeException(mimeType, "wildcard type is legal only in '*/*' (all mime types)");
}

7
spring-jms/src/main/java/org/springframework/jms/listener/DefaultMessageListenerContainer.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2018 the original author or authors.
* Copyright 2002-2019 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.
@ -309,7 +309,7 @@ public class DefaultMessageListenerContainer extends AbstractPollingMessageListe @@ -309,7 +309,7 @@ public class DefaultMessageListenerContainer extends AbstractPollingMessageListe
int separatorIndex = concurrency.indexOf('-');
if (separatorIndex != -1) {
setConcurrentConsumers(Integer.parseInt(concurrency.substring(0, separatorIndex)));
setMaxConcurrentConsumers(Integer.parseInt(concurrency.substring(separatorIndex + 1, concurrency.length())));
setMaxConcurrentConsumers(Integer.parseInt(concurrency.substring(separatorIndex + 1)));
}
else {
setConcurrentConsumers(1);
@ -383,8 +383,7 @@ public class DefaultMessageListenerContainer extends AbstractPollingMessageListe @@ -383,8 +383,7 @@ public class DefaultMessageListenerContainer extends AbstractPollingMessageListe
public void setMaxConcurrentConsumers(int maxConcurrentConsumers) {
Assert.isTrue(maxConcurrentConsumers > 0, "'maxConcurrentConsumers' value must be at least 1 (one)");
synchronized (this.lifecycleMonitor) {
this.maxConcurrentConsumers =
(maxConcurrentConsumers > this.concurrentConsumers ? maxConcurrentConsumers : this.concurrentConsumers);
this.maxConcurrentConsumers = Math.max(maxConcurrentConsumers, this.concurrentConsumers);
}
}

2
spring-jms/src/main/java/org/springframework/jms/listener/SimpleMessageListenerContainer.java

@ -108,7 +108,7 @@ public class SimpleMessageListenerContainer extends AbstractMessageListenerConta @@ -108,7 +108,7 @@ public class SimpleMessageListenerContainer extends AbstractMessageListenerConta
try {
int separatorIndex = concurrency.indexOf('-');
if (separatorIndex != -1) {
setConcurrentConsumers(Integer.parseInt(concurrency.substring(separatorIndex + 1, concurrency.length())));
setConcurrentConsumers(Integer.parseInt(concurrency.substring(separatorIndex + 1)));
}
else {
setConcurrentConsumers(Integer.parseInt(concurrency));

2
spring-jms/src/main/java/org/springframework/jms/listener/endpoint/JmsActivationSpecConfig.java

@ -226,7 +226,7 @@ public class JmsActivationSpecConfig { @@ -226,7 +226,7 @@ public class JmsActivationSpecConfig {
try {
int separatorIndex = concurrency.indexOf('-');
if (separatorIndex != -1) {
setMaxConcurrency(Integer.parseInt(concurrency.substring(separatorIndex + 1, concurrency.length())));
setMaxConcurrency(Integer.parseInt(concurrency.substring(separatorIndex + 1)));
}
else {
setMaxConcurrency(Integer.parseInt(concurrency));

4
spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompDecoder.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2019 the original author or authors.
* Copyright 2002-2020 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.
@ -263,7 +263,7 @@ public class StompDecoder { @@ -263,7 +263,7 @@ public class StompDecoder {
int index = inString.indexOf('\\');
while (index >= 0) {
sb.append(inString.substring(pos, index));
sb.append(inString, pos, index);
if (index + 1 >= inString.length()) {
throw new StompConversionException("Illegal escape sequence at index " + index + ": " + inString);
}

4
spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompEncoder.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2017 the original author or authors.
* Copyright 2002-2020 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.
@ -223,7 +223,7 @@ public class StompEncoder { @@ -223,7 +223,7 @@ public class StompEncoder {
private StringBuilder getStringBuilder(@Nullable StringBuilder sb, String inString, int i) {
if (sb == null) {
sb = new StringBuilder(inString.length());
sb.append(inString.substring(0, i));
sb.append(inString, 0, i);
}
return sb;
}

6
spring-test/src/main/java/org/springframework/test/web/servlet/setup/PatternMappingFilterProxy.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2016 the original author or authors.
* Copyright 2002-2019 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.
@ -72,7 +72,7 @@ final class PatternMappingFilterProxy implements Filter { @@ -72,7 +72,7 @@ final class PatternMappingFilterProxy implements Filter {
private void addUrlPattern(String urlPattern) {
Assert.notNull(urlPattern, "Found null URL Pattern");
if (urlPattern.startsWith(EXTENSION_MAPPING_PATTERN)) {
this.endsWithMatches.add(urlPattern.substring(1, urlPattern.length()));
this.endsWithMatches.add(urlPattern.substring(1));
}
else if (urlPattern.equals(PATH_MAPPING_PATTERN)) {
this.startsWithMatches.add("");
@ -82,7 +82,7 @@ final class PatternMappingFilterProxy implements Filter { @@ -82,7 +82,7 @@ final class PatternMappingFilterProxy implements Filter {
this.exactMatches.add(urlPattern.substring(0, urlPattern.length() - 2));
}
else {
if ("".equals(urlPattern)) {
if (urlPattern.isEmpty()) {
urlPattern = "/";
}
this.exactMatches.add(urlPattern);

23
spring-web/src/main/java/org/springframework/web/util/UriTemplate.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2017 the original author or authors.
* Copyright 2002-2019 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.
@ -30,14 +30,19 @@ import org.springframework.lang.Nullable; @@ -30,14 +30,19 @@ import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
/**
* Represents a URI template. A URI template is a URI-like String that contains variables
* enclosed by braces ({@code {}}) which can be expanded to produce an actual URI.
* Representation of a URI template that can be expanded with URI variables via
* {@link #expand(Map)}, {@link #expand(Object[])}, or matched to a URL via
* {@link #match(String)}. This class is designed to be thread-safe and
* reusable, and allows any number of expand or match calls.
*
* <p>See {@link #expand(Map)}, {@link #expand(Object[])}, and {@link #match(String)}
* for example usages.
*
* <p>This class is designed to be thread-safe and reusable, allowing for any number
* of expand or match calls.
* <p><strong>Note:</strong> this class uses {@link UriComponentsBuilder}
* internally to expand URI templates, and is merely a shortcut for already
* prepared URI templates. For more dynamic preparation and extra flexibility,
* e.g. around URI encoding, consider using {@code UriComponentsBuilder} or the
* higher level {@link DefaultUriBuilderFactory} which adds several encoding
* modes on top of {@code UriComponentsBuilder}. See the
* <a href="https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-uri-building">reference docs</a>
* for further details.
*
* @author Arjen Poutsma
* @author Juergen Hoeller
@ -220,7 +225,7 @@ public class UriTemplate implements Serializable { @@ -220,7 +225,7 @@ public class UriTemplate implements Serializable {
throw new IllegalArgumentException(
"No custom regular expression specified after ':' in \"" + variable + "\"");
}
String regex = variable.substring(idx + 1, variable.length());
String regex = variable.substring(idx + 1);
pattern.append('(');
pattern.append(regex);
pattern.append(')');

6
spring-webflux/src/main/java/org/springframework/web/reactive/result/view/RedirectView.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2019 the original author or authors.
* Copyright 2002-2020 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.
@ -245,12 +245,12 @@ public class RedirectView extends AbstractUrlBasedView { @@ -245,12 +245,12 @@ public class RedirectView extends AbstractUrlBasedView {
String name = matcher.group(1);
Object value = (model.containsKey(name) ? model.get(name) : uriVariables.get(name));
Assert.notNull(value, () -> "No value for URI variable '" + name + "'");
result.append(targetUrl.substring(endLastMatch, matcher.start()));
result.append(targetUrl, endLastMatch, matcher.start());
result.append(encodeUriVariable(value.toString()));
endLastMatch = matcher.end();
found = matcher.find();
}
result.append(targetUrl.substring(endLastMatch, targetUrl.length()));
result.append(targetUrl.substring(endLastMatch));
return result;
}

2
spring-webmvc/src/main/java/org/springframework/web/servlet/tags/UrlTag.java

@ -277,7 +277,7 @@ public class UrlTag extends HtmlEscapingAwareTag implements ParamAware { @@ -277,7 +277,7 @@ public class UrlTag extends HtmlEscapingAwareTag implements ParamAware {
}
else {
if (this.context.endsWith("/")) {
url.append(this.context.substring(0, this.context.length() - 1));
url.append(this.context, 0, this.context.length() - 1);
}
else {
url.append(this.context);

4
spring-webmvc/src/main/java/org/springframework/web/servlet/view/RedirectView.java

@ -56,7 +56,7 @@ import org.springframework.web.util.WebUtils; @@ -56,7 +56,7 @@ import org.springframework.web.util.WebUtils;
* but this behavior can be changed by overriding the
* {@link #isEligibleProperty(String, Object)} method.
*
* <p>A URL for this view is supposed to be a HTTP redirect URL, i.e.
* <p>A URL for this view is supposed to be an HTTP redirect URL, i.e.
* suitable for HttpServletResponse's {@code sendRedirect} method, which
* is what actually does the redirect if the HTTP 1.0 flag is on, or via sending
* back an HTTP 303 code - if the HTTP 1.0 compatibility flag is off.
@ -386,7 +386,7 @@ public class RedirectView extends AbstractUrlBasedView implements SmartView { @@ -386,7 +386,7 @@ public class RedirectView extends AbstractUrlBasedView implements SmartView {
if (value == null) {
throw new IllegalArgumentException("Model has no value for key '" + name + "'");
}
result.append(targetUrl.substring(endLastMatch, matcher.start()));
result.append(targetUrl, endLastMatch, matcher.start());
result.append(UriUtils.encodePathSegment(value.toString(), encodingScheme));
endLastMatch = matcher.end();
}

2
spring-websocket/src/main/java/org/springframework/web/socket/WebSocketExtension.java

@ -160,7 +160,7 @@ public class WebSocketExtension { @@ -160,7 +160,7 @@ public class WebSocketExtension {
int eqIndex = parameter.indexOf('=');
if (eqIndex != -1) {
String attribute = parameter.substring(0, eqIndex);
String value = parameter.substring(eqIndex + 1, parameter.length());
String value = parameter.substring(eqIndex + 1);
parameters.put(attribute, value);
}
}

Loading…
Cancel
Save