From 81bbca15c1279c32d014b1ec7616b6853295f798 Mon Sep 17 00:00:00 2001 From: Justin Bertram Date: Mon, 12 Apr 2021 11:51:44 -0500 Subject: [PATCH] ARTEMIS-3229 add details to AdressControl MBean --- .../activemq/artemis/logs/AuditLogger.java | 16 +++++++++++++ .../api/core/management/AddressControl.java | 18 ++++++++++++++ .../management/impl/AddressControlImpl.java | 24 +++++++++++++++++++ .../AddressControlUsingCoreTest.java | 15 ++++++++++++ 4 files changed, 73 insertions(+) diff --git a/artemis-commons/src/main/java/org/apache/activemq/artemis/logs/AuditLogger.java b/artemis-commons/src/main/java/org/apache/activemq/artemis/logs/AuditLogger.java index 423250790f..39f383d852 100644 --- a/artemis-commons/src/main/java/org/apache/activemq/artemis/logs/AuditLogger.java +++ b/artemis-commons/src/main/java/org/apache/activemq/artemis/logs/AuditLogger.java @@ -2817,4 +2817,20 @@ public interface AuditLogger extends BasicLogger { @LogMessage(level = Logger.Level.INFO) @Message(id = 601745, value = "User {0} is getting delay-before-dispatch property on target resource: {1} {2}", format = Message.Format.MESSAGE_FORMAT) void delayBeforeDispatch(String user, Object source, Object... args); + + static void isInternal(Object source) { + LOGGER.isInternal(getCaller(), source); + } + + @LogMessage(level = Logger.Level.INFO) + @Message(id = 601746, value = "User {0} is getting internal property on target resource: {1} {2}", format = Message.Format.MESSAGE_FORMAT) + void isInternal(String user, Object source, Object... args); + + static void isAutoCreated(Object source) { + LOGGER.isAutoCreated(getCaller(), source); + } + + @LogMessage(level = Logger.Level.INFO) + @Message(id = 601747, value = "User {0} is getting auto-created property on target resource: {1} {2}", format = Message.Format.MESSAGE_FORMAT) + void isAutoCreated(String user, Object source, Object... args); } 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 ac32efe9a4..eab512ec62 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 @@ -185,4 +185,22 @@ public interface AddressControl { @Attribute(desc = "clear the duplicate ID cache for this address both from memory and from the journal") boolean clearDuplicateIdCache() throws Exception; + /** + * Returns whether this address was created automatically in response to client action. + */ + @Attribute(desc = "whether this address was created automatically in response to client action") + boolean isAutoCreated(); + + /** + * Returns whether this address was created for the broker's internal use. + */ + @Attribute(desc = "whether this address was created for the broker's internal use") + boolean isInternal(); + + /** + * Returns whether this address is temporary. + */ + @Attribute(desc = "whether this address is temporary") + boolean isTemporary(); + } 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 955748a8a3..1b4ad6f749 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 @@ -506,6 +506,30 @@ public class AddressControlImpl extends AbstractControl implements AddressContro return false; } + @Override + public boolean isAutoCreated() { + if (AuditLogger.isEnabled()) { + AuditLogger.isAutoCreated(this.addressInfo); + } + return addressInfo.isAutoCreated(); + } + + @Override + public boolean isInternal() { + if (AuditLogger.isEnabled()) { + AuditLogger.isInternal(this.addressInfo); + } + return addressInfo.isInternal(); + } + + @Override + public boolean isTemporary() { + if (AuditLogger.isEnabled()) { + AuditLogger.isTemporary(this.addressInfo); + } + return addressInfo.isTemporary(); + } + // Package protected --------------------------------------------- // Protected ----------------------------------------------------- diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/AddressControlUsingCoreTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/AddressControlUsingCoreTest.java index 6afbc4bf7b..3b9d8026a8 100644 --- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/AddressControlUsingCoreTest.java +++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/AddressControlUsingCoreTest.java @@ -158,6 +158,21 @@ public class AddressControlUsingCoreTest extends AddressControlTest { return (boolean) proxy.invokeOperation("clearDuplicateIdCache"); } + @Override + public boolean isAutoCreated() { + return (boolean) proxy.retrieveAttributeValue("autoCreated"); + } + + @Override + public boolean isInternal() { + return (boolean) proxy.retrieveAttributeValue("internal"); + } + + @Override + public boolean isTemporary() { + return (boolean) proxy.retrieveAttributeValue("temporary"); + } + @Override public String sendMessage(Map headers, int type,