mirror of https://github.com/apache/activemq.git
[AMQ-6690] do nothing for move/copy jmx ops that try to modify self
This commit is contained in:
parent
44b5d0be65
commit
8023b9ee44
|
@ -1402,6 +1402,11 @@ public class Queue extends BaseDestination implements Task, UsageListener, Index
|
||||||
*/
|
*/
|
||||||
public int copyMatchingMessages(ConnectionContext context, MessageReferenceFilter filter, ActiveMQDestination dest,
|
public int copyMatchingMessages(ConnectionContext context, MessageReferenceFilter filter, ActiveMQDestination dest,
|
||||||
int maximumMessages) throws Exception {
|
int maximumMessages) throws Exception {
|
||||||
|
|
||||||
|
if (destination.equals(dest)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int movedCounter = 0;
|
int movedCounter = 0;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
Set<MessageReference> set = new LinkedHashSet<MessageReference>();
|
Set<MessageReference> set = new LinkedHashSet<MessageReference>();
|
||||||
|
@ -1498,6 +1503,11 @@ public class Queue extends BaseDestination implements Task, UsageListener, Index
|
||||||
*/
|
*/
|
||||||
public int moveMatchingMessagesTo(ConnectionContext context, MessageReferenceFilter filter,
|
public int moveMatchingMessagesTo(ConnectionContext context, MessageReferenceFilter filter,
|
||||||
ActiveMQDestination dest, int maximumMessages) throws Exception {
|
ActiveMQDestination dest, int maximumMessages) throws Exception {
|
||||||
|
|
||||||
|
if (destination.equals(dest)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int movedCounter = 0;
|
int movedCounter = 0;
|
||||||
Set<MessageReference> set = new LinkedHashSet<MessageReference>();
|
Set<MessageReference> set = new LinkedHashSet<MessageReference>();
|
||||||
do {
|
do {
|
||||||
|
|
|
@ -225,6 +225,33 @@ public class MBeanTest extends EmbeddedBrokerTestSupport {
|
||||||
assertEquals("no change", initialQueueSize, actualCount);
|
assertEquals("no change", initialQueueSize, actualCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testMoveCopyToSameDestFails() throws Exception {
|
||||||
|
connection = connectionFactory.createConnection();
|
||||||
|
useConnection(connection);
|
||||||
|
|
||||||
|
ObjectName queueViewMBeanName = assertRegisteredObjectName(domain + ":type=Broker,brokerName=localhost,destinationType=Queue,destinationName=" + getDestinationString());
|
||||||
|
|
||||||
|
QueueViewMBean queue = MBeanServerInvocationHandler.newProxyInstance(mbeanServer, queueViewMBeanName, QueueViewMBean.class, true);
|
||||||
|
|
||||||
|
CompositeData[] compdatalist = queue.browse();
|
||||||
|
int initialQueueSize = compdatalist.length;
|
||||||
|
CompositeData cdata = compdatalist[0];
|
||||||
|
String messageID = (String) cdata.get("JMSMessageID");
|
||||||
|
|
||||||
|
assertFalse("fail to copy to self", queue.copyMessageTo(messageID, getDestinationString()));
|
||||||
|
assertEquals("fail to copy to self", 0, queue.copyMatchingMessagesTo("", getDestinationString()));
|
||||||
|
assertEquals("fail to copy x to self", 0, queue.copyMatchingMessagesTo("", getDestinationString(), initialQueueSize));
|
||||||
|
|
||||||
|
assertFalse("fail to move to self", queue.moveMessageTo(messageID, getDestinationString()));
|
||||||
|
assertEquals("fail to move to self", 0, queue.moveMatchingMessagesTo("", getDestinationString()));
|
||||||
|
assertEquals("fail to move x to self", 0, queue.moveMatchingMessagesTo("", getDestinationString(), initialQueueSize));
|
||||||
|
|
||||||
|
compdatalist = queue.browse();
|
||||||
|
int actualCount = compdatalist.length;
|
||||||
|
echo("Current queue size: " + actualCount);
|
||||||
|
assertEquals("no change", initialQueueSize, actualCount);
|
||||||
|
}
|
||||||
|
|
||||||
public void testRemoveMessages() throws Exception {
|
public void testRemoveMessages() throws Exception {
|
||||||
ObjectName brokerName = assertRegisteredObjectName(domain + ":type=Broker,brokerName=localhost");
|
ObjectName brokerName = assertRegisteredObjectName(domain + ":type=Broker,brokerName=localhost");
|
||||||
BrokerViewMBean broker = MBeanServerInvocationHandler.newProxyInstance(mbeanServer, brokerName, BrokerViewMBean.class, true);
|
BrokerViewMBean broker = MBeanServerInvocationHandler.newProxyInstance(mbeanServer, brokerName, BrokerViewMBean.class, true);
|
||||||
|
|
Loading…
Reference in New Issue