Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jetty-client/src/main/java/org/eclipse/jetty/client/ProtocolHandlers.java')
-rw-r--r--jetty-client/src/main/java/org/eclipse/jetty/client/ProtocolHandlers.java94
1 files changed, 94 insertions, 0 deletions
diff --git a/jetty-client/src/main/java/org/eclipse/jetty/client/ProtocolHandlers.java b/jetty-client/src/main/java/org/eclipse/jetty/client/ProtocolHandlers.java
new file mode 100644
index 0000000000..d0686519b8
--- /dev/null
+++ b/jetty-client/src/main/java/org/eclipse/jetty/client/ProtocolHandlers.java
@@ -0,0 +1,94 @@
+//
+// ========================================================================
+// Copyright (c) 1995-2015 Mort Bay Consulting Pty. Ltd.
+// ------------------------------------------------------------------------
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// and Apache License v2.0 which accompanies this distribution.
+//
+// The Eclipse Public License is available at
+// http://www.eclipse.org/legal/epl-v10.html
+//
+// The Apache License v2.0 is available at
+// http://www.opensource.org/licenses/apache2.0.php
+//
+// You may elect to redistribute this code under either of these licenses.
+// ========================================================================
+//
+
+package org.eclipse.jetty.client;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import org.eclipse.jetty.client.api.Request;
+import org.eclipse.jetty.client.api.Response;
+
+/**
+ * <p>A container for {@link ProtocolHandler}s accessible from {@link HttpClient#getProtocolHandlers()}.</p>
+ */
+public class ProtocolHandlers
+{
+ private final Map<String, ProtocolHandler> handlers = new LinkedHashMap<>();
+
+ protected ProtocolHandlers()
+ {
+ }
+
+ /**
+ * <p>Stores the given {@code protocolHandler} in this container.</p>
+ * <p>If a protocol handler with the same name exists, it is
+ * replaced by the given one, and the existing returned.</p>
+ *
+ * @param protocolHandler the protocol handler to store
+ * @return the existing protocol handler with the same name,
+ * or null if no protocol handler with that name was already stored
+ * @see #remove(String)
+ */
+ public ProtocolHandler put(ProtocolHandler protocolHandler)
+ {
+ return handlers.put(protocolHandler.getName(), protocolHandler);
+ }
+
+ /**
+ * <p>Removes the protocol handler with the given name.</p>
+ *
+ * @param name the name of the protocol handler to remove
+ * @return the removed protocol handler, or null if no
+ * protocol handler with that name was already stored
+ * @see #put(ProtocolHandler)
+ * @see #clear()
+ */
+ public ProtocolHandler remove(String name)
+ {
+ return handlers.remove(name);
+ }
+
+ /**
+ * <p>Removes all protocol handlers from this container.</p>
+ */
+ public void clear()
+ {
+ handlers.clear();
+ }
+
+ /**
+ * <p>Finds the first protocol handler that
+ * {@link ProtocolHandler#accept(Request, Response) accepts}
+ * the given request and response.</p>
+ *
+ * @param request the request to accept
+ * @param response the response to accept
+ * @return the protocol handler that accepted the request and response,
+ * or null if none of the protocol handlers accepted the request and response
+ */
+ public ProtocolHandler find(Request request, Response response)
+ {
+ for (ProtocolHandler handler : handlers.values())
+ {
+ if (handler.accept(request, response))
+ return handler;
+ }
+ return null;
+ }
+}

Back to the top