Skip to content

Replace anonymous classes with lambda expressions#2521

Merged
rzo1 merged 1 commit intoapache:mainfrom
mawiesne:Replace-anonymous-classes-with-lambda-expressions
Feb 25, 2026
Merged

Replace anonymous classes with lambda expressions#2521
rzo1 merged 1 commit intoapache:mainfrom
mawiesne:Replace-anonymous-classes-with-lambda-expressions

Conversation

@mawiesne
Copy link
Contributor

As the title says.

@rzo1 rzo1 requested review from Copilot and jungm and removed request for jungm February 25, 2026 12:43
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 ThreadLocal initializations using ThreadLocal.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.

@rzo1 rzo1 merged commit f5a0d5a into apache:main Feb 25, 2026
5 checks passed
@mawiesne mawiesne deleted the Replace-anonymous-classes-with-lambda-expressions branch February 25, 2026 16:10
rzo1 added a commit that referenced this pull request Feb 25, 2026
rzo1 added a commit that referenced this pull request Feb 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants