summaryrefslogtreecommitdiffstats
path: root/container-core
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2020-10-07 11:03:29 +0200
committerJon Bratseth <bratseth@gmail.com>2020-10-07 11:03:29 +0200
commit35a58a4c72c325eb7d2a2f9e217c9ffb042ca6d4 (patch)
tree0d3977ae27bb608c738145cbd90c76b62fd004dc /container-core
parentc9335e0efde84cafdbc878fc4c4504e3ce12b93c (diff)
Use Optional
Diffstat (limited to 'container-core')
-rw-r--r--container-core/abi-spec.json1
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/ThreadedRequestHandler.java12
2 files changed, 7 insertions, 6 deletions
diff --git a/container-core/abi-spec.json b/container-core/abi-spec.json
index 45d6a9bcc03..458320c87df 100644
--- a/container-core/abi-spec.json
+++ b/container-core/abi-spec.json
@@ -630,6 +630,7 @@
"protected void <init>(java.util.concurrent.Executor, com.yahoo.jdisc.Metric)",
"protected void <init>(java.util.concurrent.Executor, com.yahoo.jdisc.Metric, boolean)",
"public final com.yahoo.jdisc.handler.ContentChannel handleRequest(com.yahoo.jdisc.Request, com.yahoo.jdisc.handler.ResponseHandler)",
+ "protected java.util.Optional getRequestType()",
"public java.time.Duration getTimeout()",
"public java.util.concurrent.Executor executor()",
"protected abstract void handleRequest(com.yahoo.jdisc.Request, com.yahoo.jdisc.handler.BufferedContentChannel, com.yahoo.jdisc.handler.ResponseHandler)",
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedRequestHandler.java b/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedRequestHandler.java
index 691675dfec9..5864ecf4b91 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedRequestHandler.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedRequestHandler.java
@@ -18,6 +18,7 @@ import com.yahoo.container.core.HandlerMetricContextUtil;
import java.time.Duration;
import java.util.Map;
import java.util.Objects;
+import java.util.Optional;
import java.util.concurrent.Executor;
import java.util.concurrent.RejectedExecutionException;
import java.util.concurrent.TimeUnit;
@@ -112,11 +113,11 @@ public abstract class ThreadedRequestHandler extends AbstractRequestHandler {
* be overridden by setting a request type on individual responses in handleRequest
* whenever it is invoked (i.e not for requests that are rejected early e.g due to overload).</p>
*
- * <p>This default implementation returns null.</p>
+ * <p>This default implementation returns empty.</p>
*
- * @return the request type to set, or null to not override the default classification based on request method
+ * @return the request type to set, or empty to not override the default classification based on request method
*/
- protected Request.RequestType getRequestType() { return null; }
+ protected Optional<Request.RequestType> getRequestType() { return Optional.empty(); }
public Duration getTimeout() {
return TIMEOUT;
@@ -158,7 +159,7 @@ public abstract class ThreadedRequestHandler extends AbstractRequestHandler {
*/
protected void writeErrorResponseOnOverload(Request request, ResponseHandler responseHandler) {
Response response = new Response(Response.Status.SERVICE_UNAVAILABLE);
- response.setRequestType(getRequestType());
+ getRequestType().ifPresent(type -> response.setRequestType(type));
ResponseDispatch.newInstance(response).dispatch(responseHandler);
}
@@ -202,8 +203,7 @@ public abstract class ThreadedRequestHandler extends AbstractRequestHandler {
@Override
public ContentChannel handleResponse(Response response) {
if ( tryHasResponded()) throw new IllegalStateException("Response already handled");
- if (response.getRequestType() == null)
- response.setRequestType(getRequestType());
+ getRequestType().ifPresent(type -> response.setRequestType(type));
ContentChannel cc = responseHandler.handleResponse(response);
HandlerMetricContextUtil.onHandled(request, metric, getClass());
return cc;