From 79b05ed5e2d46894f3a1bdc8bdaeeb3f41dbd61d Mon Sep 17 00:00:00 2001
From: akenra <37288280+akenra@users.noreply.github.com>
Date: Sat, 8 Aug 2026 03:21:15 +0500
Subject: [PATCH] refactor: modernize code to Java 17 syntax
- Use pattern matching for instanceof (Java 16+)
- Convert simple private classes to records
- Replace anonymous classes with lambdas and method references
- Simplify lambda bodies and use method references
- Use diamond operator where type is inferable
- Replace raw types with parameterized ones
Add a report-only PMD 7 profile (-Ppmd) with modern Java syntax rules
to help contributors keep the codebase modern. PMD 7.26 is used via the
pmd.version override, as the PMD bundled with maven-pmd-plugin 3.28.0
lacks the overload resolution fix for method references.
Signed-off-by: akenra <37288280+akenra@users.noreply.github.com>
---
pom.xml | 45 ++++++
.../function/adapter/aws/AWSLambdaUtils.java | 2 +-
.../adapter/aws/CustomRuntimeEventLoop.java | 4 +-
.../function/adapter/aws/FunctionInvoker.java | 2 +-
.../aws/LambdaDestinationResolver.java | 3 +-
.../aws/CustomRuntimeEventLoopTest.java | 4 +-
.../adapter/aws/FunctionInvokerTests.java | 44 ++----
.../azure/web/AzureWebProxyInvokerTests.java | 2 +-
.../azure/web/PetStoreSpringAppConfig.java | 16 +--
.../adapter/azure/AzureFunctionUtil.java | 6 +-
.../AzureFunctionInstanceInjectorTest.java | 2 +-
...ionInstanceInjectorServiceLoadingTest.java | 2 +-
.../function/adapter/gcp/FunctionInvoker.java | 4 +-
.../adapter/gcp/FunctionInvokerHttpTests.java | 6 +-
.../FunctionInvokerIntegrationTests.java | 2 +-
.../integration/LocalServerTestSupport.java | 21 +--
.../function/grpc/GrpcAutoConfiguration.java | 2 +-
.../grpc/GrpcSpringMessageConverter.java | 4 +-
.../cloud/function/grpc/GrpcUtils.java | 37 ++---
.../function/grpc/MessageHandlingHelper.java | 12 +-
.../serverless/web/ServerlessMVC.java | 2 +-
.../web/ServerlessServletContext.java | 2 +-
.../web/ServerlessWebApplication.java | 25 +---
.../serverless/web/RequestResponseTests.java | 4 +-
.../test/app/PetStoreSpringAppConfig.java | 10 +-
.../function/test/app/PetsController.java | 2 +-
.../cloudevent/CloudEventMessageBuilder.java | 6 +-
.../cloudevent/CloudEventMessageUtils.java | 6 +-
.../CloudEventsFunctionInvocationHelper.java | 2 +-
.../function/context/FunctionProperties.java | 6 +-
.../context/FunctionTypeProcessor.java | 12 +-
.../context/FunctionalSpringApplication.java | 3 +-
.../BeanFactoryAwareFunctionRegistry.java | 22 ++-
.../context/catalog/FunctionTypeUtils.java | 22 +--
.../context/catalog/HeaderEnricher.java | 6 +-
.../catalog/SimpleFunctionRegistry.java | 108 ++++++--------
...ntextFunctionCatalogAutoConfiguration.java | 2 +-
.../ContextFunctionCatalogInitializer.java | 11 +-
.../context/config/FunctionContextUtils.java | 7 +-
.../SmartCompositeMessageConverter.java | 4 +-
.../context/message/MessageUtils.java | 8 +-
.../cloud/function/json/GsonMapper.java | 12 +-
.../cloud/function/json/JacksonMapper.java | 12 +-
.../cloud/function/json/JsonMapper.java | 9 +-
.../cloud/function/utils/JsonMasker.java | 6 +-
...yAwareFunctionRegistryMultiInOutTests.java | 10 +-
...BeanFactoryAwareFunctionRegistryTests.java | 91 +++++-------
.../catalog/FunctionTypeUtilsTests.java | 6 +-
.../catalog/SimpleFunctionRegistryTests.java | 19 +--
...FunctionCatalogAutoConfigurationTests.java | 10 +-
...ontextFunctionCatalogInitializerTests.java | 4 +-
.../cloud/function/scan/ScannedFunction.java | 2 +-
.../cloud/function/test/GenericFunction.java | 2 +-
.../function/userissues/UserIssuesTests.java | 14 +-
.../cloud/function/utils/JsonMaskerTests.java | 17 ++-
.../java/com/example/LambdaApplication.java | 4 +-
.../azure/eventgrid/EventGridHandler.java | 2 +-
.../src/main/java/com/example/Client.java | 4 +-
.../function/web/flux/FunctionController.java | 3 +-
.../web/function/ErrorHandlerRegistrar.java | 6 +-
.../function/FunctionEndpointInitializer.java | 8 +-
.../function/web/mvc/FunctionController.java | 7 +-
.../source/FunctionExporterInitializer.java | 12 +-
.../web/source/SimpleRequestBuilder.java | 3 +-
.../function/web/source/SupplierExporter.java | 9 +-
.../FunctionWebRequestProcessingHelper.java | 28 ++--
.../flux/FluxRestApplicationTests.java | 6 +-
.../function/mvc/MvcRestApplicationTests.java | 6 +-
.../web/flux/HeadersToMessageTests.java | 1 +
.../web/flux/HttpGetIntegrationTests.java | 4 +-
.../web/flux/HttpPostIntegrationTests.java | 24 +---
.../FunctionEndpointInitializerTests.java | 12 +-
.../web/mvc/HeadersToMessageTests.java | 2 +
.../web/mvc/HttpDeleteIntegrationTests.java | 2 +-
.../web/mvc/HttpGetIntegrationTests.java | 4 +-
.../web/mvc/HttpPostIntegrationTests.java | 6 +-
.../function/web/mvc/MultipartFileTests.java | 8 +-
.../web/mvc/RoutingFunctionTests.java | 4 +-
src/checkstyle/pmd-modern-java.xml | 132 ++++++++++++++++++
79 files changed, 493 insertions(+), 508 deletions(-)
create mode 100644 src/checkstyle/pmd-modern-java.xml
diff --git a/pom.xml b/pom.xml
index 3aeab7ab3..4ae75b825 100644
--- a/pom.xml
+++ b/pom.xml
@@ -53,6 +53,7 @@
${java.version}
${java.version}
1.0.31.RELEASE
+ 7.26.0
spring-cloud-function
true
true
@@ -225,6 +226,50 @@
spring-cloud-function-web
+
+ pmd
+
+
+
+
+ org.apache.maven.plugins
+ maven-pmd-plugin
+ 3.28.0
+
+
+ net.sourceforge.pmd
+ pmd-core
+ ${pmd.version}
+
+
+ net.sourceforge.pmd
+ pmd-java
+ ${pmd.version}
+
+
+
+
+ ${maven.multiModuleProjectDirectory}/src/checkstyle/pmd-modern-java.xml
+
+ false
+ true
+ true
+ 17
+
+
+
+ verify
+
+ check
+
+
+
+
+
+
+
spring
diff --git a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/AWSLambdaUtils.java b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/AWSLambdaUtils.java
index 990b60514..84266c765 100644
--- a/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/AWSLambdaUtils.java
+++ b/spring-cloud-function-adapters/spring-cloud-function-adapter-aws/src/main/java/org/springframework/cloud/function/adapter/aws/AWSLambdaUtils.java
@@ -222,7 +222,7 @@ public static byte[] generateOutput(Message requestMessage, Message> responseM
byte[] responseBytes = responseMessage == null ? "\"OK\"".getBytes() : extractPayload((Message