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();