diff options
Diffstat (limited to 'documentapi/src/main/java/com')
2 files changed, 20 insertions, 0 deletions
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 4482e5bfc47..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,4 +130,14 @@ 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/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories60.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories60.java index 099839672a2..9812f214066 100644 --- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories60.java +++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories60.java @@ -607,6 +607,10 @@ public abstract class RoutableFactories60 { msg.setDocumentPut(new DocumentPut(Document.createDocument(buf))); msg.setTimestamp(buf.getLong(null)); decodeTasCondition(msg, buf); + if (buf.getBuf().hasRemaining()) { + byte value = buf.getBuf().get(); + msg.setCreateIfNonExistent(value != 0); + } } @Override @@ -627,6 +631,11 @@ public abstract class RoutableFactories60 { msg.getDocumentPut().getDocument().serialize(buf); buf.putLong(null, msg.getTimestamp()); encodeTasCondition(buf, (TestAndSetMessage) obj); + if (msg.getCreateIfNonExistent()) { + buf.getBuf().put((byte)1); + } else { + buf.getBuf().put((byte)0); + } } return true; } |