diff options
Diffstat (limited to 'container-core')
-rw-r--r-- | container-core/abi-spec.json | 57 | ||||
-rw-r--r-- | container-core/src/main/java/com/yahoo/container/jdisc/AclMapping.java | 38 | ||||
-rw-r--r-- | container-core/src/main/java/com/yahoo/container/jdisc/DefaultAclMapping.java | 6 | ||||
-rw-r--r-- | container-core/src/main/java/com/yahoo/container/jdisc/HttpRequestHandler.java (renamed from container-core/src/main/java/com/yahoo/container/jdisc/RequestHandlerWithSpec.java) | 5 | ||||
-rw-r--r-- | container-core/src/main/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandler.java | 2 | ||||
-rw-r--r-- | container-core/src/main/java/com/yahoo/container/jdisc/ThreadedRequestHandler.java | 2 | ||||
-rw-r--r-- | container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilteringRequestHandler.java | 6 |
7 files changed, 74 insertions, 42 deletions
diff --git a/container-core/abi-spec.json b/container-core/abi-spec.json index 22fb744ad70..68dd882ff1a 100644 --- a/container-core/abi-spec.json +++ b/container-core/abi-spec.json @@ -479,22 +479,21 @@ ] }, "com.yahoo.container.jdisc.AclMapping$Action": { - "superClass": "java.lang.Enum", + "superClass": "java.lang.Object", "interfaces": [], "attributes": [ - "public", - "final", - "enum" + "public" ], "methods": [ - "public static com.yahoo.container.jdisc.AclMapping$Action[] values()", - "public static com.yahoo.container.jdisc.AclMapping$Action valueOf(java.lang.String)" + "public static com.yahoo.container.jdisc.AclMapping$Action custom(java.lang.String)", + "public java.lang.String name()", + "public boolean equals(java.lang.Object)", + "public int hashCode()", + "public java.lang.String toString()" ], "fields": [ - "public static final enum com.yahoo.container.jdisc.AclMapping$Action create", - "public static final enum com.yahoo.container.jdisc.AclMapping$Action read", - "public static final enum com.yahoo.container.jdisc.AclMapping$Action update", - "public static final enum com.yahoo.container.jdisc.AclMapping$Action delete" + "public static final com.yahoo.container.jdisc.AclMapping$Action READ", + "public static final com.yahoo.container.jdisc.AclMapping$Action WRITE" ] }, "com.yahoo.container.jdisc.AclMapping": { @@ -642,6 +641,21 @@ ], "fields": [] }, + "com.yahoo.container.jdisc.HttpRequestHandler": { + "superClass": "java.lang.Object", + "interfaces": [ + "com.yahoo.jdisc.handler.RequestHandler" + ], + "attributes": [ + "public", + "interface", + "abstract" + ], + "methods": [ + "public com.yahoo.container.jdisc.RequestHandlerSpec requestHandlerSpec()" + ], + "fields": [] + }, "com.yahoo.container.jdisc.HttpResponse": { "superClass": "java.lang.Object", "interfaces": [], @@ -808,21 +822,6 @@ ], "fields": [] }, - "com.yahoo.container.jdisc.RequestHandlerWithSpec": { - "superClass": "java.lang.Object", - "interfaces": [ - "com.yahoo.jdisc.handler.RequestHandler" - ], - "attributes": [ - "public", - "interface", - "abstract" - ], - "methods": [ - "public com.yahoo.container.jdisc.RequestHandlerSpec requestHandlerSpec()" - ], - "fields": [] - }, "com.yahoo.container.jdisc.RequestView": { "superClass": "java.lang.Object", "interfaces": [], @@ -855,7 +854,9 @@ }, "com.yahoo.container.jdisc.ThreadedHttpRequestHandler": { "superClass": "com.yahoo.container.jdisc.ThreadedRequestHandler", - "interfaces": [], + "interfaces": [ + "com.yahoo.container.jdisc.HttpRequestHandler" + ], "attributes": [ "public", "abstract" @@ -878,9 +879,7 @@ }, "com.yahoo.container.jdisc.ThreadedRequestHandler": { "superClass": "com.yahoo.jdisc.handler.AbstractRequestHandler", - "interfaces": [ - "com.yahoo.container.jdisc.RequestHandlerWithSpec" - ], + "interfaces": [], "attributes": [ "public", "abstract" diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/AclMapping.java b/container-core/src/main/java/com/yahoo/container/jdisc/AclMapping.java index 8c7701a7534..e7c3d71ba44 100644 --- a/container-core/src/main/java/com/yahoo/container/jdisc/AclMapping.java +++ b/container-core/src/main/java/com/yahoo/container/jdisc/AclMapping.java @@ -2,13 +2,49 @@ package com.yahoo.container.jdisc; +import java.util.Objects; + /** * Mapping from request to action * * @author mortent */ public interface AclMapping { - enum Action {create, read, update, delete}; + class Action { + public static final Action READ = new Action("read"); + public static final Action WRITE = new Action("write"); + private final String name; + public static Action custom(String name) { + return new Action(name); + } + private Action(String name) { + if(Objects.requireNonNull(name).isBlank()) { + throw new IllegalArgumentException("Name cannot be blank"); + } + this.name = Objects.requireNonNull(name); + } + public String name() { return name; } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Action action = (Action) o; + return Objects.equals(name, action.name); + } + + @Override + public int hashCode() { + return Objects.hash(name); + } + + @Override + public String toString() { + return "Action{" + + "name='" + name + '\'' + + '}'; + } + } Action get(RequestView requestView); } diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/DefaultAclMapping.java b/container-core/src/main/java/com/yahoo/container/jdisc/DefaultAclMapping.java index 0a996cb5967..93639029128 100644 --- a/container-core/src/main/java/com/yahoo/container/jdisc/DefaultAclMapping.java +++ b/container-core/src/main/java/com/yahoo/container/jdisc/DefaultAclMapping.java @@ -14,16 +14,14 @@ public class DefaultAclMapping implements AclMapping { case GET: case HEAD: case OPTIONS: - return Action.read; + return Action.READ; case POST: - return Action.create; case DELETE: - return Action.delete; case PUT: case PATCH: case CONNECT: case TRACE: - return Action.update; + return Action.WRITE; default: throw new IllegalArgumentException("Illegal request method: " + requestMeta.method()); } diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/RequestHandlerWithSpec.java b/container-core/src/main/java/com/yahoo/container/jdisc/HttpRequestHandler.java index 89107195671..f322c9c5b6f 100644 --- a/container-core/src/main/java/com/yahoo/container/jdisc/RequestHandlerWithSpec.java +++ b/container-core/src/main/java/com/yahoo/container/jdisc/HttpRequestHandler.java @@ -5,14 +5,13 @@ package com.yahoo.container.jdisc; import com.yahoo.jdisc.handler.RequestHandler; /** - * Extends a request handler with a request handler specification. + * Extends a request handler with a http specific * * @author mortent */ -public interface RequestHandlerWithSpec extends RequestHandler { +public interface HttpRequestHandler extends RequestHandler { /** - * * @return handler specification */ default RequestHandlerSpec requestHandlerSpec() { diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandler.java b/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandler.java index 5b8fe907293..be708f2fc94 100644 --- a/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandler.java +++ b/container-core/src/main/java/com/yahoo/container/jdisc/ThreadedHttpRequestHandler.java @@ -32,7 +32,7 @@ import java.util.logging.Logger; * @author Steinar Knutsen * @author bratseth */ -public abstract class ThreadedHttpRequestHandler extends ThreadedRequestHandler { +public abstract class ThreadedHttpRequestHandler extends ThreadedRequestHandler implements HttpRequestHandler { public static final String CONTENT_TYPE = "Content-Type"; private static final String RENDERING_ERRORS = "rendering_errors"; 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 0b05f58f75e..446ee90c205 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 @@ -35,7 +35,7 @@ import java.util.logging.Logger; * * @author Simon Thoresen Hult */ -public abstract class ThreadedRequestHandler extends AbstractRequestHandler implements RequestHandlerWithSpec { +public abstract class ThreadedRequestHandler extends AbstractRequestHandler { private static final Logger log = Logger.getLogger(ThreadedRequestHandler.class.getName()); private static final Duration TIMEOUT = Duration.ofSeconds(Integer.parseInt(System.getProperty("ThreadedRequestHandler.timeout", "300"))); diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilteringRequestHandler.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilteringRequestHandler.java index 0d94701f794..27d122bcaa2 100644 --- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilteringRequestHandler.java +++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FilteringRequestHandler.java @@ -3,7 +3,7 @@ package com.yahoo.jdisc.http.server.jetty; import com.google.common.base.Preconditions; import com.yahoo.container.jdisc.RequestHandlerSpec; -import com.yahoo.container.jdisc.RequestHandlerWithSpec; +import com.yahoo.container.jdisc.HttpRequestHandler; import com.yahoo.jdisc.Request; import com.yahoo.jdisc.Response; import com.yahoo.jdisc.handler.AbstractRequestHandler; @@ -67,8 +67,8 @@ class FilteringRequestHandler extends AbstractRequestHandler { throw new BindingNotFoundException(request.getUri()); } - if (resolvedRequestHandler instanceof RequestHandlerWithSpec) { - RequestHandlerSpec requestHandlerSpec = ((RequestHandlerWithSpec) resolvedRequestHandler).requestHandlerSpec(); + if (resolvedRequestHandler instanceof HttpRequestHandler) { + RequestHandlerSpec requestHandlerSpec = ((HttpRequestHandler) resolvedRequestHandler).requestHandlerSpec(); request.context().put(RequestHandlerSpec.ATTRIBUTE_NAME, requestHandlerSpec); } |