Author: gtully
Date: Tue Nov 6 16:30:31 2012
New Revision: 1406210
URL: http://svn.apache.org/viewvc?rev=1406210&view=rev
Log:
https://issues.apache.org/jira/browse/AMQ-4162 - visibility on destination
query string options, destinationView.options - useful for user metadata about
the destination
Modified:
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DestinationView.java
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DestinationViewMBean.java
activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/jmx/MBeanTest.java
Modified:
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DestinationView.java
URL:
http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DestinationView.java?rev=1406210&r1=1406209&r2=1406210&view=diff
==============================================================================
---
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DestinationView.java
(original)
+++
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DestinationView.java
Tue Nov 6 16:30:31 2012
@@ -17,6 +17,7 @@
package org.apache.activemq.broker.jmx;
import java.io.IOException;
+import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
@@ -50,6 +51,7 @@ import org.apache.activemq.command.Messa
import org.apache.activemq.filter.BooleanExpression;
import org.apache.activemq.filter.MessageEvaluationContext;
import org.apache.activemq.selector.SelectorParser;
+import org.apache.activemq.util.URISupport;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -413,4 +415,15 @@ public class DestinationView implements
return result;
}
+ public String getOptions() {
+ Map<String, String> options =
destination.getActiveMQDestination().getOptions();
+ String optionsString = "";
+ try {
+ if (options != null) {
+ optionsString = URISupport.createQueryString(options);
+ }
+ } catch (URISyntaxException ignored) {}
+ return optionsString;
+ }
+
}
Modified:
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DestinationViewMBean.java
URL:
http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DestinationViewMBean.java?rev=1406210&r1=1406209&r2=1406210&view=diff
==============================================================================
---
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DestinationViewMBean.java
(original)
+++
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DestinationViewMBean.java
Tue Nov 6 16:30:31 2012
@@ -359,4 +359,10 @@ public interface DestinationViewMBean {
@MBeanInfo("returns the optional slowConsumer handler MBeans for this
destination")
ObjectName getSlowConsumerStrategy() throws IOException,
MalformedObjectNameException;
+ /**
+ * @return A string of destination options, name value pairs as URL
queryString.
+ */
+ @MBeanInfo("returns the destination options, name value pairs as URL
queryString")
+ String getOptions();
+
}
Modified:
activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/jmx/MBeanTest.java
URL:
http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/jmx/MBeanTest.java?rev=1406210&r1=1406209&r2=1406210&view=diff
==============================================================================
---
activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/jmx/MBeanTest.java
(original)
+++
activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/jmx/MBeanTest.java
Tue Nov 6 16:30:31 2012
@@ -55,6 +55,7 @@ import org.apache.activemq.command.Activ
import org.apache.activemq.command.ActiveMQQueue;
import org.apache.activemq.command.ActiveMQTempQueue;
import org.apache.activemq.util.JMXSupport;
+import org.apache.activemq.util.URISupport;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -76,6 +77,7 @@ public class MBeanTest extends EmbeddedB
protected boolean transacted;
protected int authMode = Session.AUTO_ACKNOWLEDGE;
protected static final int MESSAGE_COUNT = 2*BaseDestination.MAX_PAGE_SIZE;
+ final static String QUEUE_WITH_OPTIONS = "QueueWithOptions";
/**
* When you run this test case from the command line it will pause before
@@ -719,6 +721,9 @@ public class MBeanTest extends EmbeddedB
policyMap.setDefaultEntry(defaultEntry);
answer.setDestinationPolicy(policyMap);
+ // allow options to be visible via jmx
+ answer.setDestinations(new ActiveMQDestination[]{new
ActiveMQQueue(QUEUE_WITH_OPTIONS + "?topQueue=true&hasOptions=2")});
+
answer.addConnector(bindAddress);
return answer;
}
@@ -895,6 +900,25 @@ public class MBeanTest extends EmbeddedB
assertTrue("dest has some memory usage", queue.getMemoryPercentUsage()
> 0);
}
+ public void testDestinationOptionsAreVisible() throws Exception {
+ ObjectName queueViewMBeanName = assertRegisteredObjectName(domain +
":Type=Queue,Destination=" + QUEUE_WITH_OPTIONS + ",BrokerName=localhost");
+
+ QueueViewMBean queue =
(QueueViewMBean)MBeanServerInvocationHandler.newProxyInstance(mbeanServer,
queueViewMBeanName, QueueViewMBean.class, true);
+
+ assertEquals("name match", QUEUE_WITH_OPTIONS, queue.getName());
+
+ String options = queue.getOptions();
+ LOG.info("Got options: " + options);
+
+ Map<String, String> optionsMap = URISupport.parseQuery(options);
+ assertEquals("got a map", 2, optionsMap.size());
+ assertTrue("matches our options",
optionsMap.containsKey("hasOptions"));
+ assertTrue("matches our options", optionsMap.containsKey("topQueue"));
+
+ assertTrue("matches our options", optionsMap.containsValue("true"));
+ assertTrue("matches our options", optionsMap.containsValue("2"));
+ }
+
public void testSubscriptionViewToConnectionMBean() throws Exception {
connection = connectionFactory.createConnection("admin", "admin");