diff options
Diffstat (limited to 'container-search')
-rw-r--r-- | container-search/abi-spec.json | 9 | ||||
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java | 27 |
2 files changed, 32 insertions, 4 deletions
diff --git a/container-search/abi-spec.json b/container-search/abi-spec.json index 75b8814ecb0..b5933936adf 100644 --- a/container-search/abi-spec.json +++ b/container-search/abi-spec.json @@ -1642,13 +1642,13 @@ "final" ], "methods": [ + "public void <init>()", + "public void <init>(int)", + "public void <init>(java.lang.String, int)", "public com.yahoo.prelude.query.Item$ItemType getItemType()", "public java.lang.String getName()", - "public void <init>(java.lang.String, int)", - "public void <init>(int)", "public void setIndexName(java.lang.String)", "public java.lang.String getIndexName()", - "public void <init>()", "public int getN()", "public void setN(int)", "public int getScoreThreshold()", @@ -4235,7 +4235,8 @@ "public com.yahoo.search.Result searchAndFill(com.yahoo.search.Query, com.yahoo.component.chain.Chain)", "public com.yahoo.processing.rendering.Renderer getRendererCopy(com.yahoo.component.ComponentSpecification)", "public com.yahoo.search.searchchain.SearchChainRegistry getSearchChainRegistry()", - "public void createRequestMapping(com.yahoo.slime.Inspector, java.util.Map, java.lang.String)" + "public void createRequestMapping(com.yahoo.slime.Inspector, java.util.Map, java.lang.String)", + "public com.yahoo.container.jdisc.RequestHandlerSpec requestHandlerSpec()" ], "fields": [ "public static final java.lang.String defaultSearchChainName" diff --git a/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java b/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java index 2b27f60ef73..e7c5511f259 100644 --- a/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java +++ b/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java @@ -14,11 +14,14 @@ import com.yahoo.container.handler.threadpool.ContainerThreadPool; import com.yahoo.container.jdisc.HttpRequest; import com.yahoo.container.jdisc.HttpResponse; import com.yahoo.container.jdisc.LoggingRequestHandler; +import com.yahoo.container.jdisc.RequestHandlerSpec; import com.yahoo.container.jdisc.VespaHeaders; import com.yahoo.container.logging.AccessLog; import com.yahoo.io.IOUtils; import com.yahoo.jdisc.Metric; import com.yahoo.jdisc.Request; +import com.yahoo.container.jdisc.AclMapping; +import com.yahoo.container.jdisc.RequestView; import com.yahoo.language.Linguistics; import com.yahoo.net.HostName; import com.yahoo.net.UriTools; @@ -103,6 +106,8 @@ public class SearchHandler extends LoggingRequestHandler { private final AtomicLong numRequestsLeftToTrace; + private final static RequestHandlerSpec REQUEST_HANDLER_SPEC = RequestHandlerSpec.builder().withAclMapping(SearchHandler::mapRequestToAction).build(); + private final class MeanConnections implements Callback { @Override @@ -631,6 +636,28 @@ public class SearchHandler extends LoggingRequestHandler { }); } + @Override + public RequestHandlerSpec requestHandlerSpec() { + return REQUEST_HANDLER_SPEC; + } + + private static AclMapping.Action mapRequestToAction(RequestView requestMeta) { + switch (requestMeta.method()){ + case GET: + case POST: + case HEAD: + case OPTIONS: + return AclMapping.Action.READ; + case PUT: + case DELETE: + case CONNECT: + case TRACE: + case PATCH: + return AclMapping.Action.WRITE; + default: + throw new IllegalArgumentException("Illegal method " + requestMeta.method()); + } + } } |