This is an automated email from the ASF dual-hosted git repository.

dsoumis pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit 0e9e1dc803a1b690b5dd2c16fee463254cbb95de
Author: Dimitris Soumis <jimsou...@gmail.com>
AuthorDate: Tue Sep 9 14:06:47 2025 +0300

    Make ContainerInjector generic to set other fields in the context as well 
like Valve, xmlValidation etc
---
 .../apache/catalina/manager/TestManagerWebapp.java |  4 +++-
 .../apache/catalina/startup/TomcatBaseTest.java    | 25 ++++++++++------------
 2 files changed, 14 insertions(+), 15 deletions(-)

diff --git a/test/org/apache/catalina/manager/TestManagerWebapp.java 
b/test/org/apache/catalina/manager/TestManagerWebapp.java
index 3b3346d5c7..c1350b6aba 100644
--- a/test/org/apache/catalina/manager/TestManagerWebapp.java
+++ b/test/org/apache/catalina/manager/TestManagerWebapp.java
@@ -531,7 +531,9 @@ public class TestManagerWebapp extends TomcatBaseTest {
         ctx.getParent().addLifecycleListener(hostConfig);
 
         try (TomcatBaseTest.ContainerInjector ignored =
-                 TomcatBaseTest.ContainerInjector.inject(ctx.getParent(), 
"/examples", new FailOnceListener())) {
+                 TomcatBaseTest.ContainerInjector.inject(ctx.getParent(),
+                     c -> c.getPath().equals("/examples"),
+                     c -> c.addLifecycleListener(new FailOnceListener()))) {
 
             tomcat.start();
             SimpleHttpClient client = new SimpleHttpClient() {
diff --git a/test/org/apache/catalina/startup/TomcatBaseTest.java 
b/test/org/apache/catalina/startup/TomcatBaseTest.java
index cb6d8c14c5..7fed965197 100644
--- a/test/org/apache/catalina/startup/TomcatBaseTest.java
+++ b/test/org/apache/catalina/startup/TomcatBaseTest.java
@@ -38,6 +38,8 @@ import java.util.IdentityHashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.function.Consumer;
+import java.util.function.Predicate;
 import java.util.logging.Handler;
 import java.util.logging.Level;
 import java.util.logging.LogRecord;
@@ -1110,27 +1112,22 @@ public abstract class TomcatBaseTest extends 
LoggingBaseTest {
      * Injects a {@link LifecycleListener} to a {@link Context} of a {@link 
Container} that sends {@code ADD_CHILD_EVENT}.
      * Useful when deploying with the Manager / HostConfig.
      */
-    //TODO: make it generic to set other fields in the context as well like 
Valve, xmlValidation etc
     public static class ContainerInjector implements ContainerListener, 
AutoCloseable {
 
         private final Container container;
-        private final String contextPathToTest;
-        private final LifecycleListener listener;
+        private final Predicate<Context> filter;
+        private final Consumer<Context> action;
         private volatile boolean installed = false;
 
-        private ContainerInjector(Container container,
-                               String contextPathToTest,
-                               LifecycleListener listener) {
+        private ContainerInjector(Container container, Predicate<Context> 
filter, Consumer<Context> action) {
             this.container = container;
-            this.contextPathToTest = contextPathToTest;
-            this.listener = listener;
+            this.filter = filter;
+            this.action = action;
             container.addContainerListener(this);
         }
 
-        public static ContainerInjector inject(Container container,
-                                            String contextPathToTest,
-                                            LifecycleListener listener) {
-            return new ContainerInjector(container, contextPathToTest, 
listener);
+        public static ContainerInjector inject(Container container, 
Predicate<Context> filter, Consumer<Context> action) {
+            return new ContainerInjector(container, filter, action);
         }
 
         @Override
@@ -1138,8 +1135,8 @@ public abstract class TomcatBaseTest extends 
LoggingBaseTest {
             if (Container.ADD_CHILD_EVENT.equals(event.getType()) && 
!installed) {
                 Object data = event.getData();
                 if (data instanceof Context ctx) {
-                    if (ctx.getPath().equals(contextPathToTest)) {
-                        ctx.addLifecycleListener(listener);
+                    if (filter != null && filter.test(ctx)) {
+                        action.accept(ctx);
                         installed = true;
                     }
                 }


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to