diff options
author | Morten Tokle <mortent@verizonmedia.com> | 2021-04-21 08:42:04 +0200 |
---|---|---|
committer | Morten Tokle <mortent@verizonmedia.com> | 2021-04-21 08:42:04 +0200 |
commit | f36017d3f2709e2fa3e555269a4116482129ee2e (patch) | |
tree | ee214beda7621d24717a00771e9129160e4a2a9b /jdisc_core | |
parent | fe1dfc345aa85b593ba536fa2607594751bb8d51 (diff) |
Get request handler spec through delegate
Diffstat (limited to 'jdisc_core')
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; + } +} |