From 60a08f53497fdfe3678a4a859f96e63f27158803 Mon Sep 17 00:00:00 2001 From: Greg Wilkins Date: Mon, 6 Feb 2023 12:15:35 +1100 Subject: [PATCH] Rename Handler Nested & Collection (#9305) There is now a Handler interface hierarchy: + Container is a Handler that has 1 or more contained Handlers. + Wrapper is a Container with only 1 handler and a setHandler method. + Collection is a Container with n handlers and a addHandler method class are now: + Abstract implements Handler + AbstractContainer extends Abstract implements Container + BaseWrapper extends AbstractContainer implements Wrapper + Sequence extends AbstractContainer implements Collection Lots of other associated cleanups --- .../docs/programming/server/HandlerDocs.java | 2 +- .../server/http/HTTPServerDocs.java | 10 +- .../fcgi/proxy/FastCGIProxyHandlerTest.java | 2 +- .../jetty/rewrite/handler/RewriteHandler.java | 2 +- .../org/eclipse/jetty/server/Handler.java | 145 +++++++------ .../java/org/eclipse/jetty/server/Server.java | 2 +- .../AbstractLatencyRecordingHandler.java | 2 +- .../handler/BufferedResponseHandler.java | 2 +- .../jetty/server/handler/ConnectHandler.java | 2 +- .../jetty/server/handler/ContextHandler.java | 5 +- .../handler/ContextHandlerCollection.java | 2 +- .../jetty/server/handler/DebugHandler.java | 2 +- .../jetty/server/handler/DelayedHandler.java | 2 +- .../jetty/server/handler/GracefulHandler.java | 2 +- .../jetty/server/handler/HotSwapHandler.java | 17 +- .../server/handler/IdleTimeoutHandler.java | 2 +- .../server/handler/InetAccessHandler.java | 2 +- .../server/handler/MovedContextHandler.java | 4 +- .../server/handler/PathMappingsHandler.java | 13 -- .../server/handler/ProxiedRequestHandler.java | 2 +- .../jetty/server/handler/ResourceHandler.java | 2 +- .../handler/SecuredRedirectHandler.java | 2 +- .../jetty/server/handler/ShutdownHandler.java | 2 +- .../server/handler/StatisticsHandler.java | 2 +- .../server/handler/ThreadLimitHandler.java | 2 +- .../jetty/server/handler/TryPathsHandler.java | 2 +- .../server/handler/gzip/GzipHandler.java | 2 +- ...ttpConfigurationAuthorityOverrideTest.java | 2 +- .../jetty/server/HttpServerTestBase.java | 2 +- .../jetty/server/PartialRFC2616Test.java | 2 +- .../handler/ContextHandlerCollectionTest.java | 18 +- .../server/handler/ContextHandlerTest.java | 4 +- .../server/handler/DefaultHandlerTest.java | 2 +- .../jetty/server/handler/HandlerTest.java | 122 +++++------ .../handler/PathMappingsHandlerTest.java | 14 +- .../handler/SecuredRedirectHandlerTest.java | 2 +- .../server/handler/ShutdownHandlerTest.java | 2 +- .../server/handler/StatisticsHandlerTest.java | 2 +- .../server/handler/gzip/GzipHandlerTest.java | 2 +- .../ssl/SniSslConnectionFactoryTest.java | 2 +- .../jetty/session/SimpleSessionHandler.java | 4 +- .../core/server/WebSocketUpgradeHandler.java | 2 +- .../core/proxy/WebSocketProxyTest.java | 2 +- .../jetty/ee10/demos/ExampleServer.java | 4 +- .../eclipse/jetty/ee10/demos/FileServer.java | 4 +- .../eclipse/jetty/ee10/demos/JarServer.java | 4 +- .../jetty/ee10/demos/LikeJettyXml.java | 8 +- .../jetty/ee10/demos/ManyHandlers.java | 196 +++++++++--------- .../org/eclipse/jetty/ee10/TestServer.java | 3 - .../ee10/maven/plugin/ServerSupport.java | 8 +- .../org/eclipse/jetty/ee10/runner/Runner.java | 9 +- .../ee10/servlet/ServletContextHandler.java | 45 ++-- .../jetty/ee10/servlet/ServletHandler.java | 2 +- .../jetty/ee10/servlet/SessionHandler.java | 4 +- .../servlet/security/SecurityHandler.java | 2 +- .../AsyncContextDispatchWithQueryStrings.java | 4 +- .../jetty/ee10/servlet/AsyncContextTest.java | 4 +- .../jetty/ee10/servlet/ErrorPageTest.java | 3 +- .../servlet/ServletContextHandlerTest.java | 12 +- .../ee10/servlet/ServletRequestLogTest.java | 15 +- .../ee10/servlet/ServletUpgradeTest.java | 6 +- .../ee10/servlet/ServletWrapperTest.java | 4 +- .../jetty/ee10/webapp/WebAppContext.java | 4 +- .../jetty/ee10/webapp/HugeResourceTest.java | 4 +- .../jetty/ee10/webapp/WebAppContextTest.java | 24 +-- .../webapp/WebAppDefaultServletCacheTest.java | 2 +- .../tests/server/DeploymentExceptionTest.java | 4 +- .../jetty/ee9/demos/ExampleServer.java | 5 +- .../eclipse/jetty/ee9/demos/FileServer.java | 4 +- .../eclipse/jetty/ee9/demos/JarServer.java | 4 +- .../eclipse/jetty/ee9/demos/ManyHandlers.java | 17 +- .../jetty/ee9/maven/plugin/ServerSupport.java | 8 +- .../jetty/ee9/nested/ContextHandler.java | 9 +- .../jetty/ee9/nested/AsyncCompletionTest.java | 2 +- .../jetty/ee9/nested/ContextHandlerTest.java | 5 +- .../eclipse/jetty/ee9/nested/RequestTest.java | 2 +- .../ee9/security/AliasedConstraintTest.java | 7 +- .../AsyncContextDispatchWithQueryStrings.java | 6 +- .../jetty/ee9/servlet/AsyncContextTest.java | 6 +- .../ee9/servlet/GzipHandlerIsHandledTest.java | 5 +- .../jetty/ee9/servlet/ServletUpgradeTest.java | 5 +- .../jetty/ee9/servlet/ServletWrapperTest.java | 6 +- .../ee9/servlet/StaticFromJarServerTest.java | 4 +- .../jetty/ee9/webapp/WebAppContext.java | 3 +- .../jetty/ee9/webapp/HugeResourceTest.java | 3 +- .../jetty/ee9/webapp/WebAppContextTest.java | 36 +--- ...AliasCheckerMultipleResourceBasesTest.java | 8 +- .../jetty/test/AliasCheckerSymlinkTest.java | 2 +- 88 files changed, 406 insertions(+), 536 deletions(-) diff --git a/documentation/jetty-documentation/src/main/java/org/eclipse/jetty/docs/programming/server/HandlerDocs.java b/documentation/jetty-documentation/src/main/java/org/eclipse/jetty/docs/programming/server/HandlerDocs.java index 919879e2510d..0a0efd5c0481 100644 --- a/documentation/jetty-documentation/src/main/java/org/eclipse/jetty/docs/programming/server/HandlerDocs.java +++ b/documentation/jetty-documentation/src/main/java/org/eclipse/jetty/docs/programming/server/HandlerDocs.java @@ -189,7 +189,7 @@ public boolean process(Request request, Response response, Callback callback) } } - public static class RootHandler extends Handler.Collection + public static class RootHandler extends Handler.Sequence { @Override public boolean process(Request request, Response response, Callback callback) throws Exception diff --git a/documentation/jetty-documentation/src/main/java/org/eclipse/jetty/docs/programming/server/http/HTTPServerDocs.java b/documentation/jetty-documentation/src/main/java/org/eclipse/jetty/docs/programming/server/http/HTTPServerDocs.java index dd1de25c92e3..2f072f25f183 100644 --- a/documentation/jetty-documentation/src/main/java/org/eclipse/jetty/docs/programming/server/http/HTTPServerDocs.java +++ b/documentation/jetty-documentation/src/main/java/org/eclipse/jetty/docs/programming/server/http/HTTPServerDocs.java @@ -511,11 +511,11 @@ public boolean process(Request request, Response response, Callback callback) th GzipHandler gzipHandler = new GzipHandler(); server.setHandler(gzipHandler); - Handler.Collection collection = new Handler.Collection(); - gzipHandler.setHandler(collection); + Handler.Sequence sequence = new Handler.Sequence(); + gzipHandler.setHandler(sequence); - collection.addHandler(new App1Handler()); - collection.addHandler(new App2Handler()); + sequence.addHandler(new App1Handler()); + sequence.addHandler(new App2Handler()); // end::handlerTree[] } @@ -583,7 +583,7 @@ public boolean process(Request request, Response response, Callback callback) } // tag::handlerFilter[] - class FilterHandler extends Handler.Wrapper + class FilterHandler extends Handler.BaseWrapper { @Override public boolean process(Request request, Response response, Callback callback) throws Exception diff --git a/jetty-core/jetty-fcgi/jetty-fcgi-proxy/src/test/java/org/eclipse/jetty/fcgi/proxy/FastCGIProxyHandlerTest.java b/jetty-core/jetty-fcgi/jetty-fcgi-proxy/src/test/java/org/eclipse/jetty/fcgi/proxy/FastCGIProxyHandlerTest.java index b636c74768d4..bf74ec2e5a23 100644 --- a/jetty-core/jetty-fcgi/jetty-fcgi-proxy/src/test/java/org/eclipse/jetty/fcgi/proxy/FastCGIProxyHandlerTest.java +++ b/jetty-core/jetty-fcgi/jetty-fcgi-proxy/src/test/java/org/eclipse/jetty/fcgi/proxy/FastCGIProxyHandlerTest.java @@ -208,7 +208,7 @@ public boolean process(Request request, Response response, Callback callback) fcgiHandler.setOriginalQueryAttribute(queryAttribute); proxyContext.stop(); - proxyContext.insertHandler(new Handler.Wrapper() + proxyContext.insertHandler(new Handler.BaseWrapper() { @Override public boolean process(Request request, Response response, Callback callback) throws Exception diff --git a/jetty-core/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RewriteHandler.java b/jetty-core/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RewriteHandler.java index 6b22ddf7f5d9..de3583ccb954 100644 --- a/jetty-core/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RewriteHandler.java +++ b/jetty-core/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RewriteHandler.java @@ -37,7 +37,7 @@ * {@link PatternRule} subclasses), via regular expression matching (using * {@link RegexRule} subclasses), or by a custom implementation of {@code Rule}.

*/ -public class RewriteHandler extends Handler.Wrapper +public class RewriteHandler extends Handler.BaseWrapper { private final RuleContainer _rules; diff --git a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/Handler.java b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/Handler.java index e6862b0b9445..6b717219bdce 100644 --- a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/Handler.java +++ b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/Handler.java @@ -134,13 +134,6 @@ public interface Handler extends LifeCycle, Destroyable, Invocable, Request.Proc */ interface Container extends Handler { - void addHandler(Handler handler); - - default void addHandler(Supplier supplier) - { - addHandler(supplier.get()); - } - /** * @return an immutable collection of {@code Handler}s directly contained by this {@code Handler}. */ @@ -223,20 +216,56 @@ default T getContainer(Handler handler, Class t } return null; } + + /** + *

Make a {@link Container} the parent of a {@link Handler}

+ * @param parent The {@link Container} that will be the parent + * @param handler The {@link Handler} that will be the child + */ + static void setAsParent(Container parent, Handler handler) + { + if (parent instanceof Collection collection) + collection.addHandler(handler); + else if (parent instanceof Wrapper wrapper) + wrapper.setHandler(handler); + else if (parent != null) + throw new IllegalArgumentException("Unknown parent type: " + parent); + } + } + + /** + *

A {@link Handler.Container} that can contain multiple other {@link Handler}s.

+ * @see Sequence for an implementation of {@link Collection}. + */ + interface Collection extends Container + { + void addHandler(Handler handler); + + default void addHandler(Supplier supplier) + { + addHandler(supplier.get()); + } + + void setHandlers(List handlers); + + default void setHandlers(Handler... handlers) + { + setHandlers(handlers.length == 0 ? null : List.of(handlers)); + } } /** - *

A {@link Handler.Container} that wraps a single other {@code Handler}.

- * @see Handler.Wrapper for an implementation of nested. + *

A {@link Handler.Container} that can contain a single other {@code Handler}.

+ * @see BaseWrapper for an implementation of {@link Wrapper}. */ - interface Nested extends Container + interface Wrapper extends Container { Handler getHandler(); /** * Set the nested handler. * Implementations should check for loops, set the server and update any {@link ContainerLifeCycle} beans, all - * of which can be done by using the utility method {@link #updateHandler(Nested, Handler)} + * of which can be done by using the utility method {@link #updateHandler(Wrapper, Handler)} * @param handler The handler to set. */ void setHandler(Handler handler); @@ -253,27 +282,16 @@ default void setHandler(Supplier supplier) @Override default List getHandlers() { - Handler h = getHandler(); - if (h == null) - return Collections.emptyList(); - return Collections.singletonList(h); - } - - @Override - default void addHandler(Handler handler) - { - Handler existing = getHandler(); - setHandler(handler); - if (existing != null && handler instanceof Container container) - container.addHandler(existing); + Handler next = getHandler(); + return (next == null) ? Collections.emptyList() : Collections.singletonList(next); } - default void insertHandler(Handler.Nested handler) + default void insertHandler(Wrapper handler) { - Handler.Nested tail = handler; - while (tail.getHandler() instanceof Handler.Wrapper) + Wrapper tail = handler; + while (tail.getHandler() instanceof BaseWrapper) { - tail = (Handler.Wrapper)tail.getHandler(); + tail = (BaseWrapper)tail.getHandler(); } if (tail.getHandler() != null) throw new IllegalArgumentException("bad tail of inserted wrapper chain"); @@ -282,6 +300,17 @@ default void insertHandler(Handler.Nested handler) setHandler(handler); } + /** + * @return The tail {@link Wrapper} of a chain of {@link Wrapper}s + */ + default Wrapper getTail() + { + Wrapper tail = this; + while (tail.getHandler() instanceof Wrapper wrapped) + tail = wrapped; + return tail; + } + /** * Utility method to:
    *
  • Check the server state and invocation type
  • @@ -289,14 +318,14 @@ default void insertHandler(Handler.Nested handler) *
  • Set the server on the handler
  • *
  • Update the beans on if the Nests is a {@link ContainerLifeCycle}
  • *
- * @param nested The Nested implementation to update + * @param wrapper The Nested implementation to update * @param handler The handle to set * @return The set handler. */ - static Handler updateHandler(Nested nested, Handler handler) + static Handler updateHandler(Wrapper wrapper, Handler handler) { // check state - Server server = nested.getServer(); + Server server = wrapper.getServer(); // If the collection is changed whilst started, then the risk is that if we switch from NON_BLOCKING to BLOCKING // whilst the execution strategy may have already dispatched the very last available thread, thinking it would @@ -310,15 +339,15 @@ static Handler updateHandler(Nested nested, Handler handler) } // Check for loops. - if (handler == nested || (handler instanceof Handler.Container container && - container.getDescendants().contains(nested))) + if (handler == wrapper || (handler instanceof Handler.Container container && + container.getDescendants().contains(wrapper))) throw new IllegalStateException("setHandler loop"); if (handler != null && server != null) handler.setServer(server); - if (nested instanceof org.eclipse.jetty.util.component.ContainerLifeCycle container) - container.updateBean(nested.getHandler(), handler); + if (wrapper instanceof org.eclipse.jetty.util.component.ContainerLifeCycle container) + container.updateBean(wrapper.getHandler(), handler); return handler; } @@ -532,50 +561,45 @@ public static T findContainerOf(Handler.Container } /** - * An implementation of {@link Nested}, which is a {@link Handler.Container} that wraps a single other {@link Handler}. + * An implementation of {@link Wrapper}, which is a {@link Handler.Container} that wraps a single other {@link Handler}. */ - class Wrapper extends AbstractContainer implements Nested + class BaseWrapper extends AbstractContainer implements Wrapper { private Handler _handler; - public Wrapper() + public BaseWrapper() { this(null); } - public Wrapper(boolean dynamic) + public BaseWrapper(boolean dynamic) { this(dynamic, null); } - public Wrapper(Handler handler) + public BaseWrapper(Handler handler) { this(false, handler); } - public Wrapper(boolean dynamic, Handler handler) + public BaseWrapper(boolean dynamic, Handler handler) { super(dynamic); - _handler = handler == null ? null : Nested.updateHandler(this, handler); + _handler = handler == null ? null : Wrapper.updateHandler(this, handler); } + @Override public Handler getHandler() { return _handler; } + @Override public void setHandler(Handler handler) { if (!isDynamic() && isStarted()) throw new IllegalStateException(getState()); - _handler = Nested.updateHandler(this, handler); - } - - @Override - public List getHandlers() - { - Handler next = getHandler(); - return (next == null) ? Collections.emptyList() : Collections.singletonList(next); + _handler = Wrapper.updateHandler(this, handler); } @Override @@ -596,25 +620,24 @@ public InvocationType getInvocationType() } /** - *

A {@link Handler.Container} that contains a list of other {@code Handler}s.

- * - * TODO this should be called List instead + *

A {@link Handler.Container} that contains a list of other {@code Handler}s that are + * tried in sequence by {@link #process(Request, Response, Callback)}.

*/ - class Collection extends AbstractContainer + class Sequence extends AbstractContainer implements Collection { private volatile List _handlers = new ArrayList<>(); - public Collection(Handler... handlers) + public Sequence(Handler... handlers) { this(handlers.length == 0, List.of(handlers)); } - public Collection(boolean dynamic) + public Sequence(boolean dynamic) { this(dynamic, Collections.emptyList()); } - public Collection(List handlers) + public Sequence(List handlers) { this(handlers == null || handlers.size() == 0, handlers); } @@ -626,7 +649,7 @@ public Collection(List handlers) * * @param handlers The handlers to add. */ - public Collection(boolean dynamic, List handlers) + public Sequence(boolean dynamic, List handlers) { super(dynamic); setHandlers(handlers); @@ -649,11 +672,7 @@ public List getHandlers() return _handlers; } - public void setHandlers(Handler... handlers) - { - setHandlers(handlers.length == 0 ? null : List.of(handlers)); - } - + @Override public void setHandlers(List handlers) { if (!isDynamic() && isStarted()) diff --git a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/Server.java b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/Server.java index 89b5b0714d70..8349d1290833 100644 --- a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/Server.java +++ b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/Server.java @@ -68,7 +68,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class Server extends Handler.Wrapper implements Attributes +public class Server extends Handler.BaseWrapper implements Attributes { private static final Logger LOG = LoggerFactory.getLogger(Server.class); private static final String __serverInfo = "jetty/" + Server.getVersion(); diff --git a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/AbstractLatencyRecordingHandler.java b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/AbstractLatencyRecordingHandler.java index 6f177859a844..11de8703b599 100644 --- a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/AbstractLatencyRecordingHandler.java +++ b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/AbstractLatencyRecordingHandler.java @@ -28,7 +28,7 @@ * (obtained from {@link HttpStream#getNanoTime()}) until the stream completion event has been handled by * {@link HttpStream#succeeded()} or {@link HttpStream#failed(Throwable)}.

*/ -public abstract class AbstractLatencyRecordingHandler extends Handler.Wrapper +public abstract class AbstractLatencyRecordingHandler extends Handler.BaseWrapper { private static final Logger LOG = LoggerFactory.getLogger(AbstractLatencyRecordingHandler.class); diff --git a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/BufferedResponseHandler.java b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/BufferedResponseHandler.java index 0f0dd3267fa6..069810b47ac7 100644 --- a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/BufferedResponseHandler.java +++ b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/BufferedResponseHandler.java @@ -53,7 +53,7 @@ * generated can also be unbounded. *

*/ -public class BufferedResponseHandler extends Handler.Wrapper +public class BufferedResponseHandler extends Handler.BaseWrapper { public static final String BUFFER_SIZE_ATTRIBUTE_NAME = BufferedResponseHandler.class.getName() + ".buffer-size"; diff --git a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ConnectHandler.java b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ConnectHandler.java index a66b69b2c36f..1c3931e14951 100644 --- a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ConnectHandler.java +++ b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ConnectHandler.java @@ -55,7 +55,7 @@ /** *

Implementation of a {@link Handler} that supports HTTP CONNECT.

*/ -public class ConnectHandler extends Handler.Wrapper +public class ConnectHandler extends Handler.BaseWrapper { private static final Logger LOG = LoggerFactory.getLogger(ConnectHandler.class); diff --git a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java index 2a21dde56007..ef207ed3fbb5 100644 --- a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java +++ b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java @@ -63,7 +63,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class ContextHandler extends Handler.Wrapper implements Attributes, Graceful, AliasCheck +public class ContextHandler extends Handler.BaseWrapper implements Attributes, Graceful, AliasCheck { // TODO where should the alias checking go? // TODO add protected paths to ServletContextHandler? @@ -166,8 +166,7 @@ public ContextHandler(Handler.Container parent, String contextPath) _context = newContext(); if (contextPath != null) setContextPath(contextPath); - if (parent != null) - parent.addHandler(this); + Container.setAsParent(parent, this); if (File.separatorChar == '/') addAliasCheck(new SymlinkAllowedResourceAliasChecker(this)); diff --git a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandlerCollection.java b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandlerCollection.java index 04ea66642e35..1f308fcbee64 100644 --- a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandlerCollection.java +++ b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandlerCollection.java @@ -43,7 +43,7 @@ * handles the request. */ @ManagedObject("Context Handler Collection") -public class ContextHandlerCollection extends Handler.Collection +public class ContextHandlerCollection extends Handler.Sequence { private static final Logger LOG = LoggerFactory.getLogger(ContextHandlerCollection.class); private final SerializedExecutor _serializedExecutor = new SerializedExecutor(); diff --git a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/DebugHandler.java b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/DebugHandler.java index 95480e8b4e73..6416a45cec94 100644 --- a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/DebugHandler.java +++ b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/DebugHandler.java @@ -35,7 +35,7 @@ * and the current thread name is updated with information that will link * to the details in that output. */ -public class DebugHandler extends Handler.Wrapper implements Connection.Listener +public class DebugHandler extends Handler.BaseWrapper implements Connection.Listener { private final DateCache _date = new DateCache("HH:mm:ss", Locale.US); private OutputStream _out; diff --git a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/DelayedHandler.java b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/DelayedHandler.java index 73f9cb5c9c2d..eea3aeb4a53e 100644 --- a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/DelayedHandler.java +++ b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/DelayedHandler.java @@ -36,7 +36,7 @@ import org.eclipse.jetty.util.Fields; import org.eclipse.jetty.util.StringUtil; -public class DelayedHandler extends Handler.Wrapper +public class DelayedHandler extends Handler.BaseWrapper { @Override public boolean process(Request request, Response response, Callback callback) throws Exception diff --git a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/GracefulHandler.java b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/GracefulHandler.java index 7bdf55f0f5b4..448456a65347 100644 --- a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/GracefulHandler.java +++ b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/GracefulHandler.java @@ -28,7 +28,7 @@ /** * Handler to track active requests and allow them to gracefully complete. */ -public class GracefulHandler extends Handler.Wrapper implements Graceful +public class GracefulHandler extends Handler.BaseWrapper implements Graceful { private static final Logger LOG = LoggerFactory.getLogger(GracefulHandler.class); diff --git a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/HotSwapHandler.java b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/HotSwapHandler.java index 45e1f25e7684..f10cf2d514a0 100644 --- a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/HotSwapHandler.java +++ b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/HotSwapHandler.java @@ -13,9 +13,6 @@ package org.eclipse.jetty.server.handler; -import java.util.Collections; -import java.util.List; - import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.Response; @@ -26,7 +23,7 @@ /** * A HandlerContainer that allows a hot swap of a wrapped handler. */ -public class HotSwapHandler extends Handler.AbstractContainer implements Handler.Nested +public class HotSwapHandler extends Handler.AbstractContainer implements Handler.Wrapper { // TODO unit tests @@ -48,23 +45,13 @@ public Handler getHandler() return _handler; } - /** - * @return Returns the handlers. - */ - @Override - public List getHandlers() - { - Handler next = _handler; - return (next == null) ? Collections.emptyList() : Collections.singletonList(next); - } - /** * @param handler Set the {@link Handler} which should be wrapped. */ public void setHandler(Handler handler) { // check state - Server server1 = ((Nested)this).getServer(); + Server server1 = ((Wrapper)this).getServer(); if (server1 != null && server1.isStarted() && handler != null && server1.getInvocationType() != Invocable.combine(server1.getInvocationType(), handler.getInvocationType())) throw new IllegalArgumentException("Cannot change invocation type of started server"); diff --git a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/IdleTimeoutHandler.java b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/IdleTimeoutHandler.java index a9c083904308..516e9f7c1314 100644 --- a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/IdleTimeoutHandler.java +++ b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/IdleTimeoutHandler.java @@ -31,7 +31,7 @@ * </Set> * */ -public class IdleTimeoutHandler extends Handler.Wrapper +public class IdleTimeoutHandler extends Handler.BaseWrapper { private long _idleTimeoutMs = 1000; private boolean _applyToAsync = false; diff --git a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/InetAccessHandler.java b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/InetAccessHandler.java index bee5e6611541..d0f2036f9dd6 100644 --- a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/InetAccessHandler.java +++ b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/InetAccessHandler.java @@ -41,7 +41,7 @@ * the forwarded for headers, as this cannot be as easily forged. *

*/ -public class InetAccessHandler extends Handler.Wrapper +public class InetAccessHandler extends Handler.BaseWrapper { // TODO replace this handler with a general conditional handler wrapper. diff --git a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/MovedContextHandler.java b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/MovedContextHandler.java index 8e0451e576d8..d340536cf23c 100644 --- a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/MovedContextHandler.java +++ b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/MovedContextHandler.java @@ -42,9 +42,9 @@ public MovedContextHandler() setAllowNullPathInContext(true); } - public MovedContextHandler(Handler.Collection parent, String contextPath, String redirectURI) + public MovedContextHandler(Handler.Container parent, String contextPath, String redirectURI) { - parent.addHandler(this); + Handler.Container.setAsParent(parent, this); setContextPath(contextPath); setRedirectURI(redirectURI); } diff --git a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/PathMappingsHandler.java b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/PathMappingsHandler.java index 8304503bcf7c..bc60de6ea4d6 100644 --- a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/PathMappingsHandler.java +++ b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/PathMappingsHandler.java @@ -15,7 +15,6 @@ import java.io.IOException; import java.util.List; -import java.util.function.Supplier; import org.eclipse.jetty.http.pathmap.MappedResource; import org.eclipse.jetty.http.pathmap.MatchedResource; @@ -49,18 +48,6 @@ public PathMappingsHandler(boolean dynamic) super(dynamic); } - @Override - public void addHandler(Handler handler) - { - throw new UnsupportedOperationException("Arbitrary addHandler() not supported, use addMapping() instead"); - } - - @Override - public void addHandler(Supplier supplier) - { - throw new UnsupportedOperationException("Arbitrary addHandler() not supported, use addMapping() instead"); - } - @Override public List getHandlers() { diff --git a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ProxiedRequestHandler.java b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ProxiedRequestHandler.java index 60d8954901bd..76962ad65b01 100644 --- a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ProxiedRequestHandler.java +++ b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ProxiedRequestHandler.java @@ -23,7 +23,7 @@ import org.eclipse.jetty.util.Callback; import org.eclipse.jetty.util.HostPort; -public class ProxiedRequestHandler extends Handler.Wrapper +public class ProxiedRequestHandler extends Handler.BaseWrapper { @Override public boolean process(Request request, Response response, Callback callback) throws Exception diff --git a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ResourceHandler.java b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ResourceHandler.java index ba84e11e175d..cc74149ab19a 100644 --- a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ResourceHandler.java +++ b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ResourceHandler.java @@ -53,7 +53,7 @@ * - request ranges * - a way to configure caching or not */ -public class ResourceHandler extends Handler.Wrapper +public class ResourceHandler extends Handler.BaseWrapper { private final ResourceService _resourceService; diff --git a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/SecuredRedirectHandler.java b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/SecuredRedirectHandler.java index 241552385ebb..332bb024286f 100644 --- a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/SecuredRedirectHandler.java +++ b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/SecuredRedirectHandler.java @@ -35,7 +35,7 @@ * {@link HttpConfiguration#getSecurePort()} *

*/ -public class SecuredRedirectHandler extends Handler.Wrapper +public class SecuredRedirectHandler extends Handler.BaseWrapper { /** * The redirect code to send in response. diff --git a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ShutdownHandler.java b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ShutdownHandler.java index c2ea3d1ecb58..6cb25b3d9814 100644 --- a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ShutdownHandler.java +++ b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ShutdownHandler.java @@ -76,7 +76,7 @@ * } * } */ -public class ShutdownHandler extends Handler.Wrapper +public class ShutdownHandler extends Handler.BaseWrapper { private static final Logger LOG = LoggerFactory.getLogger(ShutdownHandler.class); diff --git a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/StatisticsHandler.java b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/StatisticsHandler.java index 9005b4036047..a4b5dc45ef96 100644 --- a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/StatisticsHandler.java +++ b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/StatisticsHandler.java @@ -37,7 +37,7 @@ import org.eclipse.jetty.util.statistic.CounterStatistic; import org.eclipse.jetty.util.statistic.SampleStatistic; -public class StatisticsHandler extends Handler.Wrapper +public class StatisticsHandler extends Handler.BaseWrapper { private final Set _connectionStats = ConcurrentHashMap.newKeySet(); private final CounterStatistic _requestStats = new CounterStatistic(); diff --git a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ThreadLimitHandler.java b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ThreadLimitHandler.java index 9109460be033..4f0e9de7c912 100644 --- a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ThreadLimitHandler.java +++ b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ThreadLimitHandler.java @@ -67,7 +67,7 @@ * a thread is available. *

This is a simpler alternative to DosFilter

*/ -public class ThreadLimitHandler extends Handler.Wrapper +public class ThreadLimitHandler extends Handler.BaseWrapper { private static final Logger LOG = LoggerFactory.getLogger(ThreadLimitHandler.class); diff --git a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/TryPathsHandler.java b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/TryPathsHandler.java index d0b8c0e88754..77637764df7a 100644 --- a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/TryPathsHandler.java +++ b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/TryPathsHandler.java @@ -65,7 +65,7 @@ * under the names specified by {@link #setOriginalPathAttribute(String)} * and {@link #setOriginalQueryAttribute(String)}.

*/ -public class TryPathsHandler extends Handler.Wrapper +public class TryPathsHandler extends Handler.BaseWrapper { private String originalPathAttribute; private String originalQueryAttribute; diff --git a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/gzip/GzipHandler.java b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/gzip/GzipHandler.java index 2cdd1312d44b..3d354386b326 100644 --- a/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/gzip/GzipHandler.java +++ b/jetty-core/jetty-server/src/main/java/org/eclipse/jetty/server/handler/gzip/GzipHandler.java @@ -37,7 +37,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class GzipHandler extends Handler.Wrapper implements GzipFactory +public class GzipHandler extends Handler.BaseWrapper implements GzipFactory { public static final String GZIP_HANDLER_ETAGS = "o.e.j.s.h.gzip.GzipHandler.etag"; public static final String GZIP = "gzip"; diff --git a/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/HttpConfigurationAuthorityOverrideTest.java b/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/HttpConfigurationAuthorityOverrideTest.java index 8acb76e98e69..1c4cf2537067 100644 --- a/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/HttpConfigurationAuthorityOverrideTest.java +++ b/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/HttpConfigurationAuthorityOverrideTest.java @@ -637,7 +637,7 @@ private CloseableServer startServer(HostPort serverUriAuthority, InetSocketAddre connector.setPort(0); server.addConnector(connector); - Handler.Collection handlers = new Handler.Collection(); + Handler.Sequence handlers = new Handler.Sequence(); handlers.addHandler(new RedirectHandler()); handlers.addHandler(new DumpHandler()); handlers.addHandler(new ErrorMsgHandler()); diff --git a/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/HttpServerTestBase.java b/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/HttpServerTestBase.java index 706b07077ca9..573a2338324c 100644 --- a/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/HttpServerTestBase.java +++ b/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/HttpServerTestBase.java @@ -1825,7 +1825,7 @@ public Content.Chunk read() public void testProcessingAfterCompletion() throws Exception { AtomicReference result = new AtomicReference<>(); - Handler.Wrapper wrapper = new Handler.Wrapper() + Handler.Wrapper wrapper = new Handler.BaseWrapper() { @Override public boolean process(Request request, Response response, Callback callback) throws Exception diff --git a/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/PartialRFC2616Test.java b/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/PartialRFC2616Test.java index 5790eecd1441..5e1cb473a16e 100644 --- a/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/PartialRFC2616Test.java +++ b/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/PartialRFC2616Test.java @@ -60,7 +60,7 @@ public void init() throws Exception context.setContextPath("/"); context.setHandler(new DumpHandler()); - server.setHandler(new Handler.Collection(vcontext, context)); + server.setHandler(new Handler.Sequence(vcontext, context)); server.start(); } diff --git a/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ContextHandlerCollectionTest.java b/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ContextHandlerCollectionTest.java index caf960182148..abfdf3c4afab 100644 --- a/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ContextHandlerCollectionTest.java +++ b/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ContextHandlerCollectionTest.java @@ -122,7 +122,7 @@ public void testVirtualHosts(int useConnectorNum, String host, String uri, Strin c.addHandler(contextG); c.addHandler(contextH); - Handler.Collection handlers = new Handler.Collection(); + Handler.Sequence handlers = new Handler.Sequence(); handlers.addHandler(contextE); handlers.addHandler(contextF); handlers.addHandler(contextD); @@ -320,7 +320,7 @@ public void testFindContainer() ContextHandler contextB = new ContextHandler("/b"); IsHandledHandler handlerB = new IsHandledHandler("B"); - Handler.Wrapper wrapperB = new Handler.Wrapper(); + Handler.Wrapper wrapperB = new Handler.BaseWrapper(); wrapperB.setHandler(handlerB); contextB.setHandler(wrapperB); @@ -334,16 +334,16 @@ public void testFindContainer() collection.addHandler(contextB); collection.addHandler(contextC); - Handler.Wrapper wrapper = new Handler.Wrapper(); + Handler.Wrapper wrapper = new Handler.BaseWrapper(); wrapper.setHandler(collection); server.setHandler(wrapper); - assertEquals(wrapper, Handler.AbstractContainer.findContainerOf(server, Handler.Wrapper.class, handlerA)); + assertEquals(wrapper, Handler.AbstractContainer.findContainerOf(server, Handler.BaseWrapper.class, handlerA)); assertEquals(contextA, Handler.AbstractContainer.findContainerOf(server, ContextHandler.class, handlerA)); assertEquals(contextB, Handler.AbstractContainer.findContainerOf(server, ContextHandler.class, handlerB)); - assertEquals(wrapper, Handler.AbstractContainer.findContainerOf(server, Handler.Wrapper.class, handlerB)); - assertEquals(contextB, Handler.AbstractContainer.findContainerOf(collection, Handler.Wrapper.class, handlerB)); - assertEquals(wrapperB, Handler.AbstractContainer.findContainerOf(contextB, Handler.Wrapper.class, handlerB)); + assertEquals(wrapper, Handler.AbstractContainer.findContainerOf(server, Handler.BaseWrapper.class, handlerB)); + assertEquals(contextB, Handler.AbstractContainer.findContainerOf(collection, Handler.BaseWrapper.class, handlerB)); + assertEquals(wrapperB, Handler.AbstractContainer.findContainerOf(contextB, Handler.BaseWrapper.class, handlerB)); } @Test @@ -359,7 +359,7 @@ public void testWrappedContext() throws Exception ContextHandler left = new ContextHandler("/left"); left.setHandler(new IsHandledHandler("left")); - Handler.Collection centre = new Handler.Collection(); + Handler.Sequence centre = new Handler.Sequence(); ContextHandler centreLeft = new ContextHandler("/leftcentre"); centreLeft.setHandler(new IsHandledHandler("left of centre")); ContextHandler centreRight = new ContextHandler("/rightcentre"); @@ -407,7 +407,7 @@ public void testWrappedContext() throws Exception assertThat(response, containsString("Wrapped: right")); } - private static final class WrappedHandler extends Handler.Wrapper + private static final class WrappedHandler extends Handler.BaseWrapper { private final String tag; diff --git a/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ContextHandlerTest.java b/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ContextHandlerTest.java index b653d87a4d4a..b1dd72df2fc1 100644 --- a/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ContextHandlerTest.java +++ b/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ContextHandlerTest.java @@ -658,7 +658,7 @@ public void testSetHandlerLoopSelf() public void testSetHandlerLoopDeepWrapper() { ContextHandler contextHandlerA = new ContextHandler(); - Handler.Wrapper handlerWrapper = new Handler.Wrapper(); + Handler.Wrapper handlerWrapper = new Handler.BaseWrapper(); contextHandlerA.setHandler(handlerWrapper); assertThrows(IllegalStateException.class, () -> handlerWrapper.setHandler(contextHandlerA)); } @@ -667,7 +667,7 @@ public void testSetHandlerLoopDeepWrapper() public void testAddHandlerLoopDeep() { ContextHandler contextHandlerA = new ContextHandler(); - Handler.Collection handlerCollection = new Handler.Collection(); + Handler.Sequence handlerCollection = new Handler.Sequence(); contextHandlerA.setHandler(handlerCollection); assertThrows(IllegalStateException.class, () -> handlerCollection.addHandler(contextHandlerA)); } diff --git a/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/DefaultHandlerTest.java b/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/DefaultHandlerTest.java index de4d627b2313..72af1fba1fb0 100644 --- a/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/DefaultHandlerTest.java +++ b/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/DefaultHandlerTest.java @@ -48,7 +48,7 @@ public void before() throws Exception server.addConnector(connector); ContextHandlerCollection contexts = new ContextHandlerCollection(); - server.setHandler(new Handler.Collection(contexts, new DefaultHandler(true, true))); + server.setHandler(new Handler.Sequence(contexts, new DefaultHandler(true, true))); contexts.addHandler(new ContextHandler("/foo")); contexts.addHandler(new ContextHandler("/bar")); diff --git a/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/HandlerTest.java b/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/HandlerTest.java index 70f7aa3040d8..5672e7e6e552 100644 --- a/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/HandlerTest.java +++ b/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/HandlerTest.java @@ -38,9 +38,9 @@ public class HandlerTest public void testWrapperSetServer() { Server s = new Server(); - Handler.Wrapper a = new Handler.Wrapper(); - Handler.Wrapper b = new Handler.Wrapper(); - Handler.Wrapper c = new Handler.Wrapper(); + Handler.Wrapper a = new Handler.BaseWrapper(); + Handler.Wrapper b = new Handler.BaseWrapper(); + Handler.Wrapper c = new Handler.BaseWrapper(); a.setHandler(b); b.setHandler(c); @@ -53,9 +53,9 @@ public void testWrapperSetServer() public void testWrapperServerSet() { Server s = new Server(); - Handler.Wrapper a = new Handler.Wrapper(); - Handler.Wrapper b = new Handler.Wrapper(); - Handler.Wrapper c = new Handler.Wrapper(); + Handler.Wrapper a = new Handler.BaseWrapper(); + Handler.Wrapper b = new Handler.BaseWrapper(); + Handler.Wrapper c = new Handler.BaseWrapper(); a.setServer(s); b.setHandler(c); a.setHandler(b); @@ -67,7 +67,7 @@ public void testWrapperServerSet() @Test public void testWrapperThisLoop() { - Handler.Wrapper a = new Handler.Wrapper(); + Handler.Wrapper a = new Handler.BaseWrapper(); IllegalStateException e = assertThrows(IllegalStateException.class, () -> a.setHandler(a)); assertThat(e.getMessage(), containsString("loop")); @@ -76,8 +76,8 @@ public void testWrapperThisLoop() @Test public void testWrapperSimpleLoop() { - Handler.Wrapper a = new Handler.Wrapper(); - Handler.Wrapper b = new Handler.Wrapper(); + Handler.Wrapper a = new Handler.BaseWrapper(); + Handler.Wrapper b = new Handler.BaseWrapper(); a.setHandler(b); @@ -88,9 +88,9 @@ public void testWrapperSimpleLoop() @Test public void testWrapperDeepLoop() { - Handler.Wrapper a = new Handler.Wrapper(); - Handler.Wrapper b = new Handler.Wrapper(); - Handler.Wrapper c = new Handler.Wrapper(); + Handler.Wrapper a = new Handler.BaseWrapper(); + Handler.Wrapper b = new Handler.BaseWrapper(); + Handler.Wrapper c = new Handler.BaseWrapper(); a.setHandler(b); b.setHandler(c); @@ -102,9 +102,9 @@ public void testWrapperDeepLoop() @Test public void testWrapperChainLoop() { - Handler.Wrapper a = new Handler.Wrapper(); - Handler.Wrapper b = new Handler.Wrapper(); - Handler.Wrapper c = new Handler.Wrapper(); + Handler.Wrapper a = new Handler.BaseWrapper(); + Handler.Wrapper b = new Handler.BaseWrapper(); + Handler.Wrapper c = new Handler.BaseWrapper(); a.setHandler(b); c.setHandler(a); @@ -117,13 +117,13 @@ public void testWrapperChainLoop() public void testHandlerCollectionSetServer() { Server s = new Server(); - Handler.Collection a = new Handler.Collection(); - Handler.Collection b = new Handler.Collection(); - Handler.Collection b1 = new Handler.Collection(); - Handler.Collection b2 = new Handler.Collection(); - Handler.Collection c = new Handler.Collection(); - Handler.Collection c1 = new Handler.Collection(); - Handler.Collection c2 = new Handler.Collection(); + Handler.Sequence a = new Handler.Sequence(); + Handler.Sequence b = new Handler.Sequence(); + Handler.Sequence b1 = new Handler.Sequence(); + Handler.Sequence b2 = new Handler.Sequence(); + Handler.Sequence c = new Handler.Sequence(); + Handler.Sequence c1 = new Handler.Sequence(); + Handler.Sequence c2 = new Handler.Sequence(); a.addHandler(b); a.addHandler(c); @@ -143,13 +143,13 @@ public void testHandlerCollectionSetServer() public void testHandlerCollectionServerSet() { Server s = new Server(); - Handler.Collection a = new Handler.Collection(); - Handler.Collection b = new Handler.Collection(); - Handler.Collection b1 = new Handler.Collection(); - Handler.Collection b2 = new Handler.Collection(); - Handler.Collection c = new Handler.Collection(); - Handler.Collection c1 = new Handler.Collection(); - Handler.Collection c2 = new Handler.Collection(); + Handler.Sequence a = new Handler.Sequence(); + Handler.Sequence b = new Handler.Sequence(); + Handler.Sequence b1 = new Handler.Sequence(); + Handler.Sequence b2 = new Handler.Sequence(); + Handler.Sequence c = new Handler.Sequence(); + Handler.Sequence c1 = new Handler.Sequence(); + Handler.Sequence c2 = new Handler.Sequence(); a.setServer(s); a.addHandler(b); @@ -168,7 +168,7 @@ public void testHandlerCollectionServerSet() @Test public void testHandlerCollectionThisLoop() { - Handler.Collection a = new Handler.Collection(); + Handler.Sequence a = new Handler.Sequence(); IllegalStateException e = assertThrows(IllegalStateException.class, () -> a.addHandler(a)); assertThat(e.getMessage(), containsString("loop")); @@ -177,13 +177,13 @@ public void testHandlerCollectionThisLoop() @Test public void testHandlerCollectionDeepLoop() { - Handler.Collection a = new Handler.Collection(); - Handler.Collection b = new Handler.Collection(); - Handler.Collection b1 = new Handler.Collection(); - Handler.Collection b2 = new Handler.Collection(); - Handler.Collection c = new Handler.Collection(); - Handler.Collection c1 = new Handler.Collection(); - Handler.Collection c2 = new Handler.Collection(); + Handler.Sequence a = new Handler.Sequence(); + Handler.Sequence b = new Handler.Sequence(); + Handler.Sequence b1 = new Handler.Sequence(); + Handler.Sequence b2 = new Handler.Sequence(); + Handler.Sequence c = new Handler.Sequence(); + Handler.Sequence c1 = new Handler.Sequence(); + Handler.Sequence c2 = new Handler.Sequence(); a.addHandler(b); a.addHandler(c); @@ -197,13 +197,13 @@ public void testHandlerCollectionDeepLoop() @Test public void testHandlerCollectionChainLoop() { - Handler.Collection a = new Handler.Collection(); - Handler.Collection b = new Handler.Collection(); - Handler.Collection b1 = new Handler.Collection(); - Handler.Collection b2 = new Handler.Collection(); - Handler.Collection c = new Handler.Collection(); - Handler.Collection c1 = new Handler.Collection(); - Handler.Collection c2 = new Handler.Collection(); + Handler.Sequence a = new Handler.Sequence(); + Handler.Sequence b = new Handler.Sequence(); + Handler.Sequence b1 = new Handler.Sequence(); + Handler.Sequence b2 = new Handler.Sequence(); + Handler.Sequence c = new Handler.Sequence(); + Handler.Sequence c1 = new Handler.Sequence(); + Handler.Sequence c2 = new Handler.Sequence(); a.addHandler(c); b.setHandlers(b1, b2); @@ -217,8 +217,8 @@ public void testHandlerCollectionChainLoop() @Test public void testInsertWrapperTail() { - Handler.Wrapper a = new Handler.Wrapper(); - Handler.Wrapper b = new Handler.Wrapper(); + Handler.Wrapper a = new Handler.BaseWrapper(); + Handler.Wrapper b = new Handler.BaseWrapper(); a.insertHandler(b); assertThat(a.getHandler(), equalTo(b)); @@ -228,9 +228,9 @@ public void testInsertWrapperTail() @Test public void testInsertWrapper() { - Handler.Wrapper a = new Handler.Wrapper(); - Handler.Wrapper b = new Handler.Wrapper(); - Handler.Wrapper c = new Handler.Wrapper(); + Handler.Wrapper a = new Handler.BaseWrapper(); + Handler.Wrapper b = new Handler.BaseWrapper(); + Handler.Wrapper c = new Handler.BaseWrapper(); a.insertHandler(c); a.insertHandler(b); @@ -242,10 +242,10 @@ public void testInsertWrapper() @Test public void testInsertWrapperChain() { - Handler.Wrapper a = new Handler.Wrapper(); - Handler.Wrapper b = new Handler.Wrapper(); - Handler.Wrapper c = new Handler.Wrapper(); - Handler.Wrapper d = new Handler.Wrapper(); + Handler.Wrapper a = new Handler.BaseWrapper(); + Handler.Wrapper b = new Handler.BaseWrapper(); + Handler.Wrapper c = new Handler.BaseWrapper(); + Handler.Wrapper d = new Handler.BaseWrapper(); a.insertHandler(d); b.insertHandler(c); @@ -259,10 +259,10 @@ public void testInsertWrapperChain() @Test public void testInsertWrapperBadChain() { - Handler.Wrapper a = new Handler.Wrapper(); - Handler.Wrapper b = new Handler.Wrapper(); - Handler.Wrapper c = new Handler.Wrapper(); - Handler.Wrapper d = new Handler.Wrapper(); + Handler.Wrapper a = new Handler.BaseWrapper(); + Handler.Wrapper b = new Handler.BaseWrapper(); + Handler.Wrapper c = new Handler.BaseWrapper(); + Handler.Wrapper d = new Handler.BaseWrapper(); a.insertHandler(d); b.insertHandler(c); @@ -282,8 +282,8 @@ public boolean process(Request request, Response response, Callback callback) @Test public void testSetServerPropagation() { - Handler.Wrapper wrapper = new Handler.Wrapper(); - Handler.Collection collection = new Handler.Collection(); + Handler.Wrapper wrapper = new Handler.BaseWrapper(); + Handler.Sequence collection = new Handler.Sequence(); Handler handler = new Handler.Abstract() { @Override @@ -305,8 +305,8 @@ public boolean process(Request request, Response response, Callback callback) th @Test public void testSetHandlerServerPropagation() { - Handler.Wrapper wrapper = new Handler.Wrapper(); - Handler.Collection collection = new Handler.Collection(); + Handler.Wrapper wrapper = new Handler.BaseWrapper(); + Handler.Sequence collection = new Handler.Sequence(); Handler handler = new Handler.Abstract() { @Override diff --git a/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/PathMappingsHandlerTest.java b/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/PathMappingsHandlerTest.java index fdab3f5c2dfb..59ebecb1b216 100644 --- a/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/PathMappingsHandlerTest.java +++ b/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/PathMappingsHandlerTest.java @@ -54,7 +54,7 @@ public void startServer(Handler handler) throws Exception connector = new LocalConnector(server); server.addConnector(connector); - server.addHandler(handler); + server.setHandler(handler); server.start(); } @@ -216,22 +216,22 @@ public void testGetDescendantsDeep() ContextHandler contextHandler = new ContextHandler(); contextHandler.setContextPath("/"); - Handler.Collection handlerCollection = new Handler.Collection(); - handlerCollection.addHandler(new SimpleHandler("phpIndex")); - Handler.Wrapper handlerWrapper = new Handler.Wrapper(new SimpleHandler("other")); - handlerCollection.addHandler(handlerWrapper); + Handler.Sequence sequence = new Handler.Sequence(); + sequence.addHandler(new SimpleHandler("phpIndex")); + Handler.Wrapper handlerWrapper = new Handler.BaseWrapper(new SimpleHandler("other")); + sequence.addHandler(handlerWrapper); PathMappingsHandler pathMappingsHandler = new PathMappingsHandler(); pathMappingsHandler.addMapping(new ServletPathSpec("/"), new SimpleHandler("default")); pathMappingsHandler.addMapping(new ServletPathSpec("/index.html"), new SimpleHandler("specific")); - pathMappingsHandler.addMapping(new ServletPathSpec("*.php"), handlerCollection); + pathMappingsHandler.addMapping(new ServletPathSpec("*.php"), sequence); List actualHandlers = pathMappingsHandler.getDescendants().stream().map(Objects::toString).toList(); String[] expectedHandlers = { "SimpleHandler[msg=\"default\"]", "SimpleHandler[msg=\"specific\"]", - handlerCollection.toString(), + sequence.toString(), handlerWrapper.toString(), "SimpleHandler[msg=\"phpIndex\"]", "SimpleHandler[msg=\"other\"]" diff --git a/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/SecuredRedirectHandlerTest.java b/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/SecuredRedirectHandlerTest.java index 006e98314846..5c1c9071f50a 100644 --- a/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/SecuredRedirectHandlerTest.java +++ b/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/SecuredRedirectHandlerTest.java @@ -295,7 +295,7 @@ public void testSecuredRequestTo404() throws Exception @Test public void testUnsecuredRequestToNullChildHandler() throws Exception { - Handler.Collection handlers = new Handler.Collection(); + Handler.Sequence handlers = new Handler.Sequence(); SecuredRedirectHandler securedRedirectHandler = new SecuredRedirectHandler(HttpStatus.MOVED_PERMANENTLY_301); handlers.addHandler(securedRedirectHandler); // first handler (no children) handlers.addHandler(new HelloHandler("Hello-from-test")); diff --git a/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ShutdownHandlerTest.java b/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ShutdownHandlerTest.java index 97110a910b0c..8009d3ae5434 100644 --- a/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ShutdownHandlerTest.java +++ b/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ShutdownHandlerTest.java @@ -155,7 +155,7 @@ private HttpTester.Response sendShutdownRequest(String shutdownToken) throws Exc } } - static class FakeRemoteAddressHandlerWrapper extends Handler.Wrapper + static class FakeRemoteAddressHandlerWrapper extends Handler.BaseWrapper { private final InetSocketAddress fakeRemoteAddress; diff --git a/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/StatisticsHandlerTest.java b/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/StatisticsHandlerTest.java index 7b565c9dc829..66bff5983744 100644 --- a/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/StatisticsHandlerTest.java +++ b/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/StatisticsHandlerTest.java @@ -743,7 +743,7 @@ public boolean process(Request request, Response response, Callback callback) th // This handler is external to the statistics handler and it is used to ensure that statistics handler's // handle() is fully executed before asserting its values in the tests, to avoid race conditions with the // tests' code where the test executes but the statistics handler has not finished yet. - private static class LatchHandler extends Handler.Wrapper + private static class LatchHandler extends Handler.BaseWrapper { private volatile CountDownLatch _latch = new CountDownLatch(1); diff --git a/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/gzip/GzipHandlerTest.java b/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/gzip/GzipHandlerTest.java index 6d7c6198cbf4..ce908641a0d1 100644 --- a/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/gzip/GzipHandlerTest.java +++ b/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/handler/gzip/GzipHandlerTest.java @@ -1999,7 +1999,7 @@ public static class UncompressedMetadata public int uncompressedSize; } - public static class CheckHandler extends Handler.Wrapper + public static class CheckHandler extends Handler.BaseWrapper { @Override public boolean process(Request request, Response response, Callback callback) throws Exception diff --git a/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SniSslConnectionFactoryTest.java b/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SniSslConnectionFactoryTest.java index 38026e26faf0..afbf36fe0511 100644 --- a/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SniSslConnectionFactoryTest.java +++ b/jetty-core/jetty-server/src/test/java/org/eclipse/jetty/server/ssl/SniSslConnectionFactoryTest.java @@ -97,7 +97,7 @@ private void start(BiConsumer SecureRequestCustomizer secureRequestCustomizer = new SecureRequestCustomizer(); httpConfiguration.addCustomizer(secureRequestCustomizer); - Handler.Wrapper xCertHandler = new Handler.Wrapper() + Handler.Wrapper xCertHandler = new Handler.BaseWrapper() { @Override public boolean process(Request request, Response response, Callback callback) throws Exception diff --git a/jetty-core/jetty-session/src/test/java/org/eclipse/jetty/session/SimpleSessionHandler.java b/jetty-core/jetty-session/src/test/java/org/eclipse/jetty/session/SimpleSessionHandler.java index e6c5cb2d2293..dd3686bbf2c8 100644 --- a/jetty-core/jetty-session/src/test/java/org/eclipse/jetty/session/SimpleSessionHandler.java +++ b/jetty-core/jetty-session/src/test/java/org/eclipse/jetty/session/SimpleSessionHandler.java @@ -27,7 +27,7 @@ /** * SimpleSessionHandler example */ -public class SimpleSessionHandler extends AbstractSessionManager implements Handler.Nested +public class SimpleSessionHandler extends AbstractSessionManager implements Handler.Wrapper { private Server _server; private Handler _handler; @@ -47,7 +47,7 @@ public Handler getHandler() @Override public void setHandler(Handler handler) { - _handler = Nested.updateHandler(this, handler); + _handler = Handler.Wrapper.updateHandler(this, handler); } @Override diff --git a/jetty-core/jetty-websocket/jetty-websocket-core-server/src/main/java/org/eclipse/jetty/websocket/core/server/WebSocketUpgradeHandler.java b/jetty-core/jetty-websocket/jetty-websocket-core-server/src/main/java/org/eclipse/jetty/websocket/core/server/WebSocketUpgradeHandler.java index 4f05bf4a8028..dad91ccb31ee 100644 --- a/jetty-core/jetty-websocket/jetty-websocket-core-server/src/main/java/org/eclipse/jetty/websocket/core/server/WebSocketUpgradeHandler.java +++ b/jetty-core/jetty-websocket/jetty-websocket-core-server/src/main/java/org/eclipse/jetty/websocket/core/server/WebSocketUpgradeHandler.java @@ -23,7 +23,7 @@ import org.eclipse.jetty.websocket.core.Configuration; import org.eclipse.jetty.websocket.core.WebSocketComponents; -public class WebSocketUpgradeHandler extends Handler.Wrapper +public class WebSocketUpgradeHandler extends Handler.BaseWrapper { private final WebSocketMappings mappings; private final Configuration.ConfigurationCustomizer customizer = new Configuration.ConfigurationCustomizer(); diff --git a/jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/proxy/WebSocketProxyTest.java b/jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/proxy/WebSocketProxyTest.java index b291037322fb..7bd99fd8e067 100644 --- a/jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/proxy/WebSocketProxyTest.java +++ b/jetty-core/jetty-websocket/jetty-websocket-core-tests/src/test/java/org/eclipse/jetty/websocket/core/proxy/WebSocketProxyTest.java @@ -100,7 +100,7 @@ public void start() throws Exception ServerConnector connector = new ServerConnector(_server); _server.addConnector(connector); - Handler.Collection handlers = new Handler.Collection(); + Handler.Sequence handlers = new Handler.Sequence(); testHandler = new TestHandler(); handlers.addHandler(testHandler); diff --git a/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/ExampleServer.java b/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/ExampleServer.java index 7e65774c1ac2..aab1974ddb61 100644 --- a/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/ExampleServer.java +++ b/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/ExampleServer.java @@ -15,7 +15,6 @@ import org.eclipse.jetty.ee10.servlet.ServletContextHandler; import org.eclipse.jetty.server.Connector; -import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.server.handler.DefaultHandler; @@ -25,6 +24,7 @@ public class ExampleServer public static Server createServer(int port) { Server server = new Server(); + server.setDefaultHandler(new DefaultHandler()); ServerConnector connector = new ServerConnector(server); connector.setPort(port); @@ -35,7 +35,7 @@ public static Server createServer(int port) context.addServlet(HelloServlet.class, "/hello"); context.addServlet(AsyncEchoServlet.class, "/echo/*"); - server.setHandler(new Handler.Collection(context, new DefaultHandler())); + server.setHandler(context); return server; } diff --git a/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/FileServer.java b/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/FileServer.java index 042884817c76..042785525599 100644 --- a/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/FileServer.java +++ b/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/FileServer.java @@ -17,7 +17,6 @@ import java.nio.file.Paths; import java.util.List; -import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.DefaultHandler; import org.eclipse.jetty.server.handler.ResourceHandler; @@ -36,6 +35,7 @@ public static Server createServer(int port, Resource baseResource) throws Except // then a randomly available port will be assigned that you can either look in the logs for the port, // or programmatically obtain it for use in test cases. Server server = new Server(port); + server.setDefaultHandler(new DefaultHandler()); // Create the ResourceHandler. It is the object that will actually handle the request for a given file. It is // a Jetty Handler object so it is suitable for chaining with other handlers as you will see in other examples. @@ -48,7 +48,7 @@ public static Server createServer(int port, Resource baseResource) throws Except resourceHandler.setBaseResource(baseResource); // Add the ResourceHandler to the server. - server.setHandler(new Handler.Collection(resourceHandler, new DefaultHandler())); + server.setHandler(resourceHandler); return server; } diff --git a/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/JarServer.java b/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/JarServer.java index 7377490ef0e8..869efb74c853 100644 --- a/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/JarServer.java +++ b/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/JarServer.java @@ -23,9 +23,7 @@ import org.eclipse.jetty.ee10.servlet.DefaultServlet; import org.eclipse.jetty.ee10.servlet.ServletContextHandler; import org.eclipse.jetty.ee10.servlet.ServletHolder; -import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.handler.DefaultHandler; import org.eclipse.jetty.util.FileID; import org.eclipse.jetty.util.URIUtil; import org.eclipse.jetty.util.resource.Resource; @@ -53,7 +51,7 @@ public static Server createServer(int port, URI jarBase) throws Exception ServletHolder defaultHolder = new ServletHolder("default", new DefaultServlet()); context.addServlet(defaultHolder, "/"); - server.setHandler(new Handler.Collection(context, new DefaultHandler())); + server.setHandler(context); return server; } diff --git a/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/LikeJettyXml.java b/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/LikeJettyXml.java index b1946da1d61c..39e428c52688 100644 --- a/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/LikeJettyXml.java +++ b/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/LikeJettyXml.java @@ -36,7 +36,6 @@ import org.eclipse.jetty.rewrite.handler.RewriteHandler; import org.eclipse.jetty.server.AsyncRequestLogWriter; import org.eclipse.jetty.server.CustomRequestLog; -import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.HttpConfiguration; import org.eclipse.jetty.server.HttpConnectionFactory; import org.eclipse.jetty.server.LowResourceMonitor; @@ -76,6 +75,7 @@ public static Server createServer(int port, int securePort, boolean addDebugList // Server Server server = new Server(threadPool); + server.setDefaultHandler(new DefaultHandler()); // Scheduler server.addBean(new ScheduledExecutorScheduler(null, false, -1)); @@ -93,11 +93,7 @@ public static Server createServer(int port, int securePort, boolean addDebugList // Handler Structure ContextHandlerCollection contexts = new ContextHandlerCollection(); - DefaultHandler defaultHandler = new DefaultHandler(); - - Handler.Collection handlers = new Handler.Collection(); - handlers.setHandlers(contexts, defaultHandler); - server.setHandler(handlers); + server.setHandler(contexts); // === jetty-jmx.xml === MBeanContainer mbContainer = new MBeanContainer(ManagementFactory.getPlatformMBeanServer()); diff --git a/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/ManyHandlers.java b/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/ManyHandlers.java index 0190068a8160..b2ac0ef35a22 100644 --- a/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/ManyHandlers.java +++ b/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-embedded/src/main/java/org/eclipse/jetty/ee10/demos/ManyHandlers.java @@ -13,8 +13,28 @@ package org.eclipse.jetty.ee10.demos; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; + +import org.eclipse.jetty.http.HttpHeader; +import org.eclipse.jetty.http.MimeTypes; +import org.eclipse.jetty.server.CustomRequestLog; +import org.eclipse.jetty.server.FormFields; import org.eclipse.jetty.server.Handler; +import org.eclipse.jetty.server.Request; +import org.eclipse.jetty.server.Response; +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.handler.ContextHandler; +import org.eclipse.jetty.server.handler.ContextHandlerCollection; import org.eclipse.jetty.server.handler.DefaultHandler; +import org.eclipse.jetty.server.handler.gzip.GzipHandler; +import org.eclipse.jetty.util.Callback; +import org.eclipse.jetty.util.Fields; +import org.eclipse.jetty.util.ajax.JSON; /** * Frequently many handlers are combined together to handle different aspects of @@ -28,123 +48,111 @@ * * Multiple handlers may be combined with: *
    - *
  • {@link Handler.Wrapper} which will nest one handler inside another. In + *
  • {@link Handler.BaseWrapper} which will nest one handler inside another. In * this example, the HelloHandler is nested inside a HandlerWrapper that sets * the greeting as a request attribute. - *
  • {@link Handler.Collection} which will call a collection of handlers until the + *
  • {@link Handler.Sequence} which will call a collection of handlers until the * request is marked as handled. In this example, a list is used to combine the * param handler (which only handles the request if there are parameters) and * the wrapper handler. Frequently handler lists are terminated with the * {@link DefaultHandler}, which will generate a suitable 404 response if the * request has not been handled. - *
  • {@link Handler.Collection} which will call each handler regardless if the + *
  • {@link Handler.Sequence} which will call each handler regardless if the * request has been handled or not. Typically this is used to always pass a * request to the logging handler. *
*/ public class ManyHandlers { - //TODO fix me /** * Produce output that lists all of the request parameters */ - /* public static class ParamHandler extends AbstractHandler + public static class ParamHandler extends Handler.Abstract { @Override - public void handle(String target, - Request baseRequest, - HttpServletRequest request, - HttpServletResponse response) throws IOException, - ServletException + public boolean process(Request request, Response response, Callback callback) throws Exception { - Map params = request.getParameterMap(); - if (!params.isEmpty()) - { - response.setContentType("text/plain"); - response.getWriter().println(new JSON().toJSON(params)); - baseRequest.setHandled(true); - } + Fields queryFields = Request.extractQueryParameters(request); + Fields formFields = FormFields.from(request).get(); + + response.getHeaders().put(HttpHeader.CONTENT_TYPE, MimeTypes.Type.TEXT_JSON.asString()); + response.write(true, + ByteBuffer.wrap(new JSON().toJSON(List.of(queryFields, formFields)).getBytes(StandardCharsets.UTF_8)), + callback); + + return true; } } - *//** - * Add a request attribute, but produce no output. - *//* - public static class WelcomeWrapHandler extends HandlerWrapper - { - @Override - public void handle(String target, - Request baseRequest, - HttpServletRequest request, - HttpServletResponse response) throws IOException, - ServletException - { - response.setHeader("X-Welcome", "Greetings from WelcomeWrapHandler"); - super.handle(target, baseRequest, request, response); - } - } - - public static Server createServer(int port) throws IOException - { - Server server = new Server(port); - - // create the handlers - Handler param = new ParamHandler(); - Handler.Wrapper wrapper = new WelcomeWrapHandler(); - Handler hello = new HelloHandler(); - GzipHandler gzipHandler = new GzipHandler(); - gzipHandler.setMinGzipSize(10); - gzipHandler.addIncludedMimeTypes("text/plain"); - gzipHandler.addIncludedMimeTypes("text/html"); - - // configure request logging - Path requestLogFile = Files.createTempFile("demo", "log"); - CustomRequestLog ncsaLog = new CustomRequestLog(requestLogFile.toString()); - server.setRequestLog(ncsaLog); - - // create the handlers list - Handler.Collection handlers = new Handler.Collection(); - - // wrap contexts around specific handlers - wrapper.setHandler(hello); - ContextHandler helloContext = new ContextHandler("/hello"); - helloContext.setHandler(wrapper); - - ContextHandler paramContext = new ContextHandler("/params"); - paramContext.setHandler(param); - - ContextHandlerCollection contexts = new ContextHandlerCollection(helloContext, paramContext); - - // Wrap Contexts with GZIP - gzipHandler.setHandler(contexts); - - // Set the top level Handler List - handlers.addHandler(gzipHandler); - handlers.addHandler(new DefaultHandler()); - server.setHandler(handlers); + /** + * Add a request attribute, but produce no output. + */ + public static class WelcomeWrapHandler extends Handler.BaseWrapper + { + @Override + public boolean process(Request request, Response response, Callback callback) throws Exception + { + response.getHeaders().add("X-Welcome", "Greetings from WelcomeWrapHandler"); + return super.process(request, response, callback); + } + } - At this point you have the following handler hierarchy. - * - * Server.handler: - * HandlerList - * \- GzipHandler - * | \- ContextHandlerCollection - * | \- ContextHandler ("/hello") - * | | \- WelcomeWrapHandler - * | | \- HelloHandler - * | \- ContextHandler ("/params") - * | \- ParamHandler - * \- DefaultHandler - + public static Server createServer(int port) throws IOException + { + Server server = new Server(port); + server.setDefaultHandler(new DefaultHandler()); + + // create the handlers + Handler param = new ParamHandler(); + Handler.Wrapper wrapper = new WelcomeWrapHandler(); + Handler hello = new HelloHandler(); + GzipHandler gzipHandler = new GzipHandler(); + gzipHandler.setMinGzipSize(10); + gzipHandler.addIncludedMimeTypes("text/plain"); + gzipHandler.addIncludedMimeTypes("text/html"); + + // configure request logging + Path requestLogFile = Files.createTempFile("demo", "log"); + CustomRequestLog ncsaLog = new CustomRequestLog(requestLogFile.toString()); + server.setRequestLog(ncsaLog); + + // wrap contexts around specific handlers + wrapper.setHandler(hello); + ContextHandler helloContext = new ContextHandler("/hello"); + helloContext.setHandler(wrapper); + + ContextHandler paramContext = new ContextHandler("/params"); + paramContext.setHandler(param); - return server; - } + ContextHandlerCollection contexts = new ContextHandlerCollection(helloContext, paramContext); - public static void main(String[] args) throws Exception - { - int port = ExampleUtil.getPort(args, "jetty.http.port", 8080); - Server server = createServer(port); - server.start(); - server.join(); - }*/ + // Wrap Contexts with GZIP + gzipHandler.setHandler(contexts); + + // Set the top level Handler List + server.setHandler(gzipHandler); + + /* + * At this point you have the following handler hierarchy: + * Server.handler: + * \- GzipHandler + * | \- ContextHandlerCollection + * | \- ContextHandler ("/hello") + * | | \- WelcomeWrapHandler + * | | \- HelloHandler + * | \- ContextHandler ("/params") + * | \- ParamHandler + * \- DefaultHandler + */ + + return server; + } + + public static void main(String[] args) throws Exception + { + int port = ExampleUtil.getPort(args, "jetty.http.port", 8080); + Server server = createServer(port); + server.start(); + server.join(); + } } diff --git a/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-jetty-webapp/src/test/java/org/eclipse/jetty/ee10/TestServer.java b/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-jetty-webapp/src/test/java/org/eclipse/jetty/ee10/TestServer.java index 98d637a9da1e..4c9d27935a44 100644 --- a/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-jetty-webapp/src/test/java/org/eclipse/jetty/ee10/TestServer.java +++ b/jetty-ee10/jetty-ee10-demos/jetty-ee10-demo-jetty-webapp/src/test/java/org/eclipse/jetty/ee10/TestServer.java @@ -25,7 +25,6 @@ import org.eclipse.jetty.jmx.MBeanContainer; import org.eclipse.jetty.server.CustomRequestLog; import org.eclipse.jetty.server.ForwardedRequestCustomizer; -import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.HttpConfiguration; import org.eclipse.jetty.server.HttpConnectionFactory; import org.eclipse.jetty.server.SecureRequestCustomizer; @@ -33,7 +32,6 @@ import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.server.handler.ContextHandler; import org.eclipse.jetty.server.handler.ContextHandlerCollection; -import org.eclipse.jetty.server.handler.DefaultHandler; import org.eclipse.jetty.server.handler.ResourceHandler; import org.eclipse.jetty.session.DefaultSessionCache; import org.eclipse.jetty.session.FileSessionDataStore; @@ -84,7 +82,6 @@ public static void main(String[] args) throws Exception // Handlers ContextHandlerCollection contexts = new ContextHandlerCollection(); - Handler.Collection handlers = new Handler.Collection(contexts, new DefaultHandler()); // Add restart handler to test the ability to save sessions and restart /* TODO: figure out how to do this diff --git a/jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/ServerSupport.java b/jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/ServerSupport.java index 5280c3820b74..9d1da90ec0e1 100644 --- a/jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/ServerSupport.java +++ b/jetty-ee10/jetty-ee10-maven-plugin/src/main/java/org/eclipse/jetty/ee10/maven/plugin/ServerSupport.java @@ -23,12 +23,10 @@ import org.eclipse.jetty.ee10.webapp.Configurations; import org.eclipse.jetty.ee10.webapp.WebAppContext; import org.eclipse.jetty.server.Connector; -import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.RequestLog; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.ContextHandler; import org.eclipse.jetty.server.handler.ContextHandlerCollection; -import org.eclipse.jetty.server.handler.DefaultHandler; import org.eclipse.jetty.util.resource.ResourceFactory; import org.eclipse.jetty.xml.XmlConfiguration; @@ -67,11 +65,7 @@ public static void configureHandlers(Server server, List context if (contexts == null) { contexts = new ContextHandlerCollection(); - Handler.Collection handlers = server.getDescendant(Handler.Collection.class); - if (handlers == null) - server.setHandler(new Handler.Collection(contexts, new DefaultHandler())); - else - handlers.addHandler(contexts); + server.setHandler(contexts); } if (contextHandlers != null) diff --git a/jetty-ee10/jetty-ee10-runner/src/main/java/org/eclipse/jetty/ee10/runner/Runner.java b/jetty-ee10/jetty-ee10-runner/src/main/java/org/eclipse/jetty/ee10/runner/Runner.java index 939f710ae39e..3e9cd1e80af8 100644 --- a/jetty-ee10/jetty-ee10-runner/src/main/java/org/eclipse/jetty/ee10/runner/Runner.java +++ b/jetty-ee10/jetty-ee10-runner/src/main/java/org/eclipse/jetty/ee10/runner/Runner.java @@ -319,6 +319,9 @@ else if ("STOP.PORT".equals(sysProps[0])) _server = new Server(); } + if (_server.getDefaultHandler() == null) + _server.setDefaultHandler(new DefaultHandler()); + //apply jetty config files if there are any if (_configFiles != null) { @@ -331,10 +334,10 @@ else if ("STOP.PORT".equals(sysProps[0])) } //check that everything got configured, and if not, make the handlers - Handler.Collection handlers = _server.getDescendant(Handler.Collection.class); + Handler.Sequence handlers = _server.getDescendant(Handler.Sequence.class); if (handlers == null) { - handlers = new Handler.Collection(); + handlers = new Handler.Sequence(); _server.setHandler(handlers); } @@ -502,7 +505,7 @@ else if ("STOP.PORT".equals(sysProps[0])) } } - protected void prependHandler(Handler handler, Handler.Collection handlers) + protected void prependHandler(Handler handler, Handler.Sequence handlers) { if (handler == null || handlers == null) return; diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletContextHandler.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletContextHandler.java index dbc10dd9b21e..6afc14ca7a62 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletContextHandler.java +++ b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletContextHandler.java @@ -271,10 +271,7 @@ public ServletContextHandler(Container parent, String contextPath, SessionHandle if (contextPath != null) setContextPath(contextPath); - if (parent instanceof Handler.Wrapper) - ((Handler.Wrapper)parent).setHandler(this); - else if (parent instanceof Collection) - parent.addHandler(this); + Container.setAsParent(parent, this); _options = options; _sessionHandler = sessionHandler; @@ -897,14 +894,6 @@ public ServletScopedContext getContext() return (ServletScopedContext)super.getContext(); } - protected void setParent(Container parent) - { - if (parent instanceof Handler.Wrapper) - ((Handler.Wrapper)parent).setHandler(this); - else if (parent instanceof Collection) - ((Collection)parent).addHandler(this); - } - /** * Add a context event listeners. * @@ -996,7 +985,7 @@ else if (handler instanceof ServletHandler) } } - private void doSetHandler(Handler.Nested wrapper, Handler handler) + private void doSetHandler(Handler.Wrapper wrapper, Handler handler) { if (wrapper == this) super.setHandler(handler); @@ -1006,7 +995,7 @@ private void doSetHandler(Handler.Nested wrapper, Handler handler) private void relinkHandlers() { - Handler.Nested handler = this; + Handler.Wrapper handler = this; // link session handler if (getSessionHandler() != null) @@ -1014,9 +1003,9 @@ private void relinkHandlers() while (!(handler.getHandler() instanceof SessionHandler) && !(handler.getHandler() instanceof SecurityHandler) && !(handler.getHandler() instanceof ServletHandler) && - handler.getHandler() instanceof Handler.Nested) + handler.getHandler() instanceof Handler.Wrapper wrapped) { - handler = (Handler.Nested)handler.getHandler(); + handler = wrapped; } if (handler.getHandler() != _sessionHandler) @@ -1029,9 +1018,9 @@ private void relinkHandlers() { while (!(handler.getHandler() instanceof SecurityHandler) && !(handler.getHandler() instanceof ServletHandler) && - handler.getHandler() instanceof Handler.Nested) + handler.getHandler() instanceof Handler.Wrapper wrapped) { - handler = (Handler.Nested)handler.getHandler(); + handler = wrapped; } if (handler.getHandler() != _securityHandler) @@ -1043,9 +1032,9 @@ private void relinkHandlers() if (getServletHandler() != null) { while (!(handler.getHandler() instanceof ServletHandler) && - handler.getHandler() instanceof Handler.Nested) + handler.getHandler() instanceof Handler.Wrapper wrapped) { - handler = (Handler.Nested)handler.getHandler(); + handler = wrapped; } if (handler.getHandler() != _servletHandler) @@ -1623,7 +1612,7 @@ public void callContextDestroyed(ServletContextListener l, ServletContextEvent e l.contextDestroyed(e); } - private void replaceHandler(Handler.Nested handler, Handler.Nested replacement) + private void replaceHandler(Handler.Wrapper handler, Handler.Wrapper replacement) { if (isStarted()) throw new IllegalStateException("STARTED"); @@ -1643,7 +1632,7 @@ private void replaceHandler(Handler.Nested handler, Handler.Nested replacement) break; } - wrapper = (wrapper.getHandler() instanceof Handler.Wrapper) ? (Handler.Wrapper)wrapper.getHandler() : null; + wrapper = (wrapper.getHandler() instanceof Handler.Wrapper wrapped) ? wrapped : null; } } @@ -1686,7 +1675,7 @@ public void setServletHandler(ServletHandler servletHandler) * but after any other HandlerWrappers. */ @Override - public void insertHandler(Handler.Nested handler) + public void insertHandler(Handler.Wrapper handler) { if (handler instanceof SessionHandler) setSessionHandler((SessionHandler)handler); @@ -1696,17 +1685,13 @@ else if (handler instanceof ServletHandler) setServletHandler((ServletHandler)handler); else { - Handler.Nested tail = handler; - while (tail.getHandler() instanceof Handler.Wrapper) - { - tail = (Handler.Wrapper)tail.getHandler(); - } + Handler.Wrapper tail = handler.getTail(); if (tail.getHandler() != null) throw new IllegalArgumentException("bad tail of inserted wrapper chain"); // Skip any injected handlers - Handler.Nested h = this; - while (h.getHandler() instanceof Handler.Nested wrapper) + Handler.Wrapper h = this; + while (h.getHandler() instanceof Handler.Wrapper wrapper) { if (wrapper instanceof SessionHandler || wrapper instanceof SecurityHandler || diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletHandler.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletHandler.java index 61d41481f083..afde4f2b68cf 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletHandler.java +++ b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/ServletHandler.java @@ -82,7 +82,7 @@ * method must be called manually after start(). */ @ManagedObject("Servlet Handler") -public class ServletHandler extends Handler.Wrapper +public class ServletHandler extends Handler.BaseWrapper { private static final Logger LOG = LoggerFactory.getLogger(ServletHandler.class); diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/SessionHandler.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/SessionHandler.java index f79f166f25d7..05c97b707d97 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/SessionHandler.java +++ b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/SessionHandler.java @@ -51,7 +51,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class SessionHandler extends AbstractSessionManager implements Handler.Nested +public class SessionHandler extends AbstractSessionManager implements Handler.Wrapper { static final Logger LOG = LoggerFactory.getLogger(SessionHandler.class); @@ -93,7 +93,7 @@ public Handler getHandler() @Override public void setHandler(Handler handler) { - _handler = Nested.updateHandler(this, handler); + _handler = Wrapper.updateHandler(this, handler); } @Override diff --git a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/SecurityHandler.java b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/SecurityHandler.java index 55186d42679d..a5a85b9caefc 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/SecurityHandler.java +++ b/jetty-ee10/jetty-ee10-servlet/src/main/java/org/eclipse/jetty/ee10/servlet/security/SecurityHandler.java @@ -54,7 +54,7 @@ * that start with "org.eclipse.jetty.security." that do not have * values in the SecurityHandler init parameters, are copied. */ -public abstract class SecurityHandler extends Handler.Wrapper implements Authenticator.AuthConfiguration +public abstract class SecurityHandler extends Handler.BaseWrapper implements Authenticator.AuthConfiguration { private static final Logger LOG = LoggerFactory.getLogger(SecurityHandler.class); private static final List __knownAuthenticatorFactories = new ArrayList<>(); diff --git a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/AsyncContextDispatchWithQueryStrings.java b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/AsyncContextDispatchWithQueryStrings.java index fe3fd9bdb0a6..9b12135fc89f 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/AsyncContextDispatchWithQueryStrings.java +++ b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/AsyncContextDispatchWithQueryStrings.java @@ -21,10 +21,8 @@ import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.eclipse.jetty.server.Connector; -import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.LocalConnector; import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.handler.DefaultHandler; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -54,7 +52,7 @@ public void setUp() throws Exception _contextHandler.addServlet(new ServletHolder(new TestServlet()), "/firstDispatchWithNewQueryString"); _contextHandler.addServlet(new ServletHolder(new TestServlet()), "/secondDispatchNewValueForExistingQueryString"); - _server.setHandler(new Handler.Collection(_contextHandler, new DefaultHandler())); + _server.setHandler(_contextHandler); _server.start(); } diff --git a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/AsyncContextTest.java b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/AsyncContextTest.java index 907deac9de6b..ae9a07f4755d 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/AsyncContextTest.java +++ b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/AsyncContextTest.java @@ -29,12 +29,10 @@ import jakarta.servlet.http.HttpServletResponseWrapper; import org.eclipse.jetty.http.HttpTester; import org.eclipse.jetty.logging.StacklessLogging; -import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.HttpChannel; import org.eclipse.jetty.server.HttpConnectionFactory; import org.eclipse.jetty.server.LocalConnector; import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.handler.DefaultHandler; import org.eclipse.jetty.util.StringUtil; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -92,7 +90,7 @@ public void setUp() throws Exception errorHandler.addErrorPage(500, "/error/500"); errorHandler.addErrorPage(IOException.class.getName(), "/error/IOE"); - _server.setHandler(new Handler.Collection(_contextHandler, new DefaultHandler())); + _server.setHandler(_contextHandler); _server.start(); } diff --git a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ErrorPageTest.java b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ErrorPageTest.java index bcdcf9eda059..521f5716d620 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ErrorPageTest.java +++ b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ErrorPageTest.java @@ -29,7 +29,6 @@ import jakarta.servlet.Filter; import jakarta.servlet.FilterChain; import jakarta.servlet.FilterConfig; -import jakarta.servlet.RequestDispatcher; import jakarta.servlet.Servlet; import jakarta.servlet.ServletException; import jakarta.servlet.ServletRequest; @@ -104,7 +103,7 @@ public void init() throws Exception _context.addServlet(ErrorContentTypeCharsetWriterInitializedServlet.class, "/error-mime-charset-writer/*"); _context.addServlet(ExceptionServlet.class, "/exception-servlet"); - Handler.Wrapper noopHandler = new Handler.Wrapper() + Handler.Wrapper noopHandler = new Handler.BaseWrapper() { @Override public boolean process(Request request, Response response, Callback callback) throws Exception diff --git a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ServletContextHandlerTest.java b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ServletContextHandlerTest.java index 1b5dc69f0839..70829dfab720 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ServletContextHandlerTest.java +++ b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ServletContextHandlerTest.java @@ -1728,7 +1728,7 @@ public void testHandlerBeforeServletHandler() throws Exception { ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS); - Handler.Wrapper extra = new Handler.Wrapper(); + Handler.Wrapper extra = new Handler.BaseWrapper(); context.getSessionHandler().insertHandler(extra); @@ -1790,10 +1790,10 @@ public void testSetSecurityHandler() SecurityHandler securityHandler = context.getSecurityHandler(); //check the handler linking order - Handler.Nested h = (Handler.Nested)context.getHandler(); + Handler.Wrapper h = (Handler.Wrapper)context.getHandler(); assertSame(h, sessionHandler); - h = (Handler.Nested)h.getHandler(); + h = (Handler.Wrapper)h.getHandler(); assertSame(h, securityHandler); //replace the security handler @@ -1830,10 +1830,10 @@ protected boolean checkWebResourcePermissions(String pathInContext, Request requ context.setSecurityHandler(myHandler); assertSame(myHandler, context.getSecurityHandler()); - h = (Handler.Nested)context.getHandler(); + h = (Handler.Wrapper)context.getHandler(); assertSame(h, sessionHandler); - h = (Handler.Nested)h.getHandler(); + h = (Handler.Wrapper)h.getHandler(); assertSame(h, myHandler); } @@ -1915,7 +1915,7 @@ public void contextDestroyed(ServletContextEvent sce) @Test public void testFallThrough() throws Exception { - Handler.Collection list = new Handler.Collection(); + Handler.Sequence list = new Handler.Sequence(); _server.setHandler(list); ServletContextHandler root = new ServletContextHandler(list, "/", ServletContextHandler.SESSIONS); diff --git a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ServletRequestLogTest.java b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ServletRequestLogTest.java index 27f56b1ec428..a57f63761f7c 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ServletRequestLogTest.java +++ b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ServletRequestLogTest.java @@ -33,7 +33,6 @@ import org.eclipse.jetty.http.HttpStatus; import org.eclipse.jetty.logging.StacklessLogging; import org.eclipse.jetty.server.Connector; -import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.HttpChannel; import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.RequestLog; @@ -293,15 +292,12 @@ public void testLogHandlerCollection(Servlet testServlet, String requestPath, St server.setConnectors(new Connector[]{connector}); // First the behavior as defined in etc/jetty.xml - // id="Handlers" - Handler.Collection handlers = new Handler.Collection(); // id="Contexts" ContextHandlerCollection contexts = new ContextHandlerCollection(); // id="DefaultHandler" DefaultHandler defaultHandler = new DefaultHandler(); - handlers.setHandlers(contexts, defaultHandler); - server.setHandler(handlers); + server.setHandler(contexts); // Next the behavior as defined by etc/jetty-requestlog.xml // the id="RequestLog" @@ -377,8 +373,7 @@ public void testLogHandlerCollectionErrorHandlerServerBean(Servlet testServlet, server.addBean(errorHandler); ContextHandlerCollection contexts = new ContextHandlerCollection(); - DefaultHandler defaultHandler = new DefaultHandler(); - server.setHandler(new Handler.Collection(contexts, defaultHandler)); + server.setHandler(contexts); // Next the behavior as defined by etc/jetty-requestlog.xml // the id="RequestLog" @@ -451,7 +446,7 @@ public void testLogHandlerCollectionSimpleErrorPageMapping(Servlet testServlet, server.setConnectors(new Connector[]{connector}); ContextHandlerCollection contexts = new ContextHandlerCollection(); - server.setHandler(new Handler.Collection(contexts, new DefaultHandler())); + server.setHandler(contexts); // Next the behavior as defined by etc/jetty-requestlog.xml // the id="RequestLog" @@ -531,9 +526,7 @@ public void testLogHandlerWrapped(Servlet testServlet, String requestPath, Strin // First the behavior as defined in etc/jetty.xml (as is) // id="Contexts" ContextHandlerCollection contexts = new ContextHandlerCollection(); - // id="DefaultHandler" - DefaultHandler defaultHandler = new DefaultHandler(); - server.setHandler(new Handler.Collection(contexts, defaultHandler)); + server.setHandler(contexts); // Next the proposed behavioral change to etc/jetty-requestlog.xml // the id="RequestLog" diff --git a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ServletUpgradeTest.java b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ServletUpgradeTest.java index def8d6c1918a..40d4b9188f48 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ServletUpgradeTest.java +++ b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ServletUpgradeTest.java @@ -27,10 +27,8 @@ import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpUpgradeHandler; import jakarta.servlet.http.WebConnection; -import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; -import org.eclipse.jetty.server.handler.DefaultHandler; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; @@ -62,9 +60,7 @@ public void setUp() throws Exception contextHandler.setContextPath("/"); contextHandler.addServlet(new ServletHolder(new TestServlet()), "/TestServlet"); - Handler.Collection handlers = new Handler.Collection(); - handlers.setHandlers(contextHandler, new DefaultHandler()); - server.setHandler(handlers); + server.setHandler(contextHandler); server.start(); port = connector.getLocalPort(); diff --git a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ServletWrapperTest.java b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ServletWrapperTest.java index 3871f1f9468d..89712961602b 100644 --- a/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ServletWrapperTest.java +++ b/jetty-ee10/jetty-ee10-servlet/src/test/java/org/eclipse/jetty/ee10/servlet/ServletWrapperTest.java @@ -28,11 +28,9 @@ import jakarta.servlet.http.HttpServletRequestWrapper; import jakarta.servlet.http.HttpServletResponse; import org.eclipse.jetty.http.HttpTester; -import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.LocalConnector; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; -import org.eclipse.jetty.server.handler.DefaultHandler; import org.eclipse.jetty.util.component.LifeCycle; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -66,7 +64,7 @@ public void startServer() throws Exception FilterHolder filterHolder = context.addFilter(WrapFilter.class, "/*", EnumSet.of(DispatcherType.REQUEST)); filterHolder.setAsyncSupported(true); - server.setHandler(new Handler.Collection(context, new DefaultHandler())); + server.setHandler(context); server.start(); } diff --git a/jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/WebAppContext.java b/jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/WebAppContext.java index ff1282bf7ee3..600d87428afc 100644 --- a/jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/WebAppContext.java +++ b/jetty-ee10/jetty-ee10-webapp/src/main/java/org/eclipse/jetty/ee10/webapp/WebAppContext.java @@ -50,6 +50,7 @@ import org.eclipse.jetty.ee10.servlet.security.ConstraintSecurityHandler; import org.eclipse.jetty.ee10.servlet.security.SecurityHandler; import org.eclipse.jetty.server.Connector; +import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.util.ExceptionUtil; import org.eclipse.jetty.util.IO; @@ -222,8 +223,7 @@ public WebAppContext(Container parent, String contextPath, SessionHandler sessio super(null, contextPath, sessionHandler, securityHandler, servletHandler, errorHandler, options); setErrorProcessor(errorHandler != null ? errorHandler : new ErrorPageErrorHandler()); setProtectedTargets(__dftProtectedTargets); - if (parent != null) - setParent(parent); + Handler.Container.setAsParent(parent, this); } @Override diff --git a/jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/HugeResourceTest.java b/jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/HugeResourceTest.java index ec8c8bfd0925..873d4263678e 100644 --- a/jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/HugeResourceTest.java +++ b/jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/HugeResourceTest.java @@ -54,12 +54,10 @@ import org.eclipse.jetty.http.MultiPart; import org.eclipse.jetty.io.ClientConnector; import org.eclipse.jetty.io.Content; -import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.HttpConfiguration; import org.eclipse.jetty.server.HttpConnectionFactory; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; -import org.eclipse.jetty.server.handler.DefaultHandler; import org.eclipse.jetty.server.handler.DelayedHandler; import org.eclipse.jetty.toolchain.test.FS; import org.eclipse.jetty.toolchain.test.MavenTestingUtils; @@ -227,7 +225,7 @@ public void startServer() throws Exception server.setHandler(delayedHandler); httpConfig.setDelayDispatchUntilContent(false); - delayedHandler.setHandler(new Handler.Collection(context, new DefaultHandler())); + delayedHandler.setHandler(context); server.start(); } diff --git a/jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/WebAppContextTest.java b/jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/WebAppContextTest.java index 7dbc788eee79..41c5d8b30d29 100644 --- a/jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/WebAppContextTest.java +++ b/jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/WebAppContextTest.java @@ -247,7 +247,7 @@ public void testRealPathDoesNotExist() throws Exception public void testContextWhiteList() throws Exception { Server server = newServer(); - Handler.Collection handlers = new Handler.Collection(); + Handler.Sequence handlers = new Handler.Sequence(); WebAppContext contextA = new WebAppContext(".", "/A"); contextA.addServlet(ServletA.class, "/s"); @@ -319,14 +319,12 @@ public void testUnProtectedTarget(String target) throws Exception { Server server = newServer(); - Handler.Collection handlers = new Handler.Collection(); ContextHandlerCollection contexts = new ContextHandlerCollection(); WebAppContext context = new WebAppContext(); Path testWebapp = MavenTestingUtils.getProjectDirPath("src/test/webapp"); context.setBaseResourceAsPath(testWebapp); context.setContextPath("/"); - server.setHandler(handlers); - handlers.addHandler(contexts); + server.setHandler(contexts); contexts.addHandler(context); LocalConnector connector = new LocalConnector(server); @@ -362,14 +360,12 @@ public void testProtectedTarget(String target) throws Exception { Server server = newServer(); - Handler.Collection handlers = new Handler.Collection(); ContextHandlerCollection contexts = new ContextHandlerCollection(); WebAppContext context = new WebAppContext(); Path testWebapp = MavenTestingUtils.getProjectDirPath("src/test/webapp"); context.setBaseResourceAsPath(testWebapp); context.setContextPath("/"); - server.setHandler(handlers); - handlers.addHandler(contexts); + server.setHandler(contexts); contexts.addHandler(context); LocalConnector connector = new LocalConnector(server); @@ -395,14 +391,12 @@ public void testProtectedTargetFailure(String path) throws Exception server.addConnector(connector); connector.getConnectionFactory(HttpConnectionFactory.class).getHttpConfiguration().setUriCompliance(UriCompliance.LEGACY); - Handler.Collection handlers = new Handler.Collection(); ContextHandlerCollection contexts = new ContextHandlerCollection(); WebAppContext context = new WebAppContext(); Path testWebapp = MavenTestingUtils.getProjectDirPath("src/test/webapp"); context.setBaseResourceAsPath(testWebapp); context.setContextPath("/"); - server.setHandler(handlers); - handlers.addHandler(contexts); + server.setHandler(contexts); contexts.addHandler(context); server.start(); @@ -416,14 +410,12 @@ public void testNullPath() throws Exception { Server server = newServer(); - Handler.Collection handlers = new Handler.Collection(); ContextHandlerCollection contexts = new ContextHandlerCollection(); WebAppContext context = new WebAppContext(); Path testWebapp = MavenTestingUtils.getProjectDirPath("src/test/webapp"); context.setBaseResourceAsPath(testWebapp); context.setContextPath("/"); - server.setHandler(handlers); - handlers.addHandler(contexts); + server.setHandler(contexts); contexts.addHandler(context); LocalConnector connector = new LocalConnector(server); @@ -441,7 +433,6 @@ public void testNullSessionAndSecurityHandler() throws Exception { Server server = newServer(); - Handler.Collection handlers = new Handler.Collection(); ContextHandlerCollection contexts = new ContextHandlerCollection(); WebAppContext context = new WebAppContext(null, null, null, null, null, new ErrorPageErrorHandler(), ServletContextHandler.NO_SESSIONS | ServletContextHandler.NO_SECURITY); @@ -449,8 +440,7 @@ public void testNullSessionAndSecurityHandler() throws Exception Path testWebapp = MavenTestingUtils.getProjectDirPath("src/test/webapp"); context.setBaseResourceAsPath(testWebapp); - server.setHandler(handlers); - handlers.addHandler(contexts); + server.setHandler(contexts); contexts.addHandler(context); LocalConnector connector = new LocalConnector(server); @@ -672,7 +662,7 @@ void testSetServerPropagation() WebAppContext context = new WebAppContext(); context.setContextPath("/"); DefaultHandler handler = new DefaultHandler(); - server.setHandler(new Handler.Collection(context, handler)); + server.setHandler(new Handler.Sequence(context, handler)); assertThat(handler.getServer(), sameInstance(server)); } diff --git a/jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/WebAppDefaultServletCacheTest.java b/jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/WebAppDefaultServletCacheTest.java index 8055e338e088..2fbd946075aa 100644 --- a/jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/WebAppDefaultServletCacheTest.java +++ b/jetty-ee10/jetty-ee10-webapp/src/test/java/org/eclipse/jetty/ee10/webapp/WebAppDefaultServletCacheTest.java @@ -42,7 +42,7 @@ protected void setUp() throws Exception URI uri = getClass().getResource("/org/acme").toURI(); resourcePath = Paths.get(uri); - server.addHandler(new WebAppContext(uri.toString(), "/")); + server.setHandler(new WebAppContext(uri.toString(), "/")); server.start(); } diff --git a/jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/DeploymentExceptionTest.java b/jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/DeploymentExceptionTest.java index b125f6dfcf6f..84c4739fcca2 100644 --- a/jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/DeploymentExceptionTest.java +++ b/jetty-ee10/jetty-ee10-websocket/jetty-ee10-websocket-jakarta-tests/src/test/java/org/eclipse/jetty/ee10/websocket/jakarta/tests/server/DeploymentExceptionTest.java @@ -68,13 +68,13 @@ public static Stream data() } private Server server; - private Handler.Collection contexts; + private Handler.Sequence contexts; @BeforeEach public void startServer() throws Exception { server = new Server(0); - contexts = new Handler.Collection(); + contexts = new Handler.Sequence(); server.setHandler(contexts); server.start(); } diff --git a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ExampleServer.java b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ExampleServer.java index c818baedb158..c585c850aedb 100644 --- a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ExampleServer.java +++ b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ExampleServer.java @@ -15,11 +15,8 @@ import org.eclipse.jetty.ee9.servlet.ServletContextHandler; import org.eclipse.jetty.server.Connector; -import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; -import org.eclipse.jetty.server.handler.ContextHandlerCollection; -import org.eclipse.jetty.server.handler.DefaultHandler; public class ExampleServer { @@ -36,7 +33,7 @@ public static Server createServer(int port) context.addServlet(HelloServlet.class, "/hello"); context.addServlet(AsyncEchoServlet.class, "/echo/*"); - server.setHandler(new Handler.Collection(context.getCoreContextHandler(), new DefaultHandler())); + server.setHandler(context); return server; } diff --git a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/FileServer.java b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/FileServer.java index 50b4026b51c2..5edfc27741c2 100644 --- a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/FileServer.java +++ b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/FileServer.java @@ -16,7 +16,6 @@ import java.nio.file.Path; import java.nio.file.Paths; -import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.DefaultHandler; import org.eclipse.jetty.server.handler.ResourceHandler; @@ -35,6 +34,7 @@ public static Server createServer(int port, Resource baseResource) throws Except // then a randomly available port will be assigned that you can either look in the logs for the port, // or programmatically obtain it for use in test cases. Server server = new Server(port); + server.setDefaultHandler(new DefaultHandler()); // Create the ResourceHandler. It is the object that will actually handle the request for a given file. It is // a Jetty Handler object so it is suitable for chaining with other handlers as you will see in other examples. @@ -47,7 +47,7 @@ public static Server createServer(int port, Resource baseResource) throws Except resourceHandler.setBaseResource(baseResource); // Add the ResourceHandler to the server. - server.setHandler(new Handler.Collection(resourceHandler, new DefaultHandler())); + server.setHandler(resourceHandler); return server; } diff --git a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/JarServer.java b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/JarServer.java index 39119aba5fd8..75044a606046 100644 --- a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/JarServer.java +++ b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/JarServer.java @@ -23,9 +23,7 @@ import org.eclipse.jetty.ee9.servlet.DefaultServlet; import org.eclipse.jetty.ee9.servlet.ServletContextHandler; import org.eclipse.jetty.ee9.servlet.ServletHolder; -import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.handler.DefaultHandler; import org.eclipse.jetty.util.FileID; import org.eclipse.jetty.util.URIUtil; import org.eclipse.jetty.util.resource.Resource; @@ -55,7 +53,7 @@ public static Server createServer(int port, URI jarBase) throws Exception ServletHolder defaultHolder = new ServletHolder("default", new DefaultServlet()); context.addServlet(defaultHolder, "/"); - server.setHandler(new Handler.Collection(context.getCoreContextHandler(), new DefaultHandler())); + server.setHandler(context); return server; } diff --git a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ManyHandlers.java b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ManyHandlers.java index 09c208eab155..3330d0dbfb97 100644 --- a/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ManyHandlers.java +++ b/jetty-ee9/jetty-ee9-demos/jetty-ee9-demo-embedded/src/main/java/org/eclipse/jetty/ee9/demos/ManyHandlers.java @@ -44,10 +44,10 @@ * * Multiple handlers may be combined with: *
    - *
  • {@link Handler.Wrapper} which will nest one handler inside another. In + *
  • {@link Handler.BaseWrapper} which will nest one handler inside another. In * this example, the HelloHandler is nested inside a HandlerWrapper that sets * the greeting as a request attribute. - *
  • {@link Handler.Collection} which will call a collection of handlers until the + *
  • {@link Handler.Sequence} which will call a collection of handlers until the * request is marked as handled. In this example, a list is used to combine the * param handler (which only handles the request if there are parameters) and * the wrapper handler. Frequently handler lists are terminated with the @@ -78,7 +78,7 @@ public boolean process(Request request, Response response, Callback callback) th /** * Add a request attribute, but produce no output. */ - public static class WelcomeWrapHandler extends Handler.Wrapper + public static class WelcomeWrapHandler extends Handler.BaseWrapper { @Override public boolean process(Request request, Response response, Callback callback) throws Exception @@ -94,6 +94,7 @@ public boolean process(Request request, Response response, Callback callback) th public static Server createServer(int port) throws IOException { Server server = new Server(port); + server.setDefaultHandler(new DefaultHandler()); // create the handlers Handler param = new ParamHandler(); @@ -109,9 +110,6 @@ public static Server createServer(int port) throws IOException CustomRequestLog ncsaLog = new CustomRequestLog(requestLogFile.toString()); server.setRequestLog(ncsaLog); - // create the handlers list - Handler.Collection handlers = new Handler.Collection(); - // wrap contexts around specific handlers wrapper.setHandler(hello); ContextHandler helloContext = new ContextHandler("/hello"); @@ -126,15 +124,12 @@ public static Server createServer(int port) throws IOException gzipHandler.setHandler(contexts); // Set the top level Handler List - handlers.addHandler(gzipHandler); - handlers.addHandler(new DefaultHandler()); - server.setHandler(handlers); + server.setHandler(gzipHandler); server.setDumpAfterStart(true); /* At this point you have the following handler hierarchy. * - * Server.handler: - * HandlerList + * Server: * \- GzipHandler * | \- ContextHandlerCollection * | \- ContextHandler ("/hello") diff --git a/jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/ServerSupport.java b/jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/ServerSupport.java index dd726535fda1..2f728fc27ffa 100644 --- a/jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/ServerSupport.java +++ b/jetty-ee9/jetty-ee9-maven-plugin/src/main/java/org/eclipse/jetty/ee9/maven/plugin/ServerSupport.java @@ -23,12 +23,10 @@ import org.eclipse.jetty.ee9.webapp.Configurations; import org.eclipse.jetty.ee9.webapp.WebAppContext; import org.eclipse.jetty.server.Connector; -import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.RequestLog; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.ContextHandler; import org.eclipse.jetty.server.handler.ContextHandlerCollection; -import org.eclipse.jetty.server.handler.DefaultHandler; import org.eclipse.jetty.util.resource.ResourceFactory; import org.eclipse.jetty.xml.XmlConfiguration; @@ -68,11 +66,7 @@ public static void configureHandlers(Server server, List context if (contexts == null) { contexts = new ContextHandlerCollection(); - Handler.Collection handlers = server.getDescendant(Handler.Collection.class); - if (handlers == null) - server.setHandler(new Handler.Collection(contexts, new DefaultHandler())); - else - handlers.addHandler(contexts); + server.setHandler(contexts); } if (contextHandlers != null) diff --git a/jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/ContextHandler.java b/jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/ContextHandler.java index 618775ef08bd..e2333aad4f29 100644 --- a/jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/ContextHandler.java +++ b/jetty-ee9/jetty-ee9-nested/src/main/java/org/eclipse/jetty/ee9/nested/ContextHandler.java @@ -248,8 +248,7 @@ protected ContextHandler(APIContext context, _initParams = new HashMap<>(); if (contextPath != null) setContextPath(contextPath); - if (parent != null) - parent.addHandler(_coreContextHandler); + Handler.Container.setAsParent(parent, _coreContextHandler); } @Override @@ -2503,11 +2502,9 @@ protected void doStop() throws Exception } @Override - public void insertHandler(Nested handler) + public void insertHandler(Handler.Wrapper handler) { - Nested tail = handler; - while (tail.getHandler() instanceof Handler.Wrapper) - tail = (Handler.Wrapper)tail.getHandler(); + Handler.Wrapper tail = handler.getTail(); if (tail.getHandler() != null) throw new IllegalArgumentException("bad tail of inserted wrapper chain"); diff --git a/jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/AsyncCompletionTest.java b/jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/AsyncCompletionTest.java index d9f4c8795958..d23c183ad815 100644 --- a/jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/AsyncCompletionTest.java +++ b/jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/AsyncCompletionTest.java @@ -114,7 +114,7 @@ public void proceed() @Override protected void startServer(Handler handler) throws Exception { - org.eclipse.jetty.server.Handler.Nested terminateHandler = new org.eclipse.jetty.server.Handler.Wrapper() + org.eclipse.jetty.server.Handler.Wrapper terminateHandler = new org.eclipse.jetty.server.Handler.BaseWrapper() { @Override public boolean process(org.eclipse.jetty.server.Request request, Response response, Callback callback) throws Exception diff --git a/jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/ContextHandlerTest.java b/jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/ContextHandlerTest.java index d17836a8878b..21df350b82d1 100644 --- a/jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/ContextHandlerTest.java +++ b/jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/ContextHandlerTest.java @@ -31,7 +31,6 @@ import org.eclipse.jetty.http.MimeTypes; import org.eclipse.jetty.logging.StacklessLogging; import org.eclipse.jetty.server.Context; -import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.LocalConnector; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.ContextHandlerCollection; @@ -61,11 +60,9 @@ public void before() throws Exception _connector = new LocalConnector(_server); _server.addConnector(_connector); - Handler.Collection handlers = new Handler.Collection(); - _server.setHandler(handlers); _contextHandler = new ContextHandler(); - handlers.setHandlers(_contextHandler.getCoreContextHandler()); + _server.setHandler(_contextHandler); } @AfterEach diff --git a/jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/RequestTest.java b/jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/RequestTest.java index bd32acfd0113..07da0e897247 100644 --- a/jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/RequestTest.java +++ b/jetty-ee9/jetty-ee9-nested/src/test/java/org/eclipse/jetty/ee9/nested/RequestTest.java @@ -996,7 +996,7 @@ public void testIPv6() throws Exception }); final InetSocketAddress remoteAddr = new InetSocketAddress(local, 32768); - org.eclipse.jetty.server.Handler.Wrapper handler = new org.eclipse.jetty.server.Handler.Wrapper() + org.eclipse.jetty.server.Handler.Wrapper handler = new org.eclipse.jetty.server.Handler.BaseWrapper() { @Override public boolean process(org.eclipse.jetty.server.Request request, org.eclipse.jetty.server.Response response, Callback callback) throws Exception diff --git a/jetty-ee9/jetty-ee9-security/src/test/java/org/eclipse/jetty/ee9/security/AliasedConstraintTest.java b/jetty-ee9/jetty-ee9-security/src/test/java/org/eclipse/jetty/ee9/security/AliasedConstraintTest.java index fa4825863b1f..8c9613e17beb 100644 --- a/jetty-ee9/jetty-ee9-security/src/test/java/org/eclipse/jetty/ee9/security/AliasedConstraintTest.java +++ b/jetty-ee9/jetty-ee9-security/src/test/java/org/eclipse/jetty/ee9/security/AliasedConstraintTest.java @@ -24,10 +24,8 @@ import org.eclipse.jetty.ee9.nested.SessionHandler; import org.eclipse.jetty.http.HttpStatus; import org.eclipse.jetty.server.Connector; -import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.LocalConnector; import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.handler.DefaultHandler; import org.eclipse.jetty.toolchain.test.MavenTestingUtils; import org.eclipse.jetty.util.security.Constraint; import org.eclipse.jetty.util.security.Password; @@ -75,10 +73,7 @@ public static void startServer() throws Exception context.setContextPath("/ctx"); context.setResourceBase(MavenTestingUtils.getTargetFile("test-classes/docroot").getAbsolutePath()); - Handler.Collection handlers = new Handler.Collection(); - handlers.addHandler(context); - handlers.addHandler(new DefaultHandler()); - server.setHandler(handlers); + server.setHandler(context); context.setHandler(session); diff --git a/jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/AsyncContextDispatchWithQueryStrings.java b/jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/AsyncContextDispatchWithQueryStrings.java index 8a5d259e228d..d4fab6b84359 100644 --- a/jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/AsyncContextDispatchWithQueryStrings.java +++ b/jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/AsyncContextDispatchWithQueryStrings.java @@ -21,10 +21,8 @@ import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.eclipse.jetty.server.Connector; -import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.LocalConnector; import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.handler.DefaultHandler; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -54,9 +52,7 @@ public void setUp() throws Exception _contextHandler.addServlet(new ServletHolder(new TestServlet()), "/firstDispatchWithNewQueryString"); _contextHandler.addServlet(new ServletHolder(new TestServlet()), "/secondDispatchNewValueForExistingQueryString"); - Handler.Collection handlers = new Handler.Collection(); - handlers.setHandlers(_contextHandler.getCoreContextHandler(), new DefaultHandler()); - _server.setHandler(handlers); + _server.setHandler(_contextHandler); _server.start(); } diff --git a/jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/AsyncContextTest.java b/jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/AsyncContextTest.java index fc75284457ac..399f4a86c00e 100644 --- a/jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/AsyncContextTest.java +++ b/jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/AsyncContextTest.java @@ -32,11 +32,9 @@ import org.eclipse.jetty.ee9.nested.Request; import org.eclipse.jetty.http.HttpTester; import org.eclipse.jetty.logging.StacklessLogging; -import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.HttpConnectionFactory; import org.eclipse.jetty.server.LocalConnector; import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.handler.DefaultHandler; import org.eclipse.jetty.util.StringUtil; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -95,9 +93,7 @@ public void setUp() throws Exception errorHandler.addErrorPage(500, "/error/500"); errorHandler.addErrorPage(IOException.class.getName(), "/error/IOE"); - Handler.Collection handlers = new Handler.Collection(); - _server.setHandler(handlers); - handlers.setHandlers(_contextHandler.getCoreContextHandler(), new DefaultHandler()); + _server.setHandler(_contextHandler); _server.start(); } diff --git a/jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/GzipHandlerIsHandledTest.java b/jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/GzipHandlerIsHandledTest.java index 5eebafb4ca52..e4afc3c55836 100644 --- a/jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/GzipHandlerIsHandledTest.java +++ b/jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/GzipHandlerIsHandledTest.java @@ -22,7 +22,6 @@ import org.eclipse.jetty.server.Response; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; -import org.eclipse.jetty.server.handler.DefaultHandler; import org.eclipse.jetty.server.handler.ResourceHandler; import org.eclipse.jetty.server.handler.gzip.GzipHandler; import org.eclipse.jetty.toolchain.test.jupiter.WorkDir; @@ -81,7 +80,7 @@ public void tearDown() @Test public void testRequest() throws Exception { - Handler.Collection handlers = new Handler.Collection(); + Handler.Sequence handlers = new Handler.Sequence(); ResourceHandler resourceHandler = new ResourceHandler(); resourceHandler.setBaseResource(ResourceFactory.root().newResource(workDir.getPath())); @@ -92,7 +91,7 @@ public void testRequest() throws Exception gzipHandler.setMinGzipSize(32); gzipHandler.setHandler(new EventHandler(events, "GzipHandler-wrapped-handler")); - handlers.setHandlers(resourceHandler, gzipHandler, new DefaultHandler()); + handlers.setHandlers(resourceHandler, gzipHandler); startServer(handlers); diff --git a/jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/ServletUpgradeTest.java b/jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/ServletUpgradeTest.java index b4c99b18f77d..05b8d330adfd 100644 --- a/jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/ServletUpgradeTest.java +++ b/jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/ServletUpgradeTest.java @@ -29,7 +29,6 @@ import jakarta.servlet.http.WebConnection; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; -import org.eclipse.jetty.server.handler.DefaultHandler; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; @@ -62,9 +61,7 @@ public void setUp() throws Exception contextHandler.setContextPath("/"); contextHandler.addServlet(new ServletHolder(new TestServlet()), "/TestServlet"); - org.eclipse.jetty.server.Handler.Collection handlers = new org.eclipse.jetty.server.Handler.Collection(); - handlers.setHandlers(contextHandler.getCoreContextHandler(), new DefaultHandler()); - server.setHandler(handlers); + server.setHandler(contextHandler); server.start(); port = connector.getLocalPort(); diff --git a/jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/ServletWrapperTest.java b/jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/ServletWrapperTest.java index 5a5474e35557..51afd52d0b7e 100644 --- a/jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/ServletWrapperTest.java +++ b/jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/ServletWrapperTest.java @@ -28,11 +28,9 @@ import jakarta.servlet.http.HttpServletRequestWrapper; import jakarta.servlet.http.HttpServletResponse; import org.eclipse.jetty.http.HttpTester; -import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.LocalConnector; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; -import org.eclipse.jetty.server.handler.DefaultHandler; import org.eclipse.jetty.util.component.LifeCycle; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -66,9 +64,7 @@ public void startServer() throws Exception FilterHolder filterHolder = context.addFilter(WrapFilter.class, "/*", EnumSet.of(DispatcherType.REQUEST)); filterHolder.setAsyncSupported(true); - Handler.Collection handlers = new Handler.Collection(); - handlers.setHandlers(context.getCoreContextHandler(), new DefaultHandler()); - server.setHandler(handlers); + server.setHandler(context); server.start(); } diff --git a/jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/StaticFromJarServerTest.java b/jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/StaticFromJarServerTest.java index 6479da252e7c..bdb19683a5eb 100644 --- a/jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/StaticFromJarServerTest.java +++ b/jetty-ee9/jetty-ee9-servlet/src/test/java/org/eclipse/jetty/ee9/servlet/StaticFromJarServerTest.java @@ -24,9 +24,7 @@ import org.eclipse.jetty.http.HttpMethod; import org.eclipse.jetty.http.HttpStatus; import org.eclipse.jetty.io.ClientConnector; -import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.handler.DefaultHandler; import org.eclipse.jetty.toolchain.test.MavenTestingUtils; import org.eclipse.jetty.util.URIUtil; import org.eclipse.jetty.util.component.LifeCycle; @@ -92,7 +90,7 @@ public void startServer() throws Exception ServletHolder defaultHolder = new ServletHolder("default", new DefaultServlet()); context.addServlet(defaultHolder, "/"); - server.setHandler(new Handler.Collection(context.getCoreContextHandler(), new DefaultHandler())); + server.setHandler(context); server.start(); } diff --git a/jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/WebAppContext.java b/jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/WebAppContext.java index fce131d28f16..fd21718661fc 100644 --- a/jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/WebAppContext.java +++ b/jetty-ee9/jetty-ee9-webapp/src/main/java/org/eclipse/jetty/ee9/webapp/WebAppContext.java @@ -234,8 +234,7 @@ public WebAppContext(Handler.Container parent, String contextPath, SessionHandle _apiContext = new Context(); setErrorHandler(errorHandler != null ? errorHandler : new ErrorPageErrorHandler()); setProtectedTargets(__dftProtectedTargets); - if (parent != null) - parent.addHandler(this); + Handler.Container.setAsParent(parent, this.get()); } @Override diff --git a/jetty-ee9/jetty-ee9-webapp/src/test/java/org/eclipse/jetty/ee9/webapp/HugeResourceTest.java b/jetty-ee9/jetty-ee9-webapp/src/test/java/org/eclipse/jetty/ee9/webapp/HugeResourceTest.java index 429eef441b7a..5157cb18e3bd 100644 --- a/jetty-ee9/jetty-ee9-webapp/src/test/java/org/eclipse/jetty/ee9/webapp/HugeResourceTest.java +++ b/jetty-ee9/jetty-ee9-webapp/src/test/java/org/eclipse/jetty/ee9/webapp/HugeResourceTest.java @@ -47,7 +47,6 @@ import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.http.HttpMethod; import org.eclipse.jetty.http.MultiPart; -import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.HttpConfiguration; import org.eclipse.jetty.server.HttpConnectionFactory; import org.eclipse.jetty.server.Server; @@ -208,7 +207,7 @@ public void startServer() throws Exception DefaultHandler defaultHandler = new DefaultHandler(); defaultHandler.setServer(server); - server.setHandler(new Handler.Collection(context.getCoreContextHandler(), defaultHandler)); + server.setHandler(context); server.start(); } diff --git a/jetty-ee9/jetty-ee9-webapp/src/test/java/org/eclipse/jetty/ee9/webapp/WebAppContextTest.java b/jetty-ee9/jetty-ee9-webapp/src/test/java/org/eclipse/jetty/ee9/webapp/WebAppContextTest.java index 0e596f421c37..905f68b34812 100644 --- a/jetty-ee9/jetty-ee9-webapp/src/test/java/org/eclipse/jetty/ee9/webapp/WebAppContextTest.java +++ b/jetty-ee9/jetty-ee9-webapp/src/test/java/org/eclipse/jetty/ee9/webapp/WebAppContextTest.java @@ -40,7 +40,6 @@ import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.server.handler.ContextHandlerCollection; -import org.eclipse.jetty.server.handler.DefaultHandler; import org.eclipse.jetty.toolchain.test.FS; import org.eclipse.jetty.toolchain.test.MavenPaths; import org.eclipse.jetty.toolchain.test.MavenTestingUtils; @@ -71,7 +70,6 @@ import static org.hamcrest.Matchers.empty; import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.sameInstance; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -250,7 +248,7 @@ public void testRealPathDoesNotExist() throws Exception public void testContextWhiteList() throws Exception { Server server = newServer(); - Handler.Collection handlers = new Handler.Collection(); + Handler.Sequence handlers = new Handler.Sequence(); WebAppContext contextA = new WebAppContext(".", "/A"); contextA.addServlet(ServletA.class, "/s"); @@ -315,11 +313,8 @@ public void testProtectedTarget() throws Exception { Server server = newServer(); - Handler.Collection handlers = new Handler.Collection(); - server.setHandler(handlers); - ContextHandlerCollection contexts = new ContextHandlerCollection(); - handlers.addHandler(contexts); + server.setHandler(contexts); WebAppContext context = new WebAppContext(); Path testWebapp = MavenTestingUtils.getTargetPath("test-classes/webapp"); @@ -379,11 +374,8 @@ public void testProtectedTargetFailure(String path) throws Exception server.addConnector(connector); connector.getConnectionFactory(HttpConnectionFactory.class).getHttpConfiguration().setUriCompliance(UriCompliance.LEGACY); - Handler.Collection handlers = new Handler.Collection(); - server.setHandler(handlers); - ContextHandlerCollection contexts = new ContextHandlerCollection(); - handlers.addHandler(contexts); + server.setHandler(contexts); WebAppContext context = new WebAppContext(); Path testWebapp = MavenTestingUtils.getTargetPath("test-classes/webapp"); @@ -402,11 +394,8 @@ public void testNullPath() throws Exception { Server server = newServer(); - Handler.Collection handlers = new Handler.Collection(); - server.setHandler(handlers); - ContextHandlerCollection contexts = new ContextHandlerCollection(); - handlers.addHandler(contexts); + server.setHandler(contexts); WebAppContext context = new WebAppContext(); Path testWebapp = MavenPaths.findTestResourceDir("webapp"); @@ -437,11 +426,8 @@ public void testNullSessionAndSecurityHandler() throws Exception { Server server = newServer(); - Handler.Collection handlers = new Handler.Collection(); - server.setHandler(handlers); - ContextHandlerCollection contexts = new ContextHandlerCollection(); - handlers.addHandler(contexts); + server.setHandler(contexts); WebAppContext context = new WebAppContext(null, null, null, null, null, new ErrorPageErrorHandler(), ServletContextHandler.NO_SESSIONS | ServletContextHandler.NO_SECURITY); @@ -623,16 +609,4 @@ public void testExtraClasspathDir(String extraClassPathReference) throws Excepti extLibs = extLibs.toAbsolutePath(); assertThat("URL[0]", urls[0].toURI(), is(extLibs.toUri())); } - - @Test - void testSetServerPropagation() - { - Server server = new Server(); - WebAppContext context = new WebAppContext(); - context.setContextPath("/"); - DefaultHandler handler = new DefaultHandler(); - server.setHandler(new Handler.Collection(context.get(), handler)); - - assertThat(handler.getServer(), sameInstance(server)); - } } diff --git a/tests/test-integration/src/test/java/org/eclipse/jetty/test/AliasCheckerMultipleResourceBasesTest.java b/tests/test-integration/src/test/java/org/eclipse/jetty/test/AliasCheckerMultipleResourceBasesTest.java index 4309d2e697a2..346e26c98b92 100644 --- a/tests/test-integration/src/test/java/org/eclipse/jetty/test/AliasCheckerMultipleResourceBasesTest.java +++ b/tests/test-integration/src/test/java/org/eclipse/jetty/test/AliasCheckerMultipleResourceBasesTest.java @@ -130,10 +130,10 @@ private Resource toResource(Path path) @Test public void test() throws Exception { - Handler.Collection collection = new Handler.Collection(); - collection.addHandler(newResourceHandler(_altDir1Symlink)); - collection.addHandler(newResourceHandler(_altDir2Symlink)); - _context.setHandler(collection); + Handler.Sequence handlers = new Handler.Sequence(); + handlers.addHandler(newResourceHandler(_altDir1Symlink)); + handlers.addHandler(newResourceHandler(_altDir2Symlink)); + _context.setHandler(handlers); _server.start(); // With no alias checkers we cannot access file 1. diff --git a/tests/test-integration/src/test/java/org/eclipse/jetty/test/AliasCheckerSymlinkTest.java b/tests/test-integration/src/test/java/org/eclipse/jetty/test/AliasCheckerSymlinkTest.java index ea762092ab1c..9ca02109ccb4 100644 --- a/tests/test-integration/src/test/java/org/eclipse/jetty/test/AliasCheckerSymlinkTest.java +++ b/tests/test-integration/src/test/java/org/eclipse/jetty/test/AliasCheckerSymlinkTest.java @@ -125,7 +125,7 @@ public static void beforeAll() throws Exception _context.setContextPath("/"); _context.setBaseResourceAsPath(webRootPath); _context.setProtectedTargets(new String[]{"/WEB-INF", "/META-INF"}); - _context.addHandler(new ResourceHandler()); + _context.setHandler(new ResourceHandler()); _server.setHandler(_context); _context.clearAliasChecks();