@Override public synchronized MessageReference getReference(final long id1) throws ActiveMQException { try (LinkedListIterator<MessageReference> iterator = iterator()) { while (iterator.hasNext()) { MessageReference ref = iterator.next(); if (ref.getMessage().getMessageID() == id1) { return ref; } } return null; } }
@Test public void testIterator() { QueueImpl queue = getTemporaryQueue(); final int numMessages = 20; List<MessageReference> refs = new ArrayList<>(); for (int i = 0; i < numMessages; i++) { MessageReference ref = generateReference(queue, i); queue.addTail(ref); refs.add(ref); } Assert.assertEquals(numMessages, getMessageCount(queue)); Iterator<MessageReference> iterator = queue.iterator(); List<MessageReference> list = new ArrayList<>(); while (iterator.hasNext()) { list.add(iterator.next()); } assertRefListsIdenticalRefs(refs, list); }
LinkedListIterator<MessageReference> iter = iterator();
@Override public synchronized boolean sendMessageToDeadLetterAddress(final long messageID) throws Exception { try (LinkedListIterator<MessageReference> iter = iterator()) { while (iter.hasNext()) { MessageReference ref = iter.next(); if (ref.getMessage().getMessageID() == messageID) { incDelivering(ref); sendToDeadLetterAddress(null, ref); iter.remove(); refRemoved(ref); return true; } } return false; } }
@Override public synchronized MessageReference removeReferenceWithID(final long id1) throws Exception { try (LinkedListIterator<MessageReference> iterator = iterator()) { MessageReference removed = null; while (iterator.hasNext()) { MessageReference ref = iterator.next(); if (ref.getMessage().getMessageID() == id1) { iterator.remove(); refRemoved(ref); removed = ref; break; } } if (removed == null) { // Look in scheduled deliveries removed = scheduledDeliveryHandler.removeReferenceWithID(id1); } return removed; } }
@Override public synchronized int sendMessagesToDeadLetterAddress(Filter filter) throws Exception { int count = 0; try (LinkedListIterator<MessageReference> iter = iterator()) { while (iter.hasNext()) { MessageReference ref = iter.next(); if (filter == null || filter.match(ref.getMessage())) { incDelivering(ref); sendToDeadLetterAddress(null, ref); iter.remove(); refRemoved(ref); count++; } } return count; } }
@Override public synchronized int changeReferencesPriority(final Filter filter, final byte newPriority) throws Exception { try (LinkedListIterator<MessageReference> iter = iterator()) { int count = 0; while (iter.hasNext()) { MessageReference ref = iter.next(); if (filter == null || filter.match(ref.getMessage())) { count++; iter.remove(); refRemoved(ref); ref.getMessage().setPriority(newPriority); addTail(ref, false); } } return count; } }
@Override public synchronized boolean changeReferencePriority(final long messageID, final byte newPriority) throws Exception { try (LinkedListIterator<MessageReference> iter = iterator()) { while (iter.hasNext()) { MessageReference ref = iter.next(); if (ref.getMessage().getMessageID() == messageID) { iter.remove(); refRemoved(ref); ref.getMessage().setPriority(newPriority); addTail(ref, false); return true; } } return false; } }
@Override public synchronized boolean expireReference(final long messageID) throws Exception { if (isExpirationRedundant()) { return false; } try (LinkedListIterator<MessageReference> iter = iterator()) { while (iter.hasNext()) { MessageReference ref = iter.next(); if (ref.getMessage().getMessageID() == messageID) { incDelivering(ref); expire(ref); iter.remove(); refRemoved(ref); return true; } } return false; } }
@Override public synchronized boolean moveReference(final long messageID, final SimpleString toAddress, final Binding binding, final boolean rejectDuplicate) throws Exception { try (LinkedListIterator<MessageReference> iter = iterator()) { while (iter.hasNext()) { MessageReference ref = iter.next(); if (ref.getMessage().getMessageID() == messageID) { iter.remove(); refRemoved(ref); incDelivering(ref); try { move(null, toAddress, binding, ref, rejectDuplicate, AckReason.NORMAL, null); } catch (Exception e) { decDelivering(ref); throw e; } return true; } } return false; } }
@Override public synchronized int expireReferences(final Filter filter) throws Exception { if (isExpirationRedundant()) { return 0; } Transaction tx = new TransactionImpl(storageManager); int count = 0; try (LinkedListIterator<MessageReference> iter = iterator()) { while (iter.hasNext()) { MessageReference ref = iter.next(); if (filter == null || filter.match(ref.getMessage())) { incDelivering(ref); expire(tx, ref); iter.remove(); refRemoved(ref); count++; } } tx.commit(); return count; } }
@Override public synchronized boolean deleteReference(final long messageID) throws Exception { boolean deleted = false; Transaction tx = new TransactionImpl(storageManager); try (LinkedListIterator<MessageReference> iter = iterator()) { while (iter.hasNext()) { MessageReference ref = iter.next(); if (ref.getMessage().getMessageID() == messageID) { incDelivering(ref); acknowledge(tx, ref); iter.remove(); refRemoved(ref); deleted = true; break; } } if (!deleted) { // Look in scheduled deliveries deleted = scheduledDeliveryHandler.removeReferenceWithID(messageID) != null ? true : false; } tx.commit(); return deleted; } }
try (LinkedListIterator<MessageReference> iter = iterator()) {