summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArne Juul <arnej@yahoo-inc.com>2018-11-21 07:09:28 +0000
committergjoranv <gv@oath.com>2019-01-21 15:09:27 +0100
commitd4db6b925e01aecdffad5d687fc489d9fd4e127e (patch)
treed017be3f6d48867910b7032c82cfc3dbb045dc51
parent0d5108762f5b4f620db1832c7a8f910129b0b65c (diff)
avoid using a dynamic documentlist just to hold a single operation
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/DocumentOpVisitorResponse.java28
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/VisitorDataQueue.java8
-rw-r--r--documentapi/src/test/java/com/yahoo/documentapi/VisitorDataQueueTest.java24
3 files changed, 40 insertions, 20 deletions
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/DocumentOpVisitorResponse.java b/documentapi/src/main/java/com/yahoo/documentapi/DocumentOpVisitorResponse.java
new file mode 100644
index 00000000000..f5641b915f4
--- /dev/null
+++ b/documentapi/src/main/java/com/yahoo/documentapi/DocumentOpVisitorResponse.java
@@ -0,0 +1,28 @@
+// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.documentapi;
+
+import com.yahoo.document.DocumentOperation;
+
+/**
+ * Visitor response containing a document operation. All visitor responses have ack
+ * tokens that must be acked.
+ *
+ * @author Arne H Juul
+ */
+public class DocumentOpVisitorResponse extends VisitorResponse {
+ private DocumentOperation op;
+
+ /**
+ * Creates visitor response containing a document operation and an ack token.
+ *
+ * @param op the document operation
+ * @param ack the ack token
+ */
+ public DocumentOpVisitorResponse(DocumentOperation op, AckToken ack) {
+ super(ack);
+ this.op = op;
+ }
+
+ /** @return the document operation */
+ public DocumentOperation getDocumentOperation() { return op; }
+}
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/VisitorDataQueue.java b/documentapi/src/main/java/com/yahoo/documentapi/VisitorDataQueue.java
index 70809a5523f..5c4e6c625a9 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/VisitorDataQueue.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/VisitorDataQueue.java
@@ -4,9 +4,8 @@ package com.yahoo.documentapi;
import com.yahoo.document.DocumentOperation;
import com.yahoo.documentapi.messagebus.protocol.PutDocumentMessage;
import com.yahoo.documentapi.messagebus.protocol.RemoveDocumentMessage;
+import com.yahoo.documentapi.messagebus.protocol.UpdateDocumentMessage;
import com.yahoo.messagebus.Message;
-import com.yahoo.vdslib.DocumentList;
-import com.yahoo.vdslib.Entry;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
@@ -18,7 +17,7 @@ import java.util.concurrent.TimeUnit;
* implements the <code>getNext</code> methods, thus implementing the polling
* API defined in VisitorDataHandler.
* <p>
- * Visitor responses containing document lists should be polled for with the
+ * Visitor responses should be polled for with the
* <code>getNext</code> methods and need to be acked when processed for
* visiting not to halt. The class is thread safe.
*
@@ -41,8 +40,7 @@ public class VisitorDataQueue extends VisitorDataHandler {
}
private void appendSingleOpToPendingList(final DocumentOperation op, final AckToken token) {
- final DocumentList docList = DocumentList.create(Entry.create(op));
- final DocumentListVisitorResponse response = new DocumentListVisitorResponse(docList, token);
+ final DocumentOpVisitorResponse response = new DocumentOpVisitorResponse(op, token);
pendingResponses.add(response);
}
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/VisitorDataQueueTest.java b/documentapi/src/test/java/com/yahoo/documentapi/VisitorDataQueueTest.java
index fbe2abf2e20..7cd8cf05c8e 100644
--- a/documentapi/src/test/java/com/yahoo/documentapi/VisitorDataQueueTest.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/VisitorDataQueueTest.java
@@ -10,7 +10,6 @@ import com.yahoo.document.DocumentTypeManagerConfigurer;
import com.yahoo.documentapi.messagebus.protocol.GetDocumentMessage;
import com.yahoo.documentapi.messagebus.protocol.PutDocumentMessage;
import com.yahoo.documentapi.messagebus.protocol.RemoveDocumentMessage;
-import com.yahoo.vdslib.Entry;
import org.junit.Before;
import org.junit.Test;
@@ -42,17 +41,15 @@ public class VisitorDataQueueTest {
return new AckToken(new Object());
}
- private static void assertNonNullDocumentListResponse(final VisitorResponse response) {
+ private static void assertNonNullDocumentOpResponse(final VisitorResponse response) {
assertThat(response, notNullValue());
- assertThat(response, instanceOf(DocumentListVisitorResponse.class));
+ assertThat(response, instanceOf(DocumentOpVisitorResponse.class));
}
private static void assertResponseHasSinglePut(final VisitorResponse response, final DocumentPut expectedInstance) {
- assertNonNullDocumentListResponse(response);
- final DocumentListVisitorResponse visitorResponse = (DocumentListVisitorResponse)response;
- assertThat(visitorResponse.getDocumentList().size(), equalTo(1));
- final Entry entry = visitorResponse.getDocumentList().get(0);
- assertThat(entry.getDocumentOperation(), is(expectedInstance));
+ assertNonNullDocumentOpResponse(response);
+ final DocumentOpVisitorResponse visitorResponse = (DocumentOpVisitorResponse)response;
+ assertThat(visitorResponse.getDocumentOperation(), is(expectedInstance));
}
@Test
@@ -78,13 +75,10 @@ public class VisitorDataQueueTest {
}
private static void assertResponseHasSingleRemove(final VisitorResponse response, final String docId) {
- assertNonNullDocumentListResponse(response);
- final DocumentListVisitorResponse visitorResponse = (DocumentListVisitorResponse)response;
- assertThat(visitorResponse.getDocumentList().size(), equalTo(1));
- final Entry entry = visitorResponse.getDocumentList().get(0);
- assertThat(entry.isRemoveEntry(), is(true));
- assertThat(entry.getDocumentOperation(), instanceOf(DocumentRemove.class));
- assertThat(entry.getDocumentOperation().getId(), equalTo(new DocumentId(docId)));
+ assertNonNullDocumentOpResponse(response);
+ final DocumentOpVisitorResponse visitorResponse = (DocumentOpVisitorResponse)response;
+ assertThat(visitorResponse.getDocumentOperation(), instanceOf(DocumentRemove.class));
+ assertThat(visitorResponse.getDocumentOperation().getId(), equalTo(new DocumentId(docId)));
}
@Test