Merge branch '3.1.x'

Closes gh-38877
This commit is contained in:
Phillip Webb 2023-12-19 22:51:48 -08:00
commit 5354ad15b3
45 changed files with 69 additions and 71 deletions

View File

@ -89,7 +89,7 @@ public abstract class ArchitectureCheck extends DefaultTask {
if (!violations.isEmpty()) {
StringBuilder report = new StringBuilder();
for (EvaluationResult violation : violations) {
report.append(violation.getFailureReport().toString());
report.append(violation.getFailureReport());
report.append(String.format("%n"));
}
Files.writeString(outputFile.toPath(), report.toString(), StandardOpenOption.CREATE,

View File

@ -154,7 +154,7 @@ public class AutoConfigurationPlugin implements Plugin<Project> {
});
}
private static record AutoConfigurationImports(Path importsFile, List<String> imports) {
private record AutoConfigurationImports(Path importsFile, List<String> imports) {
}

View File

@ -221,7 +221,7 @@ public class BomPlugin implements Plugin<Project> {
.collect(Collectors.toSet());
Node target = dependency;
for (String classifier : classifiers) {
if (classifier.length() > 0) {
if (!classifier.isEmpty()) {
if (target == null) {
target = new Node(null, "dependency");
target.appendNode("groupId", groupId);

View File

@ -69,7 +69,7 @@ final class MavenMetadataVersionResolver implements VersionResolver {
if ("/".equals(uri.getPath())) {
return uri;
}
return URI.create(uri.toString() + "/");
return URI.create(uri + "/");
}
@Override

View File

@ -125,7 +125,7 @@ class WebEndpointAutoConfigurationTests {
@Override
public String getRootPath(EndpointId endpointId) {
if (endpointId.toString().endsWith("one")) {
return "1/" + endpointId.toString();
return "1/" + endpointId;
}
return null;
}

View File

@ -234,9 +234,8 @@ public abstract class EndpointDiscoverer<E extends ExposableEndpoint<O>, O exten
String extensionBeanNames = extensions.stream()
.map(ExtensionBean::getBeanName)
.collect(Collectors.joining(", "));
throw new IllegalStateException("Unable to map duplicate endpoint operations: " + duplicates.toString()
+ " to " + endpointBean.getBeanName()
+ (extensions.isEmpty() ? "" : " (" + extensionBeanNames + ")"));
throw new IllegalStateException("Unable to map duplicate endpoint operations: " + duplicates + " to "
+ endpointBean.getBeanName() + (extensions.isEmpty() ? "" : " (" + extensionBeanNames + ")"));
}
}

View File

@ -127,7 +127,7 @@ abstract class HealthEndpointSupport<C, T> {
private String getName(String[] path, int pathOffset) {
StringBuilder name = new StringBuilder();
while (pathOffset < path.length) {
name.append((name.length() != 0) ? "/" : "");
name.append((!name.isEmpty()) ? "/" : "");
name.append(path[pathOffset]);
pathOffset++;
}

View File

@ -332,7 +332,7 @@ class OnBeanCondition extends FilteringSpringBootCondition implements Configurat
private void appendMessageForNoMatches(StringBuilder reason, Collection<String> unmatched, String description) {
if (!unmatched.isEmpty()) {
if (reason.length() > 0) {
if (!reason.isEmpty()) {
reason.append(" and ");
}
reason.append("did not find any beans ");
@ -347,7 +347,7 @@ class OnBeanCondition extends FilteringSpringBootCondition implements Configurat
appendMessageForMatches(reason, matchResult.getMatchedAnnotations(), "annotated with");
appendMessageForMatches(reason, matchResult.getMatchedTypes(), "of type");
if (!matchResult.getMatchedNames().isEmpty()) {
if (reason.length() > 0) {
if (!reason.isEmpty()) {
reason.append(" and ");
}
reason.append("found beans named ");
@ -360,7 +360,7 @@ class OnBeanCondition extends FilteringSpringBootCondition implements Configurat
String description) {
if (!matches.isEmpty()) {
matches.forEach((key, value) -> {
if (reason.length() > 0) {
if (!reason.isEmpty()) {
reason.append(" and ");
}
reason.append("found beans ");

View File

@ -144,7 +144,7 @@ public class DevToolsHomePropertiesPostProcessor implements EnvironmentPostProce
}
@SafeVarargs
private final File getHomeDirectory(Supplier<String>... pathSuppliers) {
private File getHomeDirectory(Supplier<String>... pathSuppliers) {
for (Supplier<String> pathSupplier : pathSuppliers) {
String path = pathSupplier.get();
if (StringUtils.hasText(path)) {

View File

@ -153,7 +153,7 @@ class AssertProviderApplicationContextInvocationHandler implements InvocationHan
private ApplicationContext getStartedApplicationContext() {
if (this.startupFailure != null) {
throw new IllegalStateException(toString() + " failed to start", this.startupFailure);
throw new IllegalStateException(this + " failed to start", this.startupFailure);
}
return this.applicationContext;
}

View File

@ -956,7 +956,7 @@ public class TestRestTemplate {
private URI applyRootUriIfNecessary(URI uri) {
UriTemplateHandler uriTemplateHandler = this.restTemplate.getUriTemplateHandler();
if ((uriTemplateHandler instanceof RootUriTemplateHandler rootHandler) && uri.toString().startsWith("/")) {
return URI.create(rootHandler.getRootUri() + uri.toString());
return URI.create(rootHandler.getRootUri() + uri);
}
return uri;
}

View File

@ -169,7 +169,7 @@ abstract class AbstractJsonMarshalTesterTests {
assertThat(tester.parse(MAP_JSON)).asMap().containsEntry("a", OBJECT);
}
protected static final ExampleObject createExampleObject(String name, int age) {
protected static ExampleObject createExampleObject(String name, int age) {
ExampleObject exampleObject = new ExampleObject();
exampleObject.setName(name);
exampleObject.setAge(age);

View File

@ -91,8 +91,7 @@ class ServiceConnectionContextCustomizer implements ContextCustomizer {
* Relevant details from {@link ContainerConnectionSource} used as a
* MergedContextConfiguration cache key.
*/
private static record CacheKey(String connectionName, Set<Class<?>> connectionDetailsTypes,
Container<?> container) {
private record CacheKey(String connectionName, Set<Class<?>> connectionDetailsTypes, Container<?> container) {
CacheKey(ContainerConnectionSource<?> source) {
this(source.getConnectionName(), source.getConnectionDetailsTypes(), source.getContainerSupplier().get());

View File

@ -162,7 +162,7 @@ class ImportTestcontainersTests {
}
@Retention(RetentionPolicy.RUNTIME)
static @interface ContainerAnnotation {
@interface ContainerAnnotation {
}

View File

@ -68,7 +68,7 @@ class TestcontainersPropertySourceAutoConfigurationTests {
}
@ConfigurationProperties("container")
static record ContainerProperties(int port) {
record ContainerProperties(int port) {
}
static class TestBean {

View File

@ -345,7 +345,7 @@ public class AutoConfigureAnnotationProcessor extends AbstractProcessor {
}
StringBuilder result = new StringBuilder();
for (Object item : list) {
result.append((result.length() != 0) ? "," : "");
result.append((!result.isEmpty()) ? "," : "");
result.append(item);
}
return result.toString();

View File

@ -173,7 +173,7 @@ public class JSONStringer {
* @throws JSONException if processing of json failed
*/
JSONStringer open(Scope empty, String openBracket) throws JSONException {
if (this.stack.isEmpty() && this.out.length() > 0) {
if (this.stack.isEmpty() && !this.out.isEmpty()) {
throw new JSONException("Nesting problem: multiple top-level roots");
}
beforeValue();
@ -423,7 +423,7 @@ public class JSONStringer {
*/
@Override
public String toString() {
return this.out.length() == 0 ? null : this.out.toString();
return this.out.isEmpty() ? null : this.out.toString();
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright 2012-2020 the original author or authors.
* Copyright 2012-2023 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.
@ -65,7 +65,7 @@ public final class ItemMetadata implements Comparable<ItemMetadata> {
fullName.append(prefix);
}
if (name != null) {
if (fullName.length() > 0) {
if (!fullName.isEmpty()) {
fullName.append('.');
}
fullName.append(ConfigurationMetadata.toDashedCase(name));

View File

@ -37,7 +37,7 @@ import org.springframework.util.FileCopyUtils;
*/
class TestPrintStream extends PrintStream implements AssertProvider<PrintStreamAssert> {
private final Class<? extends Object> testClass;
private final Class<?> testClass;
TestPrintStream(Object testInstance) {
super(new ByteArrayOutputStream());

View File

@ -227,7 +227,7 @@ public abstract class AbstractAotMojo extends AbstractDependencyFilterMojo {
}
boolean hasReportedErrors() {
return this.message.length() > 0;
return !this.message.isEmpty();
}
@Override

View File

@ -342,7 +342,7 @@ public abstract class AbstractRunMojo extends AbstractDependencyFilterMojo {
try {
StringBuilder classpath = new StringBuilder();
for (URL ele : getClassPathUrls()) {
if (classpath.length() > 0) {
if (!classpath.isEmpty()) {
classpath.append(File.pathSeparator);
}
classpath.append(new File(ele.toURI()));

View File

@ -98,7 +98,7 @@ final class CommandLineBuilder {
static String build(List<URL> classpathElements) {
StringBuilder classpath = new StringBuilder();
for (URL element : classpathElements) {
if (classpath.length() > 0) {
if (!classpath.isEmpty()) {
classpath.append(File.pathSeparator);
}
classpath.append(toFile(element));

View File

@ -118,7 +118,7 @@ class StartupInfoLogger {
}
append(context, "started by ", () -> System.getProperty("user.name"));
append(context, "in ", () -> System.getProperty("user.dir"));
if (context.length() > 0) {
if (!context.isEmpty()) {
message.append(" (");
message.append(context);
message.append(")");
@ -140,7 +140,7 @@ class StartupInfoLogger {
value = defaultValue;
}
if (StringUtils.hasLength(value)) {
message.append((message.length() > 0) ? " " : "");
message.append((!message.isEmpty()) ? " " : "");
message.append(prefix);
message.append(value);
}

View File

@ -1,5 +1,5 @@
/*
* Copyright 2012-2020 the original author or authors.
* Copyright 2012-2023 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.
@ -52,7 +52,7 @@ public abstract class DataObjectPropertyName {
}
else {
ch = (ch != '_') ? ch : '-';
if (Character.isUpperCase(ch) && result.length() > 0 && result.charAt(result.length() - 1) != '-') {
if (Character.isUpperCase(ch) && !result.isEmpty() && result.charAt(result.length() - 1) != '-') {
result.append('-');
}
result.append(Character.toLowerCase(ch));

View File

@ -211,7 +211,7 @@ class MapBinder extends AggregateBinder<Map<Object, Object>> {
private String getKeyName(ConfigurationPropertyName name) {
StringBuilder result = new StringBuilder();
for (int i = this.root.getNumberOfElements(); i < name.getNumberOfElements(); i++) {
if (result.length() != 0) {
if (!result.isEmpty()) {
result.append('.');
}
result.append(name.getElement(i, Form.ORIGINAL));

View File

@ -543,7 +543,7 @@ public final class ConfigurationPropertyName implements Comparable<Configuration
StringBuilder result = new StringBuilder(elements * 8);
for (int i = 0; i < elements; i++) {
boolean indexed = isIndexed(i);
if (result.length() > 0 && !indexed) {
if (!result.isEmpty() && !indexed) {
result.append('.');
}
if (indexed) {
@ -615,7 +615,7 @@ public final class ConfigurationPropertyName implements Comparable<Configuration
Assert.isTrue(returnNullIfInvalid, "Name must not be null");
return null;
}
if (name.length() == 0) {
if (name.isEmpty()) {
return Elements.EMPTY;
}
if (name.charAt(0) == '.' || name.charAt(name.length() - 1) == '.') {
@ -674,7 +674,7 @@ public final class ConfigurationPropertyName implements Comparable<Configuration
static ConfigurationPropertyName adapt(CharSequence name, char separator,
Function<CharSequence, CharSequence> elementValueProcessor) {
Assert.notNull(name, "Name must not be null");
if (name.length() == 0) {
if (name.isEmpty()) {
return EMPTY;
}
Elements elements = new ElementsParser(name, separator).parse(elementValueProcessor);

View File

@ -1,5 +1,5 @@
/*
* Copyright 2012-2020 the original author or authors.
* Copyright 2012-2023 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.
@ -57,7 +57,7 @@ final class SystemEnvironmentPropertyMapper implements PropertyMapper {
private String convertName(ConfigurationPropertyName name, int numberOfElements) {
StringBuilder result = new StringBuilder();
for (int i = 0; i < numberOfElements; i++) {
if (result.length() > 0) {
if (!result.isEmpty()) {
result.append('_');
}
result.append(name.getElement(i, Form.UNIFORM).toUpperCase(Locale.ENGLISH));
@ -68,7 +68,7 @@ final class SystemEnvironmentPropertyMapper implements PropertyMapper {
private String convertLegacyName(ConfigurationPropertyName name) {
StringBuilder result = new StringBuilder();
for (int i = 0; i < name.getNumberOfElements(); i++) {
if (result.length() > 0) {
if (!result.isEmpty()) {
result.append('_');
}
result.append(convertLegacyNameElement(name.getElement(i, Form.ORIGINAL)));

View File

@ -1,5 +1,5 @@
/*
* Copyright 2012-2022 the original author or authors.
* Copyright 2012-2023 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.
@ -158,7 +158,7 @@ public class BasicJsonParser extends AbstractJsonParser {
}
index++;
}
if (build.length() > 0) {
if (!build.isEmpty()) {
list.add(build.toString().trim());
}
return list;

View File

@ -130,7 +130,7 @@ public final class ColorConverter extends LogEventPatternConverter {
for (PatternFormatter formatter : this.formatters) {
formatter.format(event, buf);
}
if (buf.length() > 0) {
if (!buf.isEmpty()) {
AnsiElement element = this.styling;
if (element == null) {
// Assume highlighting

View File

@ -260,14 +260,14 @@ public class LogbackLoggingSystem extends AbstractLoggingSystem implements BeanF
List<Throwable> suppressedExceptions = new ArrayList<>();
for (Status status : loggerContext.getStatusManager().getCopyOfStatusList()) {
if (status.getLevel() == Status.ERROR) {
errors.append((errors.length() > 0) ? String.format("%n") : "");
errors.append(status.toString());
errors.append((!errors.isEmpty()) ? String.format("%n") : "");
errors.append(status);
if (status.getThrowable() != null) {
suppressedExceptions.add(status.getThrowable());
}
}
}
if (errors.length() == 0) {
if (errors.isEmpty()) {
if (!StatusUtil.contextHasStatusListener(loggerContext)) {
StatusPrinter.printInCaseOfErrorsOrWarnings(loggerContext);
}

View File

@ -245,7 +245,7 @@ public final class ConnectionFactoryBuilder {
private ConnectionFactoryOptions delegateFactoryOptions(ConnectionFactoryOptions options) {
String protocol = toString(options.getRequiredValue(ConnectionFactoryOptions.PROTOCOL));
if (protocol.trim().length() == 0) {
if (protocol.trim().isEmpty()) {
throw new IllegalArgumentException(String.format("Protocol %s is not valid.", protocol));
}
String[] protocols = protocol.split(COLON, 2);

View File

@ -1,5 +1,5 @@
/*
* Copyright 2012-2022 the original author or authors.
* Copyright 2012-2023 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.
@ -104,7 +104,7 @@ public class ApplicationPid {
private void assertCanOverwrite(File file) throws IOException {
if (!file.canWrite() || !canWritePosixFile(file)) {
throw new FileNotFoundException(file.toString() + " (permission denied)");
throw new FileNotFoundException(file + " (permission denied)");
}
}

View File

@ -877,7 +877,7 @@ class ConfigDataEnvironmentPostProcessorIntegrationTests {
map.put("spring", "boot");
}
String suffix = (!resource.isProfileSpecific()) ? "" : ":ps";
map.put(resource.toString() + suffix, "true");
map.put(resource + suffix, "true");
MapPropertySource propertySource = new MapPropertySource("loaded" + suffix, map);
return new ConfigData(Collections.singleton(propertySource));
}

View File

@ -3091,7 +3091,7 @@ class ConfigurationPropertiesTests {
}
static record NestedRecord(String name) {
record NestedRecord(String name) {
}
@EnableConfigurationProperties

View File

@ -207,7 +207,7 @@ class DefaultBindConstructorProviderTests {
}
static record OneConstructorOnRecord(String name, int age) {
record OneConstructorOnRecord(String name, int age) {
}

View File

@ -86,7 +86,7 @@ class StaticResourceJarsTests {
void ignoreWildcardUrls() throws Exception {
File jarFile = createResourcesJar("test-resources.jar");
URL folderUrl = jarFile.getParentFile().toURI().toURL();
URL wildcardUrl = new URL(folderUrl.toString() + "*.jar");
URL wildcardUrl = new URL(folderUrl + "*.jar");
List<URL> staticResourceJarUrls = new StaticResourceJars().getUrlsFrom(wildcardUrl);
assertThat(staticResourceJarUrls).isEmpty();
}

View File

@ -1,5 +1,5 @@
/*
* Copyright 2012-2019 the original author or authors.
* Copyright 2012-2023 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.
@ -141,7 +141,7 @@ public class Snake {
sb.append(',');
sb.append(String.format("{x: %d, y: %d}", Integer.valueOf(location.x), Integer.valueOf(location.y)));
}
return String.format("{'id':%d,'body':[%s]}", Integer.valueOf(this.id), sb.toString());
return String.format("{'id':%d,'body':[%s]}", Integer.valueOf(this.id), sb);
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright 2012-2022 the original author or authors.
* Copyright 2012-2023 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.
@ -77,7 +77,7 @@ public final class SnakeTimer {
sb.append(',');
}
}
broadcast(String.format("{'type': 'update', 'data' : [%s]}", sb.toString()));
broadcast(String.format("{'type': 'update', 'data' : [%s]}", sb));
}
public static void broadcast(String message) {

View File

@ -1,5 +1,5 @@
/*
* Copyright 2012-2020 the original author or authors.
* Copyright 2012-2023 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.
@ -74,7 +74,7 @@ public class SnakeWebSocketHandler extends TextWebSocketHandler {
sb.append(',');
}
}
SnakeTimer.broadcast(String.format("{'type': 'join','data':[%s]}", sb.toString()));
SnakeTimer.broadcast(String.format("{'type': 'join','data':[%s]}", sb));
}
@Override

View File

@ -1,5 +1,5 @@
/*
* Copyright 2012-2019 the original author or authors.
* Copyright 2012-2023 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.
@ -141,7 +141,7 @@ public class Snake {
sb.append(',');
sb.append(String.format("{x: %d, y: %d}", Integer.valueOf(location.x), Integer.valueOf(location.y)));
}
return String.format("{'id':%d,'body':[%s]}", Integer.valueOf(this.id), sb.toString());
return String.format("{'id':%d,'body':[%s]}", Integer.valueOf(this.id), sb);
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright 2012-2022 the original author or authors.
* Copyright 2012-2023 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.
@ -77,7 +77,7 @@ public final class SnakeTimer {
sb.append(',');
}
}
broadcast(String.format("{'type': 'update', 'data' : [%s]}", sb.toString()));
broadcast(String.format("{'type': 'update', 'data' : [%s]}", sb));
}
public static void broadcast(String message) {

View File

@ -1,5 +1,5 @@
/*
* Copyright 2012-2020 the original author or authors.
* Copyright 2012-2023 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.
@ -74,7 +74,7 @@ public class SnakeWebSocketHandler extends TextWebSocketHandler {
sb.append(',');
}
}
SnakeTimer.broadcast(String.format("{'type': 'join','data':[%s]}", sb.toString()));
SnakeTimer.broadcast(String.format("{'type': 'join','data':[%s]}", sb));
}
@Override

View File

@ -1,5 +1,5 @@
/*
* Copyright 2012-2019 the original author or authors.
* Copyright 2012-2023 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.
@ -141,7 +141,7 @@ public class Snake {
sb.append(',');
sb.append(String.format("{x: %d, y: %d}", Integer.valueOf(location.x), Integer.valueOf(location.y)));
}
return String.format("{'id':%d,'body':[%s]}", Integer.valueOf(this.id), sb.toString());
return String.format("{'id':%d,'body':[%s]}", Integer.valueOf(this.id), sb);
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright 2012-2022 the original author or authors.
* Copyright 2012-2023 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.
@ -77,7 +77,7 @@ public final class SnakeTimer {
sb.append(',');
}
}
broadcast(String.format("{'type': 'update', 'data' : [%s]}", sb.toString()));
broadcast(String.format("{'type': 'update', 'data' : [%s]}", sb));
}
public static void broadcast(String message) {

View File

@ -1,5 +1,5 @@
/*
* Copyright 2012-2020 the original author or authors.
* Copyright 2012-2023 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.
@ -74,7 +74,7 @@ public class SnakeWebSocketHandler extends TextWebSocketHandler {
sb.append(',');
}
}
SnakeTimer.broadcast(String.format("{'type': 'join','data':[%s]}", sb.toString()));
SnakeTimer.broadcast(String.format("{'type': 'join','data':[%s]}", sb));
}
@Override