From 783a712f4b9dfc892170a923fd7baf3d416f4856 Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Tue, 12 Mar 2024 15:19:55 +0100 Subject: Add support for serializing document update to json --- document/abi-spec.json | 3 ++- document/src/main/java/com/yahoo/document/DocumentUpdate.java | 10 ++++------ document/src/main/java/com/yahoo/document/json/JsonWriter.java | 8 ++++++++ .../com/yahoo/document/serialization/DocumentUpdateWriter.java | 3 +-- .../java/com/yahoo/document/serialization/DocumentWriter.java | 3 +++ .../src/main/java/com/yahoo/vespa/feed/perf/SimpleFeeder.java | 4 ++++ .../test/java/com/yahoo/vespa/feed/perf/SimpleFeederTest.java | 3 ++- 7 files changed, 24 insertions(+), 10 deletions(-) diff --git a/document/abi-spec.json b/document/abi-spec.json index ca4b4da3ca0..5096039a941 100644 --- a/document/abi-spec.json +++ b/document/abi-spec.json @@ -2863,7 +2863,8 @@ "public abstract void write(com.yahoo.document.Document)", "public abstract void write(com.yahoo.document.DocumentId)", "public abstract void write(com.yahoo.document.DocumentType)", - "public abstract void write(com.yahoo.document.DocumentRemove)" + "public abstract void write(com.yahoo.document.DocumentRemove)", + "public abstract void write(com.yahoo.document.DocumentUpdate)" ], "fields" : [ ] }, diff --git a/document/src/main/java/com/yahoo/document/DocumentUpdate.java b/document/src/main/java/com/yahoo/document/DocumentUpdate.java index d3063b76feb..20d9b352d2d 100644 --- a/document/src/main/java/com/yahoo/document/DocumentUpdate.java +++ b/document/src/main/java/com/yahoo/document/DocumentUpdate.java @@ -147,7 +147,7 @@ public class DocumentUpdate extends DocumentOperation implements Iterable entry = iter.next(); FieldUpdate update = entry.getValue(); if (!update.isEmpty()) { - ValueUpdate last = update.getValueUpdate(update.size() - 1); + ValueUpdate last = update.getValueUpdate(update.size() - 1); if (last instanceof AssignValueUpdate) { FieldValue currentValue = doc.getFieldValue(update.getField()); if ((currentValue != null) && currentValue.equals(last.getValue())) { @@ -190,7 +190,7 @@ public class DocumentUpdate extends DocumentOperation implements IterableEinar M R Rosenvinge - * @since 5.1.27 + * @author Einar M R Rosenvinge */ public interface DocumentUpdateWriter { void write(DocumentUpdate update); diff --git a/document/src/main/java/com/yahoo/document/serialization/DocumentWriter.java b/document/src/main/java/com/yahoo/document/serialization/DocumentWriter.java index 10483d8609f..16125926fe6 100644 --- a/document/src/main/java/com/yahoo/document/serialization/DocumentWriter.java +++ b/document/src/main/java/com/yahoo/document/serialization/DocumentWriter.java @@ -5,6 +5,7 @@ import com.yahoo.document.Document; import com.yahoo.document.DocumentId; import com.yahoo.document.DocumentRemove; import com.yahoo.document.DocumentType; +import com.yahoo.document.DocumentUpdate; /** * @author ravishar @@ -20,4 +21,6 @@ public interface DocumentWriter extends FieldWriter { void write(DocumentRemove documentRemove); + void write(DocumentUpdate documentUpdate); + } diff --git a/vespaclient-java/src/main/java/com/yahoo/vespa/feed/perf/SimpleFeeder.java b/vespaclient-java/src/main/java/com/yahoo/vespa/feed/perf/SimpleFeeder.java index 3a7fe8f75c6..386468e85e8 100644 --- a/vespaclient-java/src/main/java/com/yahoo/vespa/feed/perf/SimpleFeeder.java +++ b/vespaclient-java/src/main/java/com/yahoo/vespa/feed/perf/SimpleFeeder.java @@ -192,6 +192,10 @@ public class SimpleFeeder implements ReplyHandler { addCommaAndNewline(); writer.write(op.getDocumentRemove()); } + case UPDATE -> { + addCommaAndNewline(); + writer.write(op.getDocumentUpdate()); + } default -> { /* TODO: No more operations supported yet */ } } numReplies.incrementAndGet(); diff --git a/vespaclient-java/src/test/java/com/yahoo/vespa/feed/perf/SimpleFeederTest.java b/vespaclient-java/src/test/java/com/yahoo/vespa/feed/perf/SimpleFeederTest.java index 2810303fad3..6776b71eea6 100644 --- a/vespaclient-java/src/test/java/com/yahoo/vespa/feed/perf/SimpleFeederTest.java +++ b/vespaclient-java/src/test/java/com/yahoo/vespa/feed/perf/SimpleFeederTest.java @@ -87,10 +87,11 @@ public class SimpleFeederTest { "", "(.+\n)+" + "\\s*\\d+,\\s*3,.+\n"); - assertEquals(96, dump.size()); + assertEquals(169, dump.size()); assertEquals(""" [ {"id":"id:simple:simple::0","fields":{"my_str":"foo"}}, + {"update":"id:simple:simple::1","fields":{"my_str":{"assign":"bar"}}}, {"remove":"id:simple:simple::2"} ]""", dump.toString()); -- cgit v1.2.3