You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2016/04/18 23:50:37 UTC
[2/2] activemq-artemis git commit: ARTEMIS-405 JMX attributes doc
ARTEMIS-405 JMX attributes doc
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/5591bcab
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/5591bcab
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/5591bcab
Branch: refs/heads/master
Commit: 5591bcabcc2f65150beba89408d6994ebfcdc130
Parents: 287ee86
Author: jbertram <jb...@apache.org>
Authored: Thu Apr 14 13:18:06 2016 -0500
Committer: Clebert Suconic <cl...@apache.org>
Committed: Mon Apr 18 17:50:09 2016 -0400
----------------------------------------------------------------------
.../api/core/management/AcceptorControl.java | 3 +
.../management/ActiveMQComponentControl.java | 1 +
.../core/management/ActiveMQServerControl.java | 58 +++++++++++++++++-
.../api/core/management/AddressControl.java | 12 +++-
.../artemis/api/core/management/Attribute.java | 34 +++++++++++
.../api/core/management/BridgeControl.java | 16 ++++-
.../core/management/BroadcastGroupControl.java | 7 +++
.../management/ClusterConnectionControl.java | 14 ++++-
.../api/core/management/DivertControl.java | 9 ++-
.../api/core/management/QueueControl.java | 25 ++++++--
.../api/jms/management/JMSQueueControl.java | 13 +++-
.../api/jms/management/JMSServerControl.java | 13 +++-
.../api/jms/management/TopicControl.java | 6 ++
.../management/impl/JMSQueueControlImpl.java | 2 +-
.../management/impl/JMSServerControlImpl.java | 6 ++
.../core/management/impl/AbstractControl.java | 5 +-
.../management/impl/AcceptorControlImpl.java | 6 ++
.../impl/ActiveMQServerControlImpl.java | 6 ++
.../management/impl/AddressControlImpl.java | 6 ++
.../core/management/impl/BridgeControlImpl.java | 6 ++
.../impl/BroadcastGroupControlImpl.java | 6 ++
.../impl/ClusterConnectionControlImpl.java | 6 ++
.../core/management/impl/DivertControlImpl.java | 6 ++
.../core/management/impl/MBeanInfoHelper.java | 64 +++++++++++++++++++-
.../core/management/impl/QueueControlImpl.java | 6 ++
25 files changed, 315 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/5591bcab/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/AcceptorControl.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/AcceptorControl.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/AcceptorControl.java
index 590850d..97e4987 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/AcceptorControl.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/AcceptorControl.java
@@ -26,16 +26,19 @@ public interface AcceptorControl extends ActiveMQComponentControl {
/**
* Returns the name of the acceptor
*/
+ @Attribute(desc = "name of the acceptor")
String getName();
/**
* Returns the class name of the AcceptorFactory implementation
* used by this acceptor.
*/
+ @Attribute(desc = "class name of the AcceptorFactory implementation used by this acceptor")
String getFactoryClassName();
/**
* Returns the parameters used to configure this acceptor
*/
+ @Attribute(desc = "parameters used to configure this acceptor")
Map<String, Object> getParameters();
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/5591bcab/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ActiveMQComponentControl.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ActiveMQComponentControl.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ActiveMQComponentControl.java
index 3fe0660..848e683 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ActiveMQComponentControl.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ActiveMQComponentControl.java
@@ -24,6 +24,7 @@ public interface ActiveMQComponentControl {
/**
* Returns {@code true} if this component is started, {@code false} else.
*/
+ @Attribute(desc = "whether this component is started")
boolean isStarted();
/**
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/5591bcab/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ActiveMQServerControl.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ActiveMQServerControl.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ActiveMQServerControl.java
index c474d1d..53673b2 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ActiveMQServerControl.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ActiveMQServerControl.java
@@ -26,16 +26,19 @@ public interface ActiveMQServerControl {
/**
* Returns this server's version.
*/
+ @Attribute(desc = "server's version")
String getVersion();
/**
- * Returns the number of connections connected to this server.
+ * Returns the number of clients connected to this server.
*/
+ @Attribute(desc = "number of clients connected to this server")
int getConnectionCount();
/**
* Return whether this server is started.
*/
+ @Attribute(desc = "whether this server is started")
boolean isStarted();
/**
@@ -43,6 +46,7 @@ public interface ActiveMQServerControl {
*
* @see org.apache.activemq.artemis.api.core.Interceptor
*/
+ @Attribute(desc = "list of interceptors used by this server for incoming messages")
String[] getIncomingInterceptorClassNames();
/**
@@ -50,126 +54,151 @@ public interface ActiveMQServerControl {
*
* @see org.apache.activemq.artemis.api.core.Interceptor
*/
+ @Attribute(desc = "list of interceptors used by this server for outgoing messages")
String[] getOutgoingInterceptorClassNames();
/**
* Returns whether this server is clustered.
*/
+ @Attribute(desc = "whether this server is clustered")
boolean isClustered();
/**
* Returns the maximum number of threads in the <em>scheduled</em> thread pool.
*/
+ @Attribute(desc = "maximum number of threads in the scheduled thread pool")
int getScheduledThreadPoolMaxSize();
/**
* Returns the maximum number of threads in the thread pool.
*/
+ @Attribute(desc = "maximum number of threads in the thread pool")
int getThreadPoolMaxSize();
/**
* Returns the interval time (in milliseconds) to invalidate security credentials.
*/
+ @Attribute(desc = "interval time (in milliseconds) to invalidate security credentials")
long getSecurityInvalidationInterval();
/**
* Returns whether security is enabled for this server.
*/
+ @Attribute(desc = "whether security is enabled for this server")
boolean isSecurityEnabled();
/**
* Returns the file system directory used to store bindings.
*/
+ @Attribute(desc = "file system directory used to store bindings")
String getBindingsDirectory();
/**
* Returns the file system directory used to store journal log.
*/
+ @Attribute(desc = "file system directory used to store journal log")
String getJournalDirectory();
/**
* Returns the type of journal used by this server (either {@code NIO} or {@code ASYNCIO}).
*/
+ @Attribute(desc = "type of journal used by this server")
String getJournalType();
/**
* Returns whether the journal is synchronized when receiving transactional data.
*/
+ @Attribute(desc = "whether the journal is synchronized when receiving transactional data")
boolean isJournalSyncTransactional();
/**
* Returns whether the journal is synchronized when receiving non-transactional data.
*/
+ @Attribute(desc = "whether the journal is synchronized when receiving non-transactional datar")
boolean isJournalSyncNonTransactional();
/**
* Returns the size (in bytes) of each journal files.
*/
+ @Attribute(desc = "size (in bytes) of each journal files")
int getJournalFileSize();
/**
* Returns the number of journal files to pre-create.
*/
+ @Attribute(desc = "number of journal files to pre-create")
int getJournalMinFiles();
/**
* Returns the maximum number of write requests that can be in the AIO queue at any given time.
*/
+ @Attribute(desc = "maximum number of write requests that can be in the AIO queue at any given time")
int getJournalMaxIO();
/**
* Returns the size of the internal buffer on the journal.
*/
+ @Attribute(desc = "size of the internal buffer on the journal")
int getJournalBufferSize();
/**
* Returns the timeout (in nanoseconds) used to flush internal buffers on the journal.
*/
+ @Attribute(desc = "timeout (in nanoseconds) used to flush internal buffers on the journal")
int getJournalBufferTimeout();
/**
* do any clients failover on a server shutdown
*/
+ @Attribute(desc = "if clients failover on a server shutdown")
void setFailoverOnServerShutdown(boolean failoverOnServerShutdown) throws Exception;
/**
* returns if clients failover on a server shutdown
*/
+ @Attribute(desc = "if clients failover on a server shutdown")
boolean isFailoverOnServerShutdown();
/**
* Returns the minimal number of journal files before compacting.
*/
+ @Attribute(desc = "minimal number of journal files before compacting")
int getJournalCompactMinFiles();
/**
* Return the percentage of live data before compacting the journal.
*/
+ @Attribute(desc = "percentage of live data before compacting the journal")
int getJournalCompactPercentage();
/**
* Returns whether this server is using persistence and store data.
*/
+ @Attribute(desc = "whether this server is using persistence and store data")
boolean isPersistenceEnabled();
/**
* Returns whether the bindings directory is created on this server startup.
*/
+ @Attribute(desc = "whether the bindings directory is created on this server startu")
boolean isCreateBindingsDir();
/**
* Returns whether the journal directory is created on this server startup.
*/
+ @Attribute(desc = "whether the journal directory is created on this server startup")
boolean isCreateJournalDir();
/**
* Returns whether message counter is enabled for this server.
*/
+ @Attribute(desc = "whether message counter is enabled for this server")
boolean isMessageCounterEnabled();
/**
* Returns the maximum number of days kept in memory for message counter.
*/
+ @Attribute(desc = "maximum number of days kept in memory for message counter")
int getMessageCounterMaxDayCount();
/**
@@ -177,11 +206,13 @@ public interface ActiveMQServerControl {
*
* @param count value must be greater than 0
*/
+ @Attribute(desc = "maximum number of days kept in memory for message counter")
void setMessageCounterMaxDayCount(int count) throws Exception;
/**
* Returns the sample period (in milliseconds) to take message counter snapshot.
*/
+ @Attribute(desc = "sample period (in milliseconds) to take message counter snapshot")
long getMessageCounterSamplePeriod();
/**
@@ -189,6 +220,7 @@ public interface ActiveMQServerControl {
*
* @param newPeriod value must be greater than 1000ms
*/
+ @Attribute(desc = "sample period to take message counter snapshot")
void setMessageCounterSamplePeriod(long newPeriod) throws Exception;
/**
@@ -196,21 +228,25 @@ public interface ActiveMQServerControl {
* <br>
* If a backup server has been activated, returns {@code false}.
*/
+ @Attribute(desc = "whether this server is a backup")
boolean isBackup();
/**
* Returns whether this server shares its data store with a corresponding live or backup server.
*/
+ @Attribute(desc = "whether this server shares its data store with a corresponding live or backup serve")
boolean isSharedStore();
/**
* Returns the file system directory used to store paging files.
*/
+ @Attribute(desc = "file system directory used to store paging files")
String getPagingDirectory();
/**
* Returns whether delivery count is persisted before messages are delivered to the consumers.
*/
+ @Attribute(desc = "whether delivery count is persisted before messages are delivered to the consumers")
boolean isPersistDeliveryCountBeforeDelivery();
/**
@@ -218,6 +254,7 @@ public interface ActiveMQServerControl {
* <br>
* This value overrides the connection time to live <em>sent by the client</em>.
*/
+ @Attribute(desc = "connection time to live")
long getConnectionTTLOverride();
/**
@@ -225,6 +262,7 @@ public interface ActiveMQServerControl {
* <br>
* Clients can send management messages to this address to manage this server.
*/
+ @Attribute(desc = "management address of this server")
String getManagementAddress();
/**
@@ -232,74 +270,88 @@ public interface ActiveMQServerControl {
* <br>
* Clients can bind queues to this address to receive management notifications emitted by this server.
*/
+ @Attribute(desc = "management notification address of this server")
String getManagementNotificationAddress();
/**
* Returns the size of the cache for pre-creating message IDs.
*/
+ @Attribute(desc = "size of the cache for pre-creating message IDs")
int getIDCacheSize();
/**
* Returns whether message ID cache is persisted.
*/
+ @Attribute(desc = "whether message ID cache is persisted")
boolean isPersistIDCache();
/**
* Returns the file system directory used to store large messages.
*/
+ @Attribute(desc = "file system directory used to store large messages")
String getLargeMessagesDirectory();
/**
* Returns whether wildcard routing is supported by this server.
*/
+ @Attribute(desc = "whether wildcard routing is supported by this server")
boolean isWildcardRoutingEnabled();
/**
* Returns the timeout (in milliseconds) after which transactions is removed
* from the resource manager after it was created.
*/
+ @Attribute(desc = "timeout (in milliseconds) after which transactions is removed from the resource manager after it was created")
long getTransactionTimeout();
/**
* Returns the frequency (in milliseconds) to scan transactions to detect which transactions
* have timed out.
*/
+ @Attribute(desc = "frequency (in milliseconds) to scan transactions to detect which transactions have timed out")
long getTransactionTimeoutScanPeriod();
/**
* Returns the frequency (in milliseconds) to scan messages to detect which messages
* have expired.
*/
+ @Attribute(desc = "frequency (in milliseconds) to scan messages to detect which messages have expired")
long getMessageExpiryScanPeriod();
/**
* Returns the priority of the thread used to scan message expiration.
*/
+ @Attribute(desc = "priority of the thread used to scan message expiration")
long getMessageExpiryThreadPriority();
/**
* Returns whether code coming from connection is executed asynchronously or not.
*/
+ @Attribute(desc = "whether code coming from connection is executed asynchronously or not")
boolean isAsyncConnectionExecutionEnabled();
/**
* Returns the connectors configured for this server.
*/
+ @Attribute(desc = "connectors configured for this server")
Object[] getConnectors() throws Exception;
/**
* Returns the connectors configured for this server using JSON serialization.
*/
+ @Attribute(desc = "connectors configured for this server using JSON serialization")
String getConnectorsAsJSON() throws Exception;
/**
* Returns the addresses created on this server.
*/
+ @Attribute(desc = "addresses created on this server")
String[] getAddressNames();
/**
* Returns the names of the queues created on this server.
*/
+ @Attribute(desc = "names of the queues created on this server")
String[] getQueueNames();
// Operations ----------------------------------------------------
@@ -435,11 +487,13 @@ public interface ActiveMQServerControl {
/**
* List transactions which have been heuristically committed.
*/
+ @Operation(desc = "List transactions which have been heuristically committed")
String[] listHeuristicCommittedTransactions() throws Exception;
/**
* List transactions which have been heuristically rolled back.
*/
+ @Operation(desc = "List transactions which have been heuristically rolled back")
String[] listHeuristicRolledBackTransactions() throws Exception;
/**
@@ -563,6 +617,7 @@ public interface ActiveMQServerControl {
@Operation(desc = "returns the address settings as a JSON string for an address match", impact = MBeanOperationInfo.INFO)
String getAddressSettingsAsJSON(@Parameter(desc = "an address match", name = "addressMatch") String addressMatch) throws Exception;
+ @Attribute(desc = "names of the diverts deployed on this server")
String[] getDivertNames();
@Operation(desc = "Create a Divert", impact = MBeanOperationInfo.ACTION)
@@ -577,6 +632,7 @@ public interface ActiveMQServerControl {
@Operation(desc = "Destroy a Divert", impact = MBeanOperationInfo.ACTION)
void destroyDivert(@Parameter(name = "name", desc = "Name of the divert") String name) throws Exception;
+ @Attribute(desc = "names of the bridges deployed on this server")
String[] getBridgeNames();
@Operation(desc = "Create a Bridge", impact = MBeanOperationInfo.ACTION)
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/5591bcab/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/AddressControl.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/AddressControl.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/AddressControl.java
index 7d066bd..6ec9541 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/AddressControl.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/AddressControl.java
@@ -26,19 +26,22 @@ public interface AddressControl {
/**
* Returns the managed address.
*/
+ @Attribute(desc = "managed address")
String getAddress();
/**
- * Returns the roles (name and permissions) associated to this address.
+ * Returns the roles (name and permissions) associated with this address.
*/
+ @Attribute(desc = "roles (name and permissions) associated with this address")
Object[] getRoles() throws Exception;
/**
- * Returns the roles (name and permissions) associated to this address
+ * Returns the roles (name and permissions) associated with this address
* using JSON serialization.
* <br>
* Java objects can be recreated from JSON serialization using {@link RoleInfo#from(String)}.
*/
+ @Attribute(desc = "roles (name and permissions) associated with this address using JSON serialization")
String getRolesAsJSON() throws Exception;
@Operation(desc = "returns the number of estimated bytes being used by the queue, used to control paging and blocking",
@@ -52,11 +55,13 @@ public interface AddressControl {
/**
* Returns the names of the queues bound to this address.
*/
+ @Attribute(desc = "names of the queues bound to this address")
String[] getQueueNames() throws Exception;
/**
* Returns the number of pages used by this address.
*/
+ @Attribute(desc = "number of pages used by this address")
int getNumberOfPages() throws Exception;
/**
@@ -64,15 +69,18 @@ public interface AddressControl {
*
* @throws Exception
*/
+ @Attribute(desc = "whether this address is paging")
boolean isPaging() throws Exception;
/**
* Returns the number of bytes used by each page for this address.
*/
+ @Attribute(desc = "number of bytes used by each page for this address")
long getNumberOfBytesPerPage() throws Exception;
/**
* Returns the names of all bindings (both queues and diverts) bound to this address
*/
+ @Attribute(desc = "names of all bindings (both queues and diverts) bound to this address")
String[] getBindingNames() throws Exception;
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/5591bcab/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/Attribute.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/Attribute.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/Attribute.java
new file mode 100644
index 0000000..9682dd9
--- /dev/null
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/Attribute.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.artemis.api.core.management;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Info for a MBean Attribute.
+ * <p>
+ * This annotation is used only for attributes which can be seen
+ * through a GUI.
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface Attribute {
+ String desc() default "";
+}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/5591bcab/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/BridgeControl.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/BridgeControl.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/BridgeControl.java
index 0b17cef..8b4ae95 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/BridgeControl.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/BridgeControl.java
@@ -24,60 +24,72 @@ public interface BridgeControl extends ActiveMQComponentControl {
/**
* Returns the name of this bridge
*/
+ @Attribute(desc = "name of this bridge")
String getName();
/**
* Returns the name of the queue this bridge is consuming messages from.
*/
+ @Attribute(desc = "name of the queue this bridge is consuming messages from")
String getQueueName();
/**
* Returns the address this bridge will forward messages to.
*/
+ @Attribute(desc = "address this bridge will forward messages to")
String getForwardingAddress();
/**
- * Returns the filter string associated to this bridge.
+ * Returns the filter string associated with this bridge.
*/
+ @Attribute(desc = "filter string associated with this bridge")
String getFilterString();
/**
- * Return the name of the org.apache.activemq.artemis.core.server.cluster.Transformer implementation associated to this bridge.
+ * Return the name of the org.apache.activemq.artemis.core.server.cluster.Transformer implementation associated with this bridge.
*/
+ @Attribute(desc = "name of the org.apache.activemq.artemis.core.server.cluster.Transformer implementation associated with this bridge")
String getTransformerClassName();
/**
* Returns any list of static connectors used by this bridge
*/
+ @Attribute(desc = "list of static connectors used by this bridge")
String[] getStaticConnectors() throws Exception;
/**
* Returns the name of the discovery group used by this bridge.
*/
+ @Attribute(desc = "name of the discovery group used by this bridge")
String getDiscoveryGroupName();
/**
* Returns the retry interval used by this bridge.
*/
+ @Attribute(desc = "retry interval used by this bridge")
long getRetryInterval();
/**
* Returns the retry interval multiplier used by this bridge.
*/
+ @Attribute(desc = "retry interval multiplier used by this bridge")
double getRetryIntervalMultiplier();
/**
* Returns the number of reconnection attempts used by this bridge.
*/
+ @Attribute(desc = "number of reconnection attempts used by this bridge")
int getReconnectAttempts();
/**
* Returns whether this bridge is using duplicate detection.
*/
+ @Attribute(desc = "whether this bridge is using duplicate detection")
boolean isUseDuplicateDetection();
/**
* Returns whether this bridge is using high availability
*/
+ @Attribute(desc = "whether this bridge is using high availability")
boolean isHA();
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/5591bcab/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/BroadcastGroupControl.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/BroadcastGroupControl.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/BroadcastGroupControl.java
index 53d5e09..69b9a5e 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/BroadcastGroupControl.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/BroadcastGroupControl.java
@@ -24,36 +24,43 @@ public interface BroadcastGroupControl extends ActiveMQComponentControl {
/**
* Returns the configuration name of this broadcast group.
*/
+ @Attribute(desc = "name of this broadcast group")
String getName();
/**
* Returns the local port this broadcast group is bound to.
*/
+ @Attribute(desc = "local port this broadcast group is bound to")
int getLocalBindPort() throws Exception;
/**
* Returns the address this broadcast group is broadcasting to.
*/
+ @Attribute(desc = "address this broadcast group is broadcasting to")
String getGroupAddress() throws Exception;
/**
* Returns the port this broadcast group is broadcasting to.
*/
+ @Attribute(desc = "port this broadcast group is broadcasting to")
int getGroupPort() throws Exception;
/**
* Returns the period used by this broadcast group.
*/
+ @Attribute(desc = "period used by this broadcast group")
long getBroadcastPeriod();
/**
* Returns the pairs of live-backup connectors that are broadcasted by this broadcast group.
*/
+ @Attribute(desc = "pairs of live-backup connectors that are broadcasted by this broadcast group")
Object[] getConnectorPairs();
/**
* Returns the pairs of live-backup connectors that are broadcasted by this broadcast group
* using JSON serialization.
*/
+ @Attribute(desc = "pairs of live-backup connectors that are broadcasted by this broadcast group using JSON serialization")
String getConnectorPairsAsJSON() throws Exception;
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/5591bcab/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ClusterConnectionControl.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ClusterConnectionControl.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ClusterConnectionControl.java
index 53d19d4..194afad 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ClusterConnectionControl.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ClusterConnectionControl.java
@@ -26,56 +26,67 @@ public interface ClusterConnectionControl extends ActiveMQComponentControl {
/**
* Returns the configuration name of this cluster connection.
*/
+ @Attribute(desc = "name of this cluster connection")
String getName();
/**
* Returns the address used by this cluster connection.
*/
+ @Attribute(desc = "address used by this cluster connection")
String getAddress();
/**
* Returns the node ID used by this cluster connection.
*/
+ @Attribute(desc = "node ID used by this cluster connection")
String getNodeID();
/**
* Return whether this cluster connection use duplicate detection.
*/
+ @Attribute(desc = "whether this cluster connection use duplicate detection")
boolean isDuplicateDetection();
/**
- * Return whether this cluster connection forward messages when it has no local consumers.
+ * Return the type of message load balancing strategy this bridge will use.
*/
+ @Attribute(desc = "type of message load balancing strategy this bridge will use")
String getMessageLoadBalancingType();
/**
* Return the Topology that this Cluster Connection knows about
*/
+ @Attribute(desc = "Topology that this Cluster Connection knows about")
String getTopology();
/**
* Returns the maximum number of hops used by this cluster connection.
*/
+ @Attribute(desc = "maximum number of hops used by this cluster connection")
int getMaxHops();
/**
* Returns the list of static connectors
*/
+ @Attribute(desc = "list of static connectors")
Object[] getStaticConnectors();
/**
* Returns the list of static connectors as JSON
*/
+ @Attribute(desc = "list of static connectors as JSON")
String getStaticConnectorsAsJSON() throws Exception;
/**
* Returns the name of the discovery group used by this cluster connection.
*/
+ @Attribute(desc = "name of the discovery group used by this cluster connection")
String getDiscoveryGroupName();
/**
* Returns the connection retry interval used by this cluster connection.
*/
+ @Attribute(desc = "connection retry interval used by this cluster connection")
long getRetryInterval();
/**
@@ -83,5 +94,6 @@ public interface ClusterConnectionControl extends ActiveMQComponentControl {
* <br>
* keys are node IDs, values are the addresses used to connect to the nodes.
*/
+ @Attribute(desc = "map of the nodes connected to this cluster connection (keys are node IDs, values are the addresses used to connect to the nodes)")
Map<String, String> getNodes() throws Exception;
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/5591bcab/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/DivertControl.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/DivertControl.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/DivertControl.java
index 3e5bca6..c99646b 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/DivertControl.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/DivertControl.java
@@ -24,6 +24,7 @@ public interface DivertControl {
/**
* Returns the filter used by this divert.
*/
+ @Attribute(desc = "filter used by this divert")
String getFilter();
/**
@@ -32,30 +33,36 @@ public interface DivertControl {
* if {@code true} messages will be exclusively diverted and will not be routed to the origin address,
* else messages will be routed both to the origin address and the forwarding address.
*/
+ @Attribute(desc = "whether this divert is exclusive")
boolean isExclusive();
/**
* Returns the cluster-wide unique name of this divert.
*/
+ @Attribute(desc = "cluster-wide unique name of this divert")
String getUniqueName();
/**
* Returns the routing name of this divert.
*/
+ @Attribute(desc = "routing name of this divert")
String getRoutingName();
/**
* Returns the origin address used by this divert.
*/
+ @Attribute(desc = "origin address used by this divert")
String getAddress();
/**
* Returns the forwarding address used by this divert.
*/
+ @Attribute(desc = "forwarding address used by this divert")
String getForwardingAddress();
/**
- * Return the name of the org.apache.activemq.artemis.core.server.cluster.Transformer implementation associated to this bridge.
+ * Return the name of the org.apache.activemq.artemis.core.server.cluster.Transformer implementation associated with this divert.
*/
+ @Attribute(desc = "name of the org.apache.activemq.artemis.core.server.cluster.Transformer implementation associated with this divert")
String getTransformerClassName();
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/5591bcab/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/QueueControl.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/QueueControl.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/QueueControl.java
index 76ad6a5..3a3b349 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/QueueControl.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/QueueControl.java
@@ -29,86 +29,103 @@ public interface QueueControl {
/**
* Returns the name of this queue.
*/
+ @Attribute(desc = "name of this queue")
String getName();
/**
* Returns the address this queue is bound to.
*/
+ @Attribute(desc = "address this queue is bound to")
String getAddress();
/**
* Returns this queue ID.
*/
+ @Attribute(desc = "ID of this queue")
long getID();
/**
* Returns whether this queue is temporary.
*/
+ @Attribute(desc = "whether this queue is temporary")
boolean isTemporary();
/**
* Returns whether this queue is durable.
*/
+ @Attribute(desc = "whether this queue is durable")
boolean isDurable();
/**
- * Returns the filter associated to this queue.
+ * Returns the filter associated with this queue.
*/
+ @Attribute(desc = "filter associated with this queue")
String getFilter();
/**
* Returns the number of messages currently in this queue.
*/
+ @Attribute(desc = "number of messages currently in this queue (includes scheduled, paged, and in-delivery messages)")
long getMessageCount();
/**
* Returns the number of scheduled messages in this queue.
*/
+ @Attribute(desc = "number of scheduled messages in this queue")
long getScheduledCount();
/**
* Returns the number of consumers consuming messages from this queue.
*/
+ @Attribute(desc = "number of consumers consuming messages from this queue")
int getConsumerCount();
/**
* Returns the number of messages that this queue is currently delivering to its consumers.
*/
+ @Attribute(desc = "number of messages that this queue is currently delivering to its consumers")
int getDeliveringCount();
/**
* Returns the number of messages added to this queue since it was created.
*/
+ @Attribute(desc = "number of messages added to this queue since it was created")
long getMessagesAdded();
/**
* Returns the number of messages added to this queue since it was created.
*/
+ @Attribute(desc = "number of messages acknowledged from this queue since it was created")
long getMessagesAcknowledged();
/**
* Returns the first message on the queue as JSON
*/
+ @Attribute(desc = "first message on the queue as JSON")
String getFirstMessageAsJSON() throws Exception;
/**
* Returns the timestamp of the first message in milliseconds.
*/
+ @Attribute(desc = "timestamp of the first message in milliseconds")
Long getFirstMessageTimestamp() throws Exception;
/**
* Returns the age of the first message in milliseconds.
*/
+ @Attribute(desc = "age of the first message in milliseconds")
Long getFirstMessageAge() throws Exception;
/**
- * Returns the expiry address associated to this queue.
+ * Returns the expiry address associated with this queue.
*/
+ @Attribute(desc = "expiry address associated with this queue")
String getExpiryAddress();
/**
- * Returns the dead-letter address associated to this queue.
+ * Returns the dead-letter address associated with this queue.
*/
+ @Attribute(desc = "dead-letter address associated with this queue")
String getDeadLetterAddress();
// Operations ----------------------------------------------------
@@ -396,7 +413,7 @@ public interface QueueControl {
/**
* Returns whether the queue is paused.
*/
- @Operation(desc = "Inspects if the queue is paused", impact = MBeanOperationInfo.INFO)
+ @Attribute(desc = "whether the queue is paused")
boolean isPaused() throws Exception;
/**
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/5591bcab/artemis-jms-client/src/main/java/org/apache/activemq/artemis/api/jms/management/JMSQueueControl.java
----------------------------------------------------------------------
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/api/jms/management/JMSQueueControl.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/api/jms/management/JMSQueueControl.java
index 941b5d0..837ec68 100644
--- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/api/jms/management/JMSQueueControl.java
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/api/jms/management/JMSQueueControl.java
@@ -21,6 +21,7 @@ import java.util.Map;
import javax.management.MBeanOperationInfo;
import javax.management.openmbean.CompositeData;
+import org.apache.activemq.artemis.api.core.management.Attribute;
import org.apache.activemq.artemis.api.core.management.Operation;
import org.apache.activemq.artemis.api.core.management.Parameter;
@@ -31,43 +32,51 @@ public interface JMSQueueControl extends DestinationControl {
// Attributes ----------------------------------------------------
/**
- * Returns the expiry address associated to this queue.
+ * Returns the expiry address associated with this queue.
*/
+ @Attribute(desc = "expiry address associated with this queue")
String getExpiryAddress();
/**
- * Returns the dead-letter address associated to this queue.
+ * Returns the dead-letter address associated with this queue.
*/
+ @Attribute(desc = "dead-letter address associated with this queue")
String getDeadLetterAddress();
/**
* Returns the number of scheduled messages in this queue.
*/
+ @Attribute(desc = "number of scheduled messages in this queue")
long getScheduledCount();
/**
* Returns the number of consumers consuming messages from this queue.
*/
+ @Attribute(desc = "number of consumers consuming messages from this queue")
int getConsumerCount();
/**
* returns the selector for the queue
*/
+ @Attribute(desc = "selector for the queue")
String getSelector();
/**
* Returns the first message on the queue as JSON
*/
+ @Attribute(desc = "first message on the queue as JSON")
String getFirstMessageAsJSON() throws Exception;
/**
* Returns the timestamp of the first message in milliseconds.
*/
+ @Attribute(desc = "timestamp of the first message in milliseconds")
Long getFirstMessageTimestamp() throws Exception;
/**
* Returns the age of the first message in milliseconds.
*/
+ @Attribute(desc = "age of the first message in milliseconds")
Long getFirstMessageAge() throws Exception;
// Operations ----------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/5591bcab/artemis-jms-client/src/main/java/org/apache/activemq/artemis/api/jms/management/JMSServerControl.java
----------------------------------------------------------------------
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/api/jms/management/JMSServerControl.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/api/jms/management/JMSServerControl.java
index 0c7ab71..8e93c6e 100644
--- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/api/jms/management/JMSServerControl.java
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/api/jms/management/JMSServerControl.java
@@ -18,6 +18,7 @@ package org.apache.activemq.artemis.api.jms.management;
import javax.management.MBeanOperationInfo;
+import org.apache.activemq.artemis.api.core.management.Attribute;
import org.apache.activemq.artemis.api.core.management.Operation;
import org.apache.activemq.artemis.api.core.management.Parameter;
@@ -30,31 +31,37 @@ public interface JMSServerControl {
/**
* Returns whether this server is started.
*/
+ @Attribute(desc = "whether this server is started")
boolean isStarted();
/**
* Returns this server's version
*/
+ @Attribute(desc = "server's version")
String getVersion();
/**
* Returns the names of the JMS topics available on this server.
*/
+ @Attribute(desc = "names of the JMS topics available on this server")
String[] getTopicNames();
/**
* Returns the names of the JMS queues available on this server.
*/
+ @Attribute(desc = "names of the JMS queues available on this server")
String[] getQueueNames();
/**
* Returns the names of the JMS connection factories available on this server.
*/
+ @Attribute(desc = "names of the JMS connection factories available on this server")
String[] getConnectionFactoryNames();
/**
- * Returns the servers nodeId
+ * Returns the server's nodeId
*/
+ @Attribute(desc = "server's nodeId")
String getNodeID();
// Operations ----------------------------------------------------
@@ -311,7 +318,7 @@ public interface JMSServerControl {
*
* @see JMSConsumerInfo#from(String)
*/
- @Operation(desc = "List all JMS consumers associated to a JMS Connection")
+ @Operation(desc = "List all JMS consumers associated with a JMS Connection")
String listConsumersAsJSON(@Parameter(desc = "a connection ID", name = "connectionID") String connectionID) throws Exception;
/**
@@ -320,7 +327,7 @@ public interface JMSServerControl {
*
* @see JMSConsumerInfo#from(String)
*/
- @Operation(desc = "List all JMS consumers associated to a JMS Connection")
+ @Operation(desc = "List all JMS consumers associated with a JMS Connection")
String listAllConsumersAsJSON() throws Exception;
/**
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/5591bcab/artemis-jms-client/src/main/java/org/apache/activemq/artemis/api/jms/management/TopicControl.java
----------------------------------------------------------------------
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/api/jms/management/TopicControl.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/api/jms/management/TopicControl.java
index f70c321..f7be4b2 100644
--- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/api/jms/management/TopicControl.java
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/api/jms/management/TopicControl.java
@@ -20,6 +20,7 @@ import java.util.Map;
import javax.management.MBeanOperationInfo;
+import org.apache.activemq.artemis.api.core.management.Attribute;
import org.apache.activemq.artemis.api.core.management.Operation;
import org.apache.activemq.artemis.api.core.management.Parameter;
@@ -31,26 +32,31 @@ public interface TopicControl extends DestinationControl {
/**
* Returns the number of (durable and non-durable) subscribers for this topic.
*/
+ @Attribute(desc = "number of (durable and non-durable) subscribers for this topic")
int getSubscriptionCount();
/**
* Returns the number of <em>durable</em> subscribers for this topic.
*/
+ @Attribute(desc = "number of durable subscribers for this topic")
int getDurableSubscriptionCount();
/**
* Returns the number of <em>non-durable</em> subscribers for this topic.
*/
+ @Attribute(desc = "number of non-durable subscribers for this topic")
int getNonDurableSubscriptionCount();
/**
* Returns the number of messages for all <em>durable</em> subscribers for this topic.
*/
+ @Attribute(desc = "number of messages for all durable subscribers for this topic")
int getDurableMessageCount();
/**
* Returns the number of messages for all <em>non-durable</em> subscribers for this topic.
*/
+ @Attribute(desc = "number of messages for all non-durable subscribers for this topic")
int getNonDurableMessageCount();
/**
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/5591bcab/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/management/impl/JMSQueueControlImpl.java
----------------------------------------------------------------------
diff --git a/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/management/impl/JMSQueueControlImpl.java b/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/management/impl/JMSQueueControlImpl.java
index d337d99..2d6c46e 100644
--- a/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/management/impl/JMSQueueControlImpl.java
+++ b/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/management/impl/JMSQueueControlImpl.java
@@ -505,7 +505,7 @@ public class JMSQueueControlImpl extends StandardMBean implements JMSQueueContro
@Override
public MBeanInfo getMBeanInfo() {
MBeanInfo info = super.getMBeanInfo();
- return new MBeanInfo(info.getClassName(), info.getDescription(), info.getAttributes(), info.getConstructors(), MBeanInfoHelper.getMBeanOperationsInfo(JMSQueueControl.class), info.getNotifications());
+ return new MBeanInfo(info.getClassName(), info.getDescription(), MBeanInfoHelper.getMBeanAttributesInfo(JMSQueueControl.class), info.getConstructors(), MBeanInfoHelper.getMBeanOperationsInfo(JMSQueueControl.class), info.getNotifications());
}
// Package protected ---------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/5591bcab/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/management/impl/JMSServerControlImpl.java
----------------------------------------------------------------------
diff --git a/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/management/impl/JMSServerControlImpl.java b/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/management/impl/JMSServerControlImpl.java
index b262724..5543abc 100644
--- a/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/management/impl/JMSServerControlImpl.java
+++ b/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/management/impl/JMSServerControlImpl.java
@@ -18,6 +18,7 @@ package org.apache.activemq.artemis.jms.management.impl;
import javax.jms.JMSRuntimeException;
import javax.management.ListenerNotFoundException;
+import javax.management.MBeanAttributeInfo;
import javax.management.MBeanNotificationInfo;
import javax.management.MBeanOperationInfo;
import javax.management.Notification;
@@ -743,6 +744,11 @@ public class JMSServerControlImpl extends AbstractControl implements JMSServerCo
return MBeanInfoHelper.getMBeanOperationsInfo(JMSServerControl.class);
}
+ @Override
+ protected MBeanAttributeInfo[] fillMBeanAttributeInfo() {
+ return MBeanInfoHelper.getMBeanAttributesInfo(JMSServerControl.class);
+ }
+
// Private -------------------------------------------------------
private void checkStarted() {
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/5591bcab/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/AbstractControl.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/AbstractControl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/AbstractControl.java
index 8281f6b..1a83081 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/AbstractControl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/AbstractControl.java
@@ -16,6 +16,7 @@
*/
package org.apache.activemq.artemis.core.management.impl;
+import javax.management.MBeanAttributeInfo;
import javax.management.MBeanInfo;
import javax.management.MBeanOperationInfo;
import javax.management.NotCompliantMBeanException;
@@ -69,10 +70,12 @@ public abstract class AbstractControl extends StandardMBean {
protected abstract MBeanOperationInfo[] fillMBeanOperationInfo();
+ protected abstract MBeanAttributeInfo[] fillMBeanAttributeInfo();
+
@Override
public MBeanInfo getMBeanInfo() {
MBeanInfo info = super.getMBeanInfo();
- return new MBeanInfo(info.getClassName(), info.getDescription(), info.getAttributes(), info.getConstructors(), fillMBeanOperationInfo(), info.getNotifications());
+ return new MBeanInfo(info.getClassName(), info.getDescription(), fillMBeanAttributeInfo(), info.getConstructors(), fillMBeanOperationInfo(), info.getNotifications());
}
// Private -------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/5591bcab/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/AcceptorControlImpl.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/AcceptorControlImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/AcceptorControlImpl.java
index 0e9359d..ac6950d 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/AcceptorControlImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/AcceptorControlImpl.java
@@ -18,6 +18,7 @@ package org.apache.activemq.artemis.core.management.impl;
import java.util.Map;
+import javax.management.MBeanAttributeInfo;
import javax.management.MBeanOperationInfo;
import org.apache.activemq.artemis.api.core.TransportConfiguration;
@@ -120,6 +121,11 @@ public class AcceptorControlImpl extends AbstractControl implements AcceptorCont
return MBeanInfoHelper.getMBeanOperationsInfo(AcceptorControl.class);
}
+ @Override
+ protected MBeanAttributeInfo[] fillMBeanAttributeInfo() {
+ return MBeanInfoHelper.getMBeanAttributesInfo(AcceptorControl.class);
+ }
+
// Public --------------------------------------------------------
// Package protected ---------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/5591bcab/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ActiveMQServerControlImpl.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ActiveMQServerControlImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ActiveMQServerControlImpl.java
index 7488163..ae16891 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ActiveMQServerControlImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ActiveMQServerControlImpl.java
@@ -31,6 +31,7 @@ import java.util.Set;
import java.util.concurrent.atomic.AtomicLong;
import javax.management.ListenerNotFoundException;
+import javax.management.MBeanAttributeInfo;
import javax.management.MBeanNotificationInfo;
import javax.management.MBeanOperationInfo;
import javax.management.Notification;
@@ -1842,6 +1843,11 @@ public class ActiveMQServerControlImpl extends AbstractControl implements Active
return MBeanInfoHelper.getMBeanOperationsInfo(ActiveMQServerControl.class);
}
+ @Override
+ protected MBeanAttributeInfo[] fillMBeanAttributeInfo() {
+ return MBeanInfoHelper.getMBeanAttributesInfo(ActiveMQServerControl.class);
+ }
+
private void checkStarted() {
if (!server.isStarted()) {
throw new IllegalStateException("Broker is not started. It can not be managed yet");
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/5591bcab/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/AddressControlImpl.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/AddressControlImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/AddressControlImpl.java
index 7dbe750..7cb67af 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/AddressControlImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/AddressControlImpl.java
@@ -16,6 +16,7 @@
*/
package org.apache.activemq.artemis.core.management.impl;
+import javax.management.MBeanAttributeInfo;
import javax.management.MBeanOperationInfo;
import java.util.ArrayList;
import java.util.List;
@@ -229,6 +230,11 @@ public class AddressControlImpl extends AbstractControl implements AddressContro
return MBeanInfoHelper.getMBeanOperationsInfo(AddressControl.class);
}
+ @Override
+ protected MBeanAttributeInfo[] fillMBeanAttributeInfo() {
+ return MBeanInfoHelper.getMBeanAttributesInfo(AddressControl.class);
+ }
+
// Package protected ---------------------------------------------
// Protected -----------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/5591bcab/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/BridgeControlImpl.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/BridgeControlImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/BridgeControlImpl.java
index 9c2b45e..3130c86 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/BridgeControlImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/BridgeControlImpl.java
@@ -16,6 +16,7 @@
*/
package org.apache.activemq.artemis.core.management.impl;
+import javax.management.MBeanAttributeInfo;
import javax.management.MBeanOperationInfo;
import org.apache.activemq.artemis.api.core.management.BridgeControl;
@@ -221,6 +222,11 @@ public class BridgeControlImpl extends AbstractControl implements BridgeControl
return MBeanInfoHelper.getMBeanOperationsInfo(BridgeControl.class);
}
+ @Override
+ protected MBeanAttributeInfo[] fillMBeanAttributeInfo() {
+ return MBeanInfoHelper.getMBeanAttributesInfo(BridgeControl.class);
+ }
+
// Public --------------------------------------------------------
// Package protected ---------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/5591bcab/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/BroadcastGroupControlImpl.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/BroadcastGroupControlImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/BroadcastGroupControlImpl.java
index 64cf0c7..d6ef25e 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/BroadcastGroupControlImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/BroadcastGroupControlImpl.java
@@ -16,6 +16,7 @@
*/
package org.apache.activemq.artemis.core.management.impl;
+import javax.management.MBeanAttributeInfo;
import javax.management.MBeanOperationInfo;
import org.apache.activemq.artemis.api.core.BroadcastGroupConfiguration;
@@ -188,6 +189,11 @@ public class BroadcastGroupControlImpl extends AbstractControl implements Broadc
return MBeanInfoHelper.getMBeanOperationsInfo(BroadcastGroupControl.class);
}
+ @Override
+ protected MBeanAttributeInfo[] fillMBeanAttributeInfo() {
+ return MBeanInfoHelper.getMBeanAttributesInfo(BroadcastGroupControl.class);
+ }
+
// Public --------------------------------------------------------
// Package protected ---------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/5591bcab/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ClusterConnectionControlImpl.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ClusterConnectionControlImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ClusterConnectionControlImpl.java
index e344e14..17426d0 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ClusterConnectionControlImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/ClusterConnectionControlImpl.java
@@ -16,6 +16,7 @@
*/
package org.apache.activemq.artemis.core.management.impl;
+import javax.management.MBeanAttributeInfo;
import javax.management.MBeanOperationInfo;
import java.util.List;
import java.util.Map;
@@ -244,6 +245,11 @@ public class ClusterConnectionControlImpl extends AbstractControl implements Clu
return MBeanInfoHelper.getMBeanOperationsInfo(ClusterConnectionControl.class);
}
+ @Override
+ protected MBeanAttributeInfo[] fillMBeanAttributeInfo() {
+ return MBeanInfoHelper.getMBeanAttributesInfo(ClusterConnectionControl.class);
+ }
+
// Public --------------------------------------------------------
// Package protected ---------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/5591bcab/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/DivertControlImpl.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/DivertControlImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/DivertControlImpl.java
index 9f55481..aacf834 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/DivertControlImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/DivertControlImpl.java
@@ -16,6 +16,7 @@
*/
package org.apache.activemq.artemis.core.management.impl;
+import javax.management.MBeanAttributeInfo;
import javax.management.MBeanOperationInfo;
import org.apache.activemq.artemis.api.core.management.DivertControl;
@@ -129,6 +130,11 @@ public class DivertControlImpl extends AbstractControl implements DivertControl
return MBeanInfoHelper.getMBeanOperationsInfo(DivertControl.class);
}
+ @Override
+ protected MBeanAttributeInfo[] fillMBeanAttributeInfo() {
+ return MBeanInfoHelper.getMBeanAttributesInfo(DivertControl.class);
+ }
+
// Public --------------------------------------------------------
// Package protected ---------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/5591bcab/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/MBeanInfoHelper.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/MBeanInfoHelper.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/MBeanInfoHelper.java
index f0ded4e..eb6194e 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/MBeanInfoHelper.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/MBeanInfoHelper.java
@@ -16,14 +16,15 @@
*/
package org.apache.activemq.artemis.core.management.impl;
+import javax.management.MBeanAttributeInfo;
+import javax.management.MBeanOperationInfo;
+import javax.management.MBeanParameterInfo;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
-import javax.management.MBeanOperationInfo;
-import javax.management.MBeanParameterInfo;
-
+import org.apache.activemq.artemis.api.core.management.Attribute;
import org.apache.activemq.artemis.api.core.management.Operation;
import org.apache.activemq.artemis.api.core.management.Parameter;
@@ -51,6 +52,40 @@ public class MBeanInfoHelper {
return operations.toArray(new MBeanOperationInfo[operations.size()]);
}
+ public static MBeanAttributeInfo[] getMBeanAttributesInfo(final Class mbeanInterface) {
+ List<MBeanAttributeInfo> tempAttributes = new ArrayList<>();
+ List<MBeanAttributeInfo> finalAttributes = new ArrayList<>();
+ List<String> alreadyAdded = new ArrayList<>();
+
+ for (Method method : mbeanInterface.getMethods()) {
+ if (MBeanInfoHelper.isGetterMethod(method) || MBeanInfoHelper.isSetterMethod(method) ||
+ MBeanInfoHelper.isIsBooleanMethod(method)) {
+ tempAttributes.add(MBeanInfoHelper.getAttributeInfo(method));
+ }
+ }
+
+ // since getters and setters will each have an MBeanAttributeInfo we need to de-duplicate
+ for (MBeanAttributeInfo info1 : tempAttributes) {
+ MBeanAttributeInfo infoToCopy = info1;
+ for (MBeanAttributeInfo info2 : tempAttributes) {
+ if (info1.getName().equals(info2.getName()) && !info1.equals(info2)) {
+ infoToCopy = new MBeanAttributeInfo(info1.getName(),
+ info1.getType().equals("void") ? info2.getType() : info1.getType(),
+ info1.getDescription(),
+ (info1.isReadable() || info2.isReadable()),
+ (info1.isWritable() || info2.isWritable()),
+ (info1.isIs() || info2.isIs()));
+ }
+ }
+ if (!alreadyAdded.contains(infoToCopy.getName())) {
+ finalAttributes.add(infoToCopy);
+ alreadyAdded.add(infoToCopy.getName());
+ }
+ }
+
+ return finalAttributes.toArray(new MBeanAttributeInfo[finalAttributes.size()]);
+ }
+
// Package protected ---------------------------------------------
// Protected -----------------------------------------------------
@@ -107,6 +142,29 @@ public class MBeanInfoHelper {
return info;
}
+ private static MBeanAttributeInfo getAttributeInfo(final Method operation) {
+ String description = "N/A";
+
+ if (operation.getAnnotation(Attribute.class) != null) {
+ description = operation.getAnnotation(Attribute.class).desc();
+ }
+
+ MBeanAttributeInfo info = new MBeanAttributeInfo(getAttributeName(operation), operation.getReturnType().getName(), description, (isGetterMethod(operation) || isIsBooleanMethod(operation)), isSetterMethod(operation), isIsBooleanMethod(operation));
+
+ return info;
+ }
+
+ private static String getAttributeName(Method operation) {
+ String name = operation.getName();
+
+ if (isGetterMethod(operation) || isSetterMethod(operation))
+ name = operation.getName().substring(3);
+ else if (isIsBooleanMethod(operation))
+ name = operation.getName().substring(2);
+
+ return name;
+ }
+
private static MBeanParameterInfo[] getParametersInfo(final Annotation[][] params, final Class<?>[] paramTypes) {
MBeanParameterInfo[] paramsInfo = new MBeanParameterInfo[params.length];
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/5591bcab/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/QueueControlImpl.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/QueueControlImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/QueueControlImpl.java
index bcd0256..a375cb3 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/QueueControlImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/QueueControlImpl.java
@@ -16,6 +16,7 @@
*/
package org.apache.activemq.artemis.core.management.impl;
+import javax.management.MBeanAttributeInfo;
import javax.management.MBeanOperationInfo;
import javax.management.openmbean.CompositeData;
import java.util.ArrayList;
@@ -981,6 +982,11 @@ public class QueueControlImpl extends AbstractControl implements QueueControl {
}
@Override
+ protected MBeanAttributeInfo[] fillMBeanAttributeInfo() {
+ return MBeanInfoHelper.getMBeanAttributesInfo(QueueControl.class);
+ }
+
+ @Override
public void resetMessagesAdded() throws Exception {
checkStarted();