Polish code base

- Remove redundant super() calls from constructors
- Add missing @⁠Override annotations
- Use switch rules in JdkClientHttpRequest and RfcUriParser
- Use instanceof pattern matching
- Use method references instead of trivial lambda expressions
- Use lambda expressions instead of anonymous inner classes
- Remove unused code and redundant semicolons
- Use braces with if-blocks
This commit is contained in:
Sam Brannen
2026-09-30 17:08:47 +02:00
parent 043442a2a1
commit 3a600481d2
43 changed files with 80 additions and 150 deletions
@@ -125,6 +125,7 @@ class AopUtilsTests {
static class WithInterface implements ProxyInterface {
@Override
public void handle(List<String> list) {
}
}
@@ -171,7 +171,6 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac
* Create a new AbstractAutowireCapableBeanFactory.
*/
public AbstractAutowireCapableBeanFactory() {
super();
ignoreDependencyInterface(BeanNameAware.class);
ignoreDependencyInterface(BeanFactoryAware.class);
ignoreDependencyInterface(BeanClassLoaderAware.class);
@@ -60,7 +60,6 @@ public class ChildBeanDefinition extends AbstractBeanDefinition {
* @see #setPropertyValues
*/
public ChildBeanDefinition(String parentName) {
super();
this.parentName = parentName;
}
@@ -225,7 +225,6 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto
* Create a new DefaultListableBeanFactory.
*/
public DefaultListableBeanFactory() {
super();
}
/**
@@ -399,6 +398,7 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto
return getBeanProvider(requiredType, true);
}
@Override
public <T> ObjectProvider<T> getBeanProvider(ParameterizedTypeReference<T> requiredType) {
return getBeanProvider(ResolvableType.forType(requiredType), true);
}
@@ -56,7 +56,6 @@ GenericBeanDefinition extends AbstractBeanDefinition {
* @see #setPropertyValues
*/
public GenericBeanDefinition() {
super();
}
/**
@@ -1069,7 +1069,6 @@ class BeanUtilsTests {
private String address;
public User() {
super();
}
public String getAddress() {
@@ -927,11 +927,9 @@ class BeanFactoryGenericsTests {
public static class UrlSet extends HashSet<URL> {
public UrlSet() {
super();
}
public UrlSet(Set<? extends URL> urls) {
super();
}
public void setUrlNames(Set<URI> urlNames) throws MalformedURLException {
@@ -47,6 +47,7 @@ public class MockBeanFactoryInitializationCode implements BeanFactoryInitializat
.addForFeature("TestCode", this.typeBuilder);
}
@Override
public ClassName getClassName() {
return this.generatedClass.getName();
}
@@ -137,6 +137,7 @@ class JCacheCustomInterceptorTests {
CacheInterceptorBeanPostProcessor(BeanFactory beanFactory) {this.beanFactory = beanFactory;}
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
if (beanName.equals("jCacheInterceptor")) {
JCacheInterceptor cacheInterceptor = new TestCacheInterceptor();
@@ -69,7 +69,6 @@ class CacheOperationExpressionEvaluator extends CachedExpressionEvaluator {
private final CacheEvaluationContextFactory evaluationContextFactory;
public CacheOperationExpressionEvaluator(CacheEvaluationContextFactory evaluationContextFactory) {
super();
this.evaluationContextFactory = evaluationContextFactory;
this.evaluationContextFactory.setParameterNameDiscoverer(this::getParameterNameDiscoverer);
}
@@ -51,7 +51,6 @@ public class SpringModelMBean extends RequiredModelMBean {
* @see javax.management.modelmbean.RequiredModelMBean#RequiredModelMBean()
*/
public SpringModelMBean() throws MBeanException, RuntimeOperationsException {
super();
}
/**
@@ -66,6 +66,7 @@ public class MethodRetryEvent extends MethodFailureEvent {
* @see reactor.core.Exceptions#isRetryExhausted
* @see java.util.concurrent.TimeoutException
*/
@Override
public Throwable getFailure() {
return super.getFailure();
}
@@ -108,7 +108,6 @@ public class ConcurrentTaskScheduler extends ConcurrentTaskExecutor implements T
*/
@Deprecated(since = "6.1")
public ConcurrentTaskScheduler() {
super();
this.scheduledExecutor = Executors.newSingleThreadScheduledExecutor();
this.enterpriseConcurrentScheduler = false;
}
@@ -39,7 +39,6 @@ public class CustomizableThreadFactory extends CustomizableThreadCreator impleme
* Create a new CustomizableThreadFactory with default thread name prefix.
*/
public CustomizableThreadFactory() {
super();
}
/**
@@ -115,6 +115,7 @@ class CustomInterceptorTests {
CacheInterceptorBeanPostProcessor(BeanFactory beanFactory) {this.beanFactory = beanFactory;}
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
if (beanName.equals("cacheInterceptor")) {
CacheInterceptor cacheInterceptor = new TestCacheInterceptor();
@@ -214,6 +214,7 @@ class ConfigurationClassEnhancerTests {
super(parent);
}
@Override
protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {
if (name.contains("MyConfig")) {
String path = name.replace('.', '/').concat(".class");
@@ -169,6 +169,7 @@ class ApplicationContextLifecycleTests {
private static class FailingContextRefreshedListener implements ApplicationListener<ContextRefreshedEvent> {
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
throw new IllegalStateException();
}
@@ -48,7 +48,7 @@ public class PropertiesPropertySource extends MapPropertySource {
@Override
public String[] getPropertyNames() {
synchronized (this.source) {
return ((Map<?, ?>) this.source).keySet().stream().filter(k -> k instanceof String).toArray(String[]::new);
return ((Map<?, ?>) this.source).keySet().stream().filter(String.class::isInstance).toArray(String[]::new);
}
}
@@ -83,7 +83,6 @@ public class EncodedResource implements InputStreamSource {
}
private EncodedResource(Resource resource, @Nullable String encoding, @Nullable Charset charset) {
super();
Assert.notNull(resource, "Resource must not be null");
this.resource = resource;
this.encoding = encoding;
@@ -105,7 +105,6 @@ public class SimpleAsyncTaskExecutor extends CustomizableThreadCreator
* Create a new SimpleAsyncTaskExecutor with default thread name prefix.
*/
public SimpleAsyncTaskExecutor() {
super();
}
/**
@@ -36,7 +36,6 @@ public class SimpleMetadataReaderFactory extends AbstractMetadataReaderFactory {
* Create a new SimpleMetadataReaderFactory for the default class loader.
*/
public SimpleMetadataReaderFactory() {
super();
}
/**
@@ -547,11 +547,9 @@ public class MimeType implements Comparable<MimeType>, Serializable {
thisAttributes.addAll(getParameters().keySet());
TreeSet<String> otherAttributes = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
otherAttributes.addAll(other.getParameters().keySet());
Iterator<String> thisAttributesIterator = thisAttributes.iterator();
Iterator<String> otherAttributesIterator = otherAttributes.iterator();
while (thisAttributesIterator.hasNext()) {
String thisAttribute = thisAttributesIterator.next();
for (String thisAttribute : thisAttributes) {
String otherAttribute = otherAttributesIterator.next();
comp = thisAttribute.compareToIgnoreCase(otherAttribute);
if (comp != 0) {
@@ -587,12 +587,12 @@ class GenericConversionServiceTests {
List<?> aList = (List<?>) conversionService.convert(List.of("foo"),
TypeDescriptor.collection(List.class, TypeDescriptor.valueOf(String.class)),
TypeDescriptor.collection(List.class, TypeDescriptor.valueOf(ARaw.class)));
assertThat(aList).allMatch(e -> e instanceof ARaw);
assertThat(aList).allMatch(ARaw.class::isInstance);
List<?> bList = (List<?>) conversionService.convert(List.of("foo"),
TypeDescriptor.collection(List.class, TypeDescriptor.valueOf(String.class)),
TypeDescriptor.collection(List.class, TypeDescriptor.valueOf(BRaw.class)));
assertThat(bList).allMatch(e -> e instanceof BRaw);
assertThat(bList).allMatch(BRaw.class::isInstance);
}
@Test
@@ -721,7 +721,6 @@ class ConcurrentReferenceHashMapTests {
private final LinkedList<MockReference<K, V>> queue = new LinkedList<>();
public TestWeakConcurrentCache() {
super();
}
public TestWeakConcurrentCache(int initialCapacity, float loadFactor, int concurrencyLevel) {
@@ -146,7 +146,7 @@ public class LeakAwareDataBufferFactory implements DataBufferFactory {
public DataBuffer join(List<? extends DataBuffer> dataBuffers) {
// Remove LeakAwareDataBuffer wrapper so delegate can find native buffers
dataBuffers = dataBuffers.stream()
.map(o -> o instanceof LeakAwareDataBuffer ? ((LeakAwareDataBuffer) o).dataBuffer() : o)
.map(o -> o instanceof LeakAwareDataBuffer leakAwareBuffer ? leakAwareBuffer.dataBuffer() : o)
.toList();
return new LeakAwareDataBuffer(this.delegate.join(dataBuffers), this);
}
@@ -43,7 +43,6 @@ import org.springframework.expression.MethodExecutor;
public final class DataBindingMethodResolver extends ReflectiveMethodResolver {
private DataBindingMethodResolver() {
super();
}
@Override
@@ -68,7 +68,6 @@ public class BatchSqlUpdate extends SqlUpdate {
* @see #setSql
*/
public BatchSqlUpdate() {
super();
}
/**
@@ -64,7 +64,6 @@ public class JdbcTransactionManager extends DataSourceTransactionManager {
* @see #setDataSource
*/
public JdbcTransactionManager() {
super();
}
/**
@@ -375,7 +375,7 @@ public class DataSourceTransactionManagerTests {
tt.executeWithoutResult(status -> {
assertThat(status.isRollbackOnly()).isFalse();
tt2.executeWithoutResult(status2 -> status2.setRollbackOnly());
tt2.executeWithoutResult(TransactionStatus::setRollbackOnly);
assertThat(status.isRollbackOnly()).isTrue();
});
});
@@ -401,7 +401,7 @@ public class DataSourceTransactionManagerTests {
tt.executeWithoutResult(status -> {
assertThat(status.isRollbackOnly()).isFalse();
tt2.executeWithoutResult(status2 -> status2.setRollbackOnly());
tt2.executeWithoutResult(TransactionStatus::setRollbackOnly);
assertThat(status.isRollbackOnly()).isTrue();
});
});
@@ -621,7 +621,7 @@ public class DataSourceTransactionManagerTests {
assertThat(status.isReadOnly()).isFalse();
assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse();
assertThat(TransactionSynchronizationManager.isActualTransactionActive()).isTrue();
tt2.executeWithoutResult(status2 -> status2.setRollbackOnly());
tt2.executeWithoutResult(TransactionStatus::setRollbackOnly);
})).withCause(failure);
assertThat(TransactionSynchronizationManager.hasResource(ds)).isFalse();
@@ -199,7 +199,7 @@ class SqlUpdateTests {
verify(preparedStatement).setObject(1, 1, Types.NUMERIC);
verify(preparedStatement).setObject(2, 1, Types.NUMERIC, 2);
verify(preparedStatement).setString(3, "rod");
verify(preparedStatement).setBoolean(4, Boolean.TRUE);
verify(preparedStatement).setBoolean(4, true);
}
@Test
@@ -237,7 +237,7 @@ class SqlUpdateTests {
verify(preparedStatement).setObject(1, 1, Types.NUMERIC);
verify(preparedStatement).setObject(2, 1, Types.NUMERIC);
verify(preparedStatement).setString(3, "rod");
verify(preparedStatement).setBoolean(4, Boolean.TRUE);
verify(preparedStatement).setBoolean(4, true);
}
@Test
@@ -25,6 +25,7 @@ import org.mockito.InOrder;
import org.springframework.dao.ConcurrencyFailureException;
import org.springframework.jdbc.datasource.DataSourceTransactionManagerTests;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.TransactionSystemException;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.transaction.support.TransactionTemplate;
@@ -154,7 +155,7 @@ class JdbcTransactionManagerTests extends DataSourceTransactionManagerTests {
// specific ConcurrencyFailureException
assertThatExceptionOfType(ConcurrencyFailureException.class).isThrownBy(() ->
tt.executeWithoutResult(status -> status.setRollbackOnly()));
tt.executeWithoutResult(TransactionStatus::setRollbackOnly));
assertThat(TransactionSynchronizationManager.hasResource(ds)).isFalse();
InOrder ordered = inOrder(con);
@@ -114,7 +114,6 @@ public class CachingConnectionFactory extends SingleConnectionFactory {
* @see #setTargetConnectionFactory
*/
public CachingConnectionFactory() {
super();
setReconnectOnException(true);
}
@@ -24,7 +24,6 @@ import jakarta.jms.Destination;
import jakarta.jms.JMSException;
import jakarta.jms.Message;
import jakarta.jms.MessageConsumer;
import jakarta.jms.Session;
import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
import org.apache.activemq.artemis.junit.EmbeddedActiveMQExtension;
import org.junit.jupiter.api.AfterEach;
@@ -99,12 +98,9 @@ class JmsTemplateObservationTests {
mc.setMessageListener(message -> {
try {
Destination jmsReplyTo = message.getJMSReplyTo();
jmsTemplate.send(jmsReplyTo, new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
latch.countDown();
return session.createTextMessage("response content");
}
jmsTemplate.send(jmsReplyTo, (MessageCreator) replySession -> {
latch.countDown();
return replySession.createTextMessage("response content");
});
}
catch (JMSException e) {
@@ -119,12 +115,9 @@ class JmsTemplateObservationTests {
}, true);
}).start();
Message response = jmsTemplate.sendAndReceive("spring.test.observation", new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage("request content");
}
});
Message response = jmsTemplate.sendAndReceive("spring.test.observation",
(MessageCreator) session -> session.createTextMessage("request content"));
String responseBody = response.getBody(String.class);
assertThat(responseBody).isEqualTo("response content");
@@ -45,9 +45,9 @@ public class TestReturnValueHandler implements HandlerMethodReturnValueHandler {
@Override
@SuppressWarnings({ "unchecked", "rawtypes" })
public Mono<Void> handleReturnValue(@Nullable Object value, MethodParameter returnType, Message<?> message) {
return value instanceof Publisher ?
new ChannelSendOperator((Publisher) value, this::saveValue) :
saveValue(value);
return (value instanceof Publisher publisher ?
new ChannelSendOperator(publisher, this::saveValue) :
saveValue(value));
}
private Mono<Void> saveValue(@Nullable Object value) {
@@ -185,14 +185,9 @@ class JdkClientHttpRequest extends AbstractStreamingClientHttpRequest {
}
else {
switch (this.method.name()) {
case "GET" :
builder.GET();
break;
case "DELETE" :
builder.DELETE();
break;
default :
builder.method(this.method.name(), HttpRequest.BodyPublishers.noBody());
case "GET" -> builder.GET();
case "DELETE" -> builder.DELETE();
default -> builder.method(this.method.name(), HttpRequest.BodyPublishers.noBody());
}
}
return builder.build();
@@ -197,6 +197,7 @@ public class ServletServerHttpRequest implements ServerHttpRequest {
return this.headers;
}
@Override
public @Nullable Principal getPrincipal() {
return this.servletRequest.getUserPrincipal();
}
@@ -95,32 +95,20 @@ abstract class RfcUriParser {
@Override
public void handleNext(InternalParser parser, char c, int i) {
switch (c) {
case '/':
parser.advanceTo(HOST_OR_PATH, i);
break;
case ';':
case '.':
parser.advanceTo(PATH, i);
break;
case '%':
parser.markPercentEncoding().advanceTo(PATH, i);
break;
case '?':
parser.advanceTo(QUERY, i + 1); // empty path
break;
case '#':
parser.advanceTo(FRAGMENT, i + 1); // empty path
break;
case '*':
parser.advanceTo(WILDCARD);
break;
default:
case '/' -> parser.advanceTo(HOST_OR_PATH, i);
case ';', '.' -> parser.advanceTo(PATH, i);
case '%' -> parser.markPercentEncoding().advanceTo(PATH, i);
case '?' -> parser.advanceTo(QUERY, i + 1); // empty path
case '#' -> parser.advanceTo(FRAGMENT, i + 1); // empty path
case '*' -> parser.advanceTo(WILDCARD);
default -> {
if (parser.hasScheme()) {
parser.resolveIfOpaque().advanceTo(PATH, i);
}
else {
parser.advanceTo(SCHEME_OR_PATH, i);
}
}
}
}
@@ -136,20 +124,12 @@ abstract class RfcUriParser {
@Override
public void handleNext(InternalParser parser, char c, int i) {
switch (c) {
case '/':
parser.componentIndex(i).captureHost().advanceTo(HOST, i + 1); // empty host to start
break;
case '%':
case '@':
case ';':
case '?':
case '#':
case '.':
case '/' -> parser.componentIndex(i).captureHost().advanceTo(HOST, i + 1); // empty host to start
case '%', '@', ';', '?', '#', '.' -> {
parser.index(--i);
parser.advanceTo(PATH);
break;
default:
parser.advanceTo(PATH);
}
default -> parser.advanceTo(PATH);
}
}
@@ -165,22 +145,11 @@ abstract class RfcUriParser {
@Override
public void handleNext(InternalParser parser, char c, int i) {
switch (c) {
case ':':
parser.captureScheme().advanceTo(START);
break;
case '/':
case ';':
parser.advanceTo(PATH);
break;
case '%':
parser.markPercentEncoding().advanceTo(PATH);
break;
case '?':
parser.capturePath().advanceTo(QUERY, i + 1);
break;
case '#':
parser.capturePath().advanceTo(FRAGMENT, i + 1);
break;
case ':' -> parser.captureScheme().advanceTo(START);
case '/', ';' -> parser.advanceTo(PATH);
case '%' -> parser.markPercentEncoding().advanceTo(PATH);
case '?' -> parser.capturePath().advanceTo(QUERY, i + 1);
case '#' -> parser.capturePath().advanceTo(FRAGMENT, i + 1);
}
}
@@ -196,33 +165,22 @@ abstract class RfcUriParser {
@Override
public void handleNext(InternalParser parser, char c, int i) {
switch (c) {
case '/':
parser.captureHost().advanceTo(PATH, i);
break;
case ':':
parser.captureHostIfNotEmpty().advanceTo(PORT, i + 1);
break;
case '?':
parser.captureHostIfNotEmpty().advanceTo(QUERY, i + 1);
break;
case '#':
parser.captureHostIfNotEmpty().advanceTo(FRAGMENT, i + 1);
break;
case '@':
parser.captureUser().componentIndex(i + 1);
break;
case '[':
case '/' -> parser.captureHost().advanceTo(PATH, i);
case ':' -> parser.captureHostIfNotEmpty().advanceTo(PORT, i + 1);
case '?' -> parser.captureHostIfNotEmpty().advanceTo(QUERY, i + 1);
case '#' -> parser.captureHostIfNotEmpty().advanceTo(FRAGMENT, i + 1);
case '@' -> parser.captureUser().componentIndex(i + 1);
case '[' -> {
verify(parser.isAtStartOfComponent(), parser, "Bad authority");
parser.advanceTo(IPV6);
break;
case '%':
parser.markPercentEncoding();
break;
default:
}
case '%' -> parser.markPercentEncoding();
default -> {
boolean isAllowed = (parser.processCurlyBrackets(c) ||
parser.countDownPercentEncodingInHost(c) ||
HierarchicalUriComponents.Type.URI.isUnreservedOrSubDelimiter(c));
verify(isAllowed, parser, "Bad authority");
}
}
}
@@ -238,7 +196,7 @@ abstract class RfcUriParser {
@Override
public void handleNext(InternalParser parser, char c, int i) {
switch (c) {
case ']':
case ']' -> {
parser.index(++i);
parser.captureHost();
if (parser.hasNext()) {
@@ -253,11 +211,11 @@ abstract class RfcUriParser {
fail(parser, "Bad authority");
}
}
break;
case ':':
break;
default:
verifyIsHexDigit(c, parser, "Bad authority");
}
case ':' -> {
// no-op
}
default -> verifyIsHexDigit(c, parser, "Bad authority");
}
}
@@ -307,18 +265,13 @@ abstract class RfcUriParser {
public void handleNext(InternalParser parser, char c, int i) {
if (!parser.countDownPercentEncodingInPath(c)) {
switch (c) {
case '?':
if (parser.isOpaque()) {
break;
case '?' -> {
if (!parser.isOpaque()) {
parser.capturePath().advanceTo(QUERY, i + 1);
}
parser.capturePath().advanceTo(QUERY, i + 1);
break;
case '#':
parser.capturePath().advanceTo(FRAGMENT, i + 1);
break;
case '%':
parser.markPercentEncoding();
break;
}
case '#' -> parser.capturePath().advanceTo(FRAGMENT, i + 1);
case '%' -> parser.markPercentEncoding();
}
}
}
@@ -120,7 +120,7 @@ class RestClientProxyRegistryIntegrationTests {
@Override
protected boolean isEligibleForOverriding(String className) {
return className.contains("EchoA");
};
}
};
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
@@ -41,8 +41,9 @@ public class JettyCoreHttpServer extends AbstractHttpServer {
@Override
protected void initServer() {
if (logger.isTraceEnabled())
if (logger.isTraceEnabled()) {
this.byteBufferPool = new ArrayByteBufferPool.Tracking();
}
this.jettyServer = new Server(null, null, byteBufferPool);
ServerConnector connector = new ServerConnector(this.jettyServer);
@@ -71,7 +71,7 @@ import org.springframework.web.method.support.HandlerMethodArgumentResolver;
*/
public abstract class AbstractMessageConverterMethodArgumentResolver implements HandlerMethodArgumentResolver {
protected enum ConverterType { BASE, GENERIC, SMART };
protected enum ConverterType { BASE, GENERIC, SMART }
private static final Set<HttpMethod> SUPPORTED_METHODS = Set.of(HttpMethod.POST, HttpMethod.PUT, HttpMethod.PATCH);
@@ -897,8 +897,8 @@ public class RequestMappingHandlerAdapter extends AbstractHandlerMethodAdapter
// Obtain wrapped response to enforce lifecycle rule from Servlet spec, section 2.3.3.4
response = asyncWebRequest.getNativeResponse(HttpServletResponse.class);
ServletWebRequest webRequest = (asyncWebRequest instanceof ServletWebRequest ?
(ServletWebRequest) asyncWebRequest : new ServletWebRequest(request, response));
ServletWebRequest webRequest = (asyncWebRequest instanceof ServletWebRequest servletWebRequest ?
servletWebRequest : new ServletWebRequest(request, response));
WebDataBinderFactory binderFactory = getDataBinderFactory(handlerMethod);
ModelFactory modelFactory = getModelFactory(handlerMethod, binderFactory);
@@ -52,7 +52,6 @@ public class WebSocketHttpHeaders extends HttpHeaders {
* Construct a new, empty {@code WebSocketHttpHeaders} instance.
*/
public WebSocketHttpHeaders() {
super();
}
/**
@@ -463,8 +463,8 @@ class MessageBrokerBeanDefinitionParserTests {
}
private WebSocketHandler unwrapWebSocketHandler(WebSocketHandler handler) {
return (handler instanceof WebSocketHandlerDecorator) ?
((WebSocketHandlerDecorator) handler).getLastHandler() : handler;
return (handler instanceof WebSocketHandlerDecorator decorator ?
decorator.getLastHandler() : handler);
}
}