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 919879e2510..0a0efd5c048 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 class HandlerDocs
}
}
- 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 dd1de25c92e..2f072f25f18 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 class HTTPServerDocs
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 class HTTPServerDocs
}
// 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 b636c74768d..bf74ec2e5a2 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 class FastCGIProxyHandlerTest
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 6b22ddf7f5d..de3583ccb95 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 @@ import org.eclipse.jetty.util.Callback;
* {@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 e6862b0b944..6b717219bdc 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 @@ public interface Handler extends LifeCycle, Destroyable, Invocable, Request.Proc
}
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 wraps a single other {@code Handler}.
- * @see Handler.Wrapper for an implementation of nested.
+ * A {@link Handler.Container} that can contain multiple other {@link Handler}s.
+ * @see Sequence for an implementation of {@link Collection}.
*/
- interface Nested extends Container
+ 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 can contain a single other {@code Handler}.
+ * @see BaseWrapper for an implementation of {@link Wrapper}.
+ */
+ 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 @@ public interface Handler extends LifeCycle, Destroyable, Invocable, Request.Proc
@Override
default List getHandlers()
{
- Handler h = getHandler();
- if (h == null)
- return Collections.emptyList();
- return Collections.singletonList(h);
+ Handler next = getHandler();
+ return (next == null) ? Collections.emptyList() : Collections.singletonList(next);
}
- @Override
- default void addHandler(Handler handler)
+ default void insertHandler(Wrapper handler)
{
- Handler existing = getHandler();
- setHandler(handler);
- if (existing != null && handler instanceof Container container)
- container.addHandler(existing);
- }
-
- default void insertHandler(Handler.Nested 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 @@ public interface Handler extends LifeCycle, Destroyable, Invocable, Request.Proc
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 @@ public interface Handler extends LifeCycle, Destroyable, Invocable, Request.Proc
* - 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 @@ public interface Handler extends LifeCycle, Destroyable, Invocable, Request.Proc
}
// 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 interface Handler extends LifeCycle, Destroyable, Invocable, Request.Proc
}
/**
- * 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 interface Handler extends LifeCycle, Destroyable, Invocable, Request.Proc
}
/**
- * 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 interface Handler extends LifeCycle, Destroyable, Invocable, Request.Proc
*
* @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 interface Handler extends LifeCycle, Destroyable, Invocable, Request.Proc
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 89b5b0714d7..8349d129083 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.eclipse.jetty.util.thread.ThreadPool;
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 6f177859a84..11de8703b59 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 @@ import org.slf4j.LoggerFactory;
* (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 0f0dd3267fa..069810b47ac 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 @@ import org.slf4j.LoggerFactory;
* 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 a66b69b2c36..1c3931e1495 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 @@ import org.slf4j.LoggerFactory;
/**
* 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 2a21dde5600..ef207ed3fbb 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.eclipse.jetty.util.thread.Invocable;
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 class ContextHandler extends Handler.Wrapper implements Attributes, Grace
_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 04ea66642e3..1f308fcbee6 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 @@ import org.slf4j.LoggerFactory;
* 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 95480e8b4e7..6416a45cec9 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 @@ import org.eclipse.jetty.util.RolloverFileOutputStream;
* 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 73f9cb5c9c2..eea3aeb4a53 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.Callback;
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 7bdf55f0f5b..448456a6534 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 @@ import org.slf4j.LoggerFactory;
/**
* 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 45e1f25e768..f10cf2d514a 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 @@ import org.eclipse.jetty.util.thread.Invocable;
/**
* 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 class HotSwapHandler extends Handler.AbstractContainer implements Handler
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 a9c08390430..516e9f7c131 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 @@ import org.eclipse.jetty.util.Callback;
* </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 bee5e661154..d0f2036f9dd 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 @@ import static org.eclipse.jetty.server.handler.InetAccessSet.PatternTuple;
* 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 8e0451e576d..d340536cf23 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 class MovedContextHandler extends ContextHandler
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 8304503bcf7..bc60de6ea4d 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 @@ package org.eclipse.jetty.server.handler;
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 class PathMappingsHandler extends Handler.AbstractContainer
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 60d8954901b..76962ad65b0 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.server.Response;
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 ba84e11e175..cc74149ab19 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 @@ import org.eclipse.jetty.util.resource.Resources;
* - 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 241552385eb..332bb024286 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 @@ import org.eclipse.jetty.util.URIUtil;
* {@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 c2ea3d1ecb5..6cb25b3d981 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 @@ import org.slf4j.LoggerFactory;
* }
* }
*/
-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 9005b403604..a4b5dc45ef9 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.component.DumpableCollection;
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 9109460be03..4f0e9de7c91 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 @@ import org.slf4j.LoggerFactory;
* 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 d0b8c0e8875..77637764df7 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 @@ import org.eclipse.jetty.util.URIUtil;
* 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 2cdd1312d44..3d354386b32 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.eclipse.jetty.util.compression.InflaterPool;
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 8acb76e98e6..1c4cf253706 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 @@ public class HttpConfigurationAuthorityOverrideTest
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 706b07077ca..573a2338324 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 abstract class HttpServerTestBase extends HttpServerTestFixture
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 5790eecd144..5e1cb473a16 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 class PartialRFC2616Test
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 caf96018214..abfdf3c4afa 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 class ContextHandlerCollectionTest
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 class ContextHandlerCollectionTest
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 class ContextHandlerCollectionTest
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 class ContextHandlerCollectionTest
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 class ContextHandlerCollectionTest
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 b653d87a4d4..b1dd72df2fc 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 class ContextHandlerTest
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 class ContextHandlerTest
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 de4d627b231..72af1fba1fb 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 class DefaultHandlerTest
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 70f7aa3040d..5672e7e6e55 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 class HandlerTest
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 class HandlerTest
@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 class HandlerTest
@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 class HandlerTest
@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 class HandlerTest
@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 class HandlerTest
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 class HandlerTest
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 class HandlerTest
@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 class HandlerTest
@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 class HandlerTest
@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 class HandlerTest
@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 class HandlerTest
@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 class HandlerTest
@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 class HandlerTest
@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 class HandlerTest
@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 class HandlerTest
@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 fdab3f5c2df..59ebecb1b21 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 class PathMappingsHandlerTest
connector = new LocalConnector(server);
server.addConnector(connector);
- server.addHandler(handler);
+ server.setHandler(handler);
server.start();
}
@@ -216,22 +216,22 @@ public class PathMappingsHandlerTest
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 006e9831484..5c1c9071f50 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 class SecuredRedirectHandlerTest
@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 97110a910b0..8009d3ae543 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 @@ public class ShutdownHandlerTest
}
}
- 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 7b565c9dc82..66bff598374 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 class StatisticsHandlerTest
// 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 6d7c6198cbf..ce908641a0d 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 class GzipHandlerTest
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 38026e26faf..afbf36fe051 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 @@ public class SniSslConnectionFactoryTest
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 e6c5cb2d229..dd3686bbf2c 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 @@ import org.eclipse.jetty.util.Callback;
/**
* 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 class SimpleSessionHandler extends AbstractSessionManager implements Hand
@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 4f05bf4a802..dad91ccb31e 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.util.Callback;
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 b291037322f..7bd99fd8e06 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 class WebSocketProxyTest
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 7e65774c1ac..aab1974ddb6 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 @@ package org.eclipse.jetty.ee10.demos;
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 class ExampleServer
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 042884817c7..04278552559 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.Path;
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 class FileServer
// 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 class FileServer
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 7377490ef0e..869efb74c85 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 java.util.Objects;
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 class JarServer
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 b1946da1d61..39e428c5268 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.InvalidURIRule;
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 class LikeJettyXml
// Server
Server server = new Server(threadPool);
+ server.setDefaultHandler(new DefaultHandler());
// Scheduler
server.addBean(new ScheduledExecutorScheduler(null, false, -1));
@@ -93,11 +93,7 @@ public class LikeJettyXml
// 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 0190068a816..b2ac0ef35a2 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 @@ import org.eclipse.jetty.server.handler.DefaultHandler;
*
* 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);
- }
- }
+ /**
+ * 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);
+ }
+ }
- public static Server createServer(int port) throws IOException
- {
- Server server = new Server(port);
+ 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);
- // 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");
+ ContextHandlerCollection contexts = new ContextHandlerCollection(helloContext, paramContext);
- // 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);
-
- At this point you have the following handler hierarchy.
- *
- * Server.handler:
- * HandlerList
- * \- 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();
- }*/
+ // 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 98d637a9da1..4c9d27935a4 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.ee10.webapp.WebAppContext;
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.Server;
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 class TestServer
// 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 5280c3820b7..9d1da90ec0e 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.servlet.security.LoginService;
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 class ServerSupport
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 939f710ae39..3e9cd1e80af 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 @@ public class Runner
_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 @@ public class Runner
}
//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 @@ public class Runner
}
}
- 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 dbc10dd9b21..6afc14ca7a6 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 class ServletContextHandler extends ContextHandler implements Graceful
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 class ServletContextHandler extends ContextHandler implements Graceful
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 @@ public class ServletContextHandler extends ContextHandler implements Graceful
}
}
- 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 @@ public class ServletContextHandler extends ContextHandler implements Graceful
private void relinkHandlers()
{
- Handler.Nested handler = this;
+ Handler.Wrapper handler = this;
// link session handler
if (getSessionHandler() != null)
@@ -1014,9 +1003,9 @@ public class ServletContextHandler extends ContextHandler implements Graceful
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 @@ public class ServletContextHandler extends ContextHandler implements Graceful
{
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 @@ public class ServletContextHandler extends ContextHandler implements Graceful
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 class ServletContextHandler extends ContextHandler implements Graceful
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 @@ public class ServletContextHandler extends ContextHandler implements Graceful
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 class ServletContextHandler extends ContextHandler implements Graceful
* 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 @@ public class ServletContextHandler extends ContextHandler implements Graceful
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 61d41481f08..afde4f2b68c 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 @@ import org.slf4j.LoggerFactory;
* 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 f79f166f25d..05c97b707d9 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.eclipse.jetty.util.Callback;
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 class SessionHandler extends AbstractSessionManager implements Handler.Ne
@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 55186d42679..a5a85b9caef 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 @@ import org.slf4j.LoggerFactory;
* 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 fe3fd9bdb0a..9b12135fc89 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.HttpServlet;
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 class AsyncContextDispatchWithQueryStrings
_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 907deac9de6..ae9a07f4755 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.HttpServletResponse;
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 class AsyncContextTest
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 bcdcf9eda05..521f5716d62 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.DispatcherType;
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 class ErrorPageTest
_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 1b5dc69f083..70829dfab72 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 class ServletContextHandlerTest
{
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 class ServletContextHandlerTest
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 @@ public class ServletContextHandlerTest
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 class ServletContextHandlerTest
@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 27f56b1ec42..a57f63761f7 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 jakarta.servlet.http.HttpServletResponse;
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 class ServletRequestLogTest
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 class ServletRequestLogTest
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 class ServletRequestLogTest
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 class ServletRequestLogTest
// 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 def8d6c1918..40d4b9188f4 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.HttpServletRequest;
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 class ServletUpgradeTest
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 3871f1f9468..89712961602 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.HttpServletRequest;
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 class ServletWrapperTest
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 ff1282bf7ee..600d87428af 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.ConstraintMapping;
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 class WebAppContext extends ServletContextHandler implements WebAppClassL
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 ec8c8bfd092..873d4263678 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.HttpMethod;
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 class HugeResourceTest
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 7dbc788eee7..41c5d8b30d2 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 class WebAppContextTest
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 class WebAppContextTest
{
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 class WebAppContextTest
{
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 class WebAppContextTest
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 class WebAppContextTest
{
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 class WebAppContextTest
{
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 class WebAppContextTest
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 @@ public class WebAppContextTest
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 8055e338e08..2fbd946075a 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 @@ public class WebAppDefaultServletCacheTest
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 b125f6dfcf6..84c4739fcca 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 class DeploymentExceptionTest
}
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 c818baedb15..c585c850aed 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 @@ package org.eclipse.jetty.ee9.demos;
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 class ExampleServer
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 50b4026b51c..5edfc27741c 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 @@ package org.eclipse.jetty.ee9.demos;
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 class FileServer
// 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 class FileServer
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 39119aba5fd..75044a60604 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 java.util.Objects;
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 class JarServer
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 09c208eab15..3330d0dbfb9 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 @@ import org.eclipse.jetty.util.ajax.JSON;
*
* 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 class ManyHandlers
/**
* 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 class ManyHandlers
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 class ManyHandlers
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 class ManyHandlers
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 dd726535fda..2f728fc27ff 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.security.LoginService;
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 class ServerSupport
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 618775ef08b..e2333aad4f2 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 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu
_initParams = new HashMap<>();
if (contextPath != null)
setContextPath(contextPath);
- if (parent != null)
- parent.addHandler(_coreContextHandler);
+ Handler.Container.setAsParent(parent, _coreContextHandler);
}
@Override
@@ -2503,11 +2502,9 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu
}
@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 d9f4c879595..d23c183ad81 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 class AsyncCompletionTest extends HttpServerTestFixture
@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 d17836a8878..21df350b82d 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.HttpTester;
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 class ContextHandlerTest
_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 bd32acfd011..07da0e89724 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 class RequestTest
});
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 fa4825863b1..8c9613e17be 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.ResourceHandler;
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 class AliasedConstraintTest
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 8a5d259e228..d4fab6b8435 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.HttpServlet;
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 class AsyncContextDispatchWithQueryStrings
_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 fc75284457a..399f4a86c00 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.QuietServletException;
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 class AsyncContextTest
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 5eebafb4ca5..e4afc3c5583 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.Request;
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 class GzipHandlerIsHandledTest
@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 class GzipHandlerIsHandledTest
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 b4c99b18f77..05b8d330adf 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.HttpUpgradeHandler;
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 class ServletUpgradeTest
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 5a5474e3555..51afd52d0b7 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.HttpServletRequest;
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 class ServletWrapperTest
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 6479da252e7..bdb19683a5e 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.client.transport.HttpClientTransportOverHTTP;
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 class StaticFromJarServerTest
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 fce131d28f1..fd21718661f 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 class WebAppContext extends ServletContextHandler implements WebAppClassL
_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 429eef441b7..5157cb18e3b 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.HttpFields;
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 class HugeResourceTest
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 0e596f421c3..905f68b3481 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.LocalConnector;
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.contains;
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 class WebAppContextTest
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 class WebAppContextTest
{
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 class WebAppContextTest
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 class WebAppContextTest
{
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 class WebAppContextTest
{
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 class WebAppContextTest
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 4309d2e697a..346e26c98b9 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 @@ public class AliasCheckerMultipleResourceBasesTest
@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 ea762092ab1..9ca02109ccb 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 class AliasCheckerSymlinkTest
_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();