summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Marius Venstad <venstad@gmail.com>2020-09-16 12:11:44 +0200
committerJon Marius Venstad <venstad@gmail.com>2020-09-16 12:11:44 +0200
commit88c81c7bd65d1f2e00beac6e7f8d607b1f8b9f64 (patch)
tree27cb20a27ddd710b505952d419983187e58943c0
parentf6f0e76416325171b4a39585d58af50133fe7372 (diff)
Accept DocumentPut in AsyncSession
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/AsyncSession.java34
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/local/LocalAsyncSession.java8
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusAsyncSession.java6
3 files changed, 40 insertions, 8 deletions
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/AsyncSession.java b/documentapi/src/main/java/com/yahoo/documentapi/AsyncSession.java
index c9db5223283..9f4ceaad37f 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/AsyncSession.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/AsyncSession.java
@@ -3,6 +3,7 @@ package com.yahoo.documentapi;
import com.yahoo.document.Document;
import com.yahoo.document.DocumentId;
+import com.yahoo.document.DocumentPut;
import com.yahoo.document.DocumentUpdate;
import com.yahoo.documentapi.messagebus.protocol.DocumentProtocol;
@@ -44,7 +45,38 @@ public interface AsyncSession extends Session {
* @return the synchronous result of this operation
*/
default Result put(Document document, DocumentProtocol.Priority priority) {
- return put(document);
+ return put(new DocumentPut(document), priority);
+ }
+
+ /**
+ * <p>Puts a document, with optional conditions on the operation. This method returns immediately.</p>
+ *
+ * <p>If this result is a success, this
+ * call will cause one or more {@link DocumentResponse} objects to appear within the timeout time of this session.
+ * The response returned later will either be a success, or contain the document submitted here.
+ * If it was not a success, this method has no further effects.</p>
+ *
+ * @param documentPut the DocumentPut to perform
+ * @return the synchronous result of this operation
+ */
+ default Result put(DocumentPut documentPut) {
+ return put(documentPut, DocumentProtocol.Priority.NORMAL_3);
+ }
+
+ /**
+ * <p>Puts a document, with optional conditions on the operation. This method returns immediately.</p>
+ *
+ * <p>If this result is a success, this
+ * call will cause one or more {@link DocumentResponse} objects to appear within the timeout time of this session.
+ * The response returned later will either be a success, or contain the document submitted here.
+ * If it was not a success, this method has no further effects.</p>
+ *
+ * @param documentPut the DocumentPut to perform
+ * @return the synchronous result of this operation
+ */
+ // TODO Vespa 8: Make this the one to implement.
+ default Result put(DocumentPut documentPut, DocumentProtocol.Priority priority) {
+ return put(documentPut.getDocument());
}
/**
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 00d6bb5ae33..d0316b9fec8 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/local/LocalAsyncSession.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/local/LocalAsyncSession.java
@@ -53,17 +53,17 @@ public class LocalAsyncSession implements AsyncSession {
@Override
public Result put(Document document) {
- return put(document, DocumentProtocol.Priority.NORMAL_3);
+ return put(new DocumentPut(document), DocumentProtocol.Priority.NORMAL_3);
}
@Override
- public Result put(Document document, DocumentProtocol.Priority pri) {
+ public Result put(DocumentPut documentPut, DocumentProtocol.Priority pri) {
long req = getNextRequestId();
try {
- syncSession.put(new DocumentPut(document), pri);
+ syncSession.put(documentPut, pri);
addResponse(new DocumentResponse(req));
} catch (Exception e) {
- addResponse(new DocumentResponse(req, document, e.getMessage(), false));
+ addResponse(new DocumentResponse(req, documentPut.getDocument(), e.getMessage(), false));
}
return new Result(req);
}
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 ab39e4c30ff..113b74a3d04 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusAsyncSession.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/MessageBusAsyncSession.java
@@ -92,12 +92,12 @@ public class MessageBusAsyncSession implements MessageBusSession, AsyncSession {
@Override
public Result put(Document document) {
- return put(document, DocumentProtocol.Priority.NORMAL_3);
+ return put(new DocumentPut(document), DocumentProtocol.Priority.NORMAL_3);
}
@Override
- public Result put(Document document, DocumentProtocol.Priority pri) {
- PutDocumentMessage msg = new PutDocumentMessage(new DocumentPut(document));
+ public Result put(DocumentPut documentPut, DocumentProtocol.Priority pri) {
+ PutDocumentMessage msg = new PutDocumentMessage(documentPut);
msg.setPriority(pri);
return send(msg);
}