diff --git a/.pmd/ruleset.xml b/.pmd/ruleset.xml new file mode 100644 index 000000000000..4b380983d95e --- /dev/null +++ b/.pmd/ruleset.xml @@ -0,0 +1,37 @@ + + + Programmatic approach to maintain code quality on large scale. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/build.gradle b/build.gradle index ba18d62245c0..c65325a098c8 100644 --- a/build.gradle +++ b/build.gradle @@ -7,6 +7,7 @@ plugins { id 'io.github.goooler.shadow' version '8.1.8' apply false id 'me.champeau.jmh' version '0.7.2' apply false id "io.spring.nullability" version "0.0.1" apply false + id 'pmd' } ext { @@ -18,6 +19,7 @@ description = "Spring Framework" configure(allprojects) { project -> apply plugin: "org.springframework.build.localdev" + apply plugin: "pmd" group = "org.springframework" repositories { mavenCentral() @@ -34,6 +36,9 @@ configure(allprojects) { project -> cacheDynamicVersionsFor 0, "seconds" } } + pmd { + ruleSetFiles = files(".pmd/ruleset.xml") + } } configure(allprojects - project(":framework-platform")) { diff --git a/buildSrc/src/main/java/org/springframework/build/multirelease/MultiReleaseJarPlugin.java b/buildSrc/src/main/java/org/springframework/build/multirelease/MultiReleaseJarPlugin.java index 1716d016b285..2002e4d427ad 100644 --- a/buildSrc/src/main/java/org/springframework/build/multirelease/MultiReleaseJarPlugin.java +++ b/buildSrc/src/main/java/org/springframework/build/multirelease/MultiReleaseJarPlugin.java @@ -43,6 +43,7 @@ protected JavaToolchainService getToolchains() { throw new UnsupportedOperationException(); } + @Override public void apply(Project project) { project.getPlugins().apply(JavaPlugin.class); ExtensionContainer extensions = project.getExtensions(); diff --git a/framework-docs/src/main/java/org/springframework/docs/core/aop/ataspectj/aopataspectjexample/ConcurrentOperationExecutor.java b/framework-docs/src/main/java/org/springframework/docs/core/aop/ataspectj/aopataspectjexample/ConcurrentOperationExecutor.java index a760f744918f..ec8be0f8ce4d 100644 --- a/framework-docs/src/main/java/org/springframework/docs/core/aop/ataspectj/aopataspectjexample/ConcurrentOperationExecutor.java +++ b/framework-docs/src/main/java/org/springframework/docs/core/aop/ataspectj/aopataspectjexample/ConcurrentOperationExecutor.java @@ -36,6 +36,7 @@ public void setMaxRetries(int maxRetries) { this.maxRetries = maxRetries; } + @Override public int getOrder() { return this.order; } diff --git a/framework-docs/src/main/java/org/springframework/docs/dataaccess/jdbc/jdbccomplextypes/SqlTypeValueFactory.java b/framework-docs/src/main/java/org/springframework/docs/dataaccess/jdbc/jdbccomplextypes/SqlTypeValueFactory.java index bdcfc4b23233..5c4ebf92602d 100644 --- a/framework-docs/src/main/java/org/springframework/docs/dataaccess/jdbc/jdbccomplextypes/SqlTypeValueFactory.java +++ b/framework-docs/src/main/java/org/springframework/docs/dataaccess/jdbc/jdbccomplextypes/SqlTypeValueFactory.java @@ -35,6 +35,7 @@ void createStructSample() throws ParseException { new SimpleDateFormat("yyyy-M-d").parse("2010-12-31")); SqlTypeValue value = new AbstractSqlTypeValue() { + @Override protected Object createTypeValue(Connection connection, int sqlType, String typeName) throws SQLException { Object[] item = new Object[] { testItem.getId(), testItem.getDescription(), new java.sql.Date(testItem.getExpirationDate().getTime()) }; @@ -49,6 +50,7 @@ void createOracleArray() { Long[] ids = new Long[] {1L, 2L}; SqlTypeValue value = new AbstractSqlTypeValue() { + @Override protected Object createTypeValue(Connection conn, int sqlType, String typeName) throws SQLException { return conn.unwrap(OracleConnection.class).createOracleArray(typeName, ids); } diff --git a/framework-docs/src/main/java/org/springframework/docs/integration/jms/jmsreceivingasync/ExampleListener.java b/framework-docs/src/main/java/org/springframework/docs/integration/jms/jmsreceivingasync/ExampleListener.java index d535f8cb0811..aff92b1943ec 100644 --- a/framework-docs/src/main/java/org/springframework/docs/integration/jms/jmsreceivingasync/ExampleListener.java +++ b/framework-docs/src/main/java/org/springframework/docs/integration/jms/jmsreceivingasync/ExampleListener.java @@ -24,6 +24,7 @@ // tag::snippet[] public class ExampleListener implements MessageListener { + @Override public void onMessage(Message message) { if (message instanceof TextMessage textMessage) { try { diff --git a/framework-docs/src/main/java/org/springframework/docs/integration/schedulingtaskexecutorusage/TaskExecutorExample.java b/framework-docs/src/main/java/org/springframework/docs/integration/schedulingtaskexecutorusage/TaskExecutorExample.java index 62a156cff177..ca738cb0b91c 100644 --- a/framework-docs/src/main/java/org/springframework/docs/integration/schedulingtaskexecutorusage/TaskExecutorExample.java +++ b/framework-docs/src/main/java/org/springframework/docs/integration/schedulingtaskexecutorusage/TaskExecutorExample.java @@ -30,6 +30,7 @@ public MessagePrinterTask(String message) { this.message = message; } + @Override public void run() { System.out.println(message); } diff --git a/framework-docs/src/main/java/org/springframework/docs/web/webmvc/mvcconfig/mvcconfigadvancedxml/MyPostProcessor.java b/framework-docs/src/main/java/org/springframework/docs/web/webmvc/mvcconfig/mvcconfigadvancedxml/MyPostProcessor.java index f3649e9accdb..112e62ad4c38 100644 --- a/framework-docs/src/main/java/org/springframework/docs/web/webmvc/mvcconfig/mvcconfigadvancedxml/MyPostProcessor.java +++ b/framework-docs/src/main/java/org/springframework/docs/web/webmvc/mvcconfig/mvcconfigadvancedxml/MyPostProcessor.java @@ -24,6 +24,7 @@ @Component public class MyPostProcessor implements BeanPostProcessor { + @Override public Object postProcessBeforeInitialization(Object bean, String name) throws BeansException { // ... return bean; diff --git a/spring-aop/src/main/java/org/springframework/aop/support/DelegatingIntroductionInterceptor.java b/spring-aop/src/main/java/org/springframework/aop/support/DelegatingIntroductionInterceptor.java index 1948ef564702..478201c59a23 100644 --- a/spring-aop/src/main/java/org/springframework/aop/support/DelegatingIntroductionInterceptor.java +++ b/spring-aop/src/main/java/org/springframework/aop/support/DelegatingIntroductionInterceptor.java @@ -18,12 +18,13 @@ import org.aopalliance.intercept.MethodInvocation; import org.jspecify.annotations.Nullable; - import org.springframework.aop.DynamicIntroductionAdvice; import org.springframework.aop.IntroductionInterceptor; import org.springframework.aop.ProxyMethodInvocation; import org.springframework.util.Assert; +import java.util.Objects; + /** * Convenient implementation of the * {@link org.springframework.aop.IntroductionInterceptor} interface. @@ -110,7 +111,7 @@ private void init(Object delegate) { // Massage return value if possible: if the delegate returned itself, // we really want to return the proxy. - if (retVal == this.delegate && mi instanceof ProxyMethodInvocation pmi) { + if (Objects.requireNonNull(retVal).equals(this.delegate) && mi instanceof ProxyMethodInvocation pmi) { Object proxy = pmi.getProxy(); if (mi.getMethod().getReturnType().isInstance(proxy)) { retVal = proxy; diff --git a/spring-aop/src/test/java/org/springframework/aop/support/AopUtilsTests.java b/spring-aop/src/test/java/org/springframework/aop/support/AopUtilsTests.java index 5da2f556be4e..2c2901e772cf 100644 --- a/spring-aop/src/test/java/org/springframework/aop/support/AopUtilsTests.java +++ b/spring-aop/src/test/java/org/springframework/aop/support/AopUtilsTests.java @@ -125,6 +125,7 @@ interface ProxyInterface { static class WithInterface implements ProxyInterface { + @Override public void handle(List list) { } } diff --git a/spring-context-support/src/test/java/org/springframework/cache/jcache/config/JCacheCustomInterceptorTests.java b/spring-context-support/src/test/java/org/springframework/cache/jcache/config/JCacheCustomInterceptorTests.java index 8cc2254b1554..33193d9d72e6 100644 --- a/spring-context-support/src/test/java/org/springframework/cache/jcache/config/JCacheCustomInterceptorTests.java +++ b/spring-context-support/src/test/java/org/springframework/cache/jcache/config/JCacheCustomInterceptorTests.java @@ -137,6 +137,7 @@ static class CacheInterceptorBeanPostProcessor implements BeanPostProcessor { CacheInterceptorBeanPostProcessor(BeanFactory beanFactory) {this.beanFactory = beanFactory;} + @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { if (beanName.equals("jCacheInterceptor")) { JCacheInterceptor cacheInterceptor = new TestCacheInterceptor(); diff --git a/spring-context/src/test/java/org/springframework/cache/config/CustomInterceptorTests.java b/spring-context/src/test/java/org/springframework/cache/config/CustomInterceptorTests.java index 9421d5a1cd5b..06787ba53fac 100644 --- a/spring-context/src/test/java/org/springframework/cache/config/CustomInterceptorTests.java +++ b/spring-context/src/test/java/org/springframework/cache/config/CustomInterceptorTests.java @@ -115,6 +115,7 @@ static class CacheInterceptorBeanPostProcessor implements BeanPostProcessor { CacheInterceptorBeanPostProcessor(BeanFactory beanFactory) {this.beanFactory = beanFactory;} + @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { if (beanName.equals("cacheInterceptor")) { CacheInterceptor cacheInterceptor = new TestCacheInterceptor(); diff --git a/spring-context/src/test/java/org/springframework/context/annotation/ConfigurationClassEnhancerTests.java b/spring-context/src/test/java/org/springframework/context/annotation/ConfigurationClassEnhancerTests.java index ff801346c764..1bfb80623d29 100644 --- a/spring-context/src/test/java/org/springframework/context/annotation/ConfigurationClassEnhancerTests.java +++ b/spring-context/src/test/java/org/springframework/context/annotation/ConfigurationClassEnhancerTests.java @@ -214,6 +214,7 @@ static class CustomSmartClassLoader extends SecureClassLoader implements SmartCl super(parent); } + @Override protected Class loadClass(String name, boolean resolve) throws ClassNotFoundException { if (name.contains("MyConfig")) { String path = name.replace('.', '/').concat(".class"); 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 7ee2ae06d4f0..d6a625d5b349 100644 --- a/spring-expression/src/main/java/org/springframework/expression/ExpressionException.java +++ b/spring-expression/src/main/java/org/springframework/expression/ExpressionException.java @@ -121,6 +121,7 @@ public final int getPosition() { * @see #getSimpleMessage() * @see java.lang.Throwable#getMessage() */ + @Override public String getMessage() { return toDetailedString(); } diff --git a/spring-messaging/src/test/java/org/springframework/messaging/protobuf/Msg.java b/spring-messaging/src/test/java/org/springframework/messaging/protobuf/Msg.java index a7e43397b437..a847af872a9d 100644 --- a/spring-messaging/src/test/java/org/springframework/messaging/protobuf/Msg.java +++ b/spring-messaging/src/test/java/org/springframework/messaging/protobuf/Msg.java @@ -469,14 +469,16 @@ public Builder mergeFrom( * optional string foo = 1; * @return Whether the foo field is set. */ - public boolean hasFoo() { + @Override + public boolean hasFoo() { return ((bitField0_ & 0x00000001) != 0); } /** * optional string foo = 1; * @return The foo. */ - public java.lang.String getFoo() { + @Override + public java.lang.String getFoo() { java.lang.Object ref = foo_; if (!(ref instanceof java.lang.String)) { com.google.protobuf.ByteString bs = @@ -494,7 +496,8 @@ public java.lang.String getFoo() { * optional string foo = 1; * @return The bytes for foo. */ - public com.google.protobuf.ByteString + @Override + public com.google.protobuf.ByteString getFooBytes() { java.lang.Object ref = foo_; if (ref instanceof String) { @@ -551,14 +554,16 @@ public Builder setFooBytes( * optional .SecondMsg blah = 2; * @return Whether the blah field is set. */ - public boolean hasBlah() { + @Override + public boolean hasBlah() { return ((bitField0_ & 0x00000002) != 0); } /** * optional .SecondMsg blah = 2; * @return The blah. */ - public org.springframework.messaging.protobuf.SecondMsg getBlah() { + @Override + public org.springframework.messaging.protobuf.SecondMsg getBlah() { if (blahBuilder_ == null) { return blah_ == null ? org.springframework.messaging.protobuf.SecondMsg.getDefaultInstance() : blah_; } else { @@ -640,7 +645,8 @@ public org.springframework.messaging.protobuf.SecondMsg.Builder getBlahBuilder() /** * optional .SecondMsg blah = 2; */ - public org.springframework.messaging.protobuf.SecondMsgOrBuilder getBlahOrBuilder() { + @Override + public org.springframework.messaging.protobuf.SecondMsgOrBuilder getBlahOrBuilder() { if (blahBuilder_ != null) { return blahBuilder_.getMessageOrBuilder(); } else { diff --git a/spring-orm/src/main/java/org/springframework/orm/hibernate5/LocalSessionFactoryBuilder.java b/spring-orm/src/main/java/org/springframework/orm/hibernate5/LocalSessionFactoryBuilder.java index e134589b6cb6..03b7cfdda84e 100644 --- a/spring-orm/src/main/java/org/springframework/orm/hibernate5/LocalSessionFactoryBuilder.java +++ b/spring-orm/src/main/java/org/springframework/orm/hibernate5/LocalSessionFactoryBuilder.java @@ -289,6 +289,7 @@ public LocalSessionFactoryBuilder setEntityTypeFilters(TypeFilter... entityTypeF * @see #addPackage * @see #scanPackages */ + @Override public LocalSessionFactoryBuilder addPackages(String... annotatedPackages) { for (String annotatedPackage : annotatedPackages) { addPackage(annotatedPackage); diff --git a/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletResponse.java b/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletResponse.java index 95bc2551b8e1..5f5102772384 100644 --- a/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletResponse.java +++ b/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletResponse.java @@ -643,6 +643,7 @@ public void sendRedirect(String url) throws IOException { } // @Override - on Servlet 6.1 + @Override public void sendRedirect(String url, int sc, boolean clearBuffer) throws IOException { Assert.state(!isCommitted(), "Cannot send redirect - response is already committed"); Assert.notNull(url, "Redirect URL must not be null"); diff --git a/spring-web/src/main/java/org/springframework/http/client/reactive/JdkResponseCookieParser.java b/spring-web/src/main/java/org/springframework/http/client/reactive/JdkResponseCookieParser.java index dca1b0528c55..dd8d3d219dc7 100644 --- a/spring-web/src/main/java/org/springframework/http/client/reactive/JdkResponseCookieParser.java +++ b/spring-web/src/main/java/org/springframework/http/client/reactive/JdkResponseCookieParser.java @@ -39,6 +39,7 @@ final class JdkResponseCookieParser implements ResponseCookie.Parser { /** * Parse the given headers. */ + @Override public List parse(String header) { Matcher matcher = SAME_SITE_PATTERN.matcher(header); String sameSite = (matcher.matches() ? matcher.group(1) : null); diff --git a/spring-web/src/main/java/org/springframework/web/accept/DefaultApiVersionStrategy.java b/spring-web/src/main/java/org/springframework/web/accept/DefaultApiVersionStrategy.java index 752dfa5261b5..a98c845c5772 100644 --- a/spring-web/src/main/java/org/springframework/web/accept/DefaultApiVersionStrategy.java +++ b/spring-web/src/main/java/org/springframework/web/accept/DefaultApiVersionStrategy.java @@ -105,6 +105,7 @@ public Comparable parseVersion(String version) { return this.versionParser.parseVersion(version); } + @Override public void validateVersion(@Nullable Comparable requestVersion, HttpServletRequest request) throws MissingApiVersionException, InvalidApiVersionException { diff --git a/spring-web/src/main/java/org/springframework/web/client/DefaultApiVersionInserterBuilder.java b/spring-web/src/main/java/org/springframework/web/client/DefaultApiVersionInserterBuilder.java index 92b574672380..f4b26112a1a1 100644 --- a/spring-web/src/main/java/org/springframework/web/client/DefaultApiVersionInserterBuilder.java +++ b/spring-web/src/main/java/org/springframework/web/client/DefaultApiVersionInserterBuilder.java @@ -50,6 +50,7 @@ final class DefaultApiVersionInserterBuilder implements ApiVersionInserter.Build * Configure the inserter to set a header. * @param header the name of the header to hold the version */ + @Override public ApiVersionInserter.Builder useHeader(@Nullable String header) { this.header = header; return this; @@ -59,6 +60,7 @@ public ApiVersionInserter.Builder useHeader(@Nullable String header) { * Configure the inserter to set a query parameter. * @param queryParam the name of the query parameter to hold the version */ + @Override public ApiVersionInserter.Builder useQueryParam(@Nullable String queryParam) { this.queryParam = queryParam; return this; @@ -68,6 +70,7 @@ public ApiVersionInserter.Builder useQueryParam(@Nullable String queryParam) { * Configure the inserter to insert a path segment. * @param pathSegmentIndex the index of the path segment to hold the version */ + @Override public ApiVersionInserter.Builder usePathSegment(@Nullable Integer pathSegmentIndex) { this.pathSegmentIndex = pathSegmentIndex; return this; @@ -78,6 +81,7 @@ public ApiVersionInserter.Builder usePathSegment(@Nullable Integer pathSegmentIn *

By default, the version is formatted with {@link Object#toString()}. * @param versionFormatter the formatter to use */ + @Override public ApiVersionInserter.Builder withVersionFormatter(ApiVersionFormatter versionFormatter) { this.versionFormatter = versionFormatter; return this; @@ -86,6 +90,7 @@ public ApiVersionInserter.Builder withVersionFormatter(ApiVersionFormatter versi /** * Build the inserter. */ + @Override public ApiVersionInserter build() { return new DefaultApiVersionInserter( this.header, this.queryParam, this.pathSegmentIndex, this.versionFormatter); diff --git a/spring-web/src/main/java/org/springframework/web/context/request/async/StandardServletAsyncWebRequest.java b/spring-web/src/main/java/org/springframework/web/context/request/async/StandardServletAsyncWebRequest.java index a8e731dbb2fb..245c0751f7d2 100644 --- a/spring-web/src/main/java/org/springframework/web/context/request/async/StandardServletAsyncWebRequest.java +++ b/spring-web/src/main/java/org/springframework/web/context/request/async/StandardServletAsyncWebRequest.java @@ -389,6 +389,7 @@ public void write(int b) throws IOException { } } + @Override public void write(byte[] buf, int offset, int len) throws IOException { int level = this.response.obtainLockOrRaiseException(); try { diff --git a/spring-web/src/test/java/org/springframework/protobuf/Msg.java b/spring-web/src/test/java/org/springframework/protobuf/Msg.java index e47b4738e7e7..dd729ce3f186 100644 --- a/spring-web/src/test/java/org/springframework/protobuf/Msg.java +++ b/spring-web/src/test/java/org/springframework/protobuf/Msg.java @@ -469,14 +469,16 @@ public Builder mergeFrom( * optional string foo = 1; * @return Whether the foo field is set. */ - public boolean hasFoo() { + @Override + public boolean hasFoo() { return ((bitField0_ & 0x00000001) != 0); } /** * optional string foo = 1; * @return The foo. */ - public java.lang.String getFoo() { + @Override + public java.lang.String getFoo() { java.lang.Object ref = foo_; if (!(ref instanceof java.lang.String)) { com.google.protobuf.ByteString bs = @@ -494,7 +496,8 @@ public java.lang.String getFoo() { * optional string foo = 1; * @return The bytes for foo. */ - public com.google.protobuf.ByteString + @Override + public com.google.protobuf.ByteString getFooBytes() { java.lang.Object ref = foo_; if (ref instanceof String) { @@ -551,14 +554,16 @@ public Builder setFooBytes( * optional .SecondMsg blah = 2; * @return Whether the blah field is set. */ - public boolean hasBlah() { + @Override + public boolean hasBlah() { return ((bitField0_ & 0x00000002) != 0); } /** * optional .SecondMsg blah = 2; * @return The blah. */ - public org.springframework.protobuf.SecondMsg getBlah() { + @Override + public org.springframework.protobuf.SecondMsg getBlah() { if (blahBuilder_ == null) { return blah_ == null ? org.springframework.protobuf.SecondMsg.getDefaultInstance() : blah_; } else { @@ -640,7 +645,8 @@ public org.springframework.protobuf.SecondMsg.Builder getBlahBuilder() { /** * optional .SecondMsg blah = 2; */ - public org.springframework.protobuf.SecondMsgOrBuilder getBlahOrBuilder() { + @Override + public org.springframework.protobuf.SecondMsgOrBuilder getBlahOrBuilder() { if (blahBuilder_ != null) { return blahBuilder_.getMessageOrBuilder(); } else { diff --git a/spring-web/src/test/java/org/springframework/web/client/support/RestClientProxyRegistryIntegrationTests.java b/spring-web/src/test/java/org/springframework/web/client/support/RestClientProxyRegistryIntegrationTests.java index e867fe902c92..3621c32f678c 100644 --- a/spring-web/src/test/java/org/springframework/web/client/support/RestClientProxyRegistryIntegrationTests.java +++ b/spring-web/src/test/java/org/springframework/web/client/support/RestClientProxyRegistryIntegrationTests.java @@ -119,6 +119,7 @@ void basic(Class configClass) throws InterruptedException { void beansAreCreatedUsingBeanClassLoader() { ClassLoader beanClassLoader = new OverridingClassLoader(getClass().getClassLoader()) { + @Override protected boolean isEligibleForOverriding(String className) { return className.contains("EchoA"); }; diff --git a/spring-web/src/testFixtures/java/org/springframework/web/testfixture/servlet/MockHttpServletResponse.java b/spring-web/src/testFixtures/java/org/springframework/web/testfixture/servlet/MockHttpServletResponse.java index 9519dafc9d36..1a1d91e45979 100644 --- a/spring-web/src/testFixtures/java/org/springframework/web/testfixture/servlet/MockHttpServletResponse.java +++ b/spring-web/src/testFixtures/java/org/springframework/web/testfixture/servlet/MockHttpServletResponse.java @@ -643,6 +643,7 @@ public void sendRedirect(String url) throws IOException { } // @Override - on Servlet 6.1 + @Override public void sendRedirect(String url, int sc, boolean clearBuffer) throws IOException { Assert.state(!isCommitted(), "Cannot send redirect - response is already committed"); Assert.notNull(url, "Redirect URL must not be null"); diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/accept/DefaultApiVersionStrategy.java b/spring-webflux/src/main/java/org/springframework/web/reactive/accept/DefaultApiVersionStrategy.java index 91ce69855cbe..ab42ec234c58 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/accept/DefaultApiVersionStrategy.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/accept/DefaultApiVersionStrategy.java @@ -135,6 +135,7 @@ public Comparable parseVersion(String version) { return this.versionParser.parseVersion(version); } + @Override public void validateVersion(@Nullable Comparable requestVersion, ServerWebExchange exchange) throws MissingApiVersionException, InvalidApiVersionException { diff --git a/spring-webflux/src/test/java/org/springframework/web/reactive/protobuf/Msg.java b/spring-webflux/src/test/java/org/springframework/web/reactive/protobuf/Msg.java index 5c0b1b9d1d41..f3dea92df11c 100644 --- a/spring-webflux/src/test/java/org/springframework/web/reactive/protobuf/Msg.java +++ b/spring-webflux/src/test/java/org/springframework/web/reactive/protobuf/Msg.java @@ -469,14 +469,16 @@ public Builder mergeFrom( * optional string foo = 1; * @return Whether the foo field is set. */ - public boolean hasFoo() { + @Override + public boolean hasFoo() { return ((bitField0_ & 0x00000001) != 0); } /** * optional string foo = 1; * @return The foo. */ - public java.lang.String getFoo() { + @Override + public java.lang.String getFoo() { java.lang.Object ref = foo_; if (!(ref instanceof java.lang.String)) { com.google.protobuf.ByteString bs = @@ -494,7 +496,8 @@ public java.lang.String getFoo() { * optional string foo = 1; * @return The bytes for foo. */ - public com.google.protobuf.ByteString + @Override + public com.google.protobuf.ByteString getFooBytes() { java.lang.Object ref = foo_; if (ref instanceof String) { @@ -551,14 +554,16 @@ public Builder setFooBytes( * optional .SecondMsg blah = 2; * @return Whether the blah field is set. */ - public boolean hasBlah() { + @Override + public boolean hasBlah() { return ((bitField0_ & 0x00000002) != 0); } /** * optional .SecondMsg blah = 2; * @return The blah. */ - public org.springframework.web.reactive.protobuf.SecondMsg getBlah() { + @Override + public org.springframework.web.reactive.protobuf.SecondMsg getBlah() { if (blahBuilder_ == null) { return blah_ == null ? org.springframework.web.reactive.protobuf.SecondMsg.getDefaultInstance() : blah_; } else { @@ -640,7 +645,8 @@ public org.springframework.web.reactive.protobuf.SecondMsg.Builder getBlahBuilde /** * optional .SecondMsg blah = 2; */ - public org.springframework.web.reactive.protobuf.SecondMsgOrBuilder getBlahOrBuilder() { + @Override + public org.springframework.web.reactive.protobuf.SecondMsgOrBuilder getBlahOrBuilder() { if (blahBuilder_ != null) { return blahBuilder_.getMessageOrBuilder(); } else { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/function/DefaultServerRequest.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/function/DefaultServerRequest.java index 96017c00bc0d..7c42479f8226 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/function/DefaultServerRequest.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/function/DefaultServerRequest.java @@ -678,6 +678,7 @@ public void sendRedirect(String location) throws IOException { } // @Override - on Servlet 6.1 + @Override public void sendRedirect(String location, int sc, boolean clearBuffer) throws IOException { throw new UnsupportedOperationException(); } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/HandlerMappingIntrospector.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/HandlerMappingIntrospector.java index 25eeec851aa4..aab6da66889d 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/HandlerMappingIntrospector.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/handler/HandlerMappingIntrospector.java @@ -222,6 +222,7 @@ public boolean allHandlerMappingsUsePathPatternParser() { * @throws NoHandlerFoundException if no handler matches the request * @since 6.2 */ + @Override public void handlePreFlight(HttpServletRequest request, HttpServletResponse response) throws Exception { Assert.state(this.handlerMappings != null, "Not yet initialized via afterPropertiesSet."); Assert.state(CorsUtils.isPreFlightRequest(request), "Not a pre-flight request.");