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