Replace anonymous classes with lambda expressions#2521
Merged
rzo1 merged 1 commit intoapache:mainfrom Feb 25, 2026
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
This PR modernizes the codebase by replacing anonymous classes with Java 8+ lambda expressions and method references, primarily for Runnable, Callable, Comparator, InvocationHandler, and *Action/*Handler implementations.
Changes:
- Replaced many anonymous inner classes with lambdas/method references across server, container, tooling, and tests.
- Simplified several
ThreadLocalinitializations usingThreadLocal.withInitial(...). - Refactored multiple
AccessController.doPrivileged(...)call sites to use lambda-based actions.
Reviewed changes
Copilot reviewed 119 out of 119 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| utils/livereload-tomee/src/main/java/org/apache/tomee/livereload/FileWatcher.java | Replace watcher thread Runnable anonymous class with lambda. |
| tomee/tomee-security/src/main/java/org/apache/tomee/security/servlet/TomEESecurityServletContainerInitializer.java | Replace PrivilegedAction anonymous classes with lambdas. |
| tomee/tomee-myfaces/src/main/java/org/apache/tomee/myfaces/TomEEFacesConfigResourceProviderFactory.java | Replace PrivilegedExceptionAction anonymous class with lambda. |
| tomee/tomee-myfaces/src/main/java/org/apache/tomee/myfaces/TomEEFacesConfigResourceProvider.java | Replace Callable anonymous class with lambda for executor submission. |
| tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/metrics/VendorMetrics.java | Use method reference instead of lambda wrapper. |
| tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/TomEEMicroProfileListener.java | Replace FileFilter anonymous class with lambda. |
| tomee/tomee-loader/src/main/java/org/apache/tomee/loader/filter/Filters.java | Replace Filter anonymous class constant with lambda. |
| tomee/tomee-loader/src/main/java/org/apache/tomee/loader/TomEEListener.java | Replace FilenameFilter anonymous class with lambda. |
| tomee/tomee-juli/src/main/java/org/apache/tomee/jul/handler/rotating/LocalFileHandler.java | Replace background tasks/filters and ThreadLocal init with lambdas/method refs. |
| tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/junit/TomEEEmbeddedSingleRunner.java | Replace MethodRule anonymous class with lambda returning Statement. |
| tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Main.java | Replace shutdown hook thread anonymous class with lambda thread. |
| tomee/tomee-common/src/main/java/org/apache/tomee/installer/Paths.java | Replace FilenameFilter anonymous class with lambda. |
| tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/realm/LazyRealm.java | Replace LifecycleListener anonymous class with lambda. |
| tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/Warmup.java | Replace thread run() anonymous classes with lambdas. |
| tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatSecurityService.java | Replace ThreadLocal anonymous class with withInitial. |
| tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERealm.java | Replace exit-task Runnable anonymous class with lambda. |
| tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/IgnoredStandardContext.java | Replace LifecycleListener anonymous class with lambda. |
| tck/tck-common/src/main/java/org/apache/openejb/tck/testng/HTMLReporter.java | Replace InvocationHandler anonymous class with lambda. |
| server/openejb-webservices/src/main/java/org/apache/openejb/server/webservices/saaj/SaajUniverse.java | Replace ThreadLocal anonymous class with withInitial. |
| server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/OpenEJBJaasPasswordAuthenticator.java | Replace CallbackHandler anonymous class with lambda. |
| server/openejb-ssh/src/main/java/org/apache/openejb/server/ssh/OpenEJBCommands.java | Replace PrivilegedAction anonymous class with lambda. |
| server/openejb-server/src/main/java/org/apache/openejb/server/ServicePool.java | Replace UncaughtExceptionHandler and RejectedExecutionHandler with lambdas. |
| server/openejb-server/src/main/java/org/apache/openejb/server/ServiceManager.java | Replace FilenameFilter anonymous class with lambda. |
| server/openejb-server/src/main/java/org/apache/openejb/server/DiscoveryRegistry.java | Replace ThreadFactory and rejection handler with lambdas. |
| server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/Tracker.java | Replace ThreadFactory and event Runnables with lambdas. |
| server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MultipointServer.java | Replace thread Runnable, Comparator, and Callable with lambdas. |
| server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MulticastPulseAgent.java | Replace event Runnables and socket loop submission with lambdas. |
| server/openejb-http/src/main/java/org/apache/openejb/server/httpd/session/SessionManager.java | Replace scheduled eviction Runnable with lambda. |
| server/openejb-http/src/main/java/org/apache/openejb/server/httpd/OpenEJBAsyncContext.java | Replace scheduled eviction Runnable with lambda. |
| server/openejb-http/src/main/java/org/apache/openejb/server/httpd/EEFilter.java | Replace Runnable wrapper with lambda while preserving scope management. |
| server/openejb-client/src/main/java/org/apache/openejb/client/proxy/ProxyManager.java | Replace doPrivileged anonymous action with lambda. |
| server/openejb-client/src/main/java/org/apache/openejb/client/MulticastPulseClient.java | Replace multiple executor submissions/threads with lambdas. |
| server/openejb-client/src/main/java/org/apache/openejb/client/Main.java | Replace doAs and doPrivileged anonymous actions with lambdas. |
| server/openejb-client/src/main/java/org/apache/openejb/client/JNDIContext.java | Replace Decipher, shutdown hook, handlers with lambdas. |
| server/openejb-client/src/main/java/org/apache/openejb/client/HeartbeatMonitor.java | Replace MulticastSearch.Filter anonymous class with lambda. |
| server/openejb-client/src/main/java/org/apache/openejb/client/ClientInjectionProcessor.java | Replace doPrivileged anonymous action with lambda. |
| mp-jwt/src/main/java/org/apache/tomee/microprofile/jwt/MPJWTFilter.java | Replace Callable<Subject> anonymous class with lambda. |
| maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/customizer/monkey/classloader/ClassLoaderFactory.java | Replace FilenameFilter anonymous class with lambda. |
| maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/UpdatableTomEEMojo.java | Replace shutdown hook anonymous class with lambda thread. |
| maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java | Replace multiple FilenameFilter usages and shutdown hook with lambdas. |
| maven/tomee-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojo.java | Replace shutdown hook anonymous thread class with lambda thread. |
| maven/openejb-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/embedded/OpenEJBEmbeddedMojo.java | Replace shutdown hook Runnable with method reference. |
| itests/openejb-itests-client/src/main/java/org/apache/openejb/test/TestManager.java | Replace doPrivileged anonymous action with lambda. |
| itests/openejb-itests-client/src/main/java/org/apache/openejb/test/RiTestServer.java | Replace stream reader thread Runnables with lambdas. |
| itests/openejb-itests-client/src/main/java/org/apache/openejb/test/PostgreSqlTestDatabase.java | Replace doPrivileged anonymous action with lambda. |
| itests/openejb-itests-client/src/main/java/org/apache/openejb/test/NumberedTestCase.java | Replace Protectable anonymous class with lambda. |
| itests/itest-util/src/main/java/org/apache/tomee/itest/util/Runner.java | Replace worker Runnable anonymous class with lambda. |
| itests/failover/src/main/java/org/apache/openejb/server/control/StandaloneServer.java | Replace shutdown hook anonymous class with lambda thread. |
| gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedTask.java | Replace shutdown hook thread anonymous class with lambda thread. |
| gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedPlugin.java | Replace Gradle Action implementations with lambdas. |
| examples/async-postconstruct/src/main/java/org/superbiz/asyncpost/SlowStarter.java | Replace Callable anonymous class with lambda. |
| container/openejb-loader/src/main/java/org/apache/openejb/observer/ObserverManager.java | Replace ThreadLocal anonymous class with withInitial. |
| container/openejb-loader/src/main/java/org/apache/openejb/loader/provisining/ProvisioningResolver.java | Replace FilenameFilter anonymous class with lambda. |
| container/openejb-loader/src/main/java/org/apache/openejb/loader/TomcatClassPath.java | Replace FilenameFilter and doPrivileged actions with lambdas. |
| container/openejb-loader/src/main/java/org/apache/openejb/loader/SystemClassPath.java | Replace doPrivileged anonymous action with lambda. |
| container/openejb-loader/src/main/java/org/apache/openejb/loader/BasicURLClassPath.java | Replace multiple doPrivileged actions/filters with lambdas. |
| container/openejb-junit5-backward/src/main/java/org/apache/openejb/junit5/security/TestSecurityTemplateInvocationContextProvider.java | Replace JUnit5 extension anonymous classes with lambdas. |
| container/openejb-jee/src/main/java/org/apache/openejb/jee/wls/JaxbWls.java | Replace ValidationEventHandler anonymous class with lambda. |
| container/openejb-jee/src/main/java/org/apache/openejb/jee/sun/JaxbSun.java | Replace ValidationEventHandler anonymous class with lambda. |
| container/openejb-jee/src/main/java/org/apache/openejb/jee/oejb3/PropertiesAdapter.java | Replace comparators with lambdas. |
| container/openejb-jee/src/main/java/org/apache/openejb/jee/oejb3/JaxbOpenejbJar3.java | Replace ValidationEventHandler anonymous class with lambda. |
| container/openejb-jee/src/main/java/org/apache/openejb/jee/oejb2/JaxbOpenejbJar2.java | Replace ValidationEventHandler anonymous class with lambda. |
| container/openejb-jee/src/main/java/org/apache/openejb/jee/jpa/JpaJaxbUtil.java | Replace ValidationEventHandler anonymous class with lambda. |
| container/openejb-jee/src/main/java/org/apache/openejb/jee/JaxbJavaee.java | Replace multiple ValidationEventHandler anonymous classes with lambdas. |
| container/openejb-core/src/main/java/org/apache/openejb/web/LightweightWebAppBuilder.java | Replace multiple Runnable wrappers with lambdas. |
| container/openejb-core/src/main/java/org/apache/openejb/util/urlhandler/resource/Handler.java | Replace doPrivileged anonymous action with lambda. |
| container/openejb-core/src/main/java/org/apache/openejb/util/proxy/LocalBeanProxyFactory.java | Replace multiple privileged/handler anonymous classes with lambdas. |
| container/openejb-core/src/main/java/org/apache/openejb/util/SuperProperties.java | Replace EntityResolver anonymous class with lambda. |
| container/openejb-core/src/main/java/org/apache/openejb/util/Pool.java | Replace RejectedExecutionHandler anonymous class with lambda. |
| container/openejb-core/src/main/java/org/apache/openejb/util/PojoSerialization.java | Replace multiple privileged actions with lambdas. |
| container/openejb-core/src/main/java/org/apache/openejb/util/OpenEJBScripter.java | Replace ThreadLocal anonymous class with withInitial. |
| container/openejb-core/src/main/java/org/apache/openejb/util/Memoizer.java | Replace Callable anonymous class with lambda. |
| container/openejb-core/src/main/java/org/apache/openejb/util/Logger.java | Replace Computable anonymous classes with lambdas. |
| container/openejb-core/src/main/java/org/apache/openejb/util/JuliLogStreamFactory.java | Replace shutdown hook anonymous class with lambda thread. |
| container/openejb-core/src/main/java/org/apache/openejb/util/JavaSecurityManagers.java | Replace multiple privileged actions with lambdas. |
| container/openejb-core/src/main/java/org/apache/openejb/threads/task/CURunnable.java | Replace Callable anonymous class with lambda. |
| container/openejb-core/src/main/java/org/apache/openejb/testing/SingleApplicationComposerRunner.java | Replace MethodRule anonymous class with lambda returning Statement. |
| container/openejb-core/src/main/java/org/apache/openejb/testing/SingleApplicationComposerBase.java | Replace shutdown hook thread anonymous class with lambda thread. |
| container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java | Replace multiple lifecycle/cleanup anonymous classes with lambdas. |
| container/openejb-core/src/main/java/org/apache/openejb/service/ScanJarService.java | Replace FileFilter anonymous class with lambda. |
| container/openejb-core/src/main/java/org/apache/openejb/config/TldScanner.java | Replace executor submissions and filename filtering with lambdas. |
| container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java | Replace process waiter thread Runnable with lambda. |
| container/openejb-core/src/main/java/org/apache/openejb/config/NewLoaderLogic.java | Replace Filter anonymous classes with lambdas. |
| container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java | Replace FileFilter anonymous class with lambda. |
| container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java | Replace comparator anonymous class with lambda. |
| container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java | Replace sort comparators with lambdas. |
| container/openejb-core/src/main/java/org/apache/openejb/cli/Bootstrap.java | Replace FilenameFilter anonymous class with lambda. |
| container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java | Replace proxy InvocationHandler anonymous class with lambda. |
| container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java | Replace ThreadLocal anonymous class with withInitial. |
| container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java | Replace comparators and executor submissions with lambdas. |
| container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java | Replace shutdown hook anonymous class with lambda thread. |
| container/openejb-core/src/main/java/org/apache/openejb/Core.java | Replace preload threads anonymous classes with lambda threads. |
| container/openejb-core/src/main/java/org/apache/openejb/ClassLoaderUtil.java | Replace doPrivileged anonymous action with lambda. |
| container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/xa/IsDifferentXaDataSourceWrapper.java | Replace nested InvocationHandler anonymous classes with lambdas. |
| container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/ResettableDataSourceHandler.java | Replace Runnable anonymous class with lambda. |
| container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaQuery.java | Replace multiple QueryOperation anonymous classes with lambdas. |
| container/openejb-core/src/main/java/org/apache/openejb/persistence/JtaEntityManagerRegistry.java | Replace ThreadLocal anonymous class with withInitial. |
| container/openejb-core/src/main/java/org/apache/openejb/junit/DeployApplication.java | Replace Callable anonymous class with lambda. |
| container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationComposer.java | Replace MethodRule anonymous class with lambda. |
| container/openejb-core/src/main/java/org/apache/openejb/core/stateless/StatelessInstanceManager.java | Replace rejection handler and Flushable anonymous class with lambdas. |
| container/openejb-core/src/main/java/org/apache/openejb/core/stateful/SimpleCache.java | Replace ThreadFactory anonymous class with lambda. |
| container/openejb-core/src/main/java/org/apache/openejb/core/singleton/SingletonInstanceManager.java | Replace Callable anonymous class with lambda. |
| container/openejb-core/src/main/java/org/apache/openejb/core/security/JaccProvider.java | Replace privileged exception action anonymous class with lambda. |
| container/openejb-core/src/main/java/org/apache/openejb/core/mdb/MdbInstanceManager.java | Replace rejection handler anonymous class with lambda. |
| container/openejb-core/src/main/java/org/apache/openejb/core/managed/ManagedContainer.java | Replace CacheFilter anonymous class with lambda. |
| container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/ContextualJndiReference.java | Replace ThreadLocal anonymous class with withInitial. |
| container/openejb-core/src/main/java/org/apache/openejb/core/ivm/IntraVmArtifact.java | Replace ThreadLocal anonymous class with withInitial. |
| container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbObjectProxyHandler.java | Replace nested Callable with lambda. |
| container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java | Replace nested Callable with lambda. |
| container/openejb-core/src/main/java/org/apache/openejb/core/entity/EntrancyTracker.java | Replace ThreadLocal anonymous class with withInitial (and fix comment wording). |
| container/openejb-core/src/main/java/org/apache/openejb/core/cmp/jpa/JpaCmpEngine.java | Replace ThreadLocal anonymous class with withInitial. |
| arquillian/ziplock/src/main/java/org/apache/ziplock/maven/PreloadableWar.java | Replace submitted Callable with method reference. |
| arquillian/ziplock/src/main/java/org/apache/ziplock/maven/PreloadableTestWar.java | Replace submitted Callable with method reference. |
| arquillian/ziplock/src/main/java/org/apache/ziplock/Files.java | Replace file collection filter and shutdown hook thread with lambdas. |
| arquillian/ziplock/src/main/java/org/apache/ziplock/Archive.java | Replace Join.NameCallback anonymous class with lambda. |
| arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Setup.java | Replace FilenameFilter anonymous class with lambda. |
| arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/RemoteInitialContextObserver.java | Replace multiple Callable anonymous classes with lambdas/method ref. |
| arquillian/arquillian-openejb-embedded/src/main/java/org/apache/openejb/arquillian/openejb/cucumber/ArchiveResourceIteratorFactory.java | Replace Filter anonymous class with lambda. |
| arquillian/arquillian-openejb-embedded/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java | Replace Closeable anonymous classes with lambdas. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
server/openejb-client/src/main/java/org/apache/openejb/client/MulticastPulseClient.java
Show resolved
Hide resolved
...-common/src/main/java/org/apache/openejb/arquillian/common/RemoteInitialContextObserver.java
Show resolved
Hide resolved
server/openejb-client/src/main/java/org/apache/openejb/client/proxy/ProxyManager.java
Show resolved
Hide resolved
rzo1
approved these changes
Feb 25, 2026
rzo1
added a commit
that referenced
this pull request
Feb 25, 2026
rzo1
added a commit
that referenced
this pull request
Feb 25, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
As the title says.