diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2020-10-13 17:24:53 +0200 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2020-10-13 17:24:53 +0200 |
commit | 2931da13cbf55cb62ebc384d568914673f387bdf (patch) | |
tree | 6b0556d23a7f6567bd7599bcb8304a4f2c3f58fd /vespaclient-container-plugin | |
parent | 2d1f722b835e2f844058bfffbca66f258129bff1 (diff) |
Support conditional removals in AsyncSession
Diffstat (limited to 'vespaclient-container-plugin')
-rw-r--r-- | vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java index 445f2d68961..03546e02d61 100644 --- a/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java +++ b/vespaclient-container-plugin/src/main/java/com/yahoo/document/restapi/resource/DocumentV1ApiHandler.java @@ -13,6 +13,7 @@ import com.yahoo.document.Document; import com.yahoo.document.DocumentId; import com.yahoo.document.DocumentOperation; import com.yahoo.document.DocumentPut; +import com.yahoo.document.DocumentRemove; import com.yahoo.document.DocumentTypeManager; import com.yahoo.document.DocumentUpdate; import com.yahoo.document.FixedBucketSpaces; @@ -360,10 +361,12 @@ public class DocumentV1ApiHandler extends AbstractRequestHandler { private ContentChannel deleteDocument(HttpRequest request, DocumentPath path, ResponseHandler rawHandler) { ResponseHandler handler = new MeasuringResponseHandler(rawHandler, com.yahoo.documentapi.metrics.DocumentOperationType.REMOVE, clock.instant()); enqueueAndDispatch(request, handler, () -> { + DocumentRemove remove = new DocumentRemove(path.id()); + getProperty(request, CONDITION).map(TestAndSetCondition::new).ifPresent(remove::setCondition); DocumentOperationParameters rawParameters = getProperty(request, ROUTE).map(parameters()::withRoute) .orElse(parameters()); DocumentOperationParameters parameters = rawParameters.withResponseHandler(response -> handle(path, handler, response)); - return () -> dispatchOperation(request, handler, () -> asyncSession.remove(path.id(), parameters)); + return () -> dispatchOperation(request, handler, () -> asyncSession.remove(remove, parameters)); }); return ignoredContent; } |