From 49d25b3a93209cd6a2cf9e4d2b5a32d994419a2e Mon Sep 17 00:00:00 2001 From: Robert Godfrey Date: Mon, 21 Jul 2014 10:49:50 +0000 Subject: QPID-4520 : The deletion of autodelete queue due to autodeletion should not require ACL rights for deleting the queue git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1612237 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/qpid/server/queue/AbstractQueue.java | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'qpid/java/broker-core/src') diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java index cb3b5effd0..f2ac1a7cdc 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java @@ -430,7 +430,16 @@ public abstract class AbstractQueue> @Override public void performAction(final Deletable object) { - getVirtualHost().removeQueue(AbstractQueue.this); + Subject.doAs(SecurityManager.getSubjectWithAddedSystemRights(), + new PrivilegedAction() + { + @Override + public Void run() + { + getVirtualHost().removeQueue(AbstractQueue.this); + return null; + } + }); } }; @@ -742,7 +751,16 @@ public abstract class AbstractQueue> _logger.info("Auto-deleting queue:" + this); } - getVirtualHost().removeQueue(this); + Subject.doAs(SecurityManager.getSubjectWithAddedSystemRights(), new PrivilegedAction() + { + @Override + public Object run() + { + getVirtualHost().removeQueue(AbstractQueue.this); + return null; + } + }); + // we need to manually fire the event to the removed consumer (which was the last one left for this // queue. This is because the delete method uses the consumer set which has just been cleared -- cgit v1.2.1