Skip to content

Commit d1d3777

Browse files
committed
Support 'before' paging in replies get
1 parent 02274e7 commit d1d3777

File tree

2 files changed

+32
-0
lines changed
  • src
    • main/java/org/buddycloud/channelserver/packetprocessor/iq/namespace/pubsub/get
    • test/java/org/buddycloud/channelserver/packetprocessor/iq/namespace/pubsub/get

2 files changed

+32
-0
lines changed

src/main/java/org/buddycloud/channelserver/packetprocessor/iq/namespace/pubsub/get/RepliesGet.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,13 @@ protected void addRsmElement() throws NodeStoreException {
9999

100100
private void addReplies() throws NodeStoreException {
101101

102+
String rsmItem = afterItemId;
102103
boolean after = true;
104+
if (null != beforeItemId) {
105+
rsmItem = beforeItemId;
106+
after = false;
107+
}
108+
103109
CloseableIterator<NodeItem> items = channelManager.getNodeItemReplies(node, parentId, afterItemId, after, maxResults);
104110
NodeItem item;
105111
Element entry;

src/test/java/org/buddycloud/channelserver/packetprocessor/iq/namespace/pubsub/get/RepliesGetTest.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,4 +241,30 @@ public void testRsmElementIsAddedCorrectly() throws Exception {
241241
Assert.assertEquals("4", rsmResult.elementText("last"));
242242
Assert.assertEquals(String.valueOf(TOTAL_RESULTS), rsmResult.elementText("count"));
243243
}
244+
245+
@Test
246+
public void providingBeforeValueInRsmElementInvokesPastItemLookup() throws Exception {
247+
248+
Element rsm = request.getChildElement().addElement("set");
249+
rsm.addNamespace("", RepliesGet.NS_RSM);
250+
rsm.addElement("max").setText("4");
251+
rsm.addElement("after").setText("1");
252+
rsm.addElement("before").setText("2");
253+
254+
ArrayList<NodeItem> expectedResults = new ArrayList<NodeItem>();
255+
expectedResults.add(new NodeItemImpl(TEST_NODE, "1", new Date(), "<entry>value1</entry>"));
256+
expectedResults.add(new NodeItemImpl(TEST_NODE, "2", new Date(), "<entry>value2</entry>"));
257+
expectedResults.add(new NodeItemImpl(TEST_NODE, "3", new Date(), "<entry>value3</entry>"));
258+
expectedResults.add(new NodeItemImpl(TEST_NODE, "4", new Date(), "<entry>value4</entry>"));
259+
260+
Mockito.when(channelManager.getNodeItemReplies(Mockito.anyString(), Mockito.anyString(), Mockito.eq("1"), Mockito.eq(false), Mockito.eq(4))).thenReturn(
261+
new ClosableIteratorImpl<NodeItem>(expectedResults.iterator()));
262+
263+
repliesGet.process(element, jid, request, null);
264+
Packet response = queue.poll();
265+
266+
Element items = response.getElement().element("pubsub").element("items");
267+
268+
Assert.assertEquals(4, items.elements("item").size());
269+
}
244270
}

0 commit comments

Comments
 (0)