protected void addRemoveGetReferences(boolean batch) throws Throwable
{
doSetup(false, false, false, 100);
Channel channel1 = new SimpleChannel(0, ms);
Channel channel2 = new SimpleChannel(1, ms);
Message[] m = createMessages(10);
MessageReference ref1 = ms.reference(m[0]);
MessageReference ref2 = ms.reference(m[1]);
MessageReference ref3 = ms.reference(m[2]);
MessageReference ref4 = ms.reference(m[3]);
MessageReference ref5 = ms.reference(m[4]);
MessageReference ref6 = ms.reference(m[5]);
MessageReference ref7 = ms.reference(m[6]);
MessageReference ref8 = ms.reference(m[7]);
MessageReference ref9 = ms.reference(m[8]);
MessageReference ref10 = ms.reference(m[9]);
MessageReference ref11 = ms.reference(m[0]);
MessageReference ref12 = ms.reference(m[1]);
MessageReference ref13 = ms.reference(m[2]);
MessageReference ref14 = ms.reference(m[3]);
MessageReference ref15 = ms.reference(m[4]);
List refs = new ArrayList();
refs.add(ref1);
refs.add(ref2);
refs.add(ref3);
refs.add(ref4);
refs.add(ref5);
refs.add(ref6);
refs.add(ref7);
refs.add(ref8);
refs.add(ref9);
refs.add(ref10);
pm.pageReferences(channel1.getChannelID(), refs, false);
refs = new ArrayList();
refs.add(ref11);
refs.add(ref12);
refs.add(ref13);
refs.add(ref14);
refs.add(ref15);
pm.pageReferences(channel2.getChannelID(), refs, false);
List refIds = getReferenceIds(channel1.getChannelID());
assertNotNull(refIds);
assertEquals(10, refIds.size());
assertTrue(refIds.contains(new Long(ref1.getMessage().getMessageID())));
assertTrue(refIds.contains(new Long(ref2.getMessage().getMessageID())));
assertTrue(refIds.contains(new Long(ref3.getMessage().getMessageID())));
assertTrue(refIds.contains(new Long(ref4.getMessage().getMessageID())));
assertTrue(refIds.contains(new Long(ref5.getMessage().getMessageID())));
assertTrue(refIds.contains(new Long(ref6.getMessage().getMessageID())));
assertTrue(refIds.contains(new Long(ref7.getMessage().getMessageID())));
assertTrue(refIds.contains(new Long(ref8.getMessage().getMessageID())));
assertTrue(refIds.contains(new Long(ref9.getMessage().getMessageID())));
assertTrue(refIds.contains(new Long(ref10.getMessage().getMessageID())));
refIds = getReferenceIds(channel2.getChannelID());
assertNotNull(refIds);
assertEquals(5, refIds.size());
assertTrue(refIds.contains(new Long(ref11.getMessage().getMessageID())));
assertTrue(refIds.contains(new Long(ref12.getMessage().getMessageID())));
assertTrue(refIds.contains(new Long(ref13.getMessage().getMessageID())));
assertTrue(refIds.contains(new Long(ref14.getMessage().getMessageID())));
assertTrue(refIds.contains(new Long(ref15.getMessage().getMessageID())));
List msgs = getMessageIds();
assertNotNull(msgs);
assertEquals(10, msgs.size());
assertTrue(msgs.contains(new Long(ref1.getMessage().getMessageID())));
assertTrue(msgs.contains(new Long(ref2.getMessage().getMessageID())));
assertTrue(msgs.contains(new Long(ref3.getMessage().getMessageID())));
assertTrue(msgs.contains(new Long(ref4.getMessage().getMessageID())));
assertTrue(msgs.contains(new Long(ref5.getMessage().getMessageID())));
assertTrue(msgs.contains(new Long(ref6.getMessage().getMessageID())));
assertTrue(msgs.contains(new Long(ref7.getMessage().getMessageID())));
assertTrue(msgs.contains(new Long(ref8.getMessage().getMessageID())));
assertTrue(msgs.contains(new Long(ref9.getMessage().getMessageID())));
assertTrue(msgs.contains(new Long(ref10.getMessage().getMessageID())));
List msgIds = new ArrayList();
msgIds.add(new Long(ref3.getMessage().getMessageID()));
msgIds.add(new Long(ref4.getMessage().getMessageID()));
msgIds.add(new Long(ref7.getMessage().getMessageID()));
msgIds.add(new Long(ref9.getMessage().getMessageID()));
msgIds.add(new Long(ref1.getMessage().getMessageID()));
List ms = pm.getMessages(msgIds);
assertNotNull(ms);
assertEquals(5, ms.size());
assertTrue(containsMessage(ms, ref3.getMessage().getMessageID()));
assertTrue(containsMessage(ms, ref4.getMessage().getMessageID()));
assertTrue(containsMessage(ms, ref7.getMessage().getMessageID()));
assertTrue(containsMessage(ms, ref9.getMessage().getMessageID()));
assertTrue(containsMessage(ms, ref1.getMessage().getMessageID()));
refs = new ArrayList();
refs.add(ref12);
refs.add(ref13);
refs.add(ref14);
refs.add(ref15);
pm.removeDepagedReferences(channel2.getChannelID(), refs);
refIds = getReferenceIds(channel2.getChannelID());
assertNotNull(refIds);
assertEquals(1, refIds.size());
assertTrue(refIds.contains(new Long(ref11.getMessage().getMessageID())));
ms = getMessageIds();
assertNotNull(ms);
assertEquals(10, ms.size());
assertTrue(msgs.contains(new Long(ref1.getMessage().getMessageID())));
assertTrue(msgs.contains(new Long(ref2.getMessage().getMessageID())));
assertTrue(msgs.contains(new Long(ref3.getMessage().getMessageID())));
assertTrue(msgs.contains(new Long(ref4.getMessage().getMessageID())));
assertTrue(msgs.contains(new Long(ref5.getMessage().getMessageID())));
assertTrue(msgs.contains(new Long(ref6.getMessage().getMessageID())));
assertTrue(msgs.contains(new Long(ref7.getMessage().getMessageID())));
assertTrue(msgs.contains(new Long(ref8.getMessage().getMessageID())));
assertTrue(msgs.contains(new Long(ref9.getMessage().getMessageID())));
assertTrue(msgs.contains(new Long(ref10.getMessage().getMessageID())));
refs = new ArrayList();
refs.add(ref1);
refs.add(ref2);
refs.add(ref3);
pm.removeDepagedReferences(channel1.getChannelID(), refs);
refIds = getReferenceIds(channel1.getChannelID());
assertNotNull(refIds);
assertEquals(7, refIds.size());
assertTrue(refIds.contains(new Long(ref4.getMessage().getMessageID())));
assertTrue(refIds.contains(new Long(ref5.getMessage().getMessageID())));
assertTrue(refIds.contains(new Long(ref6.getMessage().getMessageID())));
assertTrue(refIds.contains(new Long(ref7.getMessage().getMessageID())));
assertTrue(refIds.contains(new Long(ref8.getMessage().getMessageID())));
assertTrue(refIds.contains(new Long(ref9.getMessage().getMessageID())));
assertTrue(refIds.contains(new Long(ref10.getMessage().getMessageID())));
ms = getMessageIds();
assertNotNull(ms);
assertEquals(8, ms.size());
assertTrue(msgs.contains(new Long(ref1.getMessage().getMessageID())));
assertTrue(msgs.contains(new Long(ref4.getMessage().getMessageID())));
assertTrue(msgs.contains(new Long(ref5.getMessage().getMessageID())));
assertTrue(msgs.contains(new Long(ref6.getMessage().getMessageID())));
assertTrue(msgs.contains(new Long(ref7.getMessage().getMessageID())));
assertTrue(msgs.contains(new Long(ref8.getMessage().getMessageID())));
assertTrue(msgs.contains(new Long(ref9.getMessage().getMessageID())));
assertTrue(msgs.contains(new Long(ref10.getMessage().getMessageID())));
refs = new ArrayList();
refs.add(ref11);
pm.removeDepagedReferences(channel2.getChannelID(), refs);
refs = new ArrayList();
refs.add(ref4);
refs.add(ref5);
refs.add(ref6);