diff options
Diffstat (limited to 'vespaclient-container-plugin/src/main/java/com')
3 files changed, 18 insertions, 4 deletions
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/OperationHandler.java b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/OperationHandler.java index a6fdcb10a00..848fe4b5726 100644 --- a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/OperationHandler.java +++ b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/OperationHandler.java @@ -101,6 +101,10 @@ public interface OperationHandler { default Optional<String> get(RestUri restUri, Optional<String> fieldSet) throws RestApiException { return get(restUri); } + + default Optional<String> get(RestUri restUri, Optional<String> fieldSet, Optional<String> cluster) throws RestApiException { + return get(restUri, fieldSet); + } /** Called just before this is disposed of */ default void shutdown() {} diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/OperationHandlerImpl.java b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/OperationHandlerImpl.java index 4ca43f5fde2..333f1d2f8c9 100644 --- a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/OperationHandlerImpl.java +++ b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/OperationHandlerImpl.java @@ -279,9 +279,13 @@ public class OperationHandlerImpl implements OperationHandler { } @Override - public Optional<String> get(RestUri restUri, Optional<String> fieldSet) throws RestApiException { + public Optional<String> get(RestUri restUri, Optional<String> fieldSet, Optional<String> cluster) throws RestApiException { SyncSession syncSession = syncSessions.alloc(); - setRoute(syncSession, Optional.empty()); + // Explicit unary used instead of map() due to unhandled exceptions, blargh. + Optional<String> route = cluster.isPresent() + ? Optional.of(clusterDefToRoute(resolveClusterDef(cluster, clusterEnumerator.enumerateClusters()))) + : Optional.empty(); + setRoute(syncSession, route); try { DocumentId id = new DocumentId(restUri.generateFullId()); final Document document = syncSession.get(id, fieldSet.orElse(restUri.getDocumentType() + ":[document]"), DocumentProtocol.Priority.NORMAL_1); @@ -301,6 +305,11 @@ public class OperationHandlerImpl implements OperationHandler { } @Override + public Optional<String> get(RestUri restUri, Optional<String> fieldSet) throws RestApiException { + return get(restUri, fieldSet, Optional.empty()); + } + + @Override public Optional<String> get(RestUri restUri) throws RestApiException { return get(restUri, Optional.empty()); } diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/RestApi.java b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/RestApi.java index d2fd8d92495..7e572dae941 100644 --- a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/RestApi.java +++ b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/RestApi.java @@ -262,8 +262,9 @@ public class RestApi extends LoggingRequestHandler { } private HttpResponse handleGet(RestUri restUri, HttpRequest request) throws RestApiException { - final Optional<String> fieldSet = requestProperty("fieldSet", request); - final Optional<String> getDocument = operationHandler.get(restUri, fieldSet); + final Optional<String> fieldSet = requestProperty(FIELD_SET, request); + final Optional<String> cluster = requestProperty(CLUSTER, request); + final Optional<String> getDocument = operationHandler.get(restUri, fieldSet, cluster); final ObjectNode resultNode = mapper.createObjectNode(); if (getDocument.isPresent()) { final JsonNode parseNode; |