diff options
author | Arne Juul <arnej@yahoo-inc.com> | 2018-11-21 07:09:28 +0000 |
---|---|---|
committer | gjoranv <gv@oath.com> | 2019-01-21 15:09:27 +0100 |
commit | d4db6b925e01aecdffad5d687fc489d9fd4e127e (patch) | |
tree | d017be3f6d48867910b7032c82cfc3dbb045dc51 /documentapi | |
parent | 0d5108762f5b4f620db1832c7a8f910129b0b65c (diff) |
avoid using a dynamic documentlist just to hold a single operation
Diffstat (limited to 'documentapi')
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 |