Author: robbie
Date: Wed May 15 13:49:25 2013
New Revision: 1482838
URL: http://svn.apache.org/r1482838
Log:
QPID-4847: add support for message group attributes when creating/inspecting
queues via the rest interface and web management ui
Modified:
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/addQueue.html
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Queue.js
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addQueue.js
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/showQueue.html
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/BrokerProperties.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Queue.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java
Modified:
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/addQueue.html
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/addQueue.html?rev=1482838&r1=1482837&r2=1482838&view=diff
==============================================================================
---
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/addQueue.html
(original)
+++
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/addQueue.html
Wed May 15 13:49:25 2013
@@ -182,6 +182,22 @@
<td valign="top">NOTE: Configuring maximum delivery
retries on a queue which has no DLQ / AlternateExchange will result in messages
being discarded after the limit is reached.</td>
</tr>
</table>
+ <table cellpadding="0" cellspacing="2">
+
+ <!-- qpid.group_header_key -->
+ <tr>
+ <td valign="top"><strong>Message Group Key:
</strong></td>
+ <td><input type="text" required="false"
name="messageGroupKey" id="formAddQueue.messageGroupKey"
+ dojoType="dijit.form.ValidationTextBox"
+ trim="true"/></td>
+ </tr>
+
+ <!-- qpid.qpid.shared_msg_group -->
+ <tr>
+ <td valign="top"><strong>Shared Message Groups?
</strong></td>
+ <td><input type="checkbox"
name="messageGroupSharedGroups" id="formAddQueue.messageGroupSharedGroups"
value="messageGroupSharedGroups" dojoType="dijit.form.CheckBox" /></td>
+ </tr>
+ </table>
</div>
</div>
<div class="dijitDialogPaneActionBar">
Modified:
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Queue.js
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Queue.js?rev=1482838&r1=1482837&r2=1482838&view=diff
==============================================================================
---
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Queue.js
(original)
+++
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Queue.js
Wed May 15 13:49:25 2013
@@ -282,6 +282,9 @@ define(["dojo/_base/xhr",
"alertThresholdQueueDepthBytesUnits",
"alertThresholdQueueDepthMessages",
"alternateExchange",
+ "messageGroups",
+ "messageGroupKey",
+ "messageGroupSharedGroups",
"queueDepthMessages",
"queueDepthBytes",
"queueDepthBytesUnits",
@@ -357,6 +360,16 @@ define(["dojo/_base/xhr",
this.typeQualifier.innerHTML = entities.encode("(" +
queueTypeKeyNames[this.queueData.type] + ": " +
this.queueData[queueTypeKeys[this.queueData.type]] + ")");
}
+ if(this.queueData["messageGroupKey"])
+ {
+ this.messageGroupKey.innerHTML =
entities.encode(String(this.queueData["messageGroupKey"]));
+ this.messageGroupSharedGroups.innerHTML =
entities.encode(String(this.queueData["messageGroupSharedGroups"]));
+ this.messageGroups.style.display = "block";
+ }
+ else
+ {
+ this.messageGroups.style.display = "none";
+ }
};
QueueUpdater.prototype.update = function()
Modified:
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addQueue.js
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addQueue.js?rev=1482838&r1=1482837&r2=1482838&view=diff
==============================================================================
---
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addQueue.js
(original)
+++
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addQueue.js
Wed May 15 13:49:25 2013
@@ -89,6 +89,12 @@ define(["dojo/_base/xhr",
newQueue["x-qpid-dlq-enabled"] = true;
}
}
+ else if(propName === "messageGroupSharedGroups")
+ {
+ if (formValues.messageGroupSharedGroups[0] &&
formValues.messageGroupSharedGroups[0] == "messageGroupSharedGroups") {
+ newQueue["messageGroupSharedGroups"] = true;
+ }
+ }
else if (!typeSpecificFields.hasOwnProperty(propName)
||
formValues.type ===
typeSpecificFields[ propName ]) {
if(formValues[ propName ] !== "") {
Modified:
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/showQueue.html
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/showQueue.html?rev=1482838&r1=1482837&r2=1482838&view=diff
==============================================================================
---
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/showQueue.html
(original)
+++
qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/showQueue.html
Wed May 15 13:49:25 2013
@@ -51,6 +51,10 @@
<span style="position:absolute; left:26em">Type:</span><span
style="position:absolute; left:29em" class="type"></span>
<span style="position:absolute; right:1em" class="typeQualifier"></span>
<br/>
+ <div class="messageGroups">
+ <span style="" class="messageGroupKeyLabel">Message Group
Key:</span><span class="messageGroupKey" style="position:absolute;
left:11em"></span>
+ <span style="position:absolute; left:26em"
class="messageGroupSharedGroupsLabel">Shared Message Groups:</span><span
style="position:absolute; left:39em" class="messageGroupSharedGroups"></span>
+ </div>
<br/>
<div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Bindings'">
<div class="bindings"></div>
Modified:
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/BrokerProperties.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/BrokerProperties.java?rev=1482838&r1=1482837&r2=1482838&view=diff
==============================================================================
---
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/BrokerProperties.java
(original)
+++
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/BrokerProperties.java
Wed May 15 13:49:25 2013
@@ -50,6 +50,8 @@ public class BrokerProperties
public static final String PROPERTY_MANAGEMENT_RIGHTS_INFER_ALL_ACCESS =
"qpid.broker_jmx_method_rights_infer_all_access";
public static final String PROPERTY_USE_CUSTOM_RMI_SOCKET_FACTORY =
"qpid.broker_jmx_use_custom_rmi_socket_factory";
+ public static final String PROPERTY_DEFAULT_SHARED_MESSAGE_GROUP =
"qpid.broker_default-shared-message-group";
+
public static final String PROPERTY_QPID_HOME = "QPID_HOME";
public static final String PROPERTY_QPID_WORK = "QPID_WORK";
Modified:
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Queue.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Queue.java?rev=1482838&r1=1482837&r2=1482838&view=diff
==============================================================================
---
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Queue.java
(original)
+++
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Queue.java
Wed May 15 13:49:25 2013
@@ -88,7 +88,6 @@ public interface Queue extends Configure
public static final String ALTERNATE_EXCHANGE = "alternateExchange";
public static final String EXCLUSIVE = "exclusive";
public static final String MESSAGE_GROUP_KEY = "messageGroupKey";
- public static final String MESSAGE_GROUP_DEFAULT_GROUP =
"messageGroupDefaultGroup";
public static final String MESSAGE_GROUP_SHARED_GROUPS =
"messageGroupSharedGroups";
public static final String LVQ_KEY = "lvqKey";
public static final String MAXIMUM_DELIVERY_ATTEMPTS =
"maximumDeliveryAttempts";
@@ -122,7 +121,6 @@ public interface Queue extends Configure
LVQ_KEY,
SORT_KEY,
MESSAGE_GROUP_KEY,
- MESSAGE_GROUP_DEFAULT_GROUP,
MESSAGE_GROUP_SHARED_GROUPS,
MAXIMUM_DELIVERY_ATTEMPTS,
QUEUE_FLOW_CONTROL_SIZE_BYTES,
Modified:
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java?rev=1482838&r1=1482837&r2=1482838&view=diff
==============================================================================
---
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java
(original)
+++
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java
Wed May 15 13:49:25 2013
@@ -308,10 +308,6 @@ final class QueueAdapter extends Abstrac
{
// TODO
}
- else if(MESSAGE_GROUP_DEFAULT_GROUP.equals(name))
- {
- // TODO
- }
else if(MESSAGE_GROUP_SHARED_GROUPS.equals(name))
{
// TODO
@@ -416,15 +412,13 @@ final class QueueAdapter extends Abstrac
}
else if(MESSAGE_GROUP_KEY.equals(name))
{
- // TODO
- }
- else if(MESSAGE_GROUP_DEFAULT_GROUP.equals(name))
- {
- // TODO
+ return
_queue.getArguments().get(SimpleAMQQueue.QPID_GROUP_HEADER_KEY);
}
else if(MESSAGE_GROUP_SHARED_GROUPS.equals(name))
{
- // TODO
+ //We only return the boolean value if message groups are actually
in use
+ return getAttribute(MESSAGE_GROUP_KEY) == null ? null :
+
SimpleAMQQueue.SHARED_MSG_GROUP_ARG_VALUE.equals(_queue.getArguments().get(SimpleAMQQueue.QPID_SHARED_MSG_GROUP));
}
else if(LVQ_KEY.equals(name))
{
Modified:
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java?rev=1482838&r1=1482837&r2=1482838&view=diff
==============================================================================
---
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java
(original)
+++
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java
Wed May 15 13:49:25 2013
@@ -70,6 +70,7 @@ import org.apache.qpid.server.queue.AMQQ
import org.apache.qpid.server.queue.AMQQueueFactory;
import org.apache.qpid.server.queue.QueueEntry;
import org.apache.qpid.server.queue.QueueRegistry;
+import org.apache.qpid.server.queue.SimpleAMQQueue;
import org.apache.qpid.server.security.SecurityManager;
import org.apache.qpid.server.security.access.Operation;
import org.apache.qpid.server.security.auth.AuthenticatedPrincipal;
@@ -338,6 +339,23 @@ public final class VirtualHostAdapter ex
throw new IllegalArgumentException("Sort key is not specified
for sorted queue");
}
}
+
+ if (attributes.containsKey(Queue.MESSAGE_GROUP_KEY))
+ {
+ String key =
MapValueConverter.getStringAttribute(Queue.MESSAGE_GROUP_KEY, attributes);
+ attributes.remove(Queue.MESSAGE_GROUP_KEY);
+ attributes.put(SimpleAMQQueue.QPID_GROUP_HEADER_KEY, key);
+ }
+
+ if (attributes.containsKey(Queue.MESSAGE_GROUP_SHARED_GROUPS))
+ {
+
if(MapValueConverter.getBooleanAttribute(Queue.MESSAGE_GROUP_SHARED_GROUPS,
attributes))
+ {
+ attributes.remove(Queue.MESSAGE_GROUP_SHARED_GROUPS);
+ attributes.put(SimpleAMQQueue.QPID_SHARED_MSG_GROUP,
SimpleAMQQueue.SHARED_MSG_GROUP_ARG_VALUE);
+ }
+ }
+
String name =
MapValueConverter.getStringAttribute(Queue.NAME, attributes, null);
State state =
MapValueConverter.getEnumAttribute(State.class, Queue.STATE, attributes,
State.ACTIVE);
boolean durable =
MapValueConverter.getBooleanAttribute(Queue.DURABLE, attributes, false);
Modified:
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java?rev=1482838&r1=1482837&r2=1482838&view=diff
==============================================================================
---
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java
(original)
+++
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java
Wed May 15 13:49:25 2013
@@ -41,8 +41,8 @@ import org.apache.qpid.AMQSecurityExcept
import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.pool.ReferenceCountingExecutorService;
import org.apache.qpid.server.binding.Binding;
+import org.apache.qpid.server.configuration.BrokerProperties;
import org.apache.qpid.server.configuration.QueueConfiguration;
-import org.apache.qpid.server.configuration.plugins.AbstractConfiguration;
import org.apache.qpid.server.exchange.Exchange;
import org.apache.qpid.server.logging.LogActor;
import org.apache.qpid.server.logging.LogSubject;
@@ -65,12 +65,15 @@ import org.apache.qpid.server.virtualhos
public class SimpleAMQQueue implements AMQQueue, Subscription.StateListener,
MessageGroupManager.SubscriptionResetHelper
{
+
private static final Logger _logger =
Logger.getLogger(SimpleAMQQueue.class);
- private static final String QPID_GROUP_HEADER_KEY =
"qpid.group_header_key";
- private static final String QPID_SHARED_MSG_GROUP =
"qpid.shared_msg_group";
- private static final String QPID_DEFAULT_MESSAGE_GROUP =
"qpid.default-message-group";
+ public static final String QPID_GROUP_HEADER_KEY = "qpid.group_header_key";
+ public static final String QPID_SHARED_MSG_GROUP = "qpid.shared_msg_group";
+ public static final String SHARED_MSG_GROUP_ARG_VALUE = "1";
+ private static final String QPID_DEFAULT_MESSAGE_GROUP_ARG =
"qpid.default-message-group";
private static final String QPID_NO_GROUP = "qpid.no-group";
+ private static final String DEFAULT_SHARED_MESSAGE_GROUP =
System.getProperty(BrokerProperties.PROPERTY_DEFAULT_SHARED_MESSAGE_GROUP,
QPID_NO_GROUP);
// TODO - should make this configurable at the vhost / broker level
private static final int DEFAULT_MAX_GROUPS = 255;
@@ -254,12 +257,12 @@ public class SimpleAMQQueue implements A
if(arguments != null && arguments.containsKey(QPID_GROUP_HEADER_KEY))
{
- if(arguments.containsKey(QPID_SHARED_MSG_GROUP) &&
String.valueOf(arguments.get(QPID_SHARED_MSG_GROUP)).equals("1"))
+ if(arguments.containsKey(QPID_SHARED_MSG_GROUP) &&
String.valueOf(arguments.get(QPID_SHARED_MSG_GROUP)).equals(SHARED_MSG_GROUP_ARG_VALUE))
{
- Object defaultGroup =
arguments.get(QPID_DEFAULT_MESSAGE_GROUP);
+ Object defaultGroup =
arguments.get(QPID_DEFAULT_MESSAGE_GROUP_ARG);
_messageGroupManager =
new
DefinedGroupMessageGroupManager(String.valueOf(arguments.get(QPID_GROUP_HEADER_KEY)),
- defaultGroup == null ? QPID_NO_GROUP :
defaultGroup.toString(),
+ defaultGroup == null ?
DEFAULT_SHARED_MESSAGE_GROUP : defaultGroup.toString(),
this);
}
else
Modified:
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java?rev=1482838&r1=1482837&r2=1482838&view=diff
==============================================================================
---
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java
(original)
+++
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java
Wed May 15 13:49:25 2013
@@ -88,8 +88,7 @@ public class Asserts
assertNotNull("Queue " + queueName + " is not found!", queueData);
Asserts.assertAttributesPresent(queueData, Queue.AVAILABLE_ATTRIBUTES,
Queue.CREATED, Queue.UPDATED,
Queue.DESCRIPTION, Queue.TIME_TO_LIVE,
Queue.ALTERNATE_EXCHANGE, Queue.OWNER, Queue.NO_LOCAL, Queue.LVQ_KEY,
- Queue.SORT_KEY, Queue.MESSAGE_GROUP_KEY,
Queue.MESSAGE_GROUP_DEFAULT_GROUP,
- Queue.MESSAGE_GROUP_SHARED_GROUPS, Queue.PRIORITIES);
+ Queue.SORT_KEY, Queue.MESSAGE_GROUP_KEY,
Queue.MESSAGE_GROUP_SHARED_GROUPS, Queue.PRIORITIES);
assertEquals("Unexpected value of queue attribute " + Queue.NAME,
queueName, queueData.get(Queue.NAME));
assertNotNull("Unexpected value of queue attribute " + Queue.ID,
queueData.get(Queue.ID));
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]