From a2ef6badc4c76790128910851fdde0df55ec15f9 Mon Sep 17 00:00:00 2001 From: Sam Brannen Date: Thu, 24 Jun 2021 18:53:51 +0200 Subject: [PATCH] Use StringBuilder.append(char) where possible To slightly improve performance, this commit switches to StringBuilder.append(char) instead of StringBuilder.append(String) whenever we append a single character to a StringBuilder. Closes gh-27098 --- .../AspectJAdviceParameterNameDiscoverer.java | 6 ++--- .../aspectj/AspectJExpressionPointcut.java | 4 +-- .../MethodInvocationProceedingJoinPoint.java | 14 +++++------ .../AbstractBeanFactoryPointcutAdvisor.java | 4 +-- .../AbstractBeanFactoryBasedTargetSource.java | 4 +-- ...ctJAdviceParameterNameDiscovererTests.java | 6 ++--- .../beans/TypeConverterDelegate.java | 6 ++--- .../RequiredAnnotationBeanPostProcessor.java | 8 +++--- .../support/AbstractBeanDefinition.java | 2 +- .../interceptor/AbstractJCacheOperation.java | 6 ++--- .../interceptor/CacheEvictOperation.java | 6 ++--- .../cache/interceptor/CacheOperation.java | 6 ++--- .../cache/interceptor/CachePutOperation.java | 4 +-- .../cache/interceptor/CacheableOperation.java | 6 ++--- .../ApplicationListenerMethodAdapter.java | 4 +-- .../context/support/LiveBeansView.java | 6 ++--- .../org/springframework/core/Constants.java | 4 +-- .../core/annotation/AnnotationAttributes.java | 8 +++--- ...izedMergedAnnotationInvocationHandler.java | 8 +++--- .../core/convert/TypeDescriptor.java | 2 +- .../org/springframework/util/StopWatch.java | 6 ++--- .../util/FastByteArrayOutputStreamTests.java | 6 ++--- .../util/StringUtilsTests.java | 4 +-- .../expression/ExpressionException.java | 4 +-- .../expression/spel/CodeFlow.java | 14 +++++------ .../expression/spel/SpelMessage.java | 4 +-- .../expression/spel/ast/BeanReference.java | 6 ++--- .../spel/ast/ConstructorReference.java | 8 +++--- .../expression/spel/ast/InlineMap.java | 8 +++--- .../expression/spel/ast/Operator.java | 6 ++--- .../spel/ast/QualifiedIdentifier.java | 6 ++--- .../expression/spel/ast/TypeReference.java | 4 +-- .../expression/spel/standard/Token.java | 10 ++++---- .../spel/AbstractExpressionTests.java | 20 +++++++-------- .../spel/SpelCompilationCoverageTests.java | 12 ++++----- .../core/metadata/CallMetaDataContext.java | 8 +++--- .../core/metadata/TableMetaDataContext.java | 4 +-- .../TransactionAwareDataSourceProxy.java | 6 ++--- ...ractIdentityColumnMaxValueIncrementer.java | 4 +-- .../config/AbstractJmsListenerEndpoint.java | 4 +-- .../jms/config/MethodJmsListenerEndpoint.java | 6 ++--- .../jms/config/SimpleJmsListenerEndpoint.java | 4 +-- .../MessagingMessageListenerAdapter.java | 4 +-- .../MethodArgumentNotValidException.java | 4 +-- .../simp/SimpMessageHeaderAccessor.java | 4 +-- .../simp/stomp/StompHeaderAccessor.java | 4 +-- .../messaging/support/GenericMessage.java | 6 ++--- .../simp/stomp/StompHeaderAccessorTests.java | 4 +-- .../support/MessageHeaderAccessorTests.java | 6 ++--- .../http/client/MockClientHttpRequest.java | 4 +-- .../AbstractRequestExpectationManager.java | 2 +- .../DefaultTransactionAttribute.java | 4 +-- .../ServerSentEventHttpMessageReader.java | 6 ++--- .../ServerSentEventHttpMessageWriter.java | 4 +-- .../bind/MethodArgumentNotValidException.java | 4 +-- ...sfiedServletRequestParameterException.java | 6 ++--- .../support/WebExchangeBindException.java | 4 +-- .../filter/AbstractRequestLoggingFilter.java | 4 +-- .../method/support/ModelAndViewContainer.java | 4 +-- .../pattern/CaptureVariablePathElement.java | 8 +++--- .../springframework/http/HttpRangeTests.java | 6 ++--- ...faultMultipartHttpServletRequestTests.java | 5 ++-- .../web/util/JavaScriptUtilsTests.java | 20 +++++++-------- .../web/util/pattern/PathPatternTests.java | 4 +-- .../result/method/RequestMappingInfo.java | 2 +- .../web/reactive/result/view/BindStatus.java | 4 +-- .../reactive/FlushingIntegrationTests.java | 4 +-- .../mvc/method/RequestMappingInfo.java | 2 +- .../mvc/method/annotation/SseEmitter.java | 25 +++++++++++++------ .../resource/PathResourceResolver.java | 2 +- .../web/servlet/support/BindStatus.java | 4 +-- .../web/servlet/tags/UrlTag.java | 10 ++++---- .../handler/HtmlFileTransportHandler.java | 4 +-- .../messaging/StompTextMessageBuilder.java | 10 ++++---- 74 files changed, 232 insertions(+), 220 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 ffcea9d0b0c..60a45977513 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 @@ -1,5 +1,5 @@ /* - * Copyright 2002-2020 the original author or authors. + * Copyright 2002-2021 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. @@ -625,7 +625,7 @@ public class AspectJAdviceParameterNameDiscoverer implements ParameterNameDiscov StringBuilder sb = new StringBuilder(); if (bodyStart >= 0 && bodyStart != (currentToken.length() - 1)) { sb.append(currentToken.substring(bodyStart + 1)); - sb.append(" "); + sb.append(' '); } numTokensConsumed++; int currentIndex = startIndex + numTokensConsumed; @@ -645,7 +645,7 @@ public class AspectJAdviceParameterNameDiscoverer implements ParameterNameDiscov toAppend = toAppend.substring(1); } sb.append(toAppend); - sb.append(" "); + sb.append(' '); currentIndex++; numTokensConsumed++; } diff --git a/spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJExpressionPointcut.java b/spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJExpressionPointcut.java index 1cdef3141da..8b5e5f6f3e0 100644 --- a/spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJExpressionPointcut.java +++ b/spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJExpressionPointcut.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2021 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. @@ -547,7 +547,7 @@ public class AspectJExpressionPointcut extends AbstractExpressionPointcut StringBuilder sb = new StringBuilder("AspectJExpressionPointcut: ("); for (int i = 0; i < this.pointcutParameterTypes.length; i++) { sb.append(this.pointcutParameterTypes[i].getName()); - sb.append(" "); + sb.append(' '); sb.append(this.pointcutParameterNames[i]); if ((i+1) < this.pointcutParameterTypes.length) { sb.append(", "); diff --git a/spring-aop/src/main/java/org/springframework/aop/aspectj/MethodInvocationProceedingJoinPoint.java b/spring-aop/src/main/java/org/springframework/aop/aspectj/MethodInvocationProceedingJoinPoint.java index d25ec2eb6bc..ef9016a1572 100644 --- a/spring-aop/src/main/java/org/springframework/aop/aspectj/MethodInvocationProceedingJoinPoint.java +++ b/spring-aop/src/main/java/org/springframework/aop/aspectj/MethodInvocationProceedingJoinPoint.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2020 the original author or authors. + * Copyright 2002-2021 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. @@ -255,19 +255,19 @@ public class MethodInvocationProceedingJoinPoint implements ProceedingJoinPoint, StringBuilder sb = new StringBuilder(); if (includeModifier) { sb.append(Modifier.toString(getModifiers())); - sb.append(" "); + sb.append(' '); } if (includeReturnTypeAndArgs) { appendType(sb, getReturnType(), useLongReturnAndArgumentTypeName); - sb.append(" "); + sb.append(' '); } appendType(sb, getDeclaringType(), useLongTypeName); - sb.append("."); + sb.append('.'); sb.append(getMethod().getName()); - sb.append("("); + sb.append('('); Class[] parametersTypes = getParameterTypes(); appendTypes(sb, parametersTypes, includeReturnTypeAndArgs, useLongReturnAndArgumentTypeName); - sb.append(")"); + sb.append(')'); return sb.toString(); } @@ -278,7 +278,7 @@ public class MethodInvocationProceedingJoinPoint implements ProceedingJoinPoint, for (int size = types.length, i = 0; i < size; i++) { appendType(sb, types[i], useLongReturnAndArgumentTypeName); if (i < size - 1) { - sb.append(","); + sb.append(','); } } } diff --git a/spring-aop/src/main/java/org/springframework/aop/support/AbstractBeanFactoryPointcutAdvisor.java b/spring-aop/src/main/java/org/springframework/aop/support/AbstractBeanFactoryPointcutAdvisor.java index ac69e3962b0..ccb008ebd01 100644 --- a/spring-aop/src/main/java/org/springframework/aop/support/AbstractBeanFactoryPointcutAdvisor.java +++ b/spring-aop/src/main/java/org/springframework/aop/support/AbstractBeanFactoryPointcutAdvisor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2017 the original author or authors. + * Copyright 2002-2021 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. @@ -137,7 +137,7 @@ public abstract class AbstractBeanFactoryPointcutAdvisor extends AbstractPointcu StringBuilder sb = new StringBuilder(getClass().getName()); sb.append(": advice "); if (this.adviceBeanName != null) { - sb.append("bean '").append(this.adviceBeanName).append("'"); + sb.append("bean '").append(this.adviceBeanName).append('\''); } else { sb.append(this.advice); diff --git a/spring-aop/src/main/java/org/springframework/aop/target/AbstractBeanFactoryBasedTargetSource.java b/spring-aop/src/main/java/org/springframework/aop/target/AbstractBeanFactoryBasedTargetSource.java index cf32c396d84..78c6d3abf6d 100644 --- a/spring-aop/src/main/java/org/springframework/aop/target/AbstractBeanFactoryBasedTargetSource.java +++ b/spring-aop/src/main/java/org/springframework/aop/target/AbstractBeanFactoryBasedTargetSource.java @@ -191,9 +191,9 @@ public abstract class AbstractBeanFactoryBasedTargetSource implements TargetSour @Override public String toString() { StringBuilder sb = new StringBuilder(getClass().getSimpleName()); - sb.append(" for target bean '").append(this.targetBeanName).append("'"); + sb.append(" for target bean '").append(this.targetBeanName).append('\''); if (this.targetClass != null) { - sb.append(" of type [").append(this.targetClass.getName()).append("]"); + sb.append(" of type [").append(this.targetClass.getName()).append(']'); } return sb.toString(); } diff --git a/spring-aop/src/test/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscovererTests.java b/spring-aop/src/test/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscovererTests.java index bd37f5d3770..40a5de33103 100644 --- a/spring-aop/src/test/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscovererTests.java +++ b/spring-aop/src/test/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscovererTests.java @@ -276,14 +276,14 @@ public class AspectJAdviceParameterNameDiscovererTests { private static String format(String[] names) { StringBuilder sb = new StringBuilder(); - sb.append("("); + sb.append('('); for (int i = 0; i < names.length; i++) { sb.append(names[i]); if ((i + 1) < names.length) { - sb.append(","); + sb.append(','); } } - sb.append(")"); + sb.append(')'); return sb.toString(); } 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 38a59ba3d68..2c419b1c109 100644 --- a/spring-beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java +++ b/spring-beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java @@ -247,14 +247,14 @@ class TypeConverterDelegate { // Definitely doesn't match: throw IllegalArgumentException/IllegalStateException StringBuilder msg = new StringBuilder(); msg.append("Cannot convert value of type '").append(ClassUtils.getDescriptiveType(newValue)); - msg.append("' to required type '").append(ClassUtils.getQualifiedName(requiredType)).append("'"); + msg.append("' to required type '").append(ClassUtils.getQualifiedName(requiredType)).append('\''); if (propertyName != null) { - msg.append(" for property '").append(propertyName).append("'"); + msg.append(" for property '").append(propertyName).append('\''); } if (editor != null) { msg.append(": PropertyEditor [").append(editor.getClass().getName()).append( "] returned inappropriate value of type '").append( - ClassUtils.getDescriptiveType(convertedValue)).append("'"); + ClassUtils.getDescriptiveType(convertedValue)).append('\''); throw new IllegalArgumentException(msg.toString()); } else { diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/RequiredAnnotationBeanPostProcessor.java b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/RequiredAnnotationBeanPostProcessor.java index 9978f979b50..a4cf5f314ce 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/RequiredAnnotationBeanPostProcessor.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/RequiredAnnotationBeanPostProcessor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2020 the original author or authors. + * Copyright 2002-2021 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. @@ -217,13 +217,13 @@ public class RequiredAnnotationBeanPostProcessor implements SmartInstantiationAw sb.append(" and"); } else { - sb.append(","); + sb.append(','); } } - sb.append(" '").append(propertyName).append("'"); + sb.append(" '").append(propertyName).append('\''); } sb.append(size == 1 ? " is" : " are"); - sb.append(" required for bean '").append(beanName).append("'"); + sb.append(" required for bean '").append(beanName).append('\''); return sb.toString(); } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanDefinition.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanDefinition.java index 5b5471a8832..2ceff658dbc 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanDefinition.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanDefinition.java @@ -1241,7 +1241,7 @@ public abstract class AbstractBeanDefinition extends BeanMetadataAttributeAccess @Override public String toString() { StringBuilder sb = new StringBuilder("class ["); - sb.append(getBeanClassName()).append("]"); + sb.append(getBeanClassName()).append(']'); sb.append("; scope=").append(this.scope); sb.append("; abstract=").append(this.abstractFlag); sb.append("; lazyInit=").append(this.lazyInit); diff --git a/spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/AbstractJCacheOperation.java b/spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/AbstractJCacheOperation.java index d1771b1bd6e..036a4f6cb58 100644 --- a/spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/AbstractJCacheOperation.java +++ b/spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/AbstractJCacheOperation.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2021 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. @@ -138,7 +138,7 @@ abstract class AbstractJCacheOperation implements JCacheOp @Override public String toString() { - return getOperationDescription().append("]").toString(); + return getOperationDescription().append(']').toString(); } /** @@ -148,7 +148,7 @@ abstract class AbstractJCacheOperation implements JCacheOp protected StringBuilder getOperationDescription() { StringBuilder result = new StringBuilder(); result.append(getClass().getSimpleName()); - result.append("["); + result.append('['); result.append(this.methodDetails); return result; } diff --git a/spring-context/src/main/java/org/springframework/cache/interceptor/CacheEvictOperation.java b/spring-context/src/main/java/org/springframework/cache/interceptor/CacheEvictOperation.java index 7e72078a1d2..ee9ec6e95c6 100644 --- a/spring-context/src/main/java/org/springframework/cache/interceptor/CacheEvictOperation.java +++ b/spring-context/src/main/java/org/springframework/cache/interceptor/CacheEvictOperation.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2021 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. @@ -71,9 +71,9 @@ public class CacheEvictOperation extends CacheOperation { @Override protected StringBuilder getOperationDescription() { StringBuilder sb = super.getOperationDescription(); - sb.append(","); + sb.append(','); sb.append(this.cacheWide); - sb.append(","); + sb.append(','); sb.append(this.beforeInvocation); return sb; } diff --git a/spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperation.java b/spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperation.java index 69f7305373f..aaee9b396b7 100644 --- a/spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperation.java +++ b/spring-context/src/main/java/org/springframework/cache/interceptor/CacheOperation.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2021 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. @@ -216,13 +216,13 @@ public abstract class CacheOperation implements BasicOperation { */ protected StringBuilder getOperationDescription() { StringBuilder result = new StringBuilder(getClass().getSimpleName()); - result.append("[").append(this.name); + result.append('[').append(this.name); result.append("] caches=").append(this.cacheNames); result.append(" | key='").append(this.key); result.append("' | keyGenerator='").append(this.keyGenerator); result.append("' | cacheManager='").append(this.cacheManager); result.append("' | cacheResolver='").append(this.cacheResolver); - result.append("' | condition='").append(this.condition).append("'"); + result.append("' | condition='").append(this.condition).append('\''); return result; } diff --git a/spring-context/src/main/java/org/springframework/cache/interceptor/CachePutOperation.java b/spring-context/src/main/java/org/springframework/cache/interceptor/CachePutOperation.java index d5b39ee788c..4b94ac5edff 100644 --- a/spring-context/src/main/java/org/springframework/cache/interceptor/CachePutOperation.java +++ b/spring-context/src/main/java/org/springframework/cache/interceptor/CachePutOperation.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2021 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. @@ -66,7 +66,7 @@ public class CachePutOperation extends CacheOperation { StringBuilder sb = super.getOperationDescription(); sb.append(" | unless='"); sb.append(this.unless); - sb.append("'"); + sb.append('\''); return sb; } diff --git a/spring-context/src/main/java/org/springframework/cache/interceptor/CacheableOperation.java b/spring-context/src/main/java/org/springframework/cache/interceptor/CacheableOperation.java index 922407d3357..9f7fcc2e97b 100644 --- a/spring-context/src/main/java/org/springframework/cache/interceptor/CacheableOperation.java +++ b/spring-context/src/main/java/org/springframework/cache/interceptor/CacheableOperation.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2021 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. @@ -79,10 +79,10 @@ public class CacheableOperation extends CacheOperation { StringBuilder sb = super.getOperationDescription(); sb.append(" | unless='"); sb.append(this.unless); - sb.append("'"); + sb.append('\''); sb.append(" | sync='"); sb.append(this.sync); - sb.append("'"); + sb.append('\''); return sb; } diff --git a/spring-context/src/main/java/org/springframework/context/event/ApplicationListenerMethodAdapter.java b/spring-context/src/main/java/org/springframework/context/event/ApplicationListenerMethodAdapter.java index e78c794ca55..bc7e1f93989 100644 --- a/spring-context/src/main/java/org/springframework/context/event/ApplicationListenerMethodAdapter.java +++ b/spring-context/src/main/java/org/springframework/context/event/ApplicationListenerMethodAdapter.java @@ -396,7 +396,7 @@ public class ApplicationListenerMethodAdapter implements GenericApplicationListe * @param message error message to append the HandlerMethod details to */ protected String getDetailedErrorMessage(Object bean, String message) { - StringBuilder sb = new StringBuilder(message).append("\n"); + StringBuilder sb = new StringBuilder(message).append('\n'); sb.append("HandlerMethod details: \n"); sb.append("Bean [").append(bean.getClass().getName()).append("]\n"); sb.append("Method [").append(this.method.toGenericString()).append("]\n"); @@ -426,7 +426,7 @@ public class ApplicationListenerMethodAdapter implements GenericApplicationListe StringBuilder sb = new StringBuilder(getDetailedErrorMessage(bean, message)); sb.append("Resolved arguments: \n"); for (int i = 0; i < resolvedArgs.length; i++) { - sb.append("[").append(i).append("] "); + sb.append('[').append(i).append("] "); if (resolvedArgs[i] == null) { sb.append("[null] \n"); } diff --git a/spring-context/src/main/java/org/springframework/context/support/LiveBeansView.java b/spring-context/src/main/java/org/springframework/context/support/LiveBeansView.java index 668710f02bd..96a9b212e39 100644 --- a/spring-context/src/main/java/org/springframework/context/support/LiveBeansView.java +++ b/spring-context/src/main/java/org/springframework/context/support/LiveBeansView.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2020 the original author or authors. + * Copyright 2002-2021 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. @@ -205,12 +205,12 @@ public class LiveBeansView implements LiveBeansViewMBean, ApplicationContextAwar } } result.append("]\n"); - result.append("}"); + result.append('}'); if (it.hasNext()) { result.append(",\n"); } } - result.append("]"); + result.append(']'); return result.toString(); } diff --git a/spring-core/src/main/java/org/springframework/core/Constants.java b/spring-core/src/main/java/org/springframework/core/Constants.java index 1515955483f..8e91d511c10 100644 --- a/spring-core/src/main/java/org/springframework/core/Constants.java +++ b/spring-core/src/main/java/org/springframework/core/Constants.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2021 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. @@ -324,7 +324,7 @@ public class Constants { for (int i = 0; i < propertyName.length(); i++) { char c = propertyName.charAt(i); if (Character.isUpperCase(c)) { - parsedPrefix.append("_"); + parsedPrefix.append('_'); parsedPrefix.append(c); } else { diff --git a/spring-core/src/main/java/org/springframework/core/annotation/AnnotationAttributes.java b/spring-core/src/main/java/org/springframework/core/annotation/AnnotationAttributes.java index 3a6f44f3ead..d864a4cb1e1 100644 --- a/spring-core/src/main/java/org/springframework/core/annotation/AnnotationAttributes.java +++ b/spring-core/src/main/java/org/springframework/core/annotation/AnnotationAttributes.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2021 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. @@ -394,9 +394,11 @@ public class AnnotationAttributes extends LinkedHashMap { sb.append(entry.getKey()); sb.append('='); sb.append(valueToString(entry.getValue())); - sb.append(entries.hasNext() ? ", " : ""); + if (entries.hasNext()) { + sb.append(", "); + } } - sb.append("}"); + sb.append('}'); return sb.toString(); } diff --git a/spring-core/src/main/java/org/springframework/core/annotation/SynthesizedMergedAnnotationInvocationHandler.java b/spring-core/src/main/java/org/springframework/core/annotation/SynthesizedMergedAnnotationInvocationHandler.java index 16a5e82b4b6..0201e15e269 100644 --- a/spring-core/src/main/java/org/springframework/core/annotation/SynthesizedMergedAnnotationInvocationHandler.java +++ b/spring-core/src/main/java/org/springframework/core/annotation/SynthesizedMergedAnnotationInvocationHandler.java @@ -177,17 +177,17 @@ final class SynthesizedMergedAnnotationInvocationHandler i private String annotationToString() { String string = this.string; if (string == null) { - StringBuilder builder = new StringBuilder("@").append(this.type.getName()).append("("); + StringBuilder builder = new StringBuilder("@").append(this.type.getName()).append('('); for (int i = 0; i < this.attributes.size(); i++) { Method attribute = this.attributes.get(i); if (i > 0) { builder.append(", "); } builder.append(attribute.getName()); - builder.append("="); + builder.append('='); builder.append(toString(getAttributeValue(attribute))); } - builder.append(")"); + builder.append(')'); string = builder.toString(); this.string = string; } @@ -206,7 +206,7 @@ final class SynthesizedMergedAnnotationInvocationHandler i } builder.append(toString(Array.get(value, i))); } - builder.append("]"); + builder.append(']'); return builder.toString(); } return String.valueOf(value); diff --git a/spring-core/src/main/java/org/springframework/core/convert/TypeDescriptor.java b/spring-core/src/main/java/org/springframework/core/convert/TypeDescriptor.java index de43740b852..1bc8cb281b1 100644 --- a/spring-core/src/main/java/org/springframework/core/convert/TypeDescriptor.java +++ b/spring-core/src/main/java/org/springframework/core/convert/TypeDescriptor.java @@ -513,7 +513,7 @@ public class TypeDescriptor implements Serializable { public String toString() { StringBuilder builder = new StringBuilder(); for (Annotation ann : getAnnotations()) { - builder.append("@").append(ann.annotationType().getName()).append(' '); + builder.append('@').append(ann.annotationType().getName()).append(' '); } builder.append(getResolvableType()); return builder.toString(); diff --git a/spring-core/src/main/java/org/springframework/util/StopWatch.java b/spring-core/src/main/java/org/springframework/util/StopWatch.java index 8076ed042d1..505c27dbd10 100644 --- a/spring-core/src/main/java/org/springframework/util/StopWatch.java +++ b/spring-core/src/main/java/org/springframework/util/StopWatch.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2020 the original author or authors. + * Copyright 2002-2021 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. @@ -302,7 +302,7 @@ public class StopWatch { for (TaskInfo task : getTaskInfo()) { sb.append(nf.format(task.getTimeNanos())).append(" "); sb.append(pf.format((double) task.getTimeNanos() / getTotalTimeNanos())).append(" "); - sb.append(task.getTaskName()).append("\n"); + sb.append(task.getTaskName()).append('\n'); } } return sb.toString(); @@ -320,7 +320,7 @@ public class StopWatch { for (TaskInfo task : getTaskInfo()) { sb.append("; [").append(task.getTaskName()).append("] took ").append(task.getTimeNanos()).append(" ns"); long percent = Math.round(100.0 * task.getTimeNanos() / getTotalTimeNanos()); - sb.append(" = ").append(percent).append("%"); + sb.append(" = ").append(percent).append('%'); } } else { diff --git a/spring-core/src/test/java/org/springframework/util/FastByteArrayOutputStreamTests.java b/spring-core/src/test/java/org/springframework/util/FastByteArrayOutputStreamTests.java index 9831d5c07f7..692d6876f15 100644 --- a/spring-core/src/test/java/org/springframework/util/FastByteArrayOutputStreamTests.java +++ b/spring-core/src/test/java/org/springframework/util/FastByteArrayOutputStreamTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2021 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. @@ -194,7 +194,7 @@ class FastByteArrayOutputStreamTests { this.os.write(this.helloBytes); InputStream inputStream = this.os.getInputStream(); DigestUtils.appendMd5DigestAsHex(inputStream, builder); - builder.append("\""); + builder.append('"'); String actual = builder.toString(); assertThat(actual).isEqualTo("\"0b10a8db164e0754105b7a99be72e3fe5\""); } @@ -208,7 +208,7 @@ class FastByteArrayOutputStreamTests { } InputStream inputStream = this.os.getInputStream(); DigestUtils.appendMd5DigestAsHex(inputStream, builder); - builder.append("\""); + builder.append('"'); String actual = builder.toString(); assertThat(actual).isEqualTo("\"06225ca1e4533354c516e74512065331d\""); } diff --git a/spring-core/src/test/java/org/springframework/util/StringUtilsTests.java b/spring-core/src/test/java/org/springframework/util/StringUtilsTests.java index 145a44275f1..9d81c82d5f1 100644 --- a/spring-core/src/test/java/org/springframework/util/StringUtilsTests.java +++ b/spring-core/src/test/java/org/springframework/util/StringUtilsTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2020 the original author or authors. + * Copyright 2002-2021 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. @@ -612,7 +612,7 @@ class StringUtilsTests { StringBuilder sb = new StringBuilder(); for (int i = 0; i < components.length; i++) { if (i != 0) { - sb.append(","); + sb.append(','); } sb.append(components[i]); } diff --git a/spring-expression/src/main/java/org/springframework/expression/ExpressionException.java b/spring-expression/src/main/java/org/springframework/expression/ExpressionException.java index 5d6f4aec953..0d4cb1859bd 100644 --- a/spring-expression/src/main/java/org/springframework/expression/ExpressionException.java +++ b/spring-expression/src/main/java/org/springframework/expression/ExpressionException.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2021 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. @@ -137,7 +137,7 @@ public class ExpressionException extends RuntimeException { StringBuilder output = new StringBuilder(); output.append("Expression ["); output.append(this.expressionString); - output.append("]"); + output.append(']'); if (this.position >= 0) { output.append(" @"); output.append(this.position); diff --git a/spring-expression/src/main/java/org/springframework/expression/spel/CodeFlow.java b/spring-expression/src/main/java/org/springframework/expression/spel/CodeFlow.java index cce05824aeb..393946b2162 100644 --- a/spring-expression/src/main/java/org/springframework/expression/spel/CodeFlow.java +++ b/spring-expression/src/main/java/org/springframework/expression/spel/CodeFlow.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2021 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. @@ -432,11 +432,11 @@ public class CodeFlow implements Opcodes { public static String createSignatureDescriptor(Method method) { Class[] params = method.getParameterTypes(); StringBuilder sb = new StringBuilder(); - sb.append("("); + sb.append('('); for (Class param : params) { sb.append(toJvmDescriptor(param)); } - sb.append(")"); + sb.append(')'); sb.append(toJvmDescriptor(method.getReturnType())); return sb.toString(); } @@ -453,7 +453,7 @@ public class CodeFlow implements Opcodes { public static String createSignatureDescriptor(Constructor ctor) { Class[] params = ctor.getParameterTypes(); StringBuilder sb = new StringBuilder(); - sb.append("("); + sb.append('('); for (Class param : params) { sb.append(toJvmDescriptor(param)); } @@ -473,7 +473,7 @@ public class CodeFlow implements Opcodes { StringBuilder sb = new StringBuilder(); if (clazz.isArray()) { while (clazz.isArray()) { - sb.append("["); + sb.append('['); clazz = clazz.getComponentType(); } } @@ -507,9 +507,9 @@ public class CodeFlow implements Opcodes { } } else { - sb.append("L"); + sb.append('L'); sb.append(clazz.getName().replace('.', '/')); - sb.append(";"); + sb.append(';'); } return sb.toString(); } diff --git a/spring-expression/src/main/java/org/springframework/expression/spel/SpelMessage.java b/spring-expression/src/main/java/org/springframework/expression/spel/SpelMessage.java index 8998cb29888..3a03cfd9a1a 100644 --- a/spring-expression/src/main/java/org/springframework/expression/spel/SpelMessage.java +++ b/spring-expression/src/main/java/org/springframework/expression/spel/SpelMessage.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2021 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. @@ -284,7 +284,7 @@ public enum SpelMessage { formattedMessage.append("EL").append(this.code); switch (this.kind) { case ERROR: - formattedMessage.append("E"); + formattedMessage.append('E'); break; } formattedMessage.append(": "); diff --git a/spring-expression/src/main/java/org/springframework/expression/spel/ast/BeanReference.java b/spring-expression/src/main/java/org/springframework/expression/spel/ast/BeanReference.java index a59d98250fb..6e128dae611 100644 --- a/spring-expression/src/main/java/org/springframework/expression/spel/ast/BeanReference.java +++ b/spring-expression/src/main/java/org/springframework/expression/spel/ast/BeanReference.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2021 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. @@ -64,13 +64,13 @@ public class BeanReference extends SpelNodeImpl { public String toStringAST() { StringBuilder sb = new StringBuilder(); if (!this.beanName.startsWith(FACTORY_BEAN_PREFIX)) { - sb.append("@"); + sb.append('@'); } if (!this.beanName.contains(".")) { sb.append(this.beanName); } else { - sb.append("'").append(this.beanName).append("'"); + sb.append('\'').append(this.beanName).append('\''); } return sb.toString(); } diff --git a/spring-expression/src/main/java/org/springframework/expression/spel/ast/ConstructorReference.java b/spring-expression/src/main/java/org/springframework/expression/spel/ast/ConstructorReference.java index c70fcfb6da2..7ccc4c16d96 100644 --- a/spring-expression/src/main/java/org/springframework/expression/spel/ast/ConstructorReference.java +++ b/spring-expression/src/main/java/org/springframework/expression/spel/ast/ConstructorReference.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2021 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. @@ -208,14 +208,14 @@ public class ConstructorReference extends SpelNodeImpl { StringBuilder sb = new StringBuilder("new "); int index = 0; sb.append(getChild(index++).toStringAST()); - sb.append("("); + sb.append('('); for (int i = index; i < getChildCount(); i++) { if (i > index) { - sb.append(","); + sb.append(','); } sb.append(getChild(i).toStringAST()); } - sb.append(")"); + sb.append(')'); return sb.toString(); } diff --git a/spring-expression/src/main/java/org/springframework/expression/spel/ast/InlineMap.java b/spring-expression/src/main/java/org/springframework/expression/spel/ast/InlineMap.java index b9aa0d5a8c7..c70759b03fe 100644 --- a/spring-expression/src/main/java/org/springframework/expression/spel/ast/InlineMap.java +++ b/spring-expression/src/main/java/org/springframework/expression/spel/ast/InlineMap.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2021 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. @@ -140,13 +140,13 @@ public class InlineMap extends SpelNodeImpl { int count = getChildCount(); for (int c = 0; c < count; c++) { if (c > 0) { - sb.append(","); + sb.append(','); } sb.append(getChild(c++).toStringAST()); - sb.append(":"); + sb.append(':'); sb.append(getChild(c).toStringAST()); } - sb.append("}"); + sb.append('}'); return sb.toString(); } diff --git a/spring-expression/src/main/java/org/springframework/expression/spel/ast/Operator.java b/spring-expression/src/main/java/org/springframework/expression/spel/ast/Operator.java index 12cd2836a7c..ec31559e379 100644 --- a/spring-expression/src/main/java/org/springframework/expression/spel/ast/Operator.java +++ b/spring-expression/src/main/java/org/springframework/expression/spel/ast/Operator.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2021 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. @@ -81,10 +81,10 @@ public abstract class Operator extends SpelNodeImpl { StringBuilder sb = new StringBuilder("("); sb.append(getChild(0).toStringAST()); for (int i = 1; i < getChildCount(); i++) { - sb.append(" ").append(getOperatorName()).append(" "); + sb.append(' ').append(getOperatorName()).append(' '); sb.append(getChild(i).toStringAST()); } - sb.append(")"); + sb.append(')'); return sb.toString(); } diff --git a/spring-expression/src/main/java/org/springframework/expression/spel/ast/QualifiedIdentifier.java b/spring-expression/src/main/java/org/springframework/expression/spel/ast/QualifiedIdentifier.java index bbf1d2d50d9..d66a4c39ce8 100644 --- a/spring-expression/src/main/java/org/springframework/expression/spel/ast/QualifiedIdentifier.java +++ b/spring-expression/src/main/java/org/springframework/expression/spel/ast/QualifiedIdentifier.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2021 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. @@ -49,7 +49,7 @@ public class QualifiedIdentifier extends SpelNodeImpl { for (int i = 0; i < getChildCount(); i++) { Object value = this.children[i].getValueInternal(state).getValue(); if (i > 0 && (value == null || !value.toString().startsWith("$"))) { - sb.append("."); + sb.append('.'); } sb.append(value); } @@ -67,7 +67,7 @@ public class QualifiedIdentifier extends SpelNodeImpl { else { for (int i = 0; i < getChildCount(); i++) { if (i > 0) { - sb.append("."); + sb.append('.'); } sb.append(getChild(i).toStringAST()); } diff --git a/spring-expression/src/main/java/org/springframework/expression/spel/ast/TypeReference.java b/spring-expression/src/main/java/org/springframework/expression/spel/ast/TypeReference.java index 8eac5d67bfe..02e8a28c302 100644 --- a/spring-expression/src/main/java/org/springframework/expression/spel/ast/TypeReference.java +++ b/spring-expression/src/main/java/org/springframework/expression/spel/ast/TypeReference.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2021 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. @@ -90,7 +90,7 @@ public class TypeReference extends SpelNodeImpl { for (int d = 0; d < this.dimensions; d++) { sb.append("[]"); } - sb.append(")"); + sb.append(')'); return sb.toString(); } diff --git a/spring-expression/src/main/java/org/springframework/expression/spel/standard/Token.java b/spring-expression/src/main/java/org/springframework/expression/spel/standard/Token.java index 21ab3e561dd..dda0ff2152c 100644 --- a/spring-expression/src/main/java/org/springframework/expression/spel/standard/Token.java +++ b/spring-expression/src/main/java/org/springframework/expression/spel/standard/Token.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2017 the original author or authors. + * Copyright 2002-2021 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. @@ -88,12 +88,12 @@ class Token { @Override public String toString() { StringBuilder s = new StringBuilder(); - s.append("[").append(this.kind.toString()); + s.append('[').append(this.kind.toString()); if (this.kind.hasPayload()) { - s.append(":").append(this.data); + s.append(':').append(this.data); } - s.append("]"); - s.append("(").append(this.startPos).append(",").append(this.endPos).append(")"); + s.append(']'); + s.append('(').append(this.startPos).append(',').append(this.endPos).append(')'); return s.toString(); } diff --git a/spring-expression/src/test/java/org/springframework/expression/spel/AbstractExpressionTests.java b/spring-expression/src/test/java/org/springframework/expression/spel/AbstractExpressionTests.java index 43ae0324961..0e133522f62 100644 --- a/spring-expression/src/test/java/org/springframework/expression/spel/AbstractExpressionTests.java +++ b/spring-expression/src/test/java/org/springframework/expression/spel/AbstractExpressionTests.java @@ -245,22 +245,22 @@ public abstract class AbstractExpressionTests { sb.append("int[").append(l.length).append("]{"); for (int j = 0; j < l.length; j++) { if (j > 0) { - sb.append(","); + sb.append(','); } sb.append(stringValueOf(l[j])); } - sb.append("}"); + sb.append('}'); } else if (primitiveType == Long.TYPE) { long[] l = (long[]) value; sb.append("long[").append(l.length).append("]{"); for (int j = 0; j < l.length; j++) { if (j > 0) { - sb.append(","); + sb.append(','); } sb.append(stringValueOf(l[j])); } - sb.append("}"); + sb.append('}'); } else { throw new RuntimeException("Please implement support for type " + primitiveType.getName() + @@ -272,32 +272,32 @@ public abstract class AbstractExpressionTests { if (!isNested) { sb.append(value.getClass().getComponentType().getName()); } - sb.append("[").append(l.size()).append("]{"); + sb.append('[').append(l.size()).append("]{"); int i = 0; for (Object object : l) { if (i > 0) { - sb.append(","); + sb.append(','); } i++; sb.append(stringValueOf(object, true)); } - sb.append("}"); + sb.append('}'); } else { List l = Arrays.asList((Object[]) value); if (!isNested) { sb.append(value.getClass().getComponentType().getName()); } - sb.append("[").append(l.size()).append("]{"); + sb.append('[').append(l.size()).append("]{"); int i = 0; for (Object object : l) { if (i > 0) { - sb.append(","); + sb.append(','); } i++; sb.append(stringValueOf(object)); } - sb.append("}"); + sb.append('}'); } return sb.toString(); } diff --git a/spring-expression/src/test/java/org/springframework/expression/spel/SpelCompilationCoverageTests.java b/spring-expression/src/test/java/org/springframework/expression/spel/SpelCompilationCoverageTests.java index 993a6450f81..74af20b3f1e 100644 --- a/spring-expression/src/test/java/org/springframework/expression/spel/SpelCompilationCoverageTests.java +++ b/spring-expression/src/test/java/org/springframework/expression/spel/SpelCompilationCoverageTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2020 the original author or authors. + * Copyright 2002-2021 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. @@ -5111,21 +5111,21 @@ public class SpelCompilationCoverageTests extends AbstractExpressionTests { List ls = (List) object; for (Object l: ls) { s.append(l); - s.append(" "); + s.append(' '); } } else if (object instanceof Object[]) { Object[] os = (Object[]) object; for (Object o: os) { s.append(o); - s.append(" "); + s.append(' '); } } else if (object instanceof int[]) { int[] is = (int[]) object; for (int i: is) { s.append(i); - s.append(" "); + s.append(' '); } } else { @@ -5931,9 +5931,9 @@ public class SpelCompilationCoverageTests extends AbstractExpressionTests { public Obj3(String s, Float f, int... ints) { StringBuilder b = new StringBuilder(); b.append(s); - b.append(":"); + b.append(':'); b.append(Float.toString(f)); - b.append(":"); + b.append(':'); for (int param: ints) { b.append(Integer.toString(param)); } diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataContext.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataContext.java index 2997f874555..2f6105cafcf 100755 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataContext.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataContext.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2020 the original author or authors. + * Copyright 2002-2021 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. @@ -646,13 +646,13 @@ public class CallMetaDataContext { } if (StringUtils.hasLength(catalogNameToUse)) { - callString.append(catalogNameToUse).append("."); + callString.append(catalogNameToUse).append('.'); } if (StringUtils.hasLength(schemaNameToUse)) { - callString.append(schemaNameToUse).append("."); + callString.append(schemaNameToUse).append('.'); } callString.append(this.metaDataProvider.procedureNameToUse(getProcedureName())); - callString.append("("); + callString.append('('); for (SqlParameter parameter : this.callParameters) { if (!parameter.isResultsParameter()) { diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataContext.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataContext.java index 13e582a113d..be0ef871bc4 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataContext.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataContext.java @@ -280,7 +280,7 @@ public class TableMetaDataContext { insertStatement.append("INSERT INTO "); if (getSchemaName() != null) { insertStatement.append(getSchemaName()); - insertStatement.append("."); + insertStatement.append('.'); } insertStatement.append(getTableName()); insertStatement.append(" ("); @@ -313,7 +313,7 @@ public class TableMetaDataContext { } String params = String.join(", ", Collections.nCopies(columnCount, "?")); insertStatement.append(params); - insertStatement.append(")"); + insertStatement.append(')'); return insertStatement.toString(); } diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/TransactionAwareDataSourceProxy.java b/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/TransactionAwareDataSourceProxy.java index f1afd5604c0..aed3ddb54b4 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/TransactionAwareDataSourceProxy.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/TransactionAwareDataSourceProxy.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2020 the original author or authors. + * Copyright 2002-2021 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. @@ -186,10 +186,10 @@ public class TransactionAwareDataSourceProxy extends DelegatingDataSource { // Allow for differentiating between the proxy and the raw Connection. StringBuilder sb = new StringBuilder("Transaction-aware proxy for target Connection "); if (this.target != null) { - sb.append("[").append(this.target.toString()).append("]"); + sb.append('[').append(this.target.toString()).append(']'); } else { - sb.append(" from DataSource [").append(this.targetDataSource).append("]"); + sb.append(" from DataSource [").append(this.targetDataSource).append(']'); } return sb.toString(); case "close": diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/support/incrementer/AbstractIdentityColumnMaxValueIncrementer.java b/spring-jdbc/src/main/java/org/springframework/jdbc/support/incrementer/AbstractIdentityColumnMaxValueIncrementer.java index 0bb44451572..5c523a128c3 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/support/incrementer/AbstractIdentityColumnMaxValueIncrementer.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/support/incrementer/AbstractIdentityColumnMaxValueIncrementer.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2021 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. @@ -152,7 +152,7 @@ public abstract class AbstractIdentityColumnMaxValueIncrementer extends Abstract for (int i = 0; i < values.length - 1; i++) { sb.append(", ").append(values[i]); } - sb.append(")"); + sb.append(')'); } else { long maxValue = values[values.length - 1]; diff --git a/spring-jms/src/main/java/org/springframework/jms/config/AbstractJmsListenerEndpoint.java b/spring-jms/src/main/java/org/springframework/jms/config/AbstractJmsListenerEndpoint.java index 242e7344a8d..2e0fb1a9b4b 100644 --- a/spring-jms/src/main/java/org/springframework/jms/config/AbstractJmsListenerEndpoint.java +++ b/spring-jms/src/main/java/org/springframework/jms/config/AbstractJmsListenerEndpoint.java @@ -177,9 +177,9 @@ public abstract class AbstractJmsListenerEndpoint implements JmsListenerEndpoint */ protected StringBuilder getEndpointDescription() { StringBuilder result = new StringBuilder(); - return result.append(getClass().getSimpleName()).append("[").append(this.id).append("] destination="). + return result.append(getClass().getSimpleName()).append('[').append(this.id).append("] destination="). append(this.destination).append("' | subscription='").append(this.subscription). - append(" | selector='").append(this.selector).append("'"); + append(" | selector='").append(this.selector).append('\''); } @Override diff --git a/spring-jms/src/main/java/org/springframework/jms/config/MethodJmsListenerEndpoint.java b/spring-jms/src/main/java/org/springframework/jms/config/MethodJmsListenerEndpoint.java index 4ea38a37783..f1548090c29 100644 --- a/spring-jms/src/main/java/org/springframework/jms/config/MethodJmsListenerEndpoint.java +++ b/spring-jms/src/main/java/org/springframework/jms/config/MethodJmsListenerEndpoint.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2021 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. @@ -224,8 +224,8 @@ public class MethodJmsListenerEndpoint extends AbstractJmsListenerEndpoint imple @Override protected StringBuilder getEndpointDescription() { return super.getEndpointDescription() - .append(" | bean='").append(this.bean).append("'") - .append(" | method='").append(this.method).append("'"); + .append(" | bean='").append(this.bean).append('\'') + .append(" | method='").append(this.method).append('\''); } } diff --git a/spring-jms/src/main/java/org/springframework/jms/config/SimpleJmsListenerEndpoint.java b/spring-jms/src/main/java/org/springframework/jms/config/SimpleJmsListenerEndpoint.java index ac1808cd40c..33be14be058 100644 --- a/spring-jms/src/main/java/org/springframework/jms/config/SimpleJmsListenerEndpoint.java +++ b/spring-jms/src/main/java/org/springframework/jms/config/SimpleJmsListenerEndpoint.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2017 the original author or authors. + * Copyright 2002-2021 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. @@ -63,7 +63,7 @@ public class SimpleJmsListenerEndpoint extends AbstractJmsListenerEndpoint { @Override protected StringBuilder getEndpointDescription() { return super.getEndpointDescription() - .append(" | messageListener='").append(this.messageListener).append("'"); + .append(" | messageListener='").append(this.messageListener).append('\''); } } diff --git a/spring-jms/src/main/java/org/springframework/jms/listener/adapter/MessagingMessageListenerAdapter.java b/spring-jms/src/main/java/org/springframework/jms/listener/adapter/MessagingMessageListenerAdapter.java index daec6b656b2..91072e40cb5 100644 --- a/spring-jms/src/main/java/org/springframework/jms/listener/adapter/MessagingMessageListenerAdapter.java +++ b/spring-jms/src/main/java/org/springframework/jms/listener/adapter/MessagingMessageListenerAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2017 the original author or authors. + * Copyright 2002-2021 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. @@ -125,7 +125,7 @@ public class MessagingMessageListenerAdapter extends AbstractAdaptableMessageLis private String createMessagingErrorMessage(String description) { InvocableHandlerMethod handlerMethod = getHandlerMethod(); - StringBuilder sb = new StringBuilder(description).append("\n") + StringBuilder sb = new StringBuilder(description).append('\n') .append("Endpoint handler details:\n") .append("Method [").append(handlerMethod.getMethod()).append("]\n") .append("Bean [").append(handlerMethod.getBean()).append("]\n"); diff --git a/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/MethodArgumentNotValidException.java b/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/MethodArgumentNotValidException.java index fcf668b34bc..9ab9da75ed6 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/MethodArgumentNotValidException.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/MethodArgumentNotValidException.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2021 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. @@ -70,7 +70,7 @@ public class MethodArgumentNotValidException extends MethodArgumentResolutionExc StringBuilder sb = new StringBuilder(); sb.append(bindingResult.getErrorCount()).append(" error(s): "); for (ObjectError error : bindingResult.getAllErrors()) { - sb.append("[").append(error).append("] "); + sb.append('[').append(error).append("] "); } return sb.toString(); } diff --git a/spring-messaging/src/main/java/org/springframework/messaging/simp/SimpMessageHeaderAccessor.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/SimpMessageHeaderAccessor.java index 6c314f33290..307b1071e57 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/simp/SimpMessageHeaderAccessor.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/SimpMessageHeaderAccessor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2021 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. @@ -208,7 +208,7 @@ public class SimpMessageHeaderAccessor extends NativeMessageHeaderAccessor { } StringBuilder sb = getBaseLogMessage(); if (!CollectionUtils.isEmpty(getSessionAttributes())) { - sb.append(" attributes[").append(getSessionAttributes().size()).append("]"); + sb.append(" attributes[").append(getSessionAttributes().size()).append(']'); } sb.append(getShortPayloadLogMessage(payload)); return sb.toString(); diff --git a/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompHeaderAccessor.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompHeaderAccessor.java index 2c25a2114e0..7f879500cd4 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompHeaderAccessor.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompHeaderAccessor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2021 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. @@ -452,7 +452,7 @@ public class StompHeaderAccessor extends SimpMessageHeaderAccessor { return super.getDetailedLogMessage(payload); } StringBuilder sb = new StringBuilder(); - sb.append(command.name()).append(" "); + sb.append(command.name()).append(' '); Map> nativeHeaders = getNativeHeaders(); if (nativeHeaders != null) { sb.append(nativeHeaders); diff --git a/spring-messaging/src/main/java/org/springframework/messaging/support/GenericMessage.java b/spring-messaging/src/main/java/org/springframework/messaging/support/GenericMessage.java index 0191e649f8b..62053d5edf6 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/support/GenericMessage.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/support/GenericMessage.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2021 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. @@ -112,12 +112,12 @@ public class GenericMessage implements Message, Serializable { StringBuilder sb = new StringBuilder(getClass().getSimpleName()); sb.append(" [payload="); if (this.payload instanceof byte[]) { - sb.append("byte[").append(((byte[]) this.payload).length).append("]"); + sb.append("byte[").append(((byte[]) this.payload).length).append(']'); } else { sb.append(this.payload); } - sb.append(", headers=").append(this.headers).append("]"); + sb.append(", headers=").append(this.headers).append(']'); return sb.toString(); } diff --git a/spring-messaging/src/test/java/org/springframework/messaging/simp/stomp/StompHeaderAccessorTests.java b/spring-messaging/src/test/java/org/springframework/messaging/simp/stomp/StompHeaderAccessorTests.java index 340a27b6931..49915dbd01f 100644 --- a/spring-messaging/src/test/java/org/springframework/messaging/simp/stomp/StompHeaderAccessorTests.java +++ b/spring-messaging/src/test/java/org/springframework/messaging/simp/stomp/StompHeaderAccessorTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2021 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. @@ -241,7 +241,7 @@ public class StompHeaderAccessorTests { StringBuilder sb = new StringBuilder(); for (int i = 0; i < 80; i++) { - sb.append("a"); + sb.append('a'); } final String payload = sb.toString() + " > 80"; actual = accessor.getShortLogMessage(payload.getBytes(StandardCharsets.UTF_8)); diff --git a/spring-messaging/src/test/java/org/springframework/messaging/support/MessageHeaderAccessorTests.java b/spring-messaging/src/test/java/org/springframework/messaging/support/MessageHeaderAccessorTests.java index ff7c4cee82e..d87a410b028 100644 --- a/spring-messaging/src/test/java/org/springframework/messaging/support/MessageHeaderAccessorTests.java +++ b/spring-messaging/src/test/java/org/springframework/messaging/support/MessageHeaderAccessorTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2020 the original author or authors. + * Copyright 2002-2021 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. @@ -320,7 +320,7 @@ public class MessageHeaderAccessorTests { StringBuilder sb = new StringBuilder(); for (int i = 0; i < 80; i++) { - sb.append("a"); + sb.append('a'); } final String payload = sb.toString() + " > 80"; @@ -356,7 +356,7 @@ public class MessageHeaderAccessorTests { StringBuilder sb = new StringBuilder(); for (int i = 0; i < 80; i++) { - sb.append("a"); + sb.append('a'); } final String payload = sb.toString() + " > 80"; diff --git a/spring-test/src/main/java/org/springframework/mock/http/client/MockClientHttpRequest.java b/spring-test/src/main/java/org/springframework/mock/http/client/MockClientHttpRequest.java index fa7ded971ad..7630ac3a3b2 100644 --- a/spring-test/src/main/java/org/springframework/mock/http/client/MockClientHttpRequest.java +++ b/spring-test/src/main/java/org/springframework/mock/http/client/MockClientHttpRequest.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2017 the original author or authors. + * Copyright 2002-2021 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. @@ -126,7 +126,7 @@ public class MockClientHttpRequest extends MockHttpOutputMessage implements Clie public String toString() { StringBuilder sb = new StringBuilder(); sb.append(this.httpMethod); - sb.append(" ").append(this.uri); + sb.append(' ').append(this.uri); if (!getHeaders().isEmpty()) { sb.append(", headers: ").append(getHeaders()); } diff --git a/spring-test/src/main/java/org/springframework/test/web/client/AbstractRequestExpectationManager.java b/spring-test/src/main/java/org/springframework/test/web/client/AbstractRequestExpectationManager.java index 06de5d3ae74..10e1f39b3a5 100644 --- a/spring-test/src/main/java/org/springframework/test/web/client/AbstractRequestExpectationManager.java +++ b/spring-test/src/main/java/org/springframework/test/web/client/AbstractRequestExpectationManager.java @@ -193,7 +193,7 @@ public abstract class AbstractRequestExpectationManager implements RequestExpect if (!this.requests.isEmpty()) { sb.append(":\n"); for (ClientHttpRequest request : this.requests) { - sb.append(request.toString()).append("\n"); + sb.append(request.toString()).append('\n'); } } else { diff --git a/spring-tx/src/main/java/org/springframework/transaction/interceptor/DefaultTransactionAttribute.java b/spring-tx/src/main/java/org/springframework/transaction/interceptor/DefaultTransactionAttribute.java index cdf73d00348..1c488ee0676 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/interceptor/DefaultTransactionAttribute.java +++ b/spring-tx/src/main/java/org/springframework/transaction/interceptor/DefaultTransactionAttribute.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2020 the original author or authors. + * Copyright 2002-2021 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. @@ -231,7 +231,7 @@ public class DefaultTransactionAttribute extends DefaultTransactionDefinition im protected final StringBuilder getAttributeDescription() { StringBuilder result = getDefinitionDescription(); if (StringUtils.hasText(this.qualifier)) { - result.append("; '").append(this.qualifier).append("'"); + result.append("; '").append(this.qualifier).append('\''); } if (!this.labels.isEmpty()) { result.append("; ").append(this.labels); diff --git a/spring-web/src/main/java/org/springframework/http/codec/ServerSentEventHttpMessageReader.java b/spring-web/src/main/java/org/springframework/http/codec/ServerSentEventHttpMessageReader.java index 849d0879cc4..035d8b4c73e 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/ServerSentEventHttpMessageReader.java +++ b/spring-web/src/main/java/org/springframework/http/codec/ServerSentEventHttpMessageReader.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2020 the original author or authors. + * Copyright 2002-2021 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. @@ -147,7 +147,7 @@ public class ServerSentEventHttpMessageReader implements HttpMessageReader 0) { sb.append(" OR "); } - sb.append("\""); + sb.append('"'); sb.append(StringUtils.arrayToDelimitedString(conditions, ", ")); - sb.append("\""); + sb.append('"'); i++; } sb.append(" not met for actual request parameters: "); diff --git a/spring-web/src/main/java/org/springframework/web/bind/support/WebExchangeBindException.java b/spring-web/src/main/java/org/springframework/web/bind/support/WebExchangeBindException.java index ff8d88c7ea4..8c605fc6625 100644 --- a/spring-web/src/main/java/org/springframework/web/bind/support/WebExchangeBindException.java +++ b/spring-web/src/main/java/org/springframework/web/bind/support/WebExchangeBindException.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2020 the original author or authors. + * Copyright 2002-2021 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. @@ -289,7 +289,7 @@ public class WebExchangeBindException extends ServerWebInputException implements .append(parameter.getExecutable().toGenericString()) .append(", with ").append(this.bindingResult.getErrorCount()).append(" error(s): "); for (ObjectError error : this.bindingResult.getAllErrors()) { - sb.append("[").append(error).append("] "); + sb.append('[').append(error).append("] "); } return sb.toString(); } diff --git a/spring-web/src/main/java/org/springframework/web/filter/AbstractRequestLoggingFilter.java b/spring-web/src/main/java/org/springframework/web/filter/AbstractRequestLoggingFilter.java index 88f849333ac..271193cc638 100644 --- a/spring-web/src/main/java/org/springframework/web/filter/AbstractRequestLoggingFilter.java +++ b/spring-web/src/main/java/org/springframework/web/filter/AbstractRequestLoggingFilter.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2021 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. @@ -322,7 +322,7 @@ public abstract class AbstractRequestLoggingFilter extends OncePerRequestFilter protected String createMessage(HttpServletRequest request, String prefix, String suffix) { StringBuilder msg = new StringBuilder(); msg.append(prefix); - msg.append(request.getMethod()).append(" "); + msg.append(request.getMethod()).append(' '); msg.append(request.getRequestURI()); if (isIncludeQueryString()) { diff --git a/spring-web/src/main/java/org/springframework/web/method/support/ModelAndViewContainer.java b/spring-web/src/main/java/org/springframework/web/method/support/ModelAndViewContainer.java index 44b6be8b54a..5cb8d9f71ad 100644 --- a/spring-web/src/main/java/org/springframework/web/method/support/ModelAndViewContainer.java +++ b/spring-web/src/main/java/org/springframework/web/method/support/ModelAndViewContainer.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2021 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. @@ -333,7 +333,7 @@ public class ModelAndViewContainer { StringBuilder sb = new StringBuilder("ModelAndViewContainer: "); if (!isRequestHandled()) { if (isViewReference()) { - sb.append("reference to view with name '").append(this.view).append("'"); + sb.append("reference to view with name '").append(this.view).append('\''); } else { sb.append("View is [").append(this.view).append(']'); diff --git a/spring-web/src/main/java/org/springframework/web/util/pattern/CaptureVariablePathElement.java b/spring-web/src/main/java/org/springframework/web/util/pattern/CaptureVariablePathElement.java index c99d7f84224..0e7b812323c 100644 --- a/spring-web/src/main/java/org/springframework/web/util/pattern/CaptureVariablePathElement.java +++ b/spring-web/src/main/java/org/springframework/web/util/pattern/CaptureVariablePathElement.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2021 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. @@ -159,12 +159,12 @@ class CaptureVariablePathElement extends PathElement { @Override public char[] getChars() { StringBuilder b = new StringBuilder(); - b.append("{"); + b.append('{'); b.append(this.variableName); if (this.constraintPattern != null) { - b.append(":").append(this.constraintPattern.pattern()); + b.append(':').append(this.constraintPattern.pattern()); } - b.append("}"); + b.append('}'); return b.toString().toCharArray(); } diff --git a/spring-web/src/test/java/org/springframework/http/HttpRangeTests.java b/spring-web/src/test/java/org/springframework/http/HttpRangeTests.java index 2a22b87d80c..550b85fd36d 100644 --- a/spring-web/src/test/java/org/springframework/http/HttpRangeTests.java +++ b/spring-web/src/test/java/org/springframework/http/HttpRangeTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2021 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. @@ -111,7 +111,7 @@ public class HttpRangeTests { // 1. At limit.. StringBuilder atLimit = new StringBuilder("bytes=0-0"); for (int i=0; i < 99; i++) { - atLimit.append(",").append(i).append("-").append(i + 1); + atLimit.append(',').append(i).append('-').append(i + 1); } List ranges = HttpRange.parseRanges(atLimit.toString()); assertThat(ranges.size()).isEqualTo(100); @@ -119,7 +119,7 @@ public class HttpRangeTests { // 2. Above limit.. StringBuilder aboveLimit = new StringBuilder("bytes=0-0"); for (int i=0; i < 100; i++) { - aboveLimit.append(",").append(i).append("-").append(i + 1); + aboveLimit.append(',').append(i).append('-').append(i + 1); } assertThatIllegalArgumentException().isThrownBy(() -> HttpRange.parseRanges(aboveLimit.toString())); diff --git a/spring-web/src/test/java/org/springframework/web/multipart/support/DefaultMultipartHttpServletRequestTests.java b/spring-web/src/test/java/org/springframework/web/multipart/support/DefaultMultipartHttpServletRequestTests.java index b241108a123..62abdfdbea2 100644 --- a/spring-web/src/test/java/org/springframework/web/multipart/support/DefaultMultipartHttpServletRequestTests.java +++ b/spring-web/src/test/java/org/springframework/web/multipart/support/DefaultMultipartHttpServletRequestTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2021 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. @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.springframework.web.multipart.support; import java.util.HashMap; @@ -80,7 +81,7 @@ public class DefaultMultipartHttpServletRequestTests { for (String key : this.queryParams.keySet()) { for (String value : this.queryParams.get(key)) { this.servletRequest.addParameter(key, value); - query.append(query.length() > 0 ? "&" : "").append(key).append("=").append(value); + query.append(query.length() > 0 ? "&" : "").append(key).append('=').append(value); } } this.servletRequest.setQueryString(query.toString()); diff --git a/spring-web/src/test/java/org/springframework/web/util/JavaScriptUtilsTests.java b/spring-web/src/test/java/org/springframework/web/util/JavaScriptUtilsTests.java index 4d2e9614e6d..6fb380337de 100644 --- a/spring-web/src/test/java/org/springframework/web/util/JavaScriptUtilsTests.java +++ b/spring-web/src/test/java/org/springframework/web/util/JavaScriptUtilsTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2004-2019 the original author or authors. + * Copyright 2004-2021 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. @@ -33,15 +33,15 @@ public class JavaScriptUtilsTests { public void escape() { StringBuilder sb = new StringBuilder(); sb.append('"'); - sb.append("'"); - sb.append("\\"); - sb.append("/"); - sb.append("\t"); - sb.append("\n"); - sb.append("\r"); - sb.append("\f"); - sb.append("\b"); - sb.append("\013"); + sb.append('\''); + sb.append('\\'); + sb.append('/'); + sb.append('\t'); + sb.append('\n'); + sb.append('\r'); + sb.append('\f'); + sb.append('\b'); + sb.append('\013'); assertThat(JavaScriptUtils.javaScriptEscape(sb.toString())).isEqualTo("\\\"\\'\\\\\\/\\t\\n\\n\\f\\b\\v"); } diff --git a/spring-web/src/test/java/org/springframework/web/util/pattern/PathPatternTests.java b/spring-web/src/test/java/org/springframework/web/util/pattern/PathPatternTests.java index 707809b07d6..0587fc4a8ba 100644 --- a/spring-web/src/test/java/org/springframework/web/util/pattern/PathPatternTests.java +++ b/spring-web/src/test/java/org/springframework/web/util/pattern/PathPatternTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2020 the original author or authors. + * Copyright 2002-2021 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. @@ -1210,7 +1210,7 @@ public class PathPatternTests { private String elementsToString(List elements) { StringBuilder s = new StringBuilder(); for (Element element: elements) { - s.append("[").append(element.value()).append("]"); + s.append('[').append(element.value()).append(']'); } return s.toString(); } diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/RequestMappingInfo.java b/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/RequestMappingInfo.java index 736e46ce60d..8782b9a5b83 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/RequestMappingInfo.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/RequestMappingInfo.java @@ -380,7 +380,7 @@ public final class RequestMappingInfo implements RequestCondition patterns = this.patternsCondition.getPatterns(); - builder.append(" ").append(patterns.size() == 1 ? patterns.iterator().next() : patterns); + builder.append(' ').append(patterns.size() == 1 ? patterns.iterator().next() : patterns); } if (!this.paramsCondition.isEmpty()) { builder.append(", params ").append(this.paramsCondition); diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/result/view/BindStatus.java b/spring-webflux/src/main/java/org/springframework/web/reactive/result/view/BindStatus.java index 2a9c7432ec4..4d9b75518d8 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/result/view/BindStatus.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/result/view/BindStatus.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2021 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. @@ -353,7 +353,7 @@ public class BindStatus { public String toString() { StringBuilder sb = new StringBuilder("BindStatus: "); sb.append("expression=[").append(this.expression).append("]; "); - sb.append("value=[").append(this.value).append("]"); + sb.append("value=[").append(this.value).append(']'); if (!ObjectUtils.isEmpty(this.errorCodes)) { sb.append("; errorCodes=").append(Arrays.asList(this.errorCodes)); } diff --git a/spring-webflux/src/test/java/org/springframework/web/reactive/FlushingIntegrationTests.java b/spring-webflux/src/test/java/org/springframework/web/reactive/FlushingIntegrationTests.java index 66143e4f2f7..6663fa62196 100644 --- a/spring-webflux/src/test/java/org/springframework/web/reactive/FlushingIntegrationTests.java +++ b/spring-webflux/src/test/java/org/springframework/web/reactive/FlushingIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2021 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. @@ -154,7 +154,7 @@ class FlushingIntegrationTests extends AbstractHttpHandlerIntegrationTests { for (char c : "0123456789".toCharArray()) { sb.append(c); if (sb.length() + 1 == 1024) { - sink.next(sb.append("\n").toString()); + sink.next(sb.append('\n').toString()); return; } } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/RequestMappingInfo.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/RequestMappingInfo.java index 9633b97d306..a0dadcd798a 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/RequestMappingInfo.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/RequestMappingInfo.java @@ -509,7 +509,7 @@ public final class RequestMappingInfo implements RequestCondition build() { if (!StringUtils.hasLength(this.sb) && this.dataToSend.isEmpty()) { return Collections.emptySet(); } - append("\n"); + append('\n'); saveAppendedText(); return this.dataToSend; } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/PathResourceResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/PathResourceResolver.java index c6b36499274..2b97ac60895 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/PathResourceResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/PathResourceResolver.java @@ -268,7 +268,7 @@ public class PathResourceResolver extends AbstractResourceResolver { while (tokenizer.hasMoreTokens()) { String value = UriUtils.encode(tokenizer.nextToken(), charset); sb.append(value); - sb.append("/"); + sb.append('/'); } if (!path.endsWith("/")) { sb.setLength(sb.length() - 1); diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/support/BindStatus.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/support/BindStatus.java index 7da8e8e7aa8..f8debe853cd 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/support/BindStatus.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/support/BindStatus.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2021 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. @@ -352,7 +352,7 @@ public class BindStatus { public String toString() { StringBuilder sb = new StringBuilder("BindStatus: "); sb.append("expression=[").append(this.expression).append("]; "); - sb.append("value=[").append(this.value).append("]"); + sb.append("value=[").append(this.value).append(']'); if (!ObjectUtils.isEmpty(this.errorCodes)) { sb.append("; errorCodes=").append(Arrays.asList(this.errorCodes)); } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/UrlTag.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/UrlTag.java index 08c64a25901..079b3214846 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/UrlTag.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/UrlTag.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2020 the original author or authors. + * Copyright 2002-2021 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. @@ -286,7 +286,7 @@ public class UrlTag extends HtmlEscapingAwareTag implements ParamAware { } } if (this.type != UrlType.RELATIVE && this.type != UrlType.ABSOLUTE && !this.value.startsWith("/")) { - url.append("/"); + url.append('/'); } url.append(replaceUriTemplateParams(this.value, this.params, this.templateParams)); url.append(createQueryString(this.params, this.templateParams, (url.indexOf("?") == -1))); @@ -324,15 +324,15 @@ public class UrlTag extends HtmlEscapingAwareTag implements ParamAware { for (Param param : params) { if (!usedParams.contains(param.getName()) && StringUtils.hasLength(param.getName())) { if (includeQueryStringDelimiter && qs.length() == 0) { - qs.append("?"); + qs.append('?'); } else { - qs.append("&"); + qs.append('&'); } try { qs.append(UriUtils.encodeQueryParam(param.getName(), encoding)); if (param.getValue() != null) { - qs.append("="); + qs.append('='); qs.append(UriUtils.encodeQueryParam(param.getValue(), encoding)); } } diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/HtmlFileTransportHandler.java b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/HtmlFileTransportHandler.java index d39f51bbf9d..13b09e2cb1c 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/HtmlFileTransportHandler.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/HtmlFileTransportHandler.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2021 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. @@ -75,7 +75,7 @@ public class HtmlFileTransportHandler extends AbstractHttpSendingTransportHandle ); while (sb.length() < MINIMUM_PARTIAL_HTML_CONTENT_LENGTH) { - sb.append(" "); + sb.append(' '); } PARTIAL_HTML_CONTENT = sb.toString(); } diff --git a/spring-websocket/src/test/java/org/springframework/web/socket/messaging/StompTextMessageBuilder.java b/spring-websocket/src/test/java/org/springframework/web/socket/messaging/StompTextMessageBuilder.java index 855b1e59722..8232ef844db 100644 --- a/spring-websocket/src/test/java/org/springframework/web/socket/messaging/StompTextMessageBuilder.java +++ b/spring-websocket/src/test/java/org/springframework/web/socket/messaging/StompTextMessageBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 the original author or authors. + * Copyright 2002-2021 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. @@ -56,15 +56,15 @@ public class StompTextMessageBuilder { } public TextMessage build() { - StringBuilder sb = new StringBuilder(this.command.name()).append("\n"); + StringBuilder sb = new StringBuilder(this.command.name()).append('\n'); for (String line : this.headerLines) { - sb.append(line).append("\n"); + sb.append(line).append('\n'); } - sb.append("\n"); + sb.append('\n'); if (this.body != null) { sb.append(this.body); } - sb.append("\u0000"); + sb.append('\u0000'); return new TextMessage(sb.toString()); }