From 8b17820cc0367a3e35a951dabed21a9c2d3ab75e Mon Sep 17 00:00:00 2001 From: Håvard Pettersen Date: Tue, 18 Apr 2023 11:53:03 +0000 Subject: add create-if-non-existent flag for document put --- document/src/main/java/com/yahoo/document/DocumentPut.java | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'document/src') diff --git a/document/src/main/java/com/yahoo/document/DocumentPut.java b/document/src/main/java/com/yahoo/document/DocumentPut.java index bfadaa8d4da..a421d5b96d4 100644 --- a/document/src/main/java/com/yahoo/document/DocumentPut.java +++ b/document/src/main/java/com/yahoo/document/DocumentPut.java @@ -9,6 +9,7 @@ import java.util.Objects; public class DocumentPut extends DocumentOperation { private final Document document; + private boolean createIfNonExistent; public DocumentPut(Document document) { this.document = document; @@ -38,6 +39,7 @@ public class DocumentPut extends DocumentOperation { public DocumentPut(DocumentPut other) { super(other); this.document = new Document(other.getDocument()); + createIfNonExistent = other.createIfNonExistent; } /** @@ -46,6 +48,7 @@ public class DocumentPut extends DocumentOperation { public DocumentPut(DocumentPut other, Document newDocument) { super(other); this.document = newDocument; + createIfNonExistent = other.createIfNonExistent; } @Override @@ -54,6 +57,7 @@ public class DocumentPut extends DocumentOperation { if (o == null || getClass() != o.getClass()) return false; DocumentPut that = (DocumentPut) o; return document.equals(that.document) && + (createIfNonExistent == that.createIfNonExistent) && Objects.equals(getCondition(), that.getCondition()); } @@ -67,4 +71,10 @@ public class DocumentPut extends DocumentOperation { return "put of document " + getId(); } + public void setCreateIfNonExistent(boolean value) { + createIfNonExistent = value; + } + public boolean getCreateIfNonExistent() { + return createIfNonExistent; + } } -- cgit v1.2.3 From 021caaf5074b7f2d561c15068e3f2d52ca0e36f2 Mon Sep 17 00:00:00 2001 From: Håvard Pettersen Date: Wed, 19 Apr 2023 12:19:18 +0000 Subject: add requested annotations --- document/src/main/java/com/yahoo/document/DocumentPut.java | 4 ++++ .../com/yahoo/documentapi/messagebus/protocol/PutDocumentMessage.java | 4 ++++ .../yahoo/documentapi/messagebus/protocol/test/MessagesTestBase.java | 1 + .../src/vespa/documentapi/messagebus/messages/putdocumentmessage.h | 4 ++-- 4 files changed, 11 insertions(+), 2 deletions(-) (limited to 'document/src') diff --git a/document/src/main/java/com/yahoo/document/DocumentPut.java b/document/src/main/java/com/yahoo/document/DocumentPut.java index a421d5b96d4..f91ef9a9ee2 100644 --- a/document/src/main/java/com/yahoo/document/DocumentPut.java +++ b/document/src/main/java/com/yahoo/document/DocumentPut.java @@ -2,6 +2,7 @@ package com.yahoo.document; import java.util.Objects; +import com.yahoo.api.annotations.Beta; /** * @author Vegard Sjonfjell @@ -71,9 +72,12 @@ public class DocumentPut extends DocumentOperation { return "put of document " + getId(); } + @Beta public void setCreateIfNonExistent(boolean value) { createIfNonExistent = value; } + + @Beta public boolean getCreateIfNonExistent() { return createIfNonExistent; } diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/PutDocumentMessage.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/PutDocumentMessage.java index 585b24550e3..3e04b2ab669 100755 --- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/PutDocumentMessage.java +++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/PutDocumentMessage.java @@ -1,6 +1,7 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.documentapi.messagebus.protocol; +import com.yahoo.api.annotations.Beta; import com.yahoo.document.DocumentPut; import com.yahoo.document.TestAndSetCondition; import com.yahoo.document.serialization.DocumentDeserializer; @@ -129,9 +130,12 @@ public class PutDocumentMessage extends TestAndSetMessage { put.setCondition(condition); } + @Beta public void setCreateIfNonExistent(boolean value) { put.setCreateIfNonExistent(value); } + + @Beta public boolean getCreateIfNonExistent() { deserialize(); return put.getCreateIfNonExistent(); diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/MessagesTestBase.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/MessagesTestBase.java index f0fded23d82..71cae9d136a 100755 --- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/MessagesTestBase.java +++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/MessagesTestBase.java @@ -94,6 +94,7 @@ public abstract class MessagesTestBase { return Arrays.equals(existingData, dataToWrite); } + @FunctionalInterface public interface DataTamper { byte[] tamperWith(byte[] data); static byte[] truncate(byte[] data, int bytes) { diff --git a/documentapi/src/vespa/documentapi/messagebus/messages/putdocumentmessage.h b/documentapi/src/vespa/documentapi/messagebus/messages/putdocumentmessage.h index 018aea69a71..a1fabd38c3c 100644 --- a/documentapi/src/vespa/documentapi/messagebus/messages/putdocumentmessage.h +++ b/documentapi/src/vespa/documentapi/messagebus/messages/putdocumentmessage.h @@ -67,8 +67,8 @@ public: uint32_t getType() const override; string toString() const override { return "putdocumentmessage"; } - void set_create_if_non_existent(bool value) { _create_if_non_existent = value; } - bool get_create_if_non_existent() const { return _create_if_non_existent; } + void set_create_if_non_existent(bool value) noexcept { _create_if_non_existent = value; } + bool get_create_if_non_existent() const noexcept { return _create_if_non_existent; } }; } -- cgit v1.2.3