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 /documentapi | |
parent | 2d1f722b835e2f844058bfffbca66f258129bff1 (diff) |
Support conditional removals in AsyncSession
Diffstat (limited to 'documentapi')
4 files changed, 29 insertions, 33 deletions
diff --git a/documentapi/abi-spec.json b/documentapi/abi-spec.json index 625432f2eac..337cff774c5 100644 --- a/documentapi/abi-spec.json +++ b/documentapi/abi-spec.json @@ -48,6 +48,7 @@ "public abstract com.yahoo.documentapi.Result remove(com.yahoo.document.DocumentId)", "public com.yahoo.documentapi.Result remove(com.yahoo.document.DocumentId, com.yahoo.documentapi.messagebus.protocol.DocumentProtocol$Priority)", "public com.yahoo.documentapi.Result remove(com.yahoo.document.DocumentId, com.yahoo.documentapi.DocumentOperationParameters)", + "public com.yahoo.documentapi.Result remove(com.yahoo.document.DocumentRemove, com.yahoo.documentapi.DocumentOperationParameters)", "public abstract com.yahoo.documentapi.Result update(com.yahoo.document.DocumentUpdate)", "public com.yahoo.documentapi.Result update(com.yahoo.document.DocumentUpdate, com.yahoo.documentapi.messagebus.protocol.DocumentProtocol$Priority)", "public com.yahoo.documentapi.Result update(com.yahoo.document.DocumentUpdate, com.yahoo.documentapi.DocumentOperationParameters)", @@ -979,7 +980,7 @@ "public com.yahoo.documentapi.Result get(com.yahoo.document.DocumentId)", "public com.yahoo.documentapi.Result get(com.yahoo.document.DocumentId, com.yahoo.documentapi.DocumentOperationParameters)", "public com.yahoo.documentapi.Result remove(com.yahoo.document.DocumentId)", - "public com.yahoo.documentapi.Result remove(com.yahoo.document.DocumentId, com.yahoo.documentapi.DocumentOperationParameters)", + "public com.yahoo.documentapi.Result remove(com.yahoo.document.DocumentRemove, com.yahoo.documentapi.DocumentOperationParameters)", "public com.yahoo.documentapi.Result update(com.yahoo.document.DocumentUpdate)", "public com.yahoo.documentapi.Result update(com.yahoo.document.DocumentUpdate, com.yahoo.documentapi.DocumentOperationParameters)", "public com.yahoo.documentapi.Response getNext()", @@ -1067,17 +1068,13 @@ ], "methods": [ "public com.yahoo.documentapi.Result put(com.yahoo.document.Document)", - "public com.yahoo.documentapi.Result put(com.yahoo.document.DocumentPut, com.yahoo.documentapi.messagebus.protocol.DocumentProtocol$Priority)", "public com.yahoo.documentapi.Result put(com.yahoo.document.DocumentPut, com.yahoo.documentapi.DocumentOperationParameters)", "public com.yahoo.documentapi.Result get(com.yahoo.document.DocumentId)", "public com.yahoo.documentapi.Result get(com.yahoo.document.DocumentId, boolean, com.yahoo.documentapi.messagebus.protocol.DocumentProtocol$Priority)", - "public com.yahoo.documentapi.Result get(com.yahoo.document.DocumentId, com.yahoo.documentapi.messagebus.protocol.DocumentProtocol$Priority)", "public com.yahoo.documentapi.Result get(com.yahoo.document.DocumentId, com.yahoo.documentapi.DocumentOperationParameters)", "public com.yahoo.documentapi.Result remove(com.yahoo.document.DocumentId)", - "public com.yahoo.documentapi.Result remove(com.yahoo.document.DocumentId, com.yahoo.documentapi.messagebus.protocol.DocumentProtocol$Priority)", - "public com.yahoo.documentapi.Result remove(com.yahoo.document.DocumentId, com.yahoo.documentapi.DocumentOperationParameters)", + "public com.yahoo.documentapi.Result remove(com.yahoo.document.DocumentRemove, com.yahoo.documentapi.DocumentOperationParameters)", "public com.yahoo.documentapi.Result update(com.yahoo.document.DocumentUpdate)", - "public com.yahoo.documentapi.Result update(com.yahoo.document.DocumentUpdate, com.yahoo.documentapi.messagebus.protocol.DocumentProtocol$Priority)", "public com.yahoo.documentapi.Result update(com.yahoo.document.DocumentUpdate, com.yahoo.documentapi.DocumentOperationParameters)", "public com.yahoo.documentapi.Result send(com.yahoo.messagebus.Message)", "public com.yahoo.documentapi.Response getNext()", diff --git a/documentapi/src/main/java/com/yahoo/documentapi/AsyncSession.java b/documentapi/src/main/java/com/yahoo/documentapi/AsyncSession.java index 60f70a91338..86665a90a47 100644 --- a/documentapi/src/main/java/com/yahoo/documentapi/AsyncSession.java +++ b/documentapi/src/main/java/com/yahoo/documentapi/AsyncSession.java @@ -4,6 +4,7 @@ package com.yahoo.documentapi; import com.yahoo.document.Document; import com.yahoo.document.DocumentId; import com.yahoo.document.DocumentPut; +import com.yahoo.document.DocumentRemove; import com.yahoo.document.DocumentUpdate; import com.yahoo.documentapi.messagebus.protocol.DocumentProtocol; @@ -211,7 +212,24 @@ public interface AsyncSession extends Session { * @throws UnsupportedOperationException if this access implementation does not support removal */ default Result remove(DocumentId id, DocumentOperationParameters parameters) { - return remove(id); + return remove(new DocumentRemove(id), parameters); + } + + /** + * <p>Removes a document if it is present. This method returns immediately.</p> + * + * <p>If this result is a success, this + * call will cause one or more {@link DocumentIdResponse} objects to appear within the timeout time of this session. + * The response returned later will either be a success, or contain the document id submitted here. + * If it was not a success, this method has no further effects.</p> + * + * @param remove the document remove operation + * @param parameters parameters for the operation + * @return the synchronous result of this operation + * @throws UnsupportedOperationException if this access implementation does not support removal + */ + default Result remove(DocumentRemove remove, DocumentOperationParameters parameters) { + return remove(remove.getId()); } /** diff --git a/documentapi/src/main/java/com/yahoo/documentapi/local/LocalAsyncSession.java b/documentapi/src/main/java/com/yahoo/documentapi/local/LocalAsyncSession.java index 8781e4a3a51..1117d4526f8 100644 --- a/documentapi/src/main/java/com/yahoo/documentapi/local/LocalAsyncSession.java +++ b/documentapi/src/main/java/com/yahoo/documentapi/local/LocalAsyncSession.java @@ -102,13 +102,13 @@ public class LocalAsyncSession implements AsyncSession { } @Override - public Result remove(DocumentId id, DocumentOperationParameters parameters) { + public Result remove(DocumentRemove remove, DocumentOperationParameters parameters) { return send(req -> { - if (syncSession.remove(new DocumentRemove(id), parameters)) { + if (syncSession.remove(remove, parameters)) { return new RemoveResponse(req, true); } else { - return new DocumentIdResponse(req, id, "Document not found.", Response.Outcome.NOT_FOUND); + return new DocumentIdResponse(req, remove.getId(), "Document not found.", Response.Outcome.NOT_FOUND); } }, parameters); diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusAsyncSession.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusAsyncSession.java index 4d136dd743e..875b74025d0 100644 --- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusAsyncSession.java +++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusAsyncSession.java @@ -4,6 +4,7 @@ package com.yahoo.documentapi.messagebus; import com.yahoo.document.Document; import com.yahoo.document.DocumentId; import com.yahoo.document.DocumentPut; +import com.yahoo.document.DocumentRemove; import com.yahoo.document.DocumentUpdate; import com.yahoo.document.fieldset.AllFields; import com.yahoo.documentapi.AsyncParameters; @@ -104,11 +105,6 @@ public class MessageBusAsyncSession implements MessageBusSession, AsyncSession { } @Override - public Result put(DocumentPut documentPut, DocumentProtocol.Priority pri) { - return put(documentPut, parameters().withPriority(pri)); - } - - @Override public Result put(DocumentPut documentPut, DocumentOperationParameters parameters) { PutDocumentMessage msg = new PutDocumentMessage(documentPut); msg.setPriority(parameters.priority().orElse(DocumentProtocol.Priority.NORMAL_3)); @@ -127,11 +123,6 @@ public class MessageBusAsyncSession implements MessageBusSession, AsyncSession { } @Override - public Result get(DocumentId id, DocumentProtocol.Priority pri) { - return get(id, parameters().withPriority(pri)); - } - - @Override public Result get(DocumentId id, DocumentOperationParameters parameters) { GetDocumentMessage msg = new GetDocumentMessage(id, parameters.fieldSet().orElse(AllFields.NAME)); msg.setPriority(parameters.priority().orElse(DocumentProtocol.Priority.NORMAL_1)); @@ -140,17 +131,12 @@ public class MessageBusAsyncSession implements MessageBusSession, AsyncSession { @Override public Result remove(DocumentId id) { - return remove(id, parameters()); + return remove(new DocumentRemove(id), parameters()); } @Override - public Result remove(DocumentId id, DocumentProtocol.Priority pri) { - return remove(id, parameters().withPriority(pri)); - } - - @Override - public Result remove(DocumentId id, DocumentOperationParameters parameters) { - RemoveDocumentMessage msg = new RemoveDocumentMessage(id); + public Result remove(DocumentRemove remove, DocumentOperationParameters parameters) { + RemoveDocumentMessage msg = new RemoveDocumentMessage(remove); msg.setPriority(parameters.priority().orElse(DocumentProtocol.Priority.NORMAL_2)); return send(msg, parameters); } @@ -161,11 +147,6 @@ public class MessageBusAsyncSession implements MessageBusSession, AsyncSession { } @Override - public Result update(DocumentUpdate update, DocumentProtocol.Priority pri) { - return update(update, parameters().withPriority(pri)); - } - - @Override public Result update(DocumentUpdate update, DocumentOperationParameters parameters) { UpdateDocumentMessage msg = new UpdateDocumentMessage(update); msg.setPriority(parameters.priority().orElse(DocumentProtocol.Priority.NORMAL_2)); |