aboutsummaryrefslogtreecommitdiffstats
path: root/documentapi
diff options
context:
space:
mode:
authorJon Marius Venstad <venstad@gmail.com>2020-10-13 17:24:53 +0200
committerJon Marius Venstad <venstad@gmail.com>2020-10-13 17:24:53 +0200
commit2931da13cbf55cb62ebc384d568914673f387bdf (patch)
tree6b0556d23a7f6567bd7599bcb8304a4f2c3f58fd /documentapi
parent2d1f722b835e2f844058bfffbca66f258129bff1 (diff)
Support conditional removals in AsyncSession
Diffstat (limited to 'documentapi')
-rw-r--r--documentapi/abi-spec.json9
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/AsyncSession.java20
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/local/LocalAsyncSession.java6
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusAsyncSession.java27
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));