summaryrefslogtreecommitdiffstats
path: root/jdisc_core
diff options
context:
space:
mode:
authorMorten Tokle <mortent@verizonmedia.com>2021-04-21 08:42:04 +0200
committerMorten Tokle <mortent@verizonmedia.com>2021-04-21 08:42:04 +0200
commitf36017d3f2709e2fa3e555269a4116482129ee2e (patch)
treeee214beda7621d24717a00771e9129160e4a2a9b /jdisc_core
parentfe1dfc345aa85b593ba536fa2607594751bb8d51 (diff)
Get request handler spec through delegate
Diffstat (limited to 'jdisc_core')
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/ProxyRequestHandler.java8
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/ContainerSnapshot.java8
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/core/TimeoutManagerImpl.java8
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/handler/DelegatedRequestHandler.java15
4 files changed, 36 insertions, 3 deletions
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/ProxyRequestHandler.java b/jdisc_core/src/main/java/com/yahoo/jdisc/ProxyRequestHandler.java
index f3fa6740fbd..6e385535e40 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/ProxyRequestHandler.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/ProxyRequestHandler.java
@@ -3,6 +3,7 @@ package com.yahoo.jdisc;
import com.yahoo.jdisc.handler.CompletionHandler;
import com.yahoo.jdisc.handler.ContentChannel;
+import com.yahoo.jdisc.handler.DelegatedRequestHandler;
import com.yahoo.jdisc.handler.NullContent;
import com.yahoo.jdisc.handler.RequestHandler;
import com.yahoo.jdisc.handler.ResponseHandler;
@@ -16,7 +17,7 @@ import java.util.logging.Logger;
/**
* @author bakksjo
*/
-class ProxyRequestHandler implements RequestHandler {
+class ProxyRequestHandler implements DelegatedRequestHandler {
private static final CompletionHandler IGNORED_COMPLETION = new IgnoredCompletion();
private static final Logger log = Logger.getLogger(ProxyRequestHandler.class.getName());
@@ -71,6 +72,11 @@ class ProxyRequestHandler implements RequestHandler {
return delegate.toString();
}
+ @Override
+ public RequestHandler getDelegate() {
+ return delegate;
+ }
+
private static class ProxyResponseHandler implements ResponseHandler {
final SharedResource request;
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ContainerSnapshot.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ContainerSnapshot.java
index 1a3f7068024..7b72e95ac09 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/ContainerSnapshot.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/ContainerSnapshot.java
@@ -9,6 +9,7 @@ import com.yahoo.jdisc.ResourceReference;
import com.yahoo.jdisc.application.BindingMatch;
import com.yahoo.jdisc.application.BindingSet;
import com.yahoo.jdisc.handler.ContentChannel;
+import com.yahoo.jdisc.handler.DelegatedRequestHandler;
import com.yahoo.jdisc.handler.NullContent;
import com.yahoo.jdisc.handler.RequestHandler;
import com.yahoo.jdisc.handler.ResponseHandler;
@@ -71,7 +72,7 @@ class ContainerSnapshot extends AbstractResource implements Container {
return timeoutMgr.timer().currentTimeMillis();
}
- private static class NullContentRequestHandler implements RequestHandler {
+ private static class NullContentRequestHandler implements DelegatedRequestHandler {
final RequestHandler delegate;
@@ -108,5 +109,10 @@ class ContainerSnapshot extends AbstractResource implements Container {
public String toString() {
return delegate.toString();
}
+
+ @Override
+ public RequestHandler getDelegate() {
+ return delegate;
+ }
}
}
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/TimeoutManagerImpl.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/TimeoutManagerImpl.java
index 43cddaea803..a6d6e32df06 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/TimeoutManagerImpl.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/TimeoutManagerImpl.java
@@ -9,6 +9,7 @@ import com.yahoo.jdisc.TimeoutManager;
import com.yahoo.jdisc.Timer;
import com.yahoo.jdisc.handler.CompletionHandler;
import com.yahoo.jdisc.handler.ContentChannel;
+import com.yahoo.jdisc.handler.DelegatedRequestHandler;
import com.yahoo.jdisc.handler.RequestHandler;
import com.yahoo.jdisc.handler.ResponseHandler;
@@ -106,7 +107,7 @@ public class TimeoutManagerImpl {
}
}
- private class ManagedRequestHandler implements RequestHandler {
+ private class ManagedRequestHandler implements DelegatedRequestHandler {
final RequestHandler delegate;
@@ -152,6 +153,11 @@ public class TimeoutManagerImpl {
public String toString() {
return delegate.toString();
}
+
+ @Override
+ public RequestHandler getDelegate() {
+ return delegate;
+ }
}
private class TimeoutHandler implements ResponseHandler, TimeoutManager {
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/DelegatedRequestHandler.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/DelegatedRequestHandler.java
new file mode 100644
index 00000000000..540fe03accf
--- /dev/null
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/DelegatedRequestHandler.java
@@ -0,0 +1,15 @@
+// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+package com.yahoo.jdisc.handler;
+
+public interface DelegatedRequestHandler extends RequestHandler {
+ RequestHandler getDelegate();
+
+ default RequestHandler getDelegateRecursive() {
+ RequestHandler delegate = getDelegate();
+ while(delegate instanceof DelegatedRequestHandler) {
+ delegate = ((DelegatedRequestHandler) delegate).getDelegate();
+ }
+ return delegate;
+ }
+}