summaryrefslogtreecommitdiff
path: root/qpid/java/broker-plugins/management-http
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2014-08-08 16:23:43 +0000
committerRobert Godfrey <rgodfrey@apache.org>2014-08-08 16:23:43 +0000
commitddb91338d5920311f9f7a4493df26c8c9e108e3d (patch)
tree838f63479a6e536dee10530e3b67902213a98678 /qpid/java/broker-plugins/management-http
parent30d0a85f3a19f28eca299e56e7c959a9a810acc8 (diff)
downloadqpid-python-ddb91338d5920311f9f7a4493df26c8c9e108e3d.tar.gz
QPID-4307 : [Java Broker] prevent the copying/moving of messages onto queues on which the message already exists
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1616813 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker-plugins/management-http')
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageServlet.java14
1 files changed, 12 insertions, 2 deletions
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageServlet.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageServlet.java
index 9866207234..8c77876e1a 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageServlet.java
+++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageServlet.java
@@ -33,6 +33,7 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializationConfig;
+
import org.apache.qpid.server.consumer.ConsumerImpl;
import org.apache.qpid.server.message.AMQMessageHeader;
import org.apache.qpid.server.message.MessageDeletedException;
@@ -44,6 +45,7 @@ import org.apache.qpid.server.queue.QueueEntry;
import org.apache.qpid.server.queue.QueueEntryVisitor;
import org.apache.qpid.server.security.SecurityManager;
import org.apache.qpid.server.security.access.Operation;
+import org.apache.qpid.server.store.TransactionLogResource;
public class MessageServlet extends AbstractServlet
{
@@ -212,7 +214,11 @@ public class MessageServlet extends AbstractServlet
@Override
protected void updateEntry(QueueEntry entry, VirtualHost.Transaction txn)
{
- txn.move(entry, _destinationQueue);
+ ServerMessage msg = entry.getMessage();
+ if(msg != null && !msg.isReferenced((TransactionLogResource)_destinationQueue))
+ {
+ txn.move(entry, _destinationQueue);
+ }
}
}
@@ -229,7 +235,11 @@ public class MessageServlet extends AbstractServlet
@Override
protected void updateEntry(QueueEntry entry, VirtualHost.Transaction txn)
{
- txn.copy(entry, _destinationQueue);
+ ServerMessage msg = entry.getMessage();
+ if(msg != null && !msg.isReferenced((TransactionLogResource)_destinationQueue))
+ {
+ txn.copy(entry, _destinationQueue);
+ }
}
}