From 2563b92a8016dee1cb9e1203e287130b5a0fcf46 Mon Sep 17 00:00:00 2001 From: Edgar Asatryan Date: Thu, 5 Jul 2018 15:16:49 +0400 Subject: [PATCH] JAMES-2296 JMS remove by recipient is not remove message from queue. Using proper separator and LIKE operator instead of equals operator to match single recipient from serialized string. --- .../james/queue/activemq/ActiveMQMailQueueBlobTest.java | 7 ------- .../main/java/org/apache/james/queue/jms/JMSMailQueue.java | 5 +++-- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueBlobTest.java b/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueBlobTest.java index 0ae293b6fb6..e7e41dd9171 100644 --- a/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueBlobTest.java +++ b/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueBlobTest.java @@ -107,13 +107,6 @@ public void queueShouldPreservePerRecipientHeaders() { } - @Test - @Override - @Disabled("JAMES-2296 Not handled by JMS mailqueue. Only single recipient per-recipient removal works") - public void removeByRecipientShouldRemoveSpecificEmailWhenMultipleRecipients() { - - } - @Test @Override @Disabled("JAMES-2308 Flushing JMS mail queue randomly re-order them" + diff --git a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java index 83867315d21..75f65bc6039 100644 --- a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java +++ b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java @@ -462,7 +462,6 @@ public String toString() { /** * Create a {@link org.apache.james.queue.api.MailQueue.MailQueueItem} for the given parameters * - * @param connection * @param session * @param consumer * @param message @@ -624,7 +623,9 @@ public long remove(Type type, String value) throws MailQueueException { case Sender: return count(removeWithSelector(JAMES_MAIL_SENDER + " = '" + value + "'")); case Recipient: - return count(removeWithSelector(JAMES_MAIL_RECIPIENTS + " = '" + value + "' or " + JAMES_MAIL_RECIPIENTS + " = '%," + value + "' or " + JAMES_MAIL_RECIPIENTS + " = '%," + value + "%'")); + return count(removeWithSelector(JAMES_MAIL_RECIPIENTS + " = '" + value + "' or " + JAMES_MAIL_RECIPIENTS + + " LIKE '%" + JAMES_MAIL_SEPARATOR + value + "' or " + JAMES_MAIL_RECIPIENTS + " LIKE '%" + + JAMES_MAIL_SEPARATOR + value + "%'")); default: break; }