Skip to content

Commit c6a9a1d

Browse files
author
Simon Tennant
committed
Merge pull request #304 from lloydwatkin/rsm-replies
Send RSM element when there are no replies I'll update the version in the vm as soon as this builds a deb.
2 parents b7bf8f1 + 8462627 commit c6a9a1d

File tree

2 files changed

+35
-6
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

+35
-6
lines changed

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

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -87,14 +87,15 @@ private boolean itemExists() throws NodeStoreException {
8787
}
8888

8989
protected void addRsmElement() throws NodeStoreException {
90-
if (null == firstItemId) {
91-
return;
92-
}
90+
9391
Element rsm = pubsub.addElement(XMLConstants.SET_ELEM);
9492
rsm.addNamespace("", NS_RSM);
95-
rsm.addElement("first").setText(firstItemId);
96-
rsm.addElement("last").setText(lastItemId);
97-
rsm.addElement("count").setText(String.valueOf(channelManager.getCountNodeItemReplies(node, parentId)));
93+
if (null != firstItemId) {
94+
rsm.addElement("first").setText(firstItemId);
95+
rsm.addElement("last").setText(lastItemId);
96+
}
97+
rsm.addElement("count").setText(
98+
String.valueOf(channelManager.getCountNodeItemReplies(node, parentId)));
9899
}
99100

100101
private void addReplies() throws NodeStoreException {

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

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,4 +241,32 @@ 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 rsmStillAddedWhenThereAreNoResults() 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+
253+
ArrayList<NodeItem> expectedResults = new ArrayList<NodeItem>();
254+
Mockito.when(channelManager.getNodeItemReplies(Mockito.anyString(), Mockito.anyString(), Mockito.eq("1"), Mockito.eq(4))).thenReturn(
255+
new ClosableIteratorImpl<NodeItem>(expectedResults.iterator()));
256+
257+
Mockito.when(channelManager.getCountNodeItemReplies(Mockito.anyString(), Mockito.anyString())).thenReturn(0);
258+
259+
repliesGet.process(element, jid, request, null);
260+
Packet response = queue.poll();
261+
262+
Element items = response.getElement().element("pubsub").element("items");
263+
264+
Assert.assertEquals("/user/[email protected]/posts", items.attributeValue("node"));
265+
Assert.assertEquals(0, items.elements("item").size());
266+
267+
Element rsmResult = response.getElement().element("pubsub").element("set");
268+
Assert.assertNull(rsmResult.elementText("first"));
269+
Assert.assertNull(rsmResult.elementText("last"));
270+
Assert.assertEquals("0", rsmResult.elementText("count"));
271+
}
244272
}

0 commit comments

Comments
 (0)