You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@artemis.apache.org by ta...@apache.org on 2026/02/12 22:32:43 UTC
(artemis) branch main updated (751a28858f -> 2e390b4fa0)
This is an automated email from the ASF dual-hosted git repository.
tabish pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/artemis.git
from 751a28858f ARTEMIS-5900 Bump org.postgresql:postgresql from 42.7.9 to 42.7.10
new d45558bb8c ARTEMIS-5782 allow searching on multiple attributes
new cc641e48a0 ARTEMIS-5893 optimize ManagementService
new 2e390b4fa0 ARTEMIS-5893 further optimize ManagementService
The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../jms/server/impl/JMSServerManagerImpl.java | 3 +-
.../bridge/AMQPBridgeManagementSupport.java | 54 +--
.../AMQPFederationManagementSupport.java | 134 ++++---
.../management/impl/ActiveMQServerControlImpl.java | 90 ++---
.../core/management/impl/DivertControlImpl.java | 1 -
.../core/management/impl/QueueControlImpl.java | 11 +-
.../management/impl/view/ActiveMQAbstractView.java | 53 ++-
.../core/management/impl/view/AddressView.java | 5 +-
.../core/management/impl/view/ConnectionView.java | 3 +-
.../core/management/impl/view/ConsumerView.java | 3 +-
.../core/management/impl/view/ProducerView.java | 3 +-
.../core/management/impl/view/QueueView.java | 3 +-
.../core/management/impl/view/SessionView.java | 3 +-
.../view/predicate/ActiveMQFilterPredicate.java | 164 +-------
.../view/predicate/AddressFilterPredicate.java | 58 +--
.../view/predicate/AddressPredicateFilterPart.java | 69 ++++
.../view/predicate/ConnectionFilterPredicate.java | 55 +--
...ate.java => ConnectionPredicateFilterPart.java} | 48 +--
.../view/predicate/ConsumerFilterPredicate.java | 48 +--
...icate.java => ConsumerPredicateFilterPart.java} | 63 ++-
...lterPredicate.java => PredicateFilterPart.java} | 114 +++---
.../view/predicate/ProducerFilterPredicate.java | 39 +-
...icate.java => ProducerPredicateFilterPart.java} | 49 +--
.../impl/view/predicate/QueueFilterPredicate.java | 59 +--
.../view/predicate/QueuePredicateFilterPart.java | 80 ++++
.../view/predicate/SessionFilterPredicate.java | 33 +-
...dicate.java => SessionPredicateFilterPart.java} | 35 +-
.../remoting/server/impl/RemotingServiceImpl.java | 7 +-
.../artemis/core/server/ActiveMQServerLogger.java | 6 +-
.../core/server/management/ManagementService.java | 203 ++++++++--
.../server/management/impl/ControlRegistries.java | 428 +++++++++++++++++++++
.../management/impl/ManagementServiceImpl.java | 373 +++++++++++++-----
.../impl/view/predicate/PredicateTest.java | 64 ++-
.../server/group/impl/ClusteredResetMockTest.java | 184 ++++++++-
.../transport/failover/FailoverBackupLeakTest.java | 2 +-
.../artemis/tests/util/ActiveMQTestBase.java | 59 +++
.../src/main/resources/metrics/queueMetrics.groovy | 10 +-
.../artemis/tests/db/paging/PagingTest.java | 23 +-
.../amqp/connect/AMQPBridgeManagementTest.java | 278 +++++++------
.../AMQPFederationConfigurationReloadTest.java | 62 ++-
.../amqp/connect/AMQPFederationConnectTest.java | 92 +++--
.../amqp/connect/AMQPFederationManagementTest.java | 336 ++++++++--------
.../connect/AMQPFederationServerToServerTest.java | 4 +-
.../tests/integration/client/AddressPauseTest.java | 16 +-
.../client/AutoCreateJmsDestinationTest.java | 37 +-
.../client/AutoDeleteJmsDestinationTest.java | 42 +-
.../integration/client/JMSMessageCounterTest.java | 10 +-
.../client/LargeMessageCompressTest.java | 42 +-
.../integration/client/MultipleProducersTest.java | 9 +-
.../cluster/bridge/BridgeReconnectTest.java | 5 +-
.../integration/cluster/bridge/BridgeTest.java | 5 +-
.../bridge/ClusteredBridgeReconnectTest.java | 5 +-
.../distribution/ClusteredMessageCounterTest.java | 29 +-
.../cluster/failover/BackupSyncJournalTest.java | 4 +-
.../failover/ClientConnectorFailoverTest.java | 35 +-
.../consumer/DetectOrphanedConsumerTest.java | 14 +-
.../tests/integration/jms/RedeployTest.java | 56 ++-
.../jms/multiprotocol/JMSMessageConsumerTest.java | 4 +-
.../jms/multiprotocol/JMSNonDestructiveTest.java | 29 +-
.../management/ActiveMQServerControlTest.java | 205 ++++++++--
.../management/ManagementServiceImplTest.java | 20 +-
.../integration/management/QueueControlTest.java | 14 +-
.../integration/openwire/AdvisoryOpenWireTest.java | 9 +-
.../integration/openwire/amq/JmsClientAckTest.java | 11 +-
.../openwire/amq/RedeliveryPolicyTest.java | 25 +-
.../openwire/interop/GeneralInteropTest.java | 22 +-
.../tests/integration/ra/ResourceAdapterTest.java | 6 +-
.../integration/routing/MQTTRedirectTest.java | 20 +-
.../tests/integration/routing/RedirectTest.java | 29 +-
.../scheduling/ScheduledMessageTest.java | 17 +-
.../server/AutoCreateDeadLetterResourcesTest.java | 15 +-
.../server/QueueConfigPersistenceTest.java | 13 +-
.../tests/integration/server/ScaleDownTest.java | 3 +-
.../integration/server/UuidNamespaceTest.java | 3 +-
.../artemis/tests/integration/xa/BasicXaTest.java | 7 +-
.../jms/tests/tools/container/LocalTestServer.java | 7 +-
.../client/ClientCrashMassiveRollbackTest.java | 7 +-
77 files changed, 2503 insertions(+), 1683 deletions(-)
create mode 100644 artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/AddressPredicateFilterPart.java
copy artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/{ConnectionFilterPredicate.java => ConnectionPredicateFilterPart.java} (84%)
copy artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/{ConsumerFilterPredicate.java => ConsumerPredicateFilterPart.java} (54%)
copy artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/{ActiveMQFilterPredicate.java => PredicateFilterPart.java} (73%)
copy artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/{ProducerFilterPredicate.java => ProducerPredicateFilterPart.java} (63%)
create mode 100644 artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/QueuePredicateFilterPart.java
copy artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/{SessionFilterPredicate.java => SessionPredicateFilterPart.java} (72%)
create mode 100644 artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ControlRegistries.java
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@artemis.apache.org
For additional commands, e-mail: commits-help@artemis.apache.org
(artemis) 02/03: ARTEMIS-5893 optimize ManagementService
Posted by ta...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
tabish pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/artemis.git
commit cc641e48a01a53987bbb2f3c60869d581271272f
Author: Andy Taylor <an...@gmail.com>
AuthorDate: Wed Dec 3 11:21:57 2025 +0000
ARTEMIS-5893 optimize ManagementService
---
.../jms/server/impl/JMSServerManagerImpl.java | 2 +-
.../bridge/AMQPBridgeManagementSupport.java | 25 +-
.../AMQPFederationManagementSupport.java | 56 +--
.../management/impl/ActiveMQServerControlImpl.java | 54 ++-
.../remoting/server/impl/RemotingServiceImpl.java | 6 +-
.../core/server/management/ManagementService.java | 31 +-
.../server/management/impl/ControlRegistries.java | 384 +++++++++++++++++++++
.../management/impl/ManagementServiceImpl.java | 154 +++++----
.../server/group/impl/ClusteredResetMockTest.java | 61 +++-
.../src/main/resources/metrics/queueMetrics.groovy | 11 +-
.../connect/AMQPFederationServerToServerTest.java | 9 +-
.../integration/cluster/bridge/BridgeTest.java | 5 +-
.../management/ManagementServiceImplTest.java | 18 +-
.../integration/openwire/AdvisoryOpenWireTest.java | 9 +-
14 files changed, 645 insertions(+), 180 deletions(-)
diff --git a/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/impl/JMSServerManagerImpl.java b/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/impl/JMSServerManagerImpl.java
index 115f194a6a..9f09218377 100644
--- a/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/impl/JMSServerManagerImpl.java
+++ b/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/impl/JMSServerManagerImpl.java
@@ -783,7 +783,7 @@ public class JMSServerManagerImpl extends CleaningActivateCallback implements JM
@Override
public synchronized boolean destroyTopic(final String name, final boolean removeConsumers) throws Exception {
checkInitialised();
- AddressControl addressControl = (AddressControl) server.getManagementService().getResource(ResourceNames.ADDRESS + name);
+ AddressControl addressControl = server.getManagementService().getAddressControl(ResourceNames.ADDRESS + name);
if (addressControl != null) {
for (String queueName : addressControl.getAllQueueNames()) {
Binding binding = server.getPostOffice().getBinding(SimpleString.of(queueName));
diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/connect/bridge/AMQPBridgeManagementSupport.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/connect/bridge/AMQPBridgeManagementSupport.java
index 9b8344a50d..ff2353483e 100644
--- a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/connect/bridge/AMQPBridgeManagementSupport.java
+++ b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/connect/bridge/AMQPBridgeManagementSupport.java
@@ -109,8 +109,9 @@ public final class AMQPBridgeManagementSupport {
final ManagementService management = server.getManagementService();
final AMQPBridgeManagerControlType control = new AMQPBridgeManagerControlType(server, bridge);
+
management.registerInJMX(getBridgeManagerObjectName(management, brokerConnectionName, bridgeName), control);
- management.registerInRegistry(getBridgeManagerResourceName(brokerConnectionName, bridgeName), control);
+ management.registerAMQPControl(getBridgeManagerResourceName(brokerConnectionName, bridgeName), control);
}
/**
@@ -128,7 +129,7 @@ public final class AMQPBridgeManagementSupport {
final ManagementService management = server.getManagementService();
management.unregisterFromJMX(getBridgeManagerObjectName(management, brokerConnectionName, bridgeName));
- management.unregisterFromRegistry(getBridgeManagerResourceName(brokerConnectionName, bridgeName));
+ management.unRegisterAMQPControl(getBridgeManagerResourceName(brokerConnectionName, bridgeName));
}
public static String getBridgeManagerResourceName(String brokerConnectionName, String bridgeName) {
@@ -160,7 +161,7 @@ public final class AMQPBridgeManagementSupport {
final String policyName = manager.getPolicyName();
management.registerInJMX(getBridgePolicyManagerObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName), control);
- management.registerInRegistry(getBridgePolicyManagerResourceName(brokerConnectionName, bridgeName, policyName), control);
+ management.registerAMQPControl(getBridgePolicyManagerResourceName(brokerConnectionName, bridgeName, policyName), control);
}
/**
@@ -180,7 +181,7 @@ public final class AMQPBridgeManagementSupport {
final String policyName = manager.getPolicyName();
management.unregisterFromJMX(getBridgePolicyManagerObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName));
- management.unregisterFromRegistry(getBridgePolicyManagerResourceName(brokerConnectionName, bridgeName, policyName));
+ management.unRegisterAMQPControl(getBridgePolicyManagerResourceName(brokerConnectionName, bridgeName, policyName));
}
public static String getBridgePolicyManagerResourceName(String brokerConnectionName, String bridgeName, String policyName) {
@@ -216,10 +217,10 @@ public final class AMQPBridgeManagementSupport {
if (receiver.getRole() == ReceiverRole.ADDRESS_RECEIVER) {
management.registerInJMX(getBridgeAddressReceiverObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, receiver.getReceiverInfo().getLocalAddress()), control);
- management.registerInRegistry(getBridgeAddressReceiverResourceName(brokerConnectionName, bridgeName, policyName, receiver.getReceiverInfo().getLocalAddress()), control);
+ management.registerAMQPControl(getBridgeAddressReceiverResourceName(brokerConnectionName, bridgeName, policyName, receiver.getReceiverInfo().getLocalAddress()), control);
} else {
management.registerInJMX(getBridgeQueueReceiverObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, receiver.getReceiverInfo().getLocalFqqn()), control);
- management.registerInRegistry(getBridgeQueueReceiverResourceName(brokerConnectionName, bridgeName, policyName, receiver.getReceiverInfo().getLocalFqqn()), control);
+ management.registerAMQPControl(getBridgeQueueReceiverResourceName(brokerConnectionName, bridgeName, policyName, receiver.getReceiverInfo().getLocalFqqn()), control);
}
}
@@ -242,10 +243,10 @@ public final class AMQPBridgeManagementSupport {
if (receiver.getRole() == ReceiverRole.ADDRESS_RECEIVER) {
management.unregisterFromJMX(getBridgeAddressReceiverObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, receiver.getReceiverInfo().getLocalAddress()));
- management.unregisterFromRegistry(getBridgeAddressReceiverResourceName(brokerConnectionName, bridgeName, policyName, receiver.getReceiverInfo().getLocalAddress()));
+ management.unRegisterAMQPControl(getBridgeAddressReceiverResourceName(brokerConnectionName, bridgeName, policyName, receiver.getReceiverInfo().getLocalAddress()));
} else {
management.unregisterFromJMX(getBridgeQueueReceiverObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, receiver.getReceiverInfo().getLocalFqqn()));
- management.unregisterFromRegistry(getBridgeQueueReceiverResourceName(brokerConnectionName, bridgeName, policyName, receiver.getReceiverInfo().getLocalFqqn()));
+ management.unRegisterAMQPControl(getBridgeQueueReceiverResourceName(brokerConnectionName, bridgeName, policyName, receiver.getReceiverInfo().getLocalFqqn()));
}
}
@@ -299,12 +300,12 @@ public final class AMQPBridgeManagementSupport {
final String address = control.getAddress();
management.registerInJMX(getBridgeAddressSenderObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, address), control);
- management.registerInRegistry(getBridgeAddressSenderResourceName(brokerConnectionName, bridgeName, policyName, address), control);
+ management.registerAMQPControl(getBridgeAddressSenderResourceName(brokerConnectionName, bridgeName, policyName, address), control);
} else {
final String fqqn = control.getFqqn();
management.registerInJMX(getBridgeQueueSenderObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, fqqn), control);
- management.registerInRegistry(getBridgeQueueSenderResourceName(brokerConnectionName, bridgeName, policyName, fqqn), control);
+ management.registerAMQPControl(getBridgeQueueSenderResourceName(brokerConnectionName, bridgeName, policyName, fqqn), control);
}
}
@@ -329,12 +330,12 @@ public final class AMQPBridgeManagementSupport {
final String address = sender.getServerConsumer().getQueueAddress().toString();
management.unregisterFromJMX(getBridgeAddressSenderObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, address));
- management.unregisterFromRegistry(getBridgeAddressSenderResourceName(brokerConnectionName, bridgeName, policyName, address));
+ management.unRegisterAMQPControl(getBridgeAddressSenderResourceName(brokerConnectionName, bridgeName, policyName, address));
} else {
final String fqqn = CompositeAddress.toFullyQualified(sender.getServerConsumer().getQueueAddress().toString(), sender.getServerConsumer().getQueueName().toString());
management.unregisterFromJMX(getBridgeQueueSenderObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, fqqn));
- management.unregisterFromRegistry(getBridgeQueueSenderResourceName(brokerConnectionName, bridgeName, policyName, fqqn));
+ management.unRegisterAMQPControl(getBridgeQueueSenderResourceName(brokerConnectionName, bridgeName, policyName, fqqn));
}
}
diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/connect/federation/AMQPFederationManagementSupport.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/connect/federation/AMQPFederationManagementSupport.java
index 6413182f3c..a59f9161a7 100644
--- a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/connect/federation/AMQPFederationManagementSupport.java
+++ b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/connect/federation/AMQPFederationManagementSupport.java
@@ -136,7 +136,7 @@ public abstract class AMQPFederationManagementSupport {
final AMQPFederationSourceControlType control = new AMQPFederationSourceControlType(server, federation);
management.registerInJMX(getFederationSourceObjectName(management, brokerConnectionName, federationName), control);
- management.registerInRegistry(getFederationSourceResourceName(brokerConnectionName, federationName), control);
+ management.registerAMQPControl(getFederationSourceResourceName(brokerConnectionName, federationName), control);
}
/**
@@ -152,7 +152,7 @@ public abstract class AMQPFederationManagementSupport {
final ManagementService management = server.getManagementService();
management.unregisterFromJMX(getFederationSourceObjectName(management, brokerConnectionName, federationName));
- management.unregisterFromRegistry(getFederationSourceResourceName(brokerConnectionName, federationName));
+ management.unRegisterAMQPControl(getFederationSourceResourceName(brokerConnectionName, federationName));
}
public static String getFederationSourceResourceName(String brokerConnectionName, String federationName) {
@@ -179,7 +179,7 @@ public abstract class AMQPFederationManagementSupport {
final AMQPFederationTargetControlType control = new AMQPFederationTargetControlType(server, federation);
management.registerInJMX(getFederationTargetObjectName(management, remoteNodeId, brokerConnectionName, federationName), control);
- management.registerInRegistry(getFederationTargetResourceName(remoteNodeId, brokerConnectionName, federationName), control);
+ management.registerAMQPControl(getFederationTargetResourceName(remoteNodeId, brokerConnectionName, federationName), control);
}
/**
@@ -194,7 +194,7 @@ public abstract class AMQPFederationManagementSupport {
final ManagementService management = server.getManagementService();
management.unregisterFromJMX(getFederationTargetObjectName(management, remoteNodeId, brokerConnectionName, federationName));
- management.unregisterFromRegistry(getFederationTargetResourceName(remoteNodeId, brokerConnectionName, federationName));
+ management.unRegisterAMQPControl(getFederationTargetResourceName(remoteNodeId, brokerConnectionName, federationName));
}
public static String getFederationTargetResourceName(String remoteNodeId, String brokerConnectionName, String federationName) {
@@ -226,7 +226,7 @@ public abstract class AMQPFederationManagementSupport {
final String policyName = manager.getPolicyName();
management.registerInJMX(getFederationSourcePolicyObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName), control);
- management.registerInRegistry(getFederationSourcePolicyResourceName(brokerConnectionName, federationName, policyName), control);
+ management.registerAMQPControl(getFederationSourcePolicyResourceName(brokerConnectionName, federationName, policyName), control);
}
/**
@@ -244,7 +244,7 @@ public abstract class AMQPFederationManagementSupport {
final String policyName = manager.getPolicyName();
management.unregisterFromJMX(getFederationSourcePolicyObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName));
- management.unregisterFromRegistry(getFederationSourcePolicyResourceName(brokerConnectionName, federationName, policyName));
+ management.unRegisterAMQPControl(getFederationSourcePolicyResourceName(brokerConnectionName, federationName, policyName));
}
/**
@@ -263,7 +263,7 @@ public abstract class AMQPFederationManagementSupport {
final String policyName = manager.getPolicyName();
management.registerInJMX(getFederationSourcePolicyObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName), control);
- management.registerInRegistry(getFederationSourcePolicyResourceName(brokerConnectionName, federationName, policyName), control);
+ management.registerAMQPControl(getFederationSourcePolicyResourceName(brokerConnectionName, federationName, policyName), control);
}
/**
@@ -281,7 +281,7 @@ public abstract class AMQPFederationManagementSupport {
final String policyName = manager.getPolicyName();
management.unregisterFromJMX(getFederationSourcePolicyObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName));
- management.unregisterFromRegistry(getFederationSourcePolicyResourceName(brokerConnectionName, federationName, policyName));
+ management.unRegisterAMQPControl(getFederationSourcePolicyResourceName(brokerConnectionName, federationName, policyName));
}
public static String getFederationSourcePolicyResourceName(String brokerConnectionName, String federationName, String policyName) {
@@ -314,7 +314,7 @@ public abstract class AMQPFederationManagementSupport {
final String policyName = manager.getPolicyName();
management.registerInJMX(getFederationTargetPolicyObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName), control);
- management.registerInRegistry(getFederationTargetPolicyResourceName(remoteNodeId, brokerConnectionName, federationName, policyName), control);
+ management.registerAMQPControl(getFederationTargetPolicyResourceName(remoteNodeId, brokerConnectionName, federationName, policyName), control);
}
/**
@@ -333,7 +333,7 @@ public abstract class AMQPFederationManagementSupport {
final String policyName = manager.getPolicyName();
management.unregisterFromJMX(getFederationTargetPolicyObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName));
- management.unregisterFromRegistry(getFederationTargetPolicyResourceName(remoteNodeId, brokerConnectionName, federationName, policyName));
+ management.unRegisterAMQPControl(getFederationTargetPolicyResourceName(remoteNodeId, brokerConnectionName, federationName, policyName));
}
/**
@@ -353,7 +353,7 @@ public abstract class AMQPFederationManagementSupport {
final String policyName = manager.getPolicyName();
management.registerInJMX(getFederationTargetPolicyObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName), control);
- management.registerInRegistry(getFederationTargetPolicyResourceName(remoteNodeId, brokerConnectionName, federationName, policyName), control);
+ management.registerAMQPControl(getFederationTargetPolicyResourceName(remoteNodeId, brokerConnectionName, federationName, policyName), control);
}
/**
@@ -372,7 +372,7 @@ public abstract class AMQPFederationManagementSupport {
final String policyName = manager.getPolicyName();
management.unregisterFromJMX(getFederationTargetPolicyObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName));
- management.unregisterFromRegistry(getFederationTargetPolicyResourceName(remoteNodeId, brokerConnectionName, federationName, policyName));
+ management.unRegisterAMQPControl(getFederationTargetPolicyResourceName(remoteNodeId, brokerConnectionName, federationName, policyName));
}
public static String getFederationTargetPolicyResourceName(String remoteNodeId, String brokerConnectionName, String federationName, String policyName) {
@@ -408,10 +408,10 @@ public abstract class AMQPFederationManagementSupport {
if (consumer.getRole() == FederationConsumerInfo.Role.ADDRESS_CONSUMER) {
management.registerInJMX(getFederationSourceAddressConsumerObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, consumer.getConsumerInfo().getAddress()), control);
- management.registerInRegistry(getFederationSourceAddressConsumerResourceName(brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getAddress()), control);
+ management.registerAMQPControl(getFederationSourceAddressConsumerResourceName(brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getAddress()), control);
} else {
management.registerInJMX(getFederationSourceQueueConsumerObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, consumer.getConsumerInfo().getFqqn()), control);
- management.registerInRegistry(getFederationSourceQueueConsumerResourceName(brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getFqqn()), control);
+ management.registerAMQPControl(getFederationSourceQueueConsumerResourceName(brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getFqqn()), control);
}
}
@@ -432,10 +432,10 @@ public abstract class AMQPFederationManagementSupport {
if (consumer.getRole() == FederationConsumerInfo.Role.ADDRESS_CONSUMER) {
management.unregisterFromJMX(getFederationSourceAddressConsumerObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, consumer.getConsumerInfo().getAddress()));
- management.unregisterFromRegistry(getFederationSourceAddressConsumerResourceName(brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getAddress()));
+ management.unRegisterAMQPControl(getFederationSourceAddressConsumerResourceName(brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getAddress()));
} else {
management.unregisterFromJMX(getFederationSourceQueueConsumerObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, consumer.getConsumerInfo().getFqqn()));
- management.unregisterFromRegistry(getFederationSourceQueueConsumerResourceName(brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getFqqn()));
+ management.unRegisterAMQPControl(getFederationSourceQueueConsumerResourceName(brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getFqqn()));
}
}
@@ -459,12 +459,12 @@ public abstract class AMQPFederationManagementSupport {
final String address = control.getAddress();
management.registerInJMX(getFederationSourceAddressProducerObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, address), control);
- management.registerInRegistry(getFederationSourceAddressProducerResourceName(brokerConnectionName, federationName, policyName, address), control);
+ management.registerAMQPControl(getFederationSourceAddressProducerResourceName(brokerConnectionName, federationName, policyName, address), control);
} else {
final String fqqn = control.getFqqn();
management.registerInJMX(getFederationSourceQueueProducerObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, fqqn), control);
- management.registerInRegistry(getFederationSourceQueueProducerResourceName(brokerConnectionName, federationName, policyName, fqqn), control);
+ management.registerAMQPControl(getFederationSourceQueueProducerResourceName(brokerConnectionName, federationName, policyName, fqqn), control);
}
}
@@ -487,12 +487,12 @@ public abstract class AMQPFederationManagementSupport {
final String address = sender.getServerConsumer().getQueueAddress().toString();
management.unregisterFromJMX(getFederationSourceAddressProducerObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, address));
- management.unregisterFromRegistry(getFederationSourceAddressProducerResourceName(brokerConnectionName, federationName, policyName, address));
+ management.unRegisterAMQPControl(getFederationSourceAddressProducerResourceName(brokerConnectionName, federationName, policyName, address));
} else {
final String fqqn = CompositeAddress.toFullyQualified(sender.getServerConsumer().getQueueAddress().toString(), sender.getServerConsumer().getQueueName().toString());
management.unregisterFromJMX(getFederationSourceQueueProducerObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, fqqn));
- management.unregisterFromRegistry(getFederationSourceQueueProducerResourceName(brokerConnectionName, federationName, policyName, fqqn));
+ management.unRegisterAMQPControl(getFederationSourceQueueProducerResourceName(brokerConnectionName, federationName, policyName, fqqn));
}
}
@@ -570,10 +570,10 @@ public abstract class AMQPFederationManagementSupport {
if (consumer.getRole() == FederationConsumerInfo.Role.ADDRESS_CONSUMER) {
management.registerInJMX(getFederationTargetAddressConsumerObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, consumer.getConsumerInfo().getAddress()), control);
- management.registerInRegistry(getFederationTargetAddressConsumerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getAddress()), control);
+ management.registerAMQPControl(getFederationTargetAddressConsumerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getAddress()), control);
} else {
management.registerInJMX(getFederationTargetQueueConsumerObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, consumer.getConsumerInfo().getFqqn()), control);
- management.registerInRegistry(getFederationTargetQueueConsumerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getFqqn()), control);
+ management.registerAMQPControl(getFederationTargetQueueConsumerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getFqqn()), control);
}
}
@@ -594,10 +594,10 @@ public abstract class AMQPFederationManagementSupport {
if (consumer.getRole() == FederationConsumerInfo.Role.ADDRESS_CONSUMER) {
management.unregisterFromJMX(getFederationTargetAddressConsumerObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, consumer.getConsumerInfo().getAddress()));
- management.unregisterFromRegistry(getFederationTargetAddressConsumerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getAddress()));
+ management.unRegisterAMQPControl(getFederationTargetAddressConsumerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getAddress()));
} else {
management.unregisterFromJMX(getFederationTargetQueueConsumerObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, consumer.getConsumerInfo().getFqqn()));
- management.unregisterFromRegistry(getFederationTargetQueueConsumerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getFqqn()));
+ management.unRegisterAMQPControl(getFederationTargetQueueConsumerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getFqqn()));
}
}
@@ -621,12 +621,12 @@ public abstract class AMQPFederationManagementSupport {
final String address = control.getAddress();
management.registerInJMX(getFederationTargetAddressProducerObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, address), control);
- management.registerInRegistry(getFederationTargetAddressProducerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, address), control);
+ management.registerAMQPControl(getFederationTargetAddressProducerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, address), control);
} else {
final String fqqn = control.getFqqn();
management.registerInJMX(getFederationTargetQueueProducerObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, fqqn), control);
- management.registerInRegistry(getFederationTargetQueueProducerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, fqqn), control);
+ management.registerAMQPControl(getFederationTargetQueueProducerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, fqqn), control);
}
}
@@ -649,12 +649,12 @@ public abstract class AMQPFederationManagementSupport {
final String address = sender.getServerConsumer().getQueueAddress().toString();
management.unregisterFromJMX(getFederationTargetAddressProducerObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, address));
- management.unregisterFromRegistry(getFederationTargetAddressProducerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, address));
+ management.unRegisterAMQPControl(getFederationTargetAddressProducerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, address));
} else {
final String fqqn = CompositeAddress.toFullyQualified(sender.getServerConsumer().getQueueAddress().toString(), sender.getServerConsumer().getQueueName().toString());
management.unregisterFromJMX(getFederationTargetQueueProducerObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, fqqn));
- management.unregisterFromRegistry(getFederationTargetQueueProducerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, fqqn));
+ management.unRegisterAMQPControl(getFederationTargetQueueProducerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, fqqn));
}
}
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 f93d86f089..eab3e8367b 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
@@ -1457,8 +1457,8 @@ public class ActiveMQServerControlImpl extends AbstractControl implements Active
clearIO();
try {
- Object[] queueControls = server.getManagementService().getResources(QueueControl.class);
- return queueControls.length;
+ List<QueueControl> queueControls = server.getManagementService().getQueueControls();
+ return queueControls.size();
} finally {
blockOnIO();
}
@@ -1478,10 +1478,10 @@ public class ActiveMQServerControlImpl extends AbstractControl implements Active
clearIO();
try {
- Object[] queueControls = server.getManagementService().getResources(QueueControl.class);
+ List<QueueControl> queueControls = server.getManagementService().getQueueControls();
List<String> names = new ArrayList<>();
- for (int i = 0; i < queueControls.length; i++) {
- QueueControl queueControl = (QueueControl) queueControls[i];
+ for (int i = 0; i < queueControls.size(); i++) {
+ QueueControl queueControl = (QueueControl) queueControls.get(i);
if (routingType != null && routingType.length() > 1 && queueControl.getRoutingType().equals(routingType.toUpperCase())) {
names.add(queueControl.getName());
} else if (routingType == null || routingType.isEmpty()) {
@@ -1571,8 +1571,8 @@ public class ActiveMQServerControlImpl extends AbstractControl implements Active
clearIO();
try {
- Object[] addresses = server.getManagementService().getResources(AddressControl.class);
- return addresses.length;
+ List<AddressControl> addresses = server.getManagementService().getAddressControls();
+ return addresses.size();
} finally {
blockOnIO();
}
@@ -1587,10 +1587,10 @@ public class ActiveMQServerControlImpl extends AbstractControl implements Active
clearIO();
try {
- Object[] addresses = server.getManagementService().getResources(AddressControl.class);
- String[] names = new String[addresses.length];
- for (int i = 0; i < addresses.length; i++) {
- AddressControl address = (AddressControl) addresses[i];
+ List<AddressControl> addresses = server.getManagementService().getAddressControls();
+ String[] names = new String[addresses.size()];
+ for (int i = 0; i < addresses.size(); i++) {
+ AddressControl address = (AddressControl) addresses.get(i);
names[i] = address.getAddress();
}
return names;
@@ -2608,14 +2608,9 @@ public class ActiveMQServerControlImpl extends AbstractControl implements Active
checkStarted();
clearIO();
try {
- List<AddressControl> addresses = new ArrayList<>();
- Object[] qs = server.getManagementService().getResources(AddressControl.class);
- for (int i = 0; i < qs.length; i++) {
- addresses.add((AddressControl) qs[i]);
- }
AddressView view = new AddressView(server);
- view.setCollection(addresses);
view.setOptions(options);
+ view.setCollection(server.getManagementService().getAddressControls(view.getPredicate()));
return view.getResultsAsJson(page, pageSize);
} finally {
blockOnIO();
@@ -2631,15 +2626,10 @@ public class ActiveMQServerControlImpl extends AbstractControl implements Active
clearIO();
try {
- List<QueueControl> queues = new ArrayList<>();
- Object[] qs = server.getManagementService().getResources(QueueControl.class);
- for (int i = 0; i < qs.length; i++) {
- queues.add((QueueControl) qs[i]);
- }
QueueView view = new QueueView(server);
- view.setCollection(queues);
view.setOptions(options);
- return view.getResultsAsJson(page, pageSize);
+ view.setCollection(server.getManagementService().getQueueControls(view.getPredicate()));
+ return view.AsJson(page, pageSize);
} finally {
blockOnIO();
}
@@ -3640,10 +3630,10 @@ public class ActiveMQServerControlImpl extends AbstractControl implements Active
clearIO();
try {
- Object[] diverts = server.getManagementService().getResources(DivertControl.class);
- String[] names = new String[diverts.length];
- for (int i = 0; i < diverts.length; i++) {
- DivertControl divert = (DivertControl) diverts[i];
+ List<DivertControl> diverts = server.getManagementService().getDivertControls();
+ String[] names = new String[diverts.size()];
+ for (int i = 0; i < diverts.size(); i++) {
+ DivertControl divert = diverts.get(i);
names[i] = divert.getUniqueName();
}
@@ -3789,10 +3779,10 @@ public class ActiveMQServerControlImpl extends AbstractControl implements Active
clearIO();
try {
- Object[] bridges = server.getManagementService().getResources(BridgeControl.class);
- String[] names = new String[bridges.length];
- for (int i = 0; i < bridges.length; i++) {
- BridgeControl bridge = (BridgeControl) bridges[i];
+ List<BridgeControl> bridges = server.getManagementService().getBridgeControls();
+ String[] names = new String[bridges.size()];
+ for (int i = 0; i < bridges.size(); i++) {
+ BridgeControl bridge = bridges.get(i);
names[i] = bridge.getName();
}
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/server/impl/RemotingServiceImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/server/impl/RemotingServiceImpl.java
index 932a5fb256..22753c4f19 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/server/impl/RemotingServiceImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/server/impl/RemotingServiceImpl.java
@@ -1081,9 +1081,9 @@ public class RemotingServiceImpl implements RemotingService, ServerConnectionLif
server.getReloadManager().addCallback(storeURL, (uri) -> {
// preference for Control to capture consistent audit logging
if (managementService != null) {
- Object targetControl = managementService.getResource(ResourceNames.ACCEPTOR + acceptorName);
- if (targetControl instanceof AcceptorControl acceptorControl) {
- acceptorControl.reload();
+ AcceptorControl targetControl = managementService.getAcceptorControl(ResourceNames.ACCEPTOR + acceptorName);
+ if (targetControl != null) {
+ targetControl.reload();
}
}
});
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/ManagementService.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/ManagementService.java
index 8ad304fe80..6856596851 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/ManagementService.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/ManagementService.java
@@ -16,8 +16,10 @@
*/
package org.apache.activemq.artemis.core.server.management;
+import java.util.List;
import java.util.Set;
import java.util.concurrent.ScheduledExecutorService;
+import java.util.function.Predicate;
import javax.management.ObjectName;
@@ -27,8 +29,12 @@ import org.apache.activemq.artemis.api.core.Message;
import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.TransportConfiguration;
+import org.apache.activemq.artemis.api.core.management.AcceptorControl;
import org.apache.activemq.artemis.api.core.management.AddressControl;
+import org.apache.activemq.artemis.api.core.management.BridgeControl;
+import org.apache.activemq.artemis.api.core.management.DivertControl;
import org.apache.activemq.artemis.api.core.management.ObjectNameBuilder;
+import org.apache.activemq.artemis.api.core.management.QueueControl;
import org.apache.activemq.artemis.core.config.ClusterConnectionConfiguration;
import org.apache.activemq.artemis.core.config.Configuration;
import org.apache.activemq.artemis.core.management.impl.ActiveMQServerControlImpl;
@@ -92,10 +98,6 @@ public interface ManagementService extends NotificationService, ActiveMQComponen
void unregisterFromJMX(ObjectName objectName) throws Exception;
- void registerInRegistry(String resourceName, Object managedResource);
-
- void unregisterFromRegistry(String resourceName);
-
void registerAddress(AddressInfo addressInfo) throws Exception;
void registerAddressMeters(AddressInfo addressInfo, AddressControl addressControl) throws Exception;
@@ -147,8 +149,6 @@ public interface ManagementService extends NotificationService, ActiveMQComponen
Object getResource(String resourceName);
- Object[] getResources(Class<?> resourceType);
-
ICoreMessage handleMessage(SecurityAuth auth, Message message) throws Exception;
void registerHawtioSecurity(GuardInvocationHandler guardInvocationHandler) throws Exception;
@@ -159,4 +159,23 @@ public interface ManagementService extends NotificationService, ActiveMQComponen
Object invokeOperation(String resourceName, String operation, Object[] params, SecurityAuth auth) throws Exception;
+ List<QueueControl> getQueueControls();
+
+ List<QueueControl> getQueueControls(Predicate<QueueControl> predicate);
+
+ List<AddressControl> getAddressControls();
+
+ List<AddressControl> getAddressControls(Predicate<AddressControl> predicate);
+
+ AddressControl getAddressControl(String resourceName);
+
+ AcceptorControl getAcceptorControl(String resourceName);
+
+ void registerAMQPControl(String amqpResourceName, Object control);
+
+ void unRegisterAMQPControl(String amqpResourceName);
+
+ List<DivertControl> getDivertControls();
+
+ List<BridgeControl> getBridgeControls();
}
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ControlRegistries.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ControlRegistries.java
new file mode 100644
index 0000000000..8a381366ad
--- /dev/null
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ControlRegistries.java
@@ -0,0 +1,384 @@
+/*
+ * 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.core.server.management.impl;
+
+
+import org.apache.activemq.artemis.api.core.management.AcceptorControl;
+import org.apache.activemq.artemis.api.core.management.ActiveMQServerControl;
+import org.apache.activemq.artemis.api.core.management.AddressControl;
+import org.apache.activemq.artemis.api.core.management.BaseBroadcastGroupControl;
+import org.apache.activemq.artemis.api.core.management.BridgeControl;
+import org.apache.activemq.artemis.api.core.management.BrokerConnectionControl;
+import org.apache.activemq.artemis.api.core.management.ClusterConnectionControl;
+import org.apache.activemq.artemis.api.core.management.ConnectionRouterControl;
+import org.apache.activemq.artemis.api.core.management.DivertControl;
+import org.apache.activemq.artemis.api.core.management.QueueControl;
+import org.apache.activemq.artemis.api.core.management.RemoteBrokerConnectionControl;
+import org.apache.activemq.artemis.api.core.management.ResourceNames;
+import org.apache.activemq.artemis.core.management.impl.ActiveMQServerControlImpl;
+import org.apache.activemq.artemis.core.server.management.HawtioSecurityControl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.invoke.MethodHandles;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Predicate;
+import java.util.stream.Collectors;
+
+
+public class ControlRegistries {
+ private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
+ public final Map<String, ActiveMQServerControl> serverControls;
+
+ public final Map<String, QueueControl> queueControls;
+
+ public final Map<String, AddressControl> addressControls;
+
+ public final Map<String, AcceptorControl> accepterControls;
+
+ public final Map<String, BaseBroadcastGroupControl> broadcastGroupControls;
+
+ public final Map<String, BrokerConnectionControl> brokerConnectionControls;
+
+ public final Map<String, RemoteBrokerConnectionControl> remoteBrokerConnectionControls;
+
+ public final Map<String, BridgeControl> bridgeControls;
+
+ public final Map<String, ClusterConnectionControl> clusterConnectionControl;
+
+ public final Map<String, ConnectionRouterControl> connectionRouterControls;
+
+ public final Map<String, HawtioSecurityControl> hawtioSecurityControls;
+
+ public final Map<String, DivertControl> divertControls;
+
+ public final Map<String, Object> amqpControls;
+
+ public ControlRegistries() {
+ serverControls = new ConcurrentHashMap<>();
+ queueControls = new ConcurrentHashMap<>();
+ addressControls = new ConcurrentHashMap<>();
+ accepterControls = new ConcurrentHashMap<>();
+ broadcastGroupControls = new ConcurrentHashMap<>();
+ brokerConnectionControls = new ConcurrentHashMap<>();
+ remoteBrokerConnectionControls = new ConcurrentHashMap<>();
+ bridgeControls = new ConcurrentHashMap<>();
+ clusterConnectionControl = new ConcurrentHashMap<>();
+ connectionRouterControls = new ConcurrentHashMap<>();
+ hawtioSecurityControls = new ConcurrentHashMap<>();
+ amqpControls = new ConcurrentHashMap<>();
+ divertControls = new ConcurrentHashMap<>();
+ }
+
+ public void unregisterQueueControls(final String resourceName) {
+ Object removed = queueControls.remove(resourceName);
+ extracted(resourceName, removed);
+ }
+
+ public void registerQueueControls(final String resourceName, final QueueControl queueControl) {
+ Object replaced = queueControls.put(resourceName, queueControl);
+ replaced(resourceName, replaced, queueControl);
+ }
+
+ public void unregisterAddressControls(final String resourceName) {
+ Object removed = addressControls.remove(resourceName);
+ extracted(resourceName, removed);
+ }
+
+ public void registerAddressControls(final String resourceName, final AddressControl addressControl) {
+ Object replaced = addressControls.put(resourceName, addressControl);
+ replaced(resourceName, replaced, addressControl);
+ }
+
+ public void registerAcceptor(String resourceName, AcceptorControl acceptorControl) {
+ Object replaced = accepterControls.put(resourceName, acceptorControl);
+ replaced(resourceName, replaced, acceptorControl);
+ }
+
+ public Set<String> getAcceptorNames() {
+ return accepterControls.keySet();
+ }
+
+ public void unregisterAcceptorControls(String resourceName) {
+ Object removed = accepterControls.remove(resourceName);
+ extracted(resourceName, removed);
+ }
+
+ public void registerBroadcastGroupControls(String resourceName, BaseBroadcastGroupControl control) {
+ Object replaced = broadcastGroupControls.put(resourceName, control);
+ replaced(resourceName, replaced, control);
+ }
+
+ public void unRegisterBroadcastGroupControls(String resourceName) {
+ Object removed = broadcastGroupControls.remove(resourceName);
+ extracted(resourceName, removed);
+ }
+
+ public void registerBrokerConnectionControl(String resourceName, BrokerConnectionControl control) {
+ Object replaced = brokerConnectionControls.put(resourceName, control);
+ replaced(resourceName, replaced, control);
+ }
+
+ public void unRegisterBrokerConnectionControl(String resourceName) {
+ Object removed = brokerConnectionControls.remove(resourceName);
+ extracted(resourceName, removed);
+ }
+
+ public void registerRemoteBrokerConnectionControl(String resourceName, RemoteBrokerConnectionControl control) {
+ Object replaced = remoteBrokerConnectionControls.put(resourceName, control);
+ replaced(resourceName, replaced, control);
+ }
+
+ public void unRegisterRemoteBrokerConnectionControl(String resourceName) {
+ Object removed = remoteBrokerConnectionControls.remove(resourceName);
+ extracted(resourceName, removed);
+ }
+
+ public void registerBridgeControl(String resourceName, BridgeControl control) {
+ Object replaced = bridgeControls.put(resourceName, control);
+ replaced(resourceName, replaced, control);
+ }
+
+ public void unRegisterBridgeControl(String resourceName) {
+ Object removed = bridgeControls.remove(resourceName);
+ extracted(resourceName, removed);
+ }
+
+ public void registerClusterConnectionControl(String resourceName, ClusterConnectionControl control) {
+ Object replaced = clusterConnectionControl.put(resourceName, control);
+ replaced(resourceName, replaced, control);
+ }
+
+ public void unRegisterClusterConnectionControl(String resourceName) {
+ Object removed = clusterConnectionControl.remove(resourceName);
+ extracted(resourceName, removed);
+ }
+
+ public void registerConnectionRouterControl(String resourceName, ConnectionRouterControl connectionRouterControl) {
+ Object replaced = connectionRouterControls.put(resourceName, connectionRouterControl);
+ replaced(resourceName, replaced, connectionRouterControl);
+ }
+
+ public void unRegisterConnectionRouterControl(String resourceName) {
+ Object removed = connectionRouterControls.remove(resourceName);
+ extracted(resourceName, removed);
+ }
+
+ public void registerHawtioSecurityControl(String resourceName, HawtioSecurityControl control) {
+ Object replaced = hawtioSecurityControls.put(resourceName, control);
+ replaced(resourceName, replaced, control);
+ }
+
+ public void unRegisterHawtioSecurityControl(String resourceName) {
+ Object removed = hawtioSecurityControls.remove(resourceName);
+ extracted(resourceName, removed);
+ }
+ public void registerAMQPControl(String amqpResourceName, Object control) {
+ amqpControls.put(amqpResourceName, control);
+ }
+
+ public void unRegisterAMQPControl(String resourceName) {
+ Object removed = amqpControls.remove(resourceName);
+ extracted(resourceName, removed);
+ }
+
+ public void registerBroker(String resourceName, ActiveMQServerControlImpl messagingServerControl) {
+ Object replaced = serverControls.put(resourceName, messagingServerControl);
+ replaced(resourceName, replaced, messagingServerControl);
+ }
+
+ public void unRegisterBroker(String resourceName) {
+ Object removed = serverControls.remove(resourceName);
+ extracted(resourceName, removed);
+ }
+
+ public void registerDivertControl(String resourceName, DivertControl divertControl) {
+ Object replaced = divertControls.put(resourceName, divertControl);
+ replaced(resourceName, replaced, divertControl);
+ }
+
+ public void unRegisterDivertControl(String resourceName) {
+ Object removed = divertControls.remove(resourceName);
+ extracted(resourceName, removed);
+ }
+
+ public List<QueueControl> getQueueControls(Predicate<QueueControl> predicate) {
+ if (predicate == null) {
+ return queueControls.values().stream().toList();
+ }
+ return queueControls.values().stream().filter(predicate).collect(Collectors.toList());
+ }
+
+ public List<AddressControl> getAddressControls(Predicate<AddressControl> predicate) {
+ if (predicate == null) {
+ return addressControls.values().stream().toList();
+ }
+ return addressControls.values().stream().filter(predicate).collect(Collectors.toList());
+ }
+
+ public AddressControl getAddressControl(String resourceName) {
+ return addressControls.get(resourceName);
+ }
+
+ public AcceptorControl getAcceptorControl(String resourceName) {
+ return accepterControls.get(resourceName);
+ }
+
+ public void clear() {
+ serverControls.clear();
+ addressControls.clear();
+ queueControls.clear();
+ serverControls.clear();
+ accepterControls.clear();
+ serverControls.clear();
+ broadcastGroupControls.clear();
+ brokerConnectionControls.clear();
+ remoteBrokerConnectionControls.clear();
+ bridgeControls.clear();
+ clusterConnectionControl.clear();
+ connectionRouterControls.clear();
+ hawtioSecurityControls.clear();
+ divertControls.clear();
+ amqpControls.clear();
+ }
+
+ /**
+ * This is only used by tests for asserting, so performance is not an issue
+ */
+ public Object get(String resourceName) {
+ String resourceNamePrefix = resourceName;
+ int idx = resourceName.indexOf(".");
+ if (idx > 0) {
+ resourceNamePrefix = resourceName.substring(0, idx + 1);
+ }
+
+ return switch (resourceNamePrefix) {
+ case ResourceNames.BROKER -> serverControls.get(resourceName);
+ case ResourceNames.ADDRESS -> addressControls.get(resourceName);
+ case ResourceNames.QUEUE -> queueControls.get(resourceName);
+ case ResourceNames.ACCEPTOR -> accepterControls.get(resourceName);
+ case ResourceNames.BROADCAST_GROUP -> broadcastGroupControls.get(resourceName);
+ case ResourceNames.BROKER_CONNECTION -> brokerConnectionControls.get(resourceName);
+ case ResourceNames.REMOTE_BROKER_CONNECTION -> remoteBrokerConnectionControls.get(resourceName);
+ case ResourceNames.BRIDGE -> bridgeControls.get(resourceName);
+ case ResourceNames.CORE_CLUSTER_CONNECTION -> clusterConnectionControl.get(resourceName);
+ case ResourceNames.CONNECTION_ROUTER -> connectionRouterControls.get(resourceName);
+ case ResourceNames.MANAGEMENT_SECURITY -> hawtioSecurityControls.get(resourceName);
+ case ResourceNames.DIVERT -> divertControls.get(resourceName);
+ default -> {
+ if (amqpControls.containsKey(resourceName)) {
+ yield amqpControls.get(resourceName);
+ }
+ yield null;
+ }
+ };
+ }
+
+ /**
+ * This is only used by tests for asserting, so performance is not an issue
+ */
+ public Object legacyGetResource(String resourceName) {
+ Object resource = serverControls.get(resourceName);
+ if (resource == null)
+ resource = addressControls.get(resourceName);
+ if (resource == null)
+ resource = queueControls.get(resourceName);
+ if (resource == null)
+ resource = accepterControls.get(resourceName);
+ if (resource == null)
+ resource = broadcastGroupControls.get(resourceName);
+ if (resource == null)
+ resource = brokerConnectionControls.get(resourceName);
+ if (resource == null)
+ resource = remoteBrokerConnectionControls.get(resourceName);
+ if (resource == null)
+ resource = bridgeControls.get(resourceName);
+ if (resource == null)
+ resource = clusterConnectionControl.get(resourceName);
+ if (resource == null)
+ resource = connectionRouterControls.get(resourceName);
+ if (resource == null)
+ resource = hawtioSecurityControls.get(resourceName);
+ if (resource == null)
+ resource = divertControls.get(resourceName);
+ if (resource == null)
+ resource = amqpControls.get(resourceName);
+
+ return resource;
+ }
+
+ public List<DivertControl> getDivertControls() {
+ return divertControls.values().stream().toList();
+ }
+
+ public List<BridgeControl> getBridgeControls() {
+ return bridgeControls.values().stream().toList();
+ }
+
+ public Set<String> unRegisterAll() {
+ Set<String> names = new HashSet<>();
+ names.addAll(unregisterMap(serverControls));
+ names.addAll(unregisterMap(addressControls));
+ names.addAll(unregisterMap(queueControls));
+ names.addAll(unregisterMap(accepterControls));
+ names.addAll(unregisterMap(broadcastGroupControls));
+ names.addAll(unregisterMap(brokerConnectionControls));
+ names.addAll(unregisterMap(remoteBrokerConnectionControls));
+ names.addAll(unregisterMap(bridgeControls));
+ names.addAll(unregisterMap(clusterConnectionControl));
+ names.addAll(unregisterMap(connectionRouterControls));
+ names.addAll(unregisterMap(hawtioSecurityControls));
+ names.addAll(unregisterMap(amqpControls));
+ return names;
+ }
+
+ private Collection<String> unregisterMap(Map registry) {
+ Set<String> resourceNames = new HashSet<>(registry.keySet());
+ for (String resourceName : resourceNames) {
+ unregisterFromRegistry(resourceName, registry);
+ }
+ return resourceNames;
+ }
+
+ private void unregisterFromRegistry(final String resourceName, final Map<String, Object> registry) {
+ Object removed = registry.remove(resourceName);
+ extracted(resourceName, removed);
+ }
+
+ private static void extracted(String resourceName, Object removed) {
+ if (removed != null) {
+ logger.debug("Unregistered from management: {} as {}", resourceName, removed);
+ } else {
+ logger.debug("Attempted to unregister {} from management, but it was not registered.");
+ }
+ }
+
+ private static void replaced(String resourceName, Object replaced, Object managedResource) {
+ String addendum = "";
+ if (replaced != null) {
+ addendum = ". Replaced: " + replaced;
+ }
+ logger.debug("Registered in management: {} as {}{}", resourceName, managedResource, addendum);
+ }
+
+}
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ManagementServiceImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ManagementServiceImpl.java
index 561b9818d5..ae12844c4f 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ManagementServiceImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ManagementServiceImpl.java
@@ -29,11 +29,10 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
-import java.util.Map;
import java.util.Objects;
import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ScheduledExecutorService;
+import java.util.function.Predicate;
import java.util.regex.Pattern;
import io.micrometer.core.instrument.Tag;
@@ -132,7 +131,7 @@ public class ManagementServiceImpl implements ManagementService {
private final boolean jmxManagementEnabled;
- private final Map<String, Object> registry;
+ ControlRegistries registries = new ControlRegistries();
private final NotificationBroadcasterSupport broadcaster;
@@ -180,8 +179,6 @@ public class ManagementServiceImpl implements ManagementService {
messageCounterEnabled = configuration.isMessageCounterEnabled();
managementAddress = configuration.getManagementAddress();
managementNotificationAddress = configuration.getManagementNotificationAddress();
-
- registry = new ConcurrentHashMap<>();
broadcaster = new NotificationBroadcasterSupport();
notificationsEnabled = true;
objectNameBuilder = ObjectNameBuilder.create(configuration.getJMXDomain(), configuration.getName(), configuration.isJMXUseBrokerName());
@@ -236,7 +233,7 @@ public class ManagementServiceImpl implements ManagementService {
messagingServerControl = new ActiveMQServerControlImpl(postOffice, configuration, resourceManager, remotingService, messagingServer, messageCounterManager, storageManager1, broadcaster);
ObjectName objectName = objectNameBuilder.getActiveMQServerObjectName();
registerInJMX(objectName, messagingServerControl);
- registerInRegistry(ResourceNames.BROKER, messagingServerControl);
+ registries.registerBroker(ResourceNames.BROKER, messagingServerControl);
registerBrokerMeters();
return messagingServerControl;
@@ -266,7 +263,7 @@ public class ManagementServiceImpl implements ManagementService {
@Override
public void unregisterServer() throws Exception {
unregisterFromJMX(objectNameBuilder.getActiveMQServerObjectName());
- unregisterFromRegistry(ResourceNames.BROKER);
+ registries.unRegisterBroker(ResourceNames.BROKER);
if (messagingServer != null) {
unregisterMeters(ResourceNames.BROKER + "." + messagingServer.getConfiguration().getName());
}
@@ -276,7 +273,7 @@ public class ManagementServiceImpl implements ManagementService {
public void registerAddress(AddressInfo addressInfo) throws Exception {
AddressControlImpl addressControl = new AddressControlImpl(addressInfo, messagingServer, pagingManager, storageManager, securityRepository, securityStore, this);
registerInJMX(objectNameBuilder.getAddressObjectName(addressInfo.getName()), addressControl);
- registerInRegistry(ResourceNames.ADDRESS + addressInfo.getName(), addressControl);
+ registries.registerAddressControls(ResourceNames.ADDRESS + addressInfo.getName(), addressControl);
registerAddressMeters(addressInfo, addressControl);
}
@@ -299,7 +296,7 @@ public class ManagementServiceImpl implements ManagementService {
@Override
public void unregisterAddress(final SimpleString address) throws Exception {
unregisterFromJMX(objectNameBuilder.getAddressObjectName(address));
- unregisterFromRegistry(ResourceNames.ADDRESS + address);
+ registries.unregisterAddressControls(ResourceNames.ADDRESS + address);
unregisterMeters(ResourceNames.ADDRESS + address);
}
@@ -312,20 +309,60 @@ public class ManagementServiceImpl implements ManagementService {
messageCounterManager.registerMessageCounter(queue.getName().toString(), counter);
}
registerInJMX(objectNameBuilder.getQueueObjectName(address, queue.getName(), queue.getRoutingType()), queueControl);
- registerInRegistry(ResourceNames.QUEUE + queue.getName(), queueControl);
+ registries.registerQueueControls(ResourceNames.QUEUE + queue.getName(), queueControl);
registerQueueMeters(queue);
}
@Override
public void unregisterQueue(final SimpleString name, final SimpleString address, RoutingType routingType) throws Exception {
unregisterFromJMX(objectNameBuilder.getQueueObjectName(address, name, routingType));
- unregisterFromRegistry(ResourceNames.QUEUE + name);
+ registries.unregisterQueueControls(ResourceNames.QUEUE + name);
unregisterMeters(ResourceNames.QUEUE + name);
if (messageCounterManager != null) {
messageCounterManager.unregisterMessageCounter(name.toString());
}
}
+ @Override
+ public List<QueueControl> getQueueControls() {
+ return registries.getQueueControls(null);
+ }
+
+ @Override
+ public List<QueueControl> getQueueControls(Predicate<QueueControl> predicate) {
+ return registries.getQueueControls(predicate);
+ }
+
+ @Override
+ public List<AddressControl> getAddressControls() {
+ return registries.getAddressControls(null);
+ }
+
+ @Override
+ public List<AddressControl> getAddressControls(Predicate<AddressControl> predicate) {
+ return registries.getAddressControls(predicate);
+ }
+
+ @Override
+ public AddressControl getAddressControl(String resourceName) {
+ return registries.getAddressControl(resourceName);
+ }
+
+ @Override
+ public AcceptorControl getAcceptorControl(String resourceName) {
+ return registries.getAcceptorControl(resourceName);
+ }
+
+ @Override
+ public void registerAMQPControl(String amqpResourceName, Object control) {
+ registries.registerAMQPControl(amqpResourceName, control);
+ }
+
+ @Override
+ public void unRegisterAMQPControl(String amqpResourceName) {
+ registries.unRegisterAMQPControl(amqpResourceName);
+ }
+
private void registerQueueMeters(final Queue queue) {
if (messagingServer != null) { // messagingServer could be null on certain unit tests where metrics are not relevant
MetricsManager metricsManager = messagingServer.getMetricsManager();
@@ -369,25 +406,25 @@ public class ManagementServiceImpl implements ManagementService {
public void registerDivert(final Divert divert) throws Exception {
DivertControl divertControl = new DivertControlImpl(divert, storageManager, messagingServer.getInternalNamingPrefix());
registerInJMX(objectNameBuilder.getDivertObjectName(divert.getUniqueName().toString(), divert.getAddress().toString()), divertControl);
- registerInRegistry(ResourceNames.DIVERT + divert.getUniqueName(), divertControl);
+ registries.registerDivertControl(ResourceNames.DIVERT + divert.getUniqueName(), divertControl);
}
@Override
public void unregisterDivert(final SimpleString name, final SimpleString address) throws Exception {
unregisterFromJMX(objectNameBuilder.getDivertObjectName(name.toString(), address.toString()));
- unregisterFromRegistry(ResourceNames.DIVERT + name);
+ registries.unRegisterDivertControl(ResourceNames.DIVERT + name);
}
@Override
public void registerAcceptor(final Acceptor acceptor, final TransportConfiguration configuration) throws Exception {
AcceptorControl control = new AcceptorControlImpl(acceptor, storageManager, configuration);
registerInJMX(objectNameBuilder.getAcceptorObjectName(configuration.getName()), control);
- registerInRegistry(ResourceNames.ACCEPTOR + configuration.getName(), control);
+ registries.registerAcceptor(ResourceNames.ACCEPTOR + configuration.getName(), control);
}
@Override
public void unregisterAcceptors() {
- for (String resourceName : new HashSet<>(registry.keySet())) {
+ for (String resourceName : new HashSet<>(registries.getAcceptorNames())) {
if (resourceName.startsWith(ResourceNames.ACCEPTOR)) {
String name = resourceName.substring(ResourceNames.ACCEPTOR.length());
try {
@@ -402,7 +439,7 @@ public class ManagementServiceImpl implements ManagementService {
@Override
public void unregisterAcceptor(final String name) throws Exception {
unregisterFromJMX(objectNameBuilder.getAcceptorObjectName(name));
- unregisterFromRegistry(ResourceNames.ACCEPTOR + name);
+ registries.unregisterAcceptorControls(ResourceNames.ACCEPTOR + name);
}
@Override
@@ -420,26 +457,26 @@ public class ManagementServiceImpl implements ManagementService {
control = new BaseBroadcastGroupControlImpl(broadcastGroup, storageManager, configuration);
}
registerInJMX(objectNameBuilder.getBroadcastGroupObjectName(configuration.getName()), control);
- registerInRegistry(ResourceNames.BROADCAST_GROUP + configuration.getName(), control);
+ registries.registerBroadcastGroupControls(ResourceNames.BROADCAST_GROUP + configuration.getName(), control);
}
@Override
public void unregisterBroadcastGroup(final String name) throws Exception {
unregisterFromJMX(objectNameBuilder.getBroadcastGroupObjectName(name));
- unregisterFromRegistry(ResourceNames.BROADCAST_GROUP + name);
+ registries.unRegisterBroadcastGroupControls(ResourceNames.BROADCAST_GROUP + name);
}
@Override
public void registerBrokerConnection(BrokerConnection brokerConnection) throws Exception {
BrokerConnectionControl control = new BrokerConnectionControlImpl(brokerConnection, storageManager);
registerInJMX(objectNameBuilder.getBrokerConnectionObjectName(brokerConnection.getName()), control);
- registerInRegistry(ResourceNames.BROKER_CONNECTION + brokerConnection.getName(), control);
+ registries.registerBrokerConnectionControl(ResourceNames.BROKER_CONNECTION + brokerConnection.getName(), control);
}
@Override
public void unregisterBrokerConnection(String name) throws Exception {
unregisterFromJMX(objectNameBuilder.getBrokerConnectionObjectName(name));
- unregisterFromRegistry(ResourceNames.BROKER_CONNECTION + name);
+ registries.unRegisterBrokerConnectionControl(ResourceNames.BROKER_CONNECTION + name);
}
@Override
@@ -460,13 +497,13 @@ public class ManagementServiceImpl implements ManagementService {
RemoteBrokerConnectionControl control = new RemoteBrokerConnectionControlImpl(brokerConnection, storageManager);
registerInJMX(objectNameBuilder.getRemoteBrokerConnectionObjectName(nodeId, name), control);
- registerInRegistry(ResourceNames.REMOTE_BROKER_CONNECTION + nodeId + "." + name, control);
+ registries.registerRemoteBrokerConnectionControl(ResourceNames.REMOTE_BROKER_CONNECTION + nodeId + "." + name, control);
}
@Override
public void unregisterRemoteBrokerConnection(String nodeId, String name) throws Exception {
unregisterFromJMX(objectNameBuilder.getRemoteBrokerConnectionObjectName(nodeId, name));
- unregisterFromRegistry(ResourceNames.REMOTE_BROKER_CONNECTION + nodeId + "." + name);
+ registries.unRegisterRemoteBrokerConnectionControl(ResourceNames.REMOTE_BROKER_CONNECTION + nodeId + "." + name);
}
@Override
@@ -474,52 +511,52 @@ public class ManagementServiceImpl implements ManagementService {
bridge.setNotificationService(this);
BridgeControl control = new BridgeControlImpl(bridge, storageManager);
registerInJMX(objectNameBuilder.getBridgeObjectName(bridge.getConfiguration().getName()), control);
- registerInRegistry(ResourceNames.BRIDGE + bridge.getName(), control);
+ registries.registerBridgeControl(ResourceNames.BRIDGE + bridge.getName(), control);
}
@Override
public void unregisterBridge(final String name) throws Exception {
unregisterFromJMX(objectNameBuilder.getBridgeObjectName(name));
- unregisterFromRegistry(ResourceNames.BRIDGE + name);
+ registries.unRegisterBridgeControl(ResourceNames.BRIDGE + name);
}
@Override
public void registerCluster(final ClusterConnection cluster, final ClusterConnectionConfiguration configuration) throws Exception {
ClusterConnectionControl control = new ClusterConnectionControlImpl(cluster, storageManager, configuration);
registerInJMX(objectNameBuilder.getClusterConnectionObjectName(configuration.getName()), control);
- registerInRegistry(ResourceNames.CORE_CLUSTER_CONNECTION + configuration.getName(), control);
+ registries.registerClusterConnectionControl(ResourceNames.CORE_CLUSTER_CONNECTION + configuration.getName(), control);
}
@Override
public void unregisterCluster(final String name) throws Exception {
unregisterFromJMX(objectNameBuilder.getClusterConnectionObjectName(name));
- unregisterFromRegistry(ResourceNames.CORE_CLUSTER_CONNECTION + name);
+ registries.unRegisterClusterConnectionControl(ResourceNames.CORE_CLUSTER_CONNECTION + name);
}
@Override
public void registerConnectionRouter(final ConnectionRouter router) throws Exception {
ConnectionRouterControl connectionRouterControl = new ConnectionRouterControlImpl(router, storageManager);
registerInJMX(objectNameBuilder.getConnectionRouterObjectName(router.getName()), connectionRouterControl);
- registerInRegistry(ResourceNames.CONNECTION_ROUTER + router.getName(), connectionRouterControl);
+ registries.registerConnectionRouterControl(ResourceNames.CONNECTION_ROUTER + router.getName(), connectionRouterControl);
}
@Override
public void unregisterConnectionRouter(final String name) throws Exception {
unregisterFromJMX(objectNameBuilder.getConnectionRouterObjectName(name));
- unregisterFromRegistry(ResourceNames.CONNECTION_ROUTER + name);
+ registries.unRegisterConnectionRouterControl(ResourceNames.CONNECTION_ROUTER + name);
}
@Override
public void registerHawtioSecurity(GuardInvocationHandler guard) throws Exception {
HawtioSecurityControl control = new HawtioSecurityControlImpl(guard, storageManager);
registerInJMX(objectNameBuilder.getSecurityObjectName(), control);
- registerInRegistry(ResourceNames.MANAGEMENT_SECURITY, control);
+ registries.registerHawtioSecurityControl(ResourceNames.MANAGEMENT_SECURITY, control);
}
@Override
public void unregisterHawtioSecurity() throws Exception {
unregisterFromJMX(objectNameBuilder.getSecurityObjectName());
- unregisterFromRegistry(ResourceNames.MANAGEMENT_SECURITY);
+ registries.unRegisterHawtioSecurityControl(ResourceNames.MANAGEMENT_SECURITY);
}
@Override
@@ -607,20 +644,24 @@ public class ManagementServiceImpl implements ManagementService {
return CheckType.EDIT;
}
+ // This is only used by tests and left to avoid massive refactoring
@Override
public Object getResource(final String resourceName) {
- return registry.get(resourceName);
+ Object resource = registries.get(resourceName);
+ if (resource == null) {
+ return registries.legacyGetResource(resourceName);
+ }
+ return resource;
}
@Override
- public Object[] getResources(final Class<?> resourceType) {
- List<Object> resources = new ArrayList<>();
- for (Object entry : new ArrayList<>(registry.values())) {
- if (resourceType.isAssignableFrom(entry.getClass())) {
- resources.add(entry);
- }
- }
- return resources.toArray(new Object[resources.size()]);
+ public List<DivertControl> getDivertControls() {
+ return registries.getDivertControls();
+ }
+
+ @Override
+ public List<BridgeControl> getBridgeControls() {
+ return registries.getBridgeControls();
}
@Override
@@ -655,26 +696,6 @@ public class ManagementServiceImpl implements ManagementService {
logger.debug("Unregistered from JMX: {}", objectName);
}
- @Override
- public void registerInRegistry(final String resourceName, final Object managedResource) {
- Object replaced = registry.put(resourceName, managedResource);
- String addendum = "";
- if (replaced != null) {
- addendum = ". Replaced: " + replaced;
- }
- logger.debug("Registered in management: {} as {}{}", resourceName, managedResource, addendum);
- }
-
- @Override
- public void unregisterFromRegistry(final String resourceName) {
- Object removed = registry.remove(resourceName);
- if (removed != null) {
- logger.debug("Unregistered from management: {} as {}", resourceName, removed);
- } else {
- logger.debug("Attempted to unregister {} from management, but it was not registered.");
- }
- }
-
@Override
public void addNotificationListener(final NotificationListener listener) {
listeners.add(listener);
@@ -734,10 +755,9 @@ public class ManagementServiceImpl implements ManagementService {
started = false;
- Set<String> resourceNames = new HashSet<>(registry.keySet());
+ Set<String> resourceNames = registries.unRegisterAll();//new HashSet<>(registry.keySet());
for (String resourceName : resourceNames) {
- unregisterFromRegistry(resourceName);
unregisterMeters(resourceName);
}
@@ -775,7 +795,7 @@ public class ManagementServiceImpl implements ManagementService {
listeners.clear();
- registry.clear();
+ registries.clear();
messagingServer = null;
@@ -863,7 +883,10 @@ public class ManagementServiceImpl implements ManagementService {
@Override
public Object getAttribute(final String resourceName, final String attribute, SecurityAuth auth) {
try {
- Object resource = registry.get(resourceName);
+ Object resource = registries.get(resourceName);
+ if (resource == null) {
+ resource = registries.legacyGetResource(resourceName);
+ }
if (resource == null) {
throw ActiveMQMessageBundle.BUNDLE.cannotFindResource(resourceName);
@@ -897,7 +920,10 @@ public class ManagementServiceImpl implements ManagementService {
final String operation,
final Object[] params,
SecurityAuth auth) throws Exception {
- Object resource = registry.get(resourceName);
+ Object resource = registries.get(resourceName);
+ if (resource == null) {
+ resource = registries.legacyGetResource(resourceName);
+ }
if (resource == null) {
throw ActiveMQMessageBundle.BUNDLE.cannotFindResource(resourceName);
diff --git a/artemis-server/src/test/java/org/apache/activemq/artemis/core/server/group/impl/ClusteredResetMockTest.java b/artemis-server/src/test/java/org/apache/activemq/artemis/core/server/group/impl/ClusteredResetMockTest.java
index 42a5e17588..e404fdf229 100644
--- a/artemis-server/src/test/java/org/apache/activemq/artemis/core/server/group/impl/ClusteredResetMockTest.java
+++ b/artemis-server/src/test/java/org/apache/activemq/artemis/core/server/group/impl/ClusteredResetMockTest.java
@@ -19,9 +19,11 @@ package org.apache.activemq.artemis.core.server.group.impl;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
+import java.util.function.Predicate;
import javax.management.ObjectName;
@@ -31,9 +33,13 @@ import org.apache.activemq.artemis.api.core.Message;
import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.TransportConfiguration;
+import org.apache.activemq.artemis.api.core.management.AcceptorControl;
import org.apache.activemq.artemis.api.core.management.AddressControl;
+import org.apache.activemq.artemis.api.core.management.BridgeControl;
+import org.apache.activemq.artemis.api.core.management.DivertControl;
import org.apache.activemq.artemis.api.core.management.ManagementHelper;
import org.apache.activemq.artemis.api.core.management.ObjectNameBuilder;
+import org.apache.activemq.artemis.api.core.management.QueueControl;
import org.apache.activemq.artemis.core.config.ClusterConnectionConfiguration;
import org.apache.activemq.artemis.core.config.Configuration;
import org.apache.activemq.artemis.core.management.impl.ActiveMQServerControlImpl;
@@ -228,27 +234,47 @@ public class ClusteredResetMockTest extends ServerTestBase {
}
@Override
- public void unregisterServer() throws Exception {
+ public AddressControl getAddressControl(String resourceName) {
+ return null;
+ }
+ @Override
+ public AcceptorControl getAcceptorControl(String resourceName) {
+ return null;
}
@Override
- public void registerInJMX(ObjectName objectName, Object managedResource) throws Exception {
+ public void registerAMQPControl(String amqpResourceName, Object control) {
}
@Override
- public void unregisterFromJMX(ObjectName objectName) throws Exception {
+ public void unRegisterAMQPControl(String amqpResourceName) {
+
+ }
+ @Override
+ public List<DivertControl> getDivertControls() {
+ return List.of();
}
@Override
- public void registerInRegistry(String resourceName, Object managedResource) {
+ public List<BridgeControl> getBridgeControls() {
+ return List.of();
+ }
+
+ @Override
+ public void unregisterServer() throws Exception {
}
@Override
- public void unregisterFromRegistry(String resourceName) {
+ public void registerInJMX(ObjectName objectName, Object managedResource) throws Exception {
+
+ }
+
+ @Override
+ public void unregisterFromJMX(ObjectName objectName) throws Exception {
}
@@ -349,11 +375,6 @@ public class ClusteredResetMockTest extends ServerTestBase {
return null;
}
- @Override
- public Object[] getResources(Class<?> resourceType) {
- return new Object[0];
- }
-
@Override
public ICoreMessage handleMessage(SecurityAuth auth, Message message) throws Exception {
return null;
@@ -379,6 +400,26 @@ public class ClusteredResetMockTest extends ServerTestBase {
return null;
}
+ @Override
+ public List<QueueControl> getQueueControls() {
+ return List.of();
+ }
+
+ @Override
+ public List<QueueControl> getQueueControls(Predicate<QueueControl> predicate) {
+ return List.of();
+ }
+
+ @Override
+ public List<AddressControl> getAddressControls() {
+ return List.of();
+ }
+
+ @Override
+ public List<AddressControl> getAddressControls(Predicate<AddressControl> predicate) {
+ return List.of();
+ }
+
@Override
public void registerBrokerConnection(BrokerConnection brokerConnection) {
diff --git a/tests/compatibility-tests/src/main/resources/metrics/queueMetrics.groovy b/tests/compatibility-tests/src/main/resources/metrics/queueMetrics.groovy
index b8e105d0df..50e246da77 100644
--- a/tests/compatibility-tests/src/main/resources/metrics/queueMetrics.groovy
+++ b/tests/compatibility-tests/src/main/resources/metrics/queueMetrics.groovy
@@ -1,4 +1,7 @@
package metrics
+
+import org.apache.activemq.artemis.core.version.Version
+
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -27,9 +30,8 @@ import org.apache.activemq.artemis.api.core.management.ObjectNameBuilder;
import org.apache.activemq.artemis.api.core.management.QueueControl;
//validate metrics are recovered
-Object[] queueControls = server.getJMSServerManager().getActiveMQServer().getManagementService().getResources(QueueControl.class);
-for (Object o : queueControls) {
- QueueControl c = (QueueControl) o;
+List<QueueControl> queueControls = server.getJMSServerManager().getActiveMQServer().getManagementService().getQueueControls();
+for (QueueControl c : queueControls) {
if (c.isInternalQueue()) {
continue;
}
@@ -38,4 +40,5 @@ for (Object o : queueControls) {
GroovyRun.assertTrue(c.getDurablePersistentSize() > 0);
GroovyRun.assertEquals(33l, c.getMessageCount());
GroovyRun.assertEquals(33l, c.getDurableMessageCount());
- }
+}
+
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/connect/AMQPFederationServerToServerTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/connect/AMQPFederationServerToServerTest.java
index 693799da18..6faf80eae8 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/connect/AMQPFederationServerToServerTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/connect/AMQPFederationServerToServerTest.java
@@ -59,7 +59,6 @@ import org.apache.activemq.artemis.core.config.amqpBrokerConnectivity.AMQPFedera
import org.apache.activemq.artemis.core.server.ActiveMQServer;
import org.apache.activemq.artemis.core.server.ComponentConfigurationRoutingType;
import org.apache.activemq.artemis.core.server.impl.AddressInfo;
-import org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConsumerControlType;
import org.apache.activemq.artemis.protocol.amqp.proton.AmqpSupport;
import org.apache.activemq.artemis.tests.integration.amqp.AmqpClientTestSupport;
import org.apache.activemq.artemis.tests.util.CFUtil;
@@ -1702,9 +1701,9 @@ public class AMQPFederationServerToServerTest extends AmqpClientTestSupport {
producerR.send(message);
server.start();
-
+ String resourceName = "brokerconnection." + getTestName() + ".federation." + getTestName();
// check federation has reconnected
- Wait.assertTrue(() -> server.getManagementService().getResources(AMQPFederationConsumerControlType.class).length == 1);
+ Wait.assertTrue(() -> server.getManagementService().getResource(resourceName) != null);
Wait.assertTrue(() -> server.bindingQuery(SimpleString.of(getTestName()), false).getQueueNames().size() >= 1);
Wait.assertTrue(() -> remoteServer.bindingQuery(SimpleString.of(getTestName()), false).getQueueNames().size() >= 1);
@@ -1795,9 +1794,9 @@ public class AMQPFederationServerToServerTest extends AmqpClientTestSupport {
producerL.send(message);
remoteServer.start();
-
+ String resourceName = "brokerconnection." + getTestName() + ".federation." + getTestName() + ".policy.test-policy.consumer." + getTestName();
// check federation has reconnected
- Wait.assertTrue(() -> remoteServer.getManagementService().getResources(AMQPFederationConsumerControlType.class).length == 1);
+ Wait.assertTrue(() -> remoteServer.getManagementService().getResource(resourceName) != null);
Wait.assertTrue(() -> server.bindingQuery(SimpleString.of(getTestName()), false).getQueueNames().size() >= 1);
Wait.assertTrue(() -> remoteServer.bindingQuery(SimpleString.of(getTestName()), false).getQueueNames().size() >= 1);
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/bridge/BridgeTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/bridge/BridgeTest.java
index 181e6809db..acd400207a 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/bridge/BridgeTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/bridge/BridgeTest.java
@@ -58,7 +58,6 @@ import org.apache.activemq.artemis.api.core.client.ClientProducer;
import org.apache.activemq.artemis.api.core.client.ClientSession;
import org.apache.activemq.artemis.api.core.client.ClientSessionFactory;
import org.apache.activemq.artemis.api.core.client.ServerLocator;
-import org.apache.activemq.artemis.api.core.management.BridgeControl;
import org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl;
import org.apache.activemq.artemis.core.config.BridgeConfiguration;
import org.apache.activemq.artemis.core.config.Configuration;
@@ -2148,10 +2147,10 @@ public class BridgeTest extends ActiveMQTestBase {
.setStaticConnectors(connectors)
.setConcurrency(concurrency);
server.deployBridge(config);
- assertEquals(concurrency, server.getManagementService().getResources(BridgeControl.class).length);
+ assertEquals(concurrency, server.getManagementService().getBridgeControls().size());
server.destroyBridge(config.getName());
- assertEquals(0, server.getManagementService().getResources(BridgeControl.class).length);
+ assertEquals(0, server.getManagementService().getBridgeControls().size());
}
@TestTemplate
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ManagementServiceImplTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ManagementServiceImplTest.java
index 10583ed8c8..dac15268b4 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ManagementServiceImplTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ManagementServiceImplTest.java
@@ -46,6 +46,8 @@ import org.apache.activemq.artemis.utils.UUID;
import org.apache.activemq.artemis.utils.UUIDGenerator;
import org.junit.jupiter.api.Test;
+import java.util.List;
+
public class ManagementServiceImplTest extends ActiveMQTestBase {
@Test
@@ -148,16 +150,16 @@ public class ManagementServiceImplTest extends ActiveMQTestBase {
Queue queue = new FakeQueue(RandomUtil.randomUUIDSimpleString());
managementService.registerQueue(queue, RandomUtil.randomUUIDSimpleString(), new FakeStorageManager());
- Object[] addresses = managementService.getResources(AddressControl.class);
- assertEquals(1, addresses.length);
- assertInstanceOf(AddressControl.class, addresses[0]);
- AddressControl addressControl = (AddressControl) addresses[0];
+ List<AddressControl> addresses = managementService.getAddressControls();
+ assertEquals(1, addresses.size());
+ assertInstanceOf(AddressControl.class, addresses.get(0));
+ AddressControl addressControl = (AddressControl) addresses.get(0);
assertEquals(address.toString(), addressControl.getAddress());
- Object[] queues = managementService.getResources(QueueControl.class);
- assertEquals(1, queues.length);
- assertInstanceOf(QueueControl.class, queues[0]);
- QueueControl queueControl = (QueueControl) queues[0];
+ List<QueueControl> queues = managementService.getQueueControls();
+ assertEquals(1, queues.size());
+ assertInstanceOf(QueueControl.class, queues.get(0));
+ QueueControl queueControl = (QueueControl) queues.get(0);
assertEquals(queue.getName().toString(), queueControl.getName());
}
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/AdvisoryOpenWireTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/AdvisoryOpenWireTest.java
index f2daf45179..f6c3e86a32 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/AdvisoryOpenWireTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/AdvisoryOpenWireTest.java
@@ -30,6 +30,7 @@ import javax.jms.Connection;
import javax.jms.Session;
import javax.jms.TemporaryQueue;
import javax.jms.TemporaryTopic;
+import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
@@ -78,11 +79,11 @@ public class AdvisoryOpenWireTest extends BasicOpenWireTest {
private AddressControl assertNonNullAddressControl(String match) {
AddressControl advisoryAddressControl = null;
- Object[] addressResources = server.getManagementService().getResources(AddressControl.class);
+ List<AddressControl> addressResources = server.getManagementService().getAddressControls();
- for (Object addressResource : addressResources) {
- if (((AddressControl) addressResource).getAddress().equals(match)) {
- advisoryAddressControl = (AddressControl) addressResource;
+ for (AddressControl addressResource : addressResources) {
+ if (addressResource.getAddress().equals(match)) {
+ advisoryAddressControl = addressResource;
}
}
assertNotNull(advisoryAddressControl, "addressControl for temp advisory");
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@artemis.apache.org
For additional commands, e-mail: commits-help@artemis.apache.org
(artemis) 03/03: ARTEMIS-5893 further optimize ManagementService
Posted by ta...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
tabish pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/artemis.git
commit 2e390b4fa0842ed8d3557a158c9ca4d204687cf3
Author: Justin Bertram <jb...@apache.org>
AuthorDate: Fri Feb 6 15:24:44 2026 -0600
ARTEMIS-5893 further optimize ManagementService
Changes include:
- Eliminating the use of ResourceNames values for key names when using
well-known controls (e.g. address, queue, etc.).
- Eliminating AMQP-specific registration methods in lieu of more
general "untyped" methods since the Core broker doesn't know anything
about AMQP-specific controls.
- Deprecating the JMX-specific registration methods. The
ManagementService itself will take care of JMX registration based on
the broker's configuration.
- Adding specific management methods to get names & counts for various
controls instead of always creating lists. This should reduce GC
pressure especially in high-load use-cases.
- Leveraging filtering where appropriate for the management API.
- Adding JavaDoc where method usage isn't obvious.
- Eliminating Maps for server & Hawtio controls since they are
singletons.
- Restoring & deprecating getResource and getResources methods to
ManagementService since they might be used by 3rd parties.
- Eliminated all use of getResource & getResources methods throughout
the code-base.
- Eliminating a handful of unnecessary methods.
- Eliminating unnecessary casts.
---
.../jms/server/impl/JMSServerManagerImpl.java | 3 +-
.../bridge/AMQPBridgeManagementSupport.java | 55 +--
.../AMQPFederationManagementSupport.java | 134 +++---
.../management/impl/ActiveMQServerControlImpl.java | 74 ++--
.../core/management/impl/DivertControlImpl.java | 1 -
.../core/management/impl/QueueControlImpl.java | 11 +-
.../view/predicate/ActiveMQFilterPredicate.java | 4 +
.../impl/view/predicate/PredicateFilterPart.java | 4 +-
.../remoting/server/impl/RemotingServiceImpl.java | 3 +-
.../artemis/core/server/ActiveMQServerLogger.java | 6 +-
.../core/server/management/ManagementService.java | 214 ++++++++--
.../server/management/impl/ControlRegistries.java | 472 +++++++++++----------
.../management/impl/ManagementServiceImpl.java | 333 +++++++++++----
.../server/group/impl/ClusteredResetMockTest.java | 139 +++++-
.../transport/failover/FailoverBackupLeakTest.java | 2 +-
.../src/main/resources/metrics/queueMetrics.groovy | 1 -
.../artemis/tests/db/paging/PagingTest.java | 23 +-
.../amqp/connect/AMQPBridgeManagementTest.java | 278 ++++++------
.../AMQPFederationConfigurationReloadTest.java | 62 ++-
.../amqp/connect/AMQPFederationConnectTest.java | 92 ++--
.../amqp/connect/AMQPFederationManagementTest.java | 336 ++++++++-------
.../connect/AMQPFederationServerToServerTest.java | 9 +-
.../tests/integration/client/AddressPauseTest.java | 16 +-
.../client/AutoCreateJmsDestinationTest.java | 37 +-
.../client/AutoDeleteJmsDestinationTest.java | 42 +-
.../integration/client/JMSMessageCounterTest.java | 10 +-
.../client/LargeMessageCompressTest.java | 42 +-
.../integration/client/MultipleProducersTest.java | 9 +-
.../cluster/bridge/BridgeReconnectTest.java | 5 +-
.../integration/cluster/bridge/BridgeTest.java | 4 +-
.../bridge/ClusteredBridgeReconnectTest.java | 5 +-
.../distribution/ClusteredMessageCounterTest.java | 29 +-
.../cluster/failover/BackupSyncJournalTest.java | 4 +-
.../failover/ClientConnectorFailoverTest.java | 35 +-
.../consumer/DetectOrphanedConsumerTest.java | 14 +-
.../tests/integration/jms/RedeployTest.java | 56 ++-
.../jms/multiprotocol/JMSMessageConsumerTest.java | 4 +-
.../jms/multiprotocol/JMSNonDestructiveTest.java | 29 +-
.../management/ManagementServiceImplTest.java | 6 +-
.../integration/management/QueueControlTest.java | 14 +-
.../integration/openwire/amq/JmsClientAckTest.java | 11 +-
.../openwire/amq/RedeliveryPolicyTest.java | 25 +-
.../openwire/interop/GeneralInteropTest.java | 22 +-
.../tests/integration/ra/ResourceAdapterTest.java | 6 +-
.../integration/routing/MQTTRedirectTest.java | 20 +-
.../tests/integration/routing/RedirectTest.java | 29 +-
.../scheduling/ScheduledMessageTest.java | 17 +-
.../server/AutoCreateDeadLetterResourcesTest.java | 15 +-
.../server/QueueConfigPersistenceTest.java | 13 +-
.../tests/integration/server/ScaleDownTest.java | 3 +-
.../integration/server/UuidNamespaceTest.java | 3 +-
.../artemis/tests/integration/xa/BasicXaTest.java | 7 +-
.../jms/tests/tools/container/LocalTestServer.java | 7 +-
.../client/ClientCrashMassiveRollbackTest.java | 7 +-
54 files changed, 1588 insertions(+), 1214 deletions(-)
diff --git a/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/impl/JMSServerManagerImpl.java b/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/impl/JMSServerManagerImpl.java
index 9f09218377..0090c421ef 100644
--- a/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/impl/JMSServerManagerImpl.java
+++ b/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/server/impl/JMSServerManagerImpl.java
@@ -37,7 +37,6 @@ import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.TransportConfiguration;
import org.apache.activemq.artemis.api.core.management.AddressControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.api.jms.ActiveMQJMSClient;
import org.apache.activemq.artemis.api.jms.JMSFactoryType;
import org.apache.activemq.artemis.core.config.Configuration;
@@ -783,7 +782,7 @@ public class JMSServerManagerImpl extends CleaningActivateCallback implements JM
@Override
public synchronized boolean destroyTopic(final String name, final boolean removeConsumers) throws Exception {
checkInitialised();
- AddressControl addressControl = server.getManagementService().getAddressControl(ResourceNames.ADDRESS + name);
+ AddressControl addressControl = server.getManagementService().getAddressControl(name);
if (addressControl != null) {
for (String queueName : addressControl.getAllQueueNames()) {
Binding binding = server.getPostOffice().getBinding(SimpleString.of(queueName));
diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/connect/bridge/AMQPBridgeManagementSupport.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/connect/bridge/AMQPBridgeManagementSupport.java
index ff2353483e..172853a460 100644
--- a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/connect/bridge/AMQPBridgeManagementSupport.java
+++ b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/connect/bridge/AMQPBridgeManagementSupport.java
@@ -109,9 +109,9 @@ public final class AMQPBridgeManagementSupport {
final ManagementService management = server.getManagementService();
final AMQPBridgeManagerControlType control = new AMQPBridgeManagerControlType(server, bridge);
-
- management.registerInJMX(getBridgeManagerObjectName(management, brokerConnectionName, bridgeName), control);
- management.registerAMQPControl(getBridgeManagerResourceName(brokerConnectionName, bridgeName), control);
+ management.registerUntypedControl(getBridgeManagerResourceName(brokerConnectionName, bridgeName),
+ control,
+ getBridgeManagerObjectName(management, brokerConnectionName, bridgeName));
}
/**
@@ -128,8 +128,8 @@ public final class AMQPBridgeManagementSupport {
final ActiveMQServer server = bridge.getServer();
final ManagementService management = server.getManagementService();
- management.unregisterFromJMX(getBridgeManagerObjectName(management, brokerConnectionName, bridgeName));
- management.unRegisterAMQPControl(getBridgeManagerResourceName(brokerConnectionName, bridgeName));
+ management.unregisterUntypedControl(getBridgeManagerResourceName(brokerConnectionName, bridgeName),
+ getBridgeManagerObjectName(management, brokerConnectionName, bridgeName));
}
public static String getBridgeManagerResourceName(String brokerConnectionName, String bridgeName) {
@@ -160,8 +160,9 @@ public final class AMQPBridgeManagementSupport {
final String bridgeName = bridgeManager.getName();
final String policyName = manager.getPolicyName();
- management.registerInJMX(getBridgePolicyManagerObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName), control);
- management.registerAMQPControl(getBridgePolicyManagerResourceName(brokerConnectionName, bridgeName, policyName), control);
+ management.registerUntypedControl(getBridgePolicyManagerResourceName(brokerConnectionName, bridgeName, policyName),
+ control,
+ getBridgePolicyManagerObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName));
}
/**
@@ -180,8 +181,8 @@ public final class AMQPBridgeManagementSupport {
final String bridgeName = bridgeManager.getName();
final String policyName = manager.getPolicyName();
- management.unregisterFromJMX(getBridgePolicyManagerObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName));
- management.unRegisterAMQPControl(getBridgePolicyManagerResourceName(brokerConnectionName, bridgeName, policyName));
+ management.unregisterUntypedControl(getBridgePolicyManagerResourceName(brokerConnectionName, bridgeName, policyName),
+ getBridgePolicyManagerObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName));
}
public static String getBridgePolicyManagerResourceName(String brokerConnectionName, String bridgeName, String policyName) {
@@ -216,11 +217,13 @@ public final class AMQPBridgeManagementSupport {
final String policyName = manager.getPolicyName();
if (receiver.getRole() == ReceiverRole.ADDRESS_RECEIVER) {
- management.registerInJMX(getBridgeAddressReceiverObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, receiver.getReceiverInfo().getLocalAddress()), control);
- management.registerAMQPControl(getBridgeAddressReceiverResourceName(brokerConnectionName, bridgeName, policyName, receiver.getReceiverInfo().getLocalAddress()), control);
+ management.registerUntypedControl(getBridgeAddressReceiverResourceName(brokerConnectionName, bridgeName, policyName, receiver.getReceiverInfo().getLocalAddress()),
+ control,
+ getBridgeAddressReceiverObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, receiver.getReceiverInfo().getLocalAddress()));
} else {
- management.registerInJMX(getBridgeQueueReceiverObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, receiver.getReceiverInfo().getLocalFqqn()), control);
- management.registerAMQPControl(getBridgeQueueReceiverResourceName(brokerConnectionName, bridgeName, policyName, receiver.getReceiverInfo().getLocalFqqn()), control);
+ management.registerUntypedControl(getBridgeQueueReceiverResourceName(brokerConnectionName, bridgeName, policyName, receiver.getReceiverInfo().getLocalFqqn()),
+ control,
+ getBridgeQueueReceiverObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, receiver.getReceiverInfo().getLocalFqqn()));
}
}
@@ -242,11 +245,11 @@ public final class AMQPBridgeManagementSupport {
final String policyName = manager.getPolicyName();
if (receiver.getRole() == ReceiverRole.ADDRESS_RECEIVER) {
- management.unregisterFromJMX(getBridgeAddressReceiverObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, receiver.getReceiverInfo().getLocalAddress()));
- management.unRegisterAMQPControl(getBridgeAddressReceiverResourceName(brokerConnectionName, bridgeName, policyName, receiver.getReceiverInfo().getLocalAddress()));
+ management.unregisterUntypedControl(getBridgeAddressReceiverResourceName(brokerConnectionName, bridgeName, policyName, receiver.getReceiverInfo().getLocalAddress()),
+ getBridgeAddressReceiverObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, receiver.getReceiverInfo().getLocalAddress()));
} else {
- management.unregisterFromJMX(getBridgeQueueReceiverObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, receiver.getReceiverInfo().getLocalFqqn()));
- management.unRegisterAMQPControl(getBridgeQueueReceiverResourceName(brokerConnectionName, bridgeName, policyName, receiver.getReceiverInfo().getLocalFqqn()));
+ management.unregisterUntypedControl(getBridgeQueueReceiverResourceName(brokerConnectionName, bridgeName, policyName, receiver.getReceiverInfo().getLocalFqqn()),
+ getBridgeQueueReceiverObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, receiver.getReceiverInfo().getLocalFqqn()));
}
}
@@ -299,13 +302,15 @@ public final class AMQPBridgeManagementSupport {
if (sender.getRole() == SenderRole.ADDRESS_SENDER) {
final String address = control.getAddress();
- management.registerInJMX(getBridgeAddressSenderObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, address), control);
- management.registerAMQPControl(getBridgeAddressSenderResourceName(brokerConnectionName, bridgeName, policyName, address), control);
+ management.registerUntypedControl(getBridgeAddressSenderResourceName(brokerConnectionName, bridgeName, policyName, address),
+ control,
+ getBridgeAddressSenderObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, address));
} else {
final String fqqn = control.getFqqn();
- management.registerInJMX(getBridgeQueueSenderObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, fqqn), control);
- management.registerAMQPControl(getBridgeQueueSenderResourceName(brokerConnectionName, bridgeName, policyName, fqqn), control);
+ management.registerUntypedControl(getBridgeQueueSenderResourceName(brokerConnectionName, bridgeName, policyName, fqqn),
+ control,
+ getBridgeQueueSenderObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, fqqn));
}
}
@@ -329,13 +334,13 @@ public final class AMQPBridgeManagementSupport {
if (sender.getRole() == SenderRole.ADDRESS_SENDER) {
final String address = sender.getServerConsumer().getQueueAddress().toString();
- management.unregisterFromJMX(getBridgeAddressSenderObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, address));
- management.unRegisterAMQPControl(getBridgeAddressSenderResourceName(brokerConnectionName, bridgeName, policyName, address));
+ management.unregisterUntypedControl(getBridgeAddressSenderResourceName(brokerConnectionName, bridgeName, policyName, address),
+ getBridgeAddressSenderObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, address));
} else {
final String fqqn = CompositeAddress.toFullyQualified(sender.getServerConsumer().getQueueAddress().toString(), sender.getServerConsumer().getQueueName().toString());
- management.unregisterFromJMX(getBridgeQueueSenderObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, fqqn));
- management.unRegisterAMQPControl(getBridgeQueueSenderResourceName(brokerConnectionName, bridgeName, policyName, fqqn));
+ management.unregisterUntypedControl(getBridgeQueueSenderResourceName(brokerConnectionName, bridgeName, policyName, fqqn),
+ getBridgeQueueSenderObjectName(management, brokerConnectionName, bridgeName, manager.getPolicyType().toString(), policyName, fqqn));
}
}
diff --git a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/connect/federation/AMQPFederationManagementSupport.java b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/connect/federation/AMQPFederationManagementSupport.java
index a59f9161a7..c42f9715c0 100644
--- a/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/connect/federation/AMQPFederationManagementSupport.java
+++ b/artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/connect/federation/AMQPFederationManagementSupport.java
@@ -135,8 +135,9 @@ public abstract class AMQPFederationManagementSupport {
final ManagementService management = server.getManagementService();
final AMQPFederationSourceControlType control = new AMQPFederationSourceControlType(server, federation);
- management.registerInJMX(getFederationSourceObjectName(management, brokerConnectionName, federationName), control);
- management.registerAMQPControl(getFederationSourceResourceName(brokerConnectionName, federationName), control);
+ management.registerUntypedControl(getFederationSourceResourceName(brokerConnectionName, federationName),
+ control,
+ getFederationSourceObjectName(management, brokerConnectionName, federationName));
}
/**
@@ -151,8 +152,8 @@ public abstract class AMQPFederationManagementSupport {
final ActiveMQServer server = federation.getServer();
final ManagementService management = server.getManagementService();
- management.unregisterFromJMX(getFederationSourceObjectName(management, brokerConnectionName, federationName));
- management.unRegisterAMQPControl(getFederationSourceResourceName(brokerConnectionName, federationName));
+ management.unregisterUntypedControl(getFederationSourceResourceName(brokerConnectionName, federationName),
+ getFederationSourceObjectName(management, brokerConnectionName, federationName));
}
public static String getFederationSourceResourceName(String brokerConnectionName, String federationName) {
@@ -178,8 +179,9 @@ public abstract class AMQPFederationManagementSupport {
final ManagementService management = server.getManagementService();
final AMQPFederationTargetControlType control = new AMQPFederationTargetControlType(server, federation);
- management.registerInJMX(getFederationTargetObjectName(management, remoteNodeId, brokerConnectionName, federationName), control);
- management.registerAMQPControl(getFederationTargetResourceName(remoteNodeId, brokerConnectionName, federationName), control);
+ management.registerUntypedControl(getFederationTargetResourceName(remoteNodeId, brokerConnectionName, federationName),
+ control,
+ getFederationTargetObjectName(management, remoteNodeId, brokerConnectionName, federationName));
}
/**
@@ -193,8 +195,8 @@ public abstract class AMQPFederationManagementSupport {
final ActiveMQServer server = federation.getServer();
final ManagementService management = server.getManagementService();
- management.unregisterFromJMX(getFederationTargetObjectName(management, remoteNodeId, brokerConnectionName, federationName));
- management.unRegisterAMQPControl(getFederationTargetResourceName(remoteNodeId, brokerConnectionName, federationName));
+ management.unregisterUntypedControl(getFederationTargetResourceName(remoteNodeId, brokerConnectionName, federationName),
+ getFederationTargetObjectName(management, remoteNodeId, brokerConnectionName, federationName));
}
public static String getFederationTargetResourceName(String remoteNodeId, String brokerConnectionName, String federationName) {
@@ -225,8 +227,9 @@ public abstract class AMQPFederationManagementSupport {
final String federationName = federation.getName();
final String policyName = manager.getPolicyName();
- management.registerInJMX(getFederationSourcePolicyObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName), control);
- management.registerAMQPControl(getFederationSourcePolicyResourceName(brokerConnectionName, federationName, policyName), control);
+ management.registerUntypedControl(getFederationSourcePolicyResourceName(brokerConnectionName, federationName, policyName),
+ control,
+ getFederationSourcePolicyObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName));
}
/**
@@ -243,8 +246,8 @@ public abstract class AMQPFederationManagementSupport {
final String federationName = federation.getName();
final String policyName = manager.getPolicyName();
- management.unregisterFromJMX(getFederationSourcePolicyObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName));
- management.unRegisterAMQPControl(getFederationSourcePolicyResourceName(brokerConnectionName, federationName, policyName));
+ management.unregisterUntypedControl(getFederationSourcePolicyResourceName(brokerConnectionName, federationName, policyName),
+ getFederationSourcePolicyObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName));
}
/**
@@ -262,8 +265,9 @@ public abstract class AMQPFederationManagementSupport {
final String federationName = federation.getName();
final String policyName = manager.getPolicyName();
- management.registerInJMX(getFederationSourcePolicyObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName), control);
- management.registerAMQPControl(getFederationSourcePolicyResourceName(brokerConnectionName, federationName, policyName), control);
+ management.registerUntypedControl(getFederationSourcePolicyResourceName(brokerConnectionName, federationName, policyName),
+ control,
+ getFederationSourcePolicyObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName));
}
/**
@@ -280,8 +284,8 @@ public abstract class AMQPFederationManagementSupport {
final String federationName = federation.getName();
final String policyName = manager.getPolicyName();
- management.unregisterFromJMX(getFederationSourcePolicyObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName));
- management.unRegisterAMQPControl(getFederationSourcePolicyResourceName(brokerConnectionName, federationName, policyName));
+ management.unregisterUntypedControl(getFederationSourcePolicyResourceName(brokerConnectionName, federationName, policyName),
+ getFederationSourcePolicyObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName));
}
public static String getFederationSourcePolicyResourceName(String brokerConnectionName, String federationName, String policyName) {
@@ -313,8 +317,9 @@ public abstract class AMQPFederationManagementSupport {
final String federationName = federation.getName();
final String policyName = manager.getPolicyName();
- management.registerInJMX(getFederationTargetPolicyObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName), control);
- management.registerAMQPControl(getFederationTargetPolicyResourceName(remoteNodeId, brokerConnectionName, federationName, policyName), control);
+ management.registerUntypedControl(getFederationTargetPolicyResourceName(remoteNodeId, brokerConnectionName, federationName, policyName),
+ control,
+ getFederationTargetPolicyObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName));
}
/**
@@ -332,8 +337,8 @@ public abstract class AMQPFederationManagementSupport {
final String federationName = federation.getName();
final String policyName = manager.getPolicyName();
- management.unregisterFromJMX(getFederationTargetPolicyObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName));
- management.unRegisterAMQPControl(getFederationTargetPolicyResourceName(remoteNodeId, brokerConnectionName, federationName, policyName));
+ management.unregisterUntypedControl(getFederationTargetPolicyResourceName(remoteNodeId, brokerConnectionName, federationName, policyName),
+ getFederationTargetPolicyObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName));
}
/**
@@ -352,8 +357,9 @@ public abstract class AMQPFederationManagementSupport {
final String federationName = federation.getName();
final String policyName = manager.getPolicyName();
- management.registerInJMX(getFederationTargetPolicyObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName), control);
- management.registerAMQPControl(getFederationTargetPolicyResourceName(remoteNodeId, brokerConnectionName, federationName, policyName), control);
+ management.registerUntypedControl(getFederationTargetPolicyResourceName(remoteNodeId, brokerConnectionName, federationName, policyName),
+ control,
+ getFederationTargetPolicyObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName));
}
/**
@@ -371,8 +377,8 @@ public abstract class AMQPFederationManagementSupport {
final String federationName = federation.getName();
final String policyName = manager.getPolicyName();
- management.unregisterFromJMX(getFederationTargetPolicyObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName));
- management.unRegisterAMQPControl(getFederationTargetPolicyResourceName(remoteNodeId, brokerConnectionName, federationName, policyName));
+ management.unregisterUntypedControl(getFederationTargetPolicyResourceName(remoteNodeId, brokerConnectionName, federationName, policyName),
+ getFederationTargetPolicyObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName));
}
public static String getFederationTargetPolicyResourceName(String remoteNodeId, String brokerConnectionName, String federationName, String policyName) {
@@ -407,11 +413,13 @@ public abstract class AMQPFederationManagementSupport {
final String policyName = manager.getPolicyName();
if (consumer.getRole() == FederationConsumerInfo.Role.ADDRESS_CONSUMER) {
- management.registerInJMX(getFederationSourceAddressConsumerObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, consumer.getConsumerInfo().getAddress()), control);
- management.registerAMQPControl(getFederationSourceAddressConsumerResourceName(brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getAddress()), control);
+ management.registerUntypedControl(getFederationSourceAddressConsumerResourceName(brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getAddress()),
+ control,
+ getFederationSourceAddressConsumerObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, consumer.getConsumerInfo().getAddress()));
} else {
- management.registerInJMX(getFederationSourceQueueConsumerObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, consumer.getConsumerInfo().getFqqn()), control);
- management.registerAMQPControl(getFederationSourceQueueConsumerResourceName(brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getFqqn()), control);
+ management.registerUntypedControl(getFederationSourceQueueConsumerResourceName(brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getFqqn()),
+ control,
+ getFederationSourceQueueConsumerObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, consumer.getConsumerInfo().getFqqn()));
}
}
@@ -431,11 +439,11 @@ public abstract class AMQPFederationManagementSupport {
final String policyName = manager.getPolicyName();
if (consumer.getRole() == FederationConsumerInfo.Role.ADDRESS_CONSUMER) {
- management.unregisterFromJMX(getFederationSourceAddressConsumerObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, consumer.getConsumerInfo().getAddress()));
- management.unRegisterAMQPControl(getFederationSourceAddressConsumerResourceName(brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getAddress()));
+ management.unregisterUntypedControl(getFederationSourceAddressConsumerResourceName(brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getAddress()),
+ getFederationSourceAddressConsumerObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, consumer.getConsumerInfo().getAddress()));
} else {
- management.unregisterFromJMX(getFederationSourceQueueConsumerObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, consumer.getConsumerInfo().getFqqn()));
- management.unRegisterAMQPControl(getFederationSourceQueueConsumerResourceName(brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getFqqn()));
+ management.unregisterUntypedControl(getFederationSourceQueueConsumerResourceName(brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getFqqn()),
+ getFederationSourceQueueConsumerObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, consumer.getConsumerInfo().getFqqn()));
}
}
@@ -457,14 +465,14 @@ public abstract class AMQPFederationManagementSupport {
if (sender.getRole() == Role.ADDRESS_PRODUCER) {
final String address = control.getAddress();
-
- management.registerInJMX(getFederationSourceAddressProducerObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, address), control);
- management.registerAMQPControl(getFederationSourceAddressProducerResourceName(brokerConnectionName, federationName, policyName, address), control);
+ management.registerUntypedControl(getFederationSourceAddressProducerResourceName(brokerConnectionName, federationName, policyName, address),
+ control,
+ getFederationSourceAddressProducerObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, address));
} else {
final String fqqn = control.getFqqn();
-
- management.registerInJMX(getFederationSourceQueueProducerObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, fqqn), control);
- management.registerAMQPControl(getFederationSourceQueueProducerResourceName(brokerConnectionName, federationName, policyName, fqqn), control);
+ management.registerUntypedControl(getFederationSourceQueueProducerResourceName(brokerConnectionName, federationName, policyName, fqqn),
+ control,
+ getFederationSourceQueueProducerObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, fqqn));
}
}
@@ -485,14 +493,12 @@ public abstract class AMQPFederationManagementSupport {
if (sender.getRole() == Role.ADDRESS_PRODUCER) {
final String address = sender.getServerConsumer().getQueueAddress().toString();
-
- management.unregisterFromJMX(getFederationSourceAddressProducerObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, address));
- management.unRegisterAMQPControl(getFederationSourceAddressProducerResourceName(brokerConnectionName, federationName, policyName, address));
+ management.unregisterUntypedControl(getFederationSourceAddressProducerResourceName(brokerConnectionName, federationName, policyName, address),
+ getFederationSourceAddressProducerObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, address));
} else {
final String fqqn = CompositeAddress.toFullyQualified(sender.getServerConsumer().getQueueAddress().toString(), sender.getServerConsumer().getQueueName().toString());
-
- management.unregisterFromJMX(getFederationSourceQueueProducerObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, fqqn));
- management.unRegisterAMQPControl(getFederationSourceQueueProducerResourceName(brokerConnectionName, federationName, policyName, fqqn));
+ management.unregisterUntypedControl(getFederationSourceQueueProducerResourceName(brokerConnectionName, federationName, policyName, fqqn),
+ getFederationSourceQueueProducerObjectName(management, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, fqqn));
}
}
@@ -569,11 +575,13 @@ public abstract class AMQPFederationManagementSupport {
final String policyName = manager.getPolicyName();
if (consumer.getRole() == FederationConsumerInfo.Role.ADDRESS_CONSUMER) {
- management.registerInJMX(getFederationTargetAddressConsumerObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, consumer.getConsumerInfo().getAddress()), control);
- management.registerAMQPControl(getFederationTargetAddressConsumerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getAddress()), control);
+ management.registerUntypedControl(getFederationTargetAddressConsumerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getAddress()),
+ control,
+ getFederationTargetAddressConsumerObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, consumer.getConsumerInfo().getAddress()));
} else {
- management.registerInJMX(getFederationTargetQueueConsumerObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, consumer.getConsumerInfo().getFqqn()), control);
- management.registerAMQPControl(getFederationTargetQueueConsumerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getFqqn()), control);
+ management.registerUntypedControl(getFederationTargetQueueConsumerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getFqqn()),
+ control,
+ getFederationTargetQueueConsumerObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, consumer.getConsumerInfo().getFqqn()));
}
}
@@ -593,11 +601,11 @@ public abstract class AMQPFederationManagementSupport {
final String policyName = manager.getPolicyName();
if (consumer.getRole() == FederationConsumerInfo.Role.ADDRESS_CONSUMER) {
- management.unregisterFromJMX(getFederationTargetAddressConsumerObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, consumer.getConsumerInfo().getAddress()));
- management.unRegisterAMQPControl(getFederationTargetAddressConsumerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getAddress()));
+ management.unregisterUntypedControl(getFederationTargetAddressConsumerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getAddress()),
+ getFederationTargetAddressConsumerObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, consumer.getConsumerInfo().getAddress()));
} else {
- management.unregisterFromJMX(getFederationTargetQueueConsumerObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, consumer.getConsumerInfo().getFqqn()));
- management.unRegisterAMQPControl(getFederationTargetQueueConsumerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getFqqn()));
+ management.unregisterUntypedControl(getFederationTargetQueueConsumerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, consumer.getConsumerInfo().getFqqn()),
+ getFederationTargetQueueConsumerObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, consumer.getConsumerInfo().getFqqn()));
}
}
@@ -619,14 +627,14 @@ public abstract class AMQPFederationManagementSupport {
if (sender.getRole() == Role.ADDRESS_PRODUCER) {
final String address = control.getAddress();
-
- management.registerInJMX(getFederationTargetAddressProducerObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, address), control);
- management.registerAMQPControl(getFederationTargetAddressProducerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, address), control);
+ management.registerUntypedControl(getFederationTargetAddressProducerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, address),
+ control,
+ getFederationTargetAddressProducerObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, address));
} else {
final String fqqn = control.getFqqn();
-
- management.registerInJMX(getFederationTargetQueueProducerObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, fqqn), control);
- management.registerAMQPControl(getFederationTargetQueueProducerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, fqqn), control);
+ management.registerUntypedControl(getFederationTargetQueueProducerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, fqqn),
+ control,
+ getFederationTargetQueueProducerObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, fqqn));
}
}
@@ -647,14 +655,12 @@ public abstract class AMQPFederationManagementSupport {
if (sender.getRole() == Role.ADDRESS_PRODUCER) {
final String address = sender.getServerConsumer().getQueueAddress().toString();
-
- management.unregisterFromJMX(getFederationTargetAddressProducerObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, address));
- management.unRegisterAMQPControl(getFederationTargetAddressProducerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, address));
+ management.unregisterUntypedControl(getFederationTargetAddressProducerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, address),
+ getFederationTargetAddressProducerObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, address));
} else {
final String fqqn = CompositeAddress.toFullyQualified(sender.getServerConsumer().getQueueAddress().toString(), sender.getServerConsumer().getQueueName().toString());
-
- management.unregisterFromJMX(getFederationTargetQueueProducerObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, fqqn));
- management.unRegisterAMQPControl(getFederationTargetQueueProducerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, fqqn));
+ management.unregisterUntypedControl(getFederationTargetQueueProducerResourceName(remoteNodeId, brokerConnectionName, federationName, policyName, fqqn),
+ getFederationTargetQueueProducerObjectName(management, remoteNodeId, brokerConnectionName, federationName, manager.getPolicyType().toString(), policyName, fqqn));
}
}
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 eab3e8367b..7f72ed455c 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
@@ -63,10 +63,7 @@ import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.TransportConfiguration;
import org.apache.activemq.artemis.api.core.client.ActiveMQClient;
import org.apache.activemq.artemis.api.core.management.ActiveMQServerControl;
-import org.apache.activemq.artemis.api.core.management.AddressControl;
-import org.apache.activemq.artemis.api.core.management.BridgeControl;
import org.apache.activemq.artemis.api.core.management.CoreNotificationType;
-import org.apache.activemq.artemis.api.core.management.DivertControl;
import org.apache.activemq.artemis.api.core.management.ManagementHelper;
import org.apache.activemq.artemis.api.core.management.Parameter;
import org.apache.activemq.artemis.api.core.management.QueueControl;
@@ -84,8 +81,12 @@ import org.apache.activemq.artemis.core.management.impl.view.ConnectionView;
import org.apache.activemq.artemis.core.management.impl.view.ConsumerField;
import org.apache.activemq.artemis.core.management.impl.view.ConsumerView;
import org.apache.activemq.artemis.core.management.impl.view.ProducerView;
+import org.apache.activemq.artemis.core.management.impl.view.QueueField;
import org.apache.activemq.artemis.core.management.impl.view.QueueView;
import org.apache.activemq.artemis.core.management.impl.view.SessionView;
+import org.apache.activemq.artemis.core.management.impl.view.predicate.ActiveMQFilterPredicate;
+import org.apache.activemq.artemis.core.management.impl.view.predicate.QueueFilterPredicate;
+import org.apache.activemq.artemis.core.management.impl.view.predicate.QueuePredicateFilterPart;
import org.apache.activemq.artemis.core.messagecounter.MessageCounterManager;
import org.apache.activemq.artemis.core.messagecounter.impl.MessageCounterManagerImpl;
import org.apache.activemq.artemis.core.persistence.StorageManager;
@@ -1457,8 +1458,7 @@ public class ActiveMQServerControlImpl extends AbstractControl implements Active
clearIO();
try {
- List<QueueControl> queueControls = server.getManagementService().getQueueControls();
- return queueControls.size();
+ return server.getManagementService().getQueueControlCount();
} finally {
blockOnIO();
}
@@ -1478,19 +1478,20 @@ public class ActiveMQServerControlImpl extends AbstractControl implements Active
clearIO();
try {
- List<QueueControl> queueControls = server.getManagementService().getQueueControls();
- List<String> names = new ArrayList<>();
- for (int i = 0; i < queueControls.size(); i++) {
- QueueControl queueControl = (QueueControl) queueControls.get(i);
- if (routingType != null && routingType.length() > 1 && queueControl.getRoutingType().equals(routingType.toUpperCase())) {
- names.add(queueControl.getName());
- } else if (routingType == null || routingType.isEmpty()) {
- names.add(queueControl.getName());
+ if (routingType == null || routingType.isEmpty()) {
+ List<String> queueNames = server.getManagementService().getQueueControlNames();
+ return queueNames.toArray(new String[queueNames.size()]);
+ } else {
+ QueueFilterPredicate predicate = new QueueFilterPredicate(null);
+ predicate.addFilterPart(new QueuePredicateFilterPart(null, QueueField.ROUTING_TYPE.name(), ActiveMQFilterPredicate.Operation.EQUALS.name(), routingType));
+ List<QueueControl> queueControls = server.getManagementService().getQueueControls(predicate);
+ String[] names = new String[queueControls.size()];
+ for (int i = 0; i < queueControls.size(); i++) {
+ names[i] = queueControls.get(i).getName();
}
- }
- String[] result = new String[names.size()];
- return names.toArray(result);
+ return names;
+ }
} finally {
blockOnIO();
}
@@ -1505,13 +1506,8 @@ public class ActiveMQServerControlImpl extends AbstractControl implements Active
clearIO();
try {
- List<String> names = new ArrayList<>();
- for (ClusterConnection clusterConnection : server.getClusterManager().getClusterConnections()) {
- names.add(clusterConnection.getName().toString());
- }
-
- String[] result = new String[names.size()];
- return names.toArray(result);
+ List<String> clusterConnectionNames = server.getManagementService().getClusterConnectionControlNames();
+ return clusterConnectionNames.toArray(new String[clusterConnectionNames.size()]);
} finally {
blockOnIO();
}
@@ -1571,8 +1567,7 @@ public class ActiveMQServerControlImpl extends AbstractControl implements Active
clearIO();
try {
- List<AddressControl> addresses = server.getManagementService().getAddressControls();
- return addresses.size();
+ return server.getManagementService().getAddressControlCount();
} finally {
blockOnIO();
}
@@ -1587,13 +1582,8 @@ public class ActiveMQServerControlImpl extends AbstractControl implements Active
clearIO();
try {
- List<AddressControl> addresses = server.getManagementService().getAddressControls();
- String[] names = new String[addresses.size()];
- for (int i = 0; i < addresses.size(); i++) {
- AddressControl address = (AddressControl) addresses.get(i);
- names[i] = address.getAddress();
- }
- return names;
+ List<String> addressNames = server.getManagementService().getAddressControlNames();
+ return addressNames.toArray(new String[addressNames.size()]);
} finally {
blockOnIO();
}
@@ -3630,14 +3620,8 @@ public class ActiveMQServerControlImpl extends AbstractControl implements Active
clearIO();
try {
- List<DivertControl> diverts = server.getManagementService().getDivertControls();
- String[] names = new String[diverts.size()];
- for (int i = 0; i < diverts.size(); i++) {
- DivertControl divert = diverts.get(i);
- names[i] = divert.getUniqueName();
- }
-
- return names;
+ List<String> divertNames = server.getManagementService().getDivertControlNames();
+ return divertNames.toArray(new String[divertNames.size()]);
} finally {
blockOnIO();
}
@@ -3779,14 +3763,8 @@ public class ActiveMQServerControlImpl extends AbstractControl implements Active
clearIO();
try {
- List<BridgeControl> bridges = server.getManagementService().getBridgeControls();
- String[] names = new String[bridges.size()];
- for (int i = 0; i < bridges.size(); i++) {
- BridgeControl bridge = bridges.get(i);
- names[i] = bridge.getName();
- }
-
- return names;
+ List<String> bridgeNames = server.getManagementService().getBridgeControlNames();
+ return bridgeNames.toArray(new String[bridgeNames.size()]);
} finally {
blockOnIO();
}
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 ab22f15b03..b15eb4d8c5 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
@@ -18,7 +18,6 @@ package org.apache.activemq.artemis.core.management.impl;
import javax.management.MBeanAttributeInfo;
import javax.management.MBeanOperationInfo;
-
import java.util.Collections;
import java.util.Map;
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 6522c2e1a8..9ba2ea64ad 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
@@ -20,6 +20,7 @@ import javax.management.MBeanAttributeInfo;
import javax.management.MBeanOperationInfo;
import javax.management.openmbean.CompositeData;
import javax.transaction.xa.Xid;
+import java.lang.invoke.MethodHandles;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
@@ -27,6 +28,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
+import java.util.Objects;
import org.apache.activemq.artemis.api.core.ActiveMQException;
import org.apache.activemq.artemis.api.core.ActiveMQInvalidFilterExpressionException;
@@ -43,7 +45,6 @@ import org.apache.activemq.artemis.core.messagecounter.MessageCounter;
import org.apache.activemq.artemis.core.messagecounter.impl.MessageCounterHelper;
import org.apache.activemq.artemis.core.persistence.StorageManager;
import org.apache.activemq.artemis.core.postoffice.Binding;
-import org.apache.activemq.artemis.core.security.SecurityStore;
import org.apache.activemq.artemis.core.server.ActiveMQMessageBundle;
import org.apache.activemq.artemis.core.server.ActiveMQServer;
import org.apache.activemq.artemis.core.server.Consumer;
@@ -66,8 +67,6 @@ import org.apache.activemq.artemis.utils.JsonLoader;
import org.apache.activemq.artemis.utils.collections.LinkedListIterator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.lang.invoke.MethodHandles;
-import java.util.Objects;
public class QueueControlImpl extends AbstractControl implements QueueControl {
@@ -75,15 +74,12 @@ public class QueueControlImpl extends AbstractControl implements QueueControl {
public static final int FLUSH_LIMIT = 500;
-
private final Queue queue;
private final String address;
private final ActiveMQServer server;
- private final StorageManager storageManager;
- private final SecurityStore securityStore;
private final HierarchicalRepository<AddressSettings> addressSettingsRepository;
private MessageCounter counter;
@@ -118,14 +114,11 @@ public class QueueControlImpl extends AbstractControl implements QueueControl {
final String address,
final ActiveMQServer server,
final StorageManager storageManager,
- final SecurityStore securityStore,
final HierarchicalRepository<AddressSettings> addressSettingsRepository) throws Exception {
super(QueueControl.class, storageManager);
this.queue = queue;
this.address = address;
this.server = server;
- this.storageManager = storageManager;
- this.securityStore = securityStore;
this.addressSettingsRepository = addressSettingsRepository;
}
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ActiveMQFilterPredicate.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ActiveMQFilterPredicate.java
index a4b91cce65..ceda159124 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ActiveMQFilterPredicate.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ActiveMQFilterPredicate.java
@@ -53,6 +53,10 @@ public abstract class ActiveMQFilterPredicate<T, V extends PredicateFilterPart<T
this.filterParts.addAll(filterParts);
}
+ public void addFilterPart(V filterPart) {
+ this.filterParts.add(filterPart);
+ }
+
protected abstract boolean filter(T input, V filterPart) throws Exception;
public abstract V createFilterPart(String field, String operation, String value);
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/PredicateFilterPart.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/PredicateFilterPart.java
index 298b47f821..b1f3ff0183 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/PredicateFilterPart.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/PredicateFilterPart.java
@@ -20,9 +20,9 @@ import java.util.Collection;
public class PredicateFilterPart<T> {
- private final String value;
+ private final String value;
- private final String operation;
+ private final String operation;
private final ActiveMQFilterPredicate.Operation filterOperation;
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/server/impl/RemotingServiceImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/server/impl/RemotingServiceImpl.java
index 22753c4f19..d9c5780f4c 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/server/impl/RemotingServiceImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/server/impl/RemotingServiceImpl.java
@@ -56,7 +56,6 @@ import org.apache.activemq.artemis.api.core.BaseInterceptor;
import org.apache.activemq.artemis.api.core.Pair;
import org.apache.activemq.artemis.api.core.TransportConfiguration;
import org.apache.activemq.artemis.api.core.management.AcceptorControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.core.config.Configuration;
import org.apache.activemq.artemis.core.config.ConfigurationUtils;
import org.apache.activemq.artemis.core.protocol.core.CoreRemotingConnection;
@@ -1081,7 +1080,7 @@ public class RemotingServiceImpl implements RemotingService, ServerConnectionLif
server.getReloadManager().addCallback(storeURL, (uri) -> {
// preference for Control to capture consistent audit logging
if (managementService != null) {
- AcceptorControl targetControl = managementService.getAcceptorControl(ResourceNames.ACCEPTOR + acceptorName);
+ AcceptorControl targetControl = managementService.getAcceptorControl(acceptorName);
if (targetControl != null) {
targetControl.reload();
}
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQServerLogger.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQServerLogger.java
index 1443522541..04618745cb 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQServerLogger.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/ActiveMQServerLogger.java
@@ -19,7 +19,6 @@ package org.apache.activemq.artemis.core.server;
import javax.naming.NamingException;
import javax.transaction.xa.Xid;
import java.io.File;
-import java.util.List;
import java.util.concurrent.ExecutorService;
import io.netty.channel.Channel;
@@ -51,7 +50,7 @@ import org.apache.activemq.artemis.spi.core.remoting.Connection;
/**
* Logger Codes 220000 - 228999
*/
-@LogBundle(projectCode = "AMQ", regexID = "22[0-8][0-9]{3}", retiredIDs = {221026, 221052, 222003, 222012, 222015, 222020, 222021, 222022, 222024, 222027, 222028, 222029, 222048, 222052, 222058, 222064, 222071, 222078, 222079, 222083, 222084, 222088, 222090, 222102, 222105, 222110, 222128, 222134, 222135, 222152, 222159, 222163, 222167, 222170, 222171, 222182, 222190, 222192, 222193, 222204, 222249, 222252, 222255, 222257, 222259, 222260, 222276, 222277, 222288, 224001, 224002, 224003, 2 [...]
+@LogBundle(projectCode = "AMQ", regexID = "22[0-8][0-9]{3}", retiredIDs = {221026, 221052, 222003, 222012, 222015, 222020, 222021, 222022, 222024, 222027, 222028, 222029, 222048, 222052, 222058, 222064, 222071, 222078, 222079, 222083, 222084, 222088, 222090, 222102, 222105, 222110, 222113, 222128, 222134, 222135, 222152, 222159, 222163, 222167, 222170, 222171, 222182, 222190, 222192, 222193, 222204, 222249, 222252, 222255, 222257, 222259, 222260, 222276, 222277, 222288, 224001, 224002, 2 [...]
public interface ActiveMQServerLogger {
// Note: logger ID 224127 uses "org.apache.activemq.artemis.core.server.Queue" for its logger category, rather than ActiveMQServerLogger.class.getPackage().getName()
@@ -582,9 +581,6 @@ public interface ActiveMQServerLogger {
@LogMessage(id = 222112, value = "exception while retrieving attribute {} on {}", level = LogMessage.Level.TRACE)
void managementAttributeError(String att, String resourceName, Exception e);
- @LogMessage(id = 222113, value = "On ManagementService stop, there are {} unexpected registered MBeans: {}", level = LogMessage.Level.WARN)
- void managementStopError(Integer size, List<String> unexpectedResourceNames);
-
@LogMessage(id = 222114, value = "Unable to delete group binding info {}", level = LogMessage.Level.WARN)
void unableToDeleteGroupBindings(SimpleString groupId, Exception e);
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/ManagementService.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/ManagementService.java
index 6856596851..099b363610 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/ManagementService.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/ManagementService.java
@@ -16,13 +16,12 @@
*/
package org.apache.activemq.artemis.core.server.management;
+import javax.management.ObjectName;
import java.util.List;
import java.util.Set;
import java.util.concurrent.ScheduledExecutorService;
import java.util.function.Predicate;
-import javax.management.ObjectName;
-
import org.apache.activemq.artemis.api.core.BroadcastGroupConfiguration;
import org.apache.activemq.artemis.api.core.ICoreMessage;
import org.apache.activemq.artemis.api.core.Message;
@@ -30,11 +29,18 @@ import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.TransportConfiguration;
import org.apache.activemq.artemis.api.core.management.AcceptorControl;
+import org.apache.activemq.artemis.api.core.management.ActiveMQServerControl;
import org.apache.activemq.artemis.api.core.management.AddressControl;
+import org.apache.activemq.artemis.api.core.management.BaseBroadcastGroupControl;
import org.apache.activemq.artemis.api.core.management.BridgeControl;
+import org.apache.activemq.artemis.api.core.management.BrokerConnectionControl;
+import org.apache.activemq.artemis.api.core.management.ClusterConnectionControl;
+import org.apache.activemq.artemis.api.core.management.ConnectionRouterControl;
import org.apache.activemq.artemis.api.core.management.DivertControl;
import org.apache.activemq.artemis.api.core.management.ObjectNameBuilder;
import org.apache.activemq.artemis.api.core.management.QueueControl;
+import org.apache.activemq.artemis.api.core.management.RemoteBrokerConnectionControl;
+import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.core.config.ClusterConnectionConfiguration;
import org.apache.activemq.artemis.core.config.Configuration;
import org.apache.activemq.artemis.core.management.impl.ActiveMQServerControlImpl;
@@ -64,7 +70,6 @@ import org.apache.activemq.artemis.core.transaction.ResourceManager;
import org.apache.activemq.artemis.spi.core.remoting.Acceptor;
public interface ManagementService extends NotificationService, ActiveMQComponent {
- // Configuration
MessageCounterManager getMessageCounterManager();
@@ -74,10 +79,51 @@ public interface ManagementService extends NotificationService, ActiveMQComponen
ObjectNameBuilder getObjectNameBuilder();
- // Resource Registration
-
void setStorageManager(StorageManager storageManager);
+ /**
+ * @deprecated use one of the other register methods instead, they will register the control in JMX assuming it is
+ * enabled:
+ * <ul>
+ * <li>{@link #registerServer}
+ * <li>{@link #registerAddress}
+ * <li>{@link #registerQueue}
+ * <li>{@link #registerAcceptor}
+ * <li>{@link #registerDivert}
+ * <li>{@link #registerBroadcastGroup}
+ * <li>{@link #registerBridge}
+ * <li>{@link #registerCluster}
+ * <li>{@link #registerConnectionRouter}
+ * <li>{@link #registerBrokerConnection}
+ * <li>{@link #registerRemoteBrokerConnection}
+ * <li>{@link #registerHawtioSecurity}
+ * <li>{@link #registerUntypedControl}
+ * </ul>
+ */
+ @Deprecated(forRemoval = true)
+ void registerInJMX(ObjectName objectName, Object managedResource) throws Exception;
+
+ /**
+ * @deprecated use one of the other unregister methods instead:
+ * <ul>
+ * <li>{@link #unregisterServer}
+ * <li>{@link #unregisterAddress}
+ * <li>{@link #unregisterQueue}
+ * <li>{@link #unregisterAcceptor}
+ * <li>{@link #unregisterDivert}
+ * <li>{@link #unregisterBroadcastGroup}
+ * <li>{@link #unregisterBridge}
+ * <li>{@link #unregisterCluster}
+ * <li>{@link #unregisterConnectionRouter}
+ * <li>{@link #unregisterBrokerConnection}
+ * <li>{@link #unregisterRemoteBrokerConnection}
+ * <li>{@link #unregisterHawtioSecurity}
+ * <li>{@link #unregisterUntypedControl}
+ * </ul>
+ */
+ @Deprecated(forRemoval = true)
+ void unregisterFromJMX(ObjectName objectName) throws Exception;
+
ActiveMQServerControlImpl registerServer(PostOffice postOffice,
SecurityStore securityStore,
StorageManager storageManager,
@@ -94,88 +140,182 @@ public interface ManagementService extends NotificationService, ActiveMQComponen
void unregisterServer() throws Exception;
- void registerInJMX(ObjectName objectName, Object managedResource) throws Exception;
-
- void unregisterFromJMX(ObjectName objectName) throws Exception;
+ ActiveMQServerControl getServerControl();
void registerAddress(AddressInfo addressInfo) throws Exception;
- void registerAddressMeters(AddressInfo addressInfo, AddressControl addressControl) throws Exception;
-
void unregisterAddress(SimpleString address) throws Exception;
+ int getAddressControlCount();
+
+ List<AddressControl> getAddressControls();
+
+ List<AddressControl> getAddressControls(Predicate<AddressControl> predicate);
+
+ AddressControl getAddressControl(String name);
+
void registerQueue(Queue queue, SimpleString address, StorageManager storageManager) throws Exception;
void unregisterQueue(SimpleString name, SimpleString address, RoutingType routingType) throws Exception;
+ int getQueueControlCount();
+
+ List<QueueControl> getQueueControls();
+
+ List<QueueControl> getQueueControls(Predicate<QueueControl> predicate);
+
+ QueueControl getQueueControl(String name);
+
+ List<String> getQueueControlNames();
+
void registerAcceptor(Acceptor acceptor, TransportConfiguration configuration) throws Exception;
void unregisterAcceptor(String acceptorName) throws Exception;
void unregisterAcceptors();
+ List<AcceptorControl> getAcceptorControls();
+
+ AcceptorControl getAcceptorControl(String name);
+
+ List<String> getAddressControlNames();
+
void registerDivert(Divert divert) throws Exception;
void unregisterDivert(SimpleString name, SimpleString address) throws Exception;
- void registerBroadcastGroup(BroadcastGroup broadcastGroup,
- BroadcastGroupConfiguration configuration) throws Exception;
+ List<DivertControl> getDivertControls();
+
+ List<String> getDivertControlNames();
- void unregisterBroadcastGroup(String name) throws Exception;
+ void registerBroadcastGroup(BroadcastGroup broadcastGroup, BroadcastGroupConfiguration configuration) throws Exception;
- // void registerDiscoveryGroup(DiscoveryGroup discoveryGroup, DiscoveryGroupConfiguration configuration) throws Exception;
+ void unregisterBroadcastGroup(String name) throws Exception;
- //void unregisterDiscoveryGroup(String name) throws Exception;
+ List<BaseBroadcastGroupControl> getBroadcastGroupControls();
void registerBridge(Bridge bridge) throws Exception;
void unregisterBridge(String name) throws Exception;
+ List<BridgeControl> getBridgeControls();
+
+ List<String> getBridgeControlNames();
+
+ int getBridgeControlCount();
+
void registerCluster(ClusterConnection cluster, ClusterConnectionConfiguration configuration) throws Exception;
void unregisterCluster(String name) throws Exception;
+ List<ClusterConnectionControl> getClusterConnectionControls();
+
+ List<String> getClusterConnectionControlNames();
+
void registerConnectionRouter(ConnectionRouter router) throws Exception;
void unregisterConnectionRouter(String name) throws Exception;
+ List<ConnectionRouterControl> getConnectionRouterControls();
+
+ ConnectionRouterControl getConnectionRouterControl(String name);
+
void registerBrokerConnection(BrokerConnection brokerConnection) throws Exception;
void unregisterBrokerConnection(String name) throws Exception;
+ List<BrokerConnectionControl> getBrokerConnectionControls();
+
+ BrokerConnectionControl getBrokerConnectionControl(String name);
+
+ RemoteBrokerConnectionControl getRemoteBrokerConnectionControl(String name);
+
void registerRemoteBrokerConnection(RemoteBrokerConnection brokerConnection) throws Exception;
void unregisterRemoteBrokerConnection(String nodeId, String name) throws Exception;
- Object getResource(String resourceName);
-
- ICoreMessage handleMessage(SecurityAuth auth, Message message) throws Exception;
+ List<RemoteBrokerConnectionControl> getRemoteBrokerConnectionControls();
void registerHawtioSecurity(GuardInvocationHandler guardInvocationHandler) throws Exception;
void unregisterHawtioSecurity() throws Exception;
- Object getAttribute(String resourceName, String attribute, SecurityAuth auth);
-
- Object invokeOperation(String resourceName, String operation, Object[] params, SecurityAuth auth) throws Exception;
-
- List<QueueControl> getQueueControls();
-
- List<QueueControl> getQueueControls(Predicate<QueueControl> predicate);
-
- List<AddressControl> getAddressControls();
-
- List<AddressControl> getAddressControls(Predicate<AddressControl> predicate);
-
- AddressControl getAddressControl(String resourceName);
-
- AcceptorControl getAcceptorControl(String resourceName);
+ HawtioSecurityControl getHawtioSecurity();
+
+ /**
+ * Registers an untyped control with the specified name, control object, and associated ObjectName.
+ * <p>
+ * Use this for management controls not explicitly supported by other typed methods.
+ *
+ * @param name the unique name used to identify the untyped control; must not be null or empty
+ * @param control the untyped control object to be registered; must not be null
+ * @param objectName the MBean object name to be associated with the control; must not be null
+ * @throws Exception if an error occurs during registration
+ */
+ void registerUntypedControl(String name, Object control, ObjectName objectName) throws Exception;
+
+ /**
+ * Unregisters an untyped control associated with the specified name and ObjectName.
+ *
+ * @param name the name of the control to be unregistered
+ * @param objectName the ObjectName associated with the control to be unregistered
+ * @throws Exception if an error occurs during the unregistration process
+ */
+ void unregisterUntypedControl(String name, ObjectName objectName) throws Exception;
+
+ Object getUntypedControl(String name);
+
+ List<Object> getUntypedControls(Class<?> resourceType);
+
+ /**
+ * Retrieves a resource identified by the given name.
+ *
+ * @param resourceName the name of the resource to retrieve; must not be null or empty; should be prefixed with a
+ * value from {@link ResourceNames} unless using an "untyped" control
+ * @return the resource object associated with the specified name or null if the resource is not found
+ * @deprecated use one of the strongly typed "get" methods or {@link #getUntypedControl(String)} instead if no type
+ * is desired
+ */
+ @Deprecated(forRemoval = true)
+ Object getResource(String resourceName);
- void registerAMQPControl(String amqpResourceName, Object control);
+ @Deprecated(forRemoval = true)
+ Object[] getResources(Class<?> resourceType);
- void unRegisterAMQPControl(String amqpResourceName);
+ ICoreMessage handleMessage(SecurityAuth auth, Message message) throws Exception;
- List<DivertControl> getDivertControls();
+ /**
+ * Retrieves the value of a specified attribute from a management control. The inputs to and output from this method
+ * are intentionally vague to support management messages and other use cases where types are not known ahead of
+ * time.
+ * <p>
+ * If possible, use the strongly typed methods instead as performance will be better.
+ *
+ * @param resourceName the name of the resource from which the attribute is to be retrieved; should be prefixed with
+ * a value from {@link ResourceNames} unless using an "untyped" control
+ * @param attribute the name of the attribute whose value is to be retrieved
+ * @param auth the security authorization context used to validate permissions for retrieving the attribute
+ * @return the value of the specified attribute
+ * @throws IllegalStateException if the resource cannot be found, the getter method does not exist, if there are
+ * security issues, or if any error occurs during method invocation
+ */
+ Object getAttribute(String resourceName, String attribute, SecurityAuth auth);
- List<BridgeControl> getBridgeControls();
+ /**
+ * Invokes a specified operation on a managed control identified by its name. The inputs to and output from this
+ * method are intentionally vague to support management messages and other use cases where types are not known ahead
+ * of time.
+ * <p>
+ * If possible, use the strongly typed methods instead as performance will be better.
+ *
+ * @param resourceName the name of the resource on which the operation will be invoked; should be prefixed with a
+ * value from {@link ResourceNames} unless using an "untyped" control
+ * @param operation the name of the operation to invoke
+ * @param params an array of parameters to pass to the operation being invoked
+ * @param auth the security authentication object used to validate access permissions
+ * @return the result of the invoked operation
+ * @throws Exception if the resource is not found, the operation is invalid, or an error occurs during the invocation
+ * process
+ */
+ Object invokeOperation(String resourceName, String operation, Object[] params, SecurityAuth auth) throws Exception;
}
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ControlRegistries.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ControlRegistries.java
index 8a381366ad..1092877c65 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ControlRegistries.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ControlRegistries.java
@@ -16,6 +16,11 @@
*/
package org.apache.activemq.artemis.core.server.management.impl;
+import java.lang.invoke.MethodHandles;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Predicate;
import org.apache.activemq.artemis.api.core.management.AcceptorControl;
import org.apache.activemq.artemis.api.core.management.ActiveMQServerControl;
@@ -34,21 +39,11 @@ import org.apache.activemq.artemis.core.server.management.HawtioSecurityControl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.lang.invoke.MethodHandles;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.function.Predicate;
-import java.util.stream.Collectors;
-
public class ControlRegistries {
private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
- public final Map<String, ActiveMQServerControl> serverControls;
+ private ActiveMQServerControl serverControl;
public final Map<String, QueueControl> queueControls;
@@ -68,14 +63,13 @@ public class ControlRegistries {
public final Map<String, ConnectionRouterControl> connectionRouterControls;
- public final Map<String, HawtioSecurityControl> hawtioSecurityControls;
+ public HawtioSecurityControl hawtioSecurityControl;
public final Map<String, DivertControl> divertControls;
- public final Map<String, Object> amqpControls;
+ public final Map<String, Object> untypedControls;
public ControlRegistries() {
- serverControls = new ConcurrentHashMap<>();
queueControls = new ConcurrentHashMap<>();
addressControls = new ConcurrentHashMap<>();
accepterControls = new ConcurrentHashMap<>();
@@ -85,300 +79,350 @@ public class ControlRegistries {
bridgeControls = new ConcurrentHashMap<>();
clusterConnectionControl = new ConcurrentHashMap<>();
connectionRouterControls = new ConcurrentHashMap<>();
- hawtioSecurityControls = new ConcurrentHashMap<>();
- amqpControls = new ConcurrentHashMap<>();
+ untypedControls = new ConcurrentHashMap<>();
divertControls = new ConcurrentHashMap<>();
}
- public void unregisterQueueControls(final String resourceName) {
- Object removed = queueControls.remove(resourceName);
- extracted(resourceName, removed);
+ public void registerQueueControl(final String name, final QueueControl queueControl) {
+ Object replaced = queueControls.put(name, queueControl);
+ logRegistration(name, replaced, queueControl);
}
- public void registerQueueControls(final String resourceName, final QueueControl queueControl) {
- Object replaced = queueControls.put(resourceName, queueControl);
- replaced(resourceName, replaced, queueControl);
+ public void unregisterQueueControl(final String name) {
+ Object removed = queueControls.remove(name);
+ logUnregistration(name, removed);
}
- public void unregisterAddressControls(final String resourceName) {
- Object removed = addressControls.remove(resourceName);
- extracted(resourceName, removed);
+ public int getQueueControlCount() {
+ return queueControls.size();
}
- public void registerAddressControls(final String resourceName, final AddressControl addressControl) {
- Object replaced = addressControls.put(resourceName, addressControl);
- replaced(resourceName, replaced, addressControl);
+ public List<QueueControl> getQueueControls(Predicate<QueueControl> predicate) {
+ if (predicate == null) {
+ return List.copyOf(queueControls.values());
+ }
+ return queueControls.values().stream().filter(predicate).toList();
}
- public void registerAcceptor(String resourceName, AcceptorControl acceptorControl) {
- Object replaced = accepterControls.put(resourceName, acceptorControl);
- replaced(resourceName, replaced, acceptorControl);
+ public QueueControl getQueueControl(String name) {
+ return queueControls.get(name);
}
- public Set<String> getAcceptorNames() {
- return accepterControls.keySet();
+ public List<String> getQueueControlNames() {
+ return List.copyOf(queueControls.keySet());
}
- public void unregisterAcceptorControls(String resourceName) {
- Object removed = accepterControls.remove(resourceName);
- extracted(resourceName, removed);
+ public void registerAddressControl(final String name, final AddressControl addressControl) {
+ Object replaced = addressControls.put(name, addressControl);
+ logRegistration(name, replaced, addressControl);
}
- public void registerBroadcastGroupControls(String resourceName, BaseBroadcastGroupControl control) {
- Object replaced = broadcastGroupControls.put(resourceName, control);
- replaced(resourceName, replaced, control);
+ public void unregisterAddressControl(final String name) {
+ Object removed = addressControls.remove(name);
+ logUnregistration(name, removed);
}
- public void unRegisterBroadcastGroupControls(String resourceName) {
- Object removed = broadcastGroupControls.remove(resourceName);
- extracted(resourceName, removed);
+ public int getAddressControlCount() {
+ return addressControls.size();
}
- public void registerBrokerConnectionControl(String resourceName, BrokerConnectionControl control) {
- Object replaced = brokerConnectionControls.put(resourceName, control);
- replaced(resourceName, replaced, control);
+ public List<AddressControl> getAddressControls(Predicate<AddressControl> predicate) {
+ if (predicate == null) {
+ return List.copyOf(addressControls.values());
+ }
+ return addressControls.values().stream().filter(predicate).toList();
}
- public void unRegisterBrokerConnectionControl(String resourceName) {
- Object removed = brokerConnectionControls.remove(resourceName);
- extracted(resourceName, removed);
+ public AddressControl getAddressControl(String name) {
+ return addressControls.get(name);
}
- public void registerRemoteBrokerConnectionControl(String resourceName, RemoteBrokerConnectionControl control) {
- Object replaced = remoteBrokerConnectionControls.put(resourceName, control);
- replaced(resourceName, replaced, control);
+ public List<String> getAddressControlNames() {
+ return List.copyOf(addressControls.keySet());
}
- public void unRegisterRemoteBrokerConnectionControl(String resourceName) {
- Object removed = remoteBrokerConnectionControls.remove(resourceName);
- extracted(resourceName, removed);
+ public void registerAcceptor(String name, AcceptorControl acceptorControl) {
+ Object replaced = accepterControls.put(name, acceptorControl);
+ logRegistration(name, replaced, acceptorControl);
}
- public void registerBridgeControl(String resourceName, BridgeControl control) {
- Object replaced = bridgeControls.put(resourceName, control);
- replaced(resourceName, replaced, control);
+ public void unregisterAcceptorControl(String name) {
+ Object removed = accepterControls.remove(name);
+ logUnregistration(name, removed);
}
- public void unRegisterBridgeControl(String resourceName) {
- Object removed = bridgeControls.remove(resourceName);
- extracted(resourceName, removed);
+ public AcceptorControl getAcceptorControl(String name) {
+ return accepterControls.get(name);
}
- public void registerClusterConnectionControl(String resourceName, ClusterConnectionControl control) {
- Object replaced = clusterConnectionControl.put(resourceName, control);
- replaced(resourceName, replaced, control);
+ public List<AcceptorControl> getAcceptorControls() {
+ return List.copyOf(accepterControls.values());
}
- public void unRegisterClusterConnectionControl(String resourceName) {
- Object removed = clusterConnectionControl.remove(resourceName);
- extracted(resourceName, removed);
+ public List<String> getAcceptorControlNames() {
+ return List.copyOf(accepterControls.keySet());
}
- public void registerConnectionRouterControl(String resourceName, ConnectionRouterControl connectionRouterControl) {
- Object replaced = connectionRouterControls.put(resourceName, connectionRouterControl);
- replaced(resourceName, replaced, connectionRouterControl);
+ public void registerBroadcastGroupControl(String name, BaseBroadcastGroupControl control) {
+ Object replaced = broadcastGroupControls.put(name, control);
+ logRegistration(name, replaced, control);
}
- public void unRegisterConnectionRouterControl(String resourceName) {
- Object removed = connectionRouterControls.remove(resourceName);
- extracted(resourceName, removed);
+ public void unregisterBroadcastGroupControls(String name) {
+ Object removed = broadcastGroupControls.remove(name);
+ logUnregistration(name, removed);
}
- public void registerHawtioSecurityControl(String resourceName, HawtioSecurityControl control) {
- Object replaced = hawtioSecurityControls.put(resourceName, control);
- replaced(resourceName, replaced, control);
+ public List<BaseBroadcastGroupControl> getBroadcastGroupControls() {
+ return List.copyOf(broadcastGroupControls.values());
}
- public void unRegisterHawtioSecurityControl(String resourceName) {
- Object removed = hawtioSecurityControls.remove(resourceName);
- extracted(resourceName, removed);
+ public List<String> getBroadcastGroupControlNames() {
+ return List.copyOf(broadcastGroupControls.keySet());
}
- public void registerAMQPControl(String amqpResourceName, Object control) {
- amqpControls.put(amqpResourceName, control);
+
+ public void registerBrokerConnectionControl(String name, BrokerConnectionControl control) {
+ Object replaced = brokerConnectionControls.put(name, control);
+ logRegistration(name, replaced, control);
}
- public void unRegisterAMQPControl(String resourceName) {
- Object removed = amqpControls.remove(resourceName);
- extracted(resourceName, removed);
+ public void unregisterBrokerConnectionControl(String name) {
+ Object removed = brokerConnectionControls.remove(name);
+ logUnregistration(name, removed);
}
- public void registerBroker(String resourceName, ActiveMQServerControlImpl messagingServerControl) {
- Object replaced = serverControls.put(resourceName, messagingServerControl);
- replaced(resourceName, replaced, messagingServerControl);
+ public List<BrokerConnectionControl> getBrokerConnectionControls() {
+ return List.copyOf(brokerConnectionControls.values());
}
- public void unRegisterBroker(String resourceName) {
- Object removed = serverControls.remove(resourceName);
- extracted(resourceName, removed);
+ public BrokerConnectionControl getBrokerConnectionControl(String name) {
+ return brokerConnectionControls.get(name);
}
- public void registerDivertControl(String resourceName, DivertControl divertControl) {
- Object replaced = divertControls.put(resourceName, divertControl);
- replaced(resourceName, replaced, divertControl);
+ public List<String> getBrokerConnectionControlNames() {
+ return List.copyOf(brokerConnectionControls.keySet());
}
- public void unRegisterDivertControl(String resourceName) {
- Object removed = divertControls.remove(resourceName);
- extracted(resourceName, removed);
+ public void registerRemoteBrokerConnectionControl(String name, RemoteBrokerConnectionControl control) {
+ Object replaced = remoteBrokerConnectionControls.put(name, control);
+ logRegistration(name, replaced, control);
}
- public List<QueueControl> getQueueControls(Predicate<QueueControl> predicate) {
- if (predicate == null) {
- return queueControls.values().stream().toList();
- }
- return queueControls.values().stream().filter(predicate).collect(Collectors.toList());
+ public void unregisterRemoteBrokerConnectionControl(String name) {
+ Object removed = remoteBrokerConnectionControls.remove(name);
+ logUnregistration(name, removed);
}
- public List<AddressControl> getAddressControls(Predicate<AddressControl> predicate) {
- if (predicate == null) {
- return addressControls.values().stream().toList();
- }
- return addressControls.values().stream().filter(predicate).collect(Collectors.toList());
+ public List<RemoteBrokerConnectionControl> getRemoteBrokerConnectionControls() {
+ return List.copyOf(remoteBrokerConnectionControls.values());
+ }
+
+ public RemoteBrokerConnectionControl getRemoteBrokerConnectionControl(String name) {
+ return remoteBrokerConnectionControls.get(name);
+ }
+
+ public List<String> getRemoteBrokerConnectionControlNames() {
+ return List.copyOf(remoteBrokerConnectionControls.keySet());
+ }
+
+ public void registerBridgeControl(String name, BridgeControl control) {
+ Object replaced = bridgeControls.put(name, control);
+ logRegistration(name, replaced, control);
+ }
+
+ public void unregisterBridgeControl(String name) {
+ Object removed = bridgeControls.remove(name);
+ logUnregistration(name, removed);
+ }
+
+ public List<BridgeControl> getBridgeControls() {
+ return List.copyOf(bridgeControls.values());
+ }
+
+ public List<String> getBridgeControlNames() {
+ return List.copyOf(bridgeControls.keySet());
+ }
+
+ public int getBridgeControlCount() {
+ return bridgeControls.size();
+ }
+
+ public void registerClusterConnectionControl(String name, ClusterConnectionControl control) {
+ Object replaced = clusterConnectionControl.put(name, control);
+ logRegistration(name, replaced, control);
+ }
+
+ public void unregisterClusterConnectionControl(String name) {
+ Object removed = clusterConnectionControl.remove(name);
+ logUnregistration(name, removed);
+ }
+
+ public List<ClusterConnectionControl> getClusterConnectionControls() {
+ return List.copyOf(clusterConnectionControl.values());
+ }
+
+ public List<String> getClusterConnectionControlNames() {
+ return List.copyOf(clusterConnectionControl.keySet());
+ }
+
+ public void registerConnectionRouterControl(String name, ConnectionRouterControl connectionRouterControl) {
+ Object replaced = connectionRouterControls.put(name, connectionRouterControl);
+ logRegistration(name, replaced, connectionRouterControl);
}
- public AddressControl getAddressControl(String resourceName) {
- return addressControls.get(resourceName);
+ public void unregisterConnectionRouterControl(String name) {
+ Object removed = connectionRouterControls.remove(name);
+ logUnregistration(name, removed);
}
- public AcceptorControl getAcceptorControl(String resourceName) {
- return accepterControls.get(resourceName);
+ public List<ConnectionRouterControl> getConnectionRouterControls() {
+ return List.copyOf(connectionRouterControls.values());
+ }
+
+ public ConnectionRouterControl getConnectionRouterControl(String name) {
+ return connectionRouterControls.get(name);
+ }
+
+ public List<String> getConnectionRouterControlNames() {
+ return List.copyOf(connectionRouterControls.keySet());
+ }
+
+ public void registerHawtioSecurityControl(HawtioSecurityControl hawtioSecurityControl) {
+ Object original = this.hawtioSecurityControl;
+ this.hawtioSecurityControl = hawtioSecurityControl;
+ logRegistration(ResourceNames.MANAGEMENT_SECURITY, original, hawtioSecurityControl);
+ }
+
+ public void unregisterHawtioSecurityControl() {
+ Object removed = hawtioSecurityControl;
+ hawtioSecurityControl = null;
+ logUnregistration(ResourceNames.MANAGEMENT_SECURITY, removed);
+ }
+
+ public HawtioSecurityControl getHawtioSecurity() {
+ return hawtioSecurityControl;
+ }
+
+ public void registerUntypedControl(String name, Object control) {
+ untypedControls.put(name, control);
+ }
+
+ public void unregisterUntypedControl(String name) {
+ Object removed = untypedControls.remove(name);
+ logUnregistration(name, removed);
+ }
+
+ public Object getUntypedControl(String name) {
+ return untypedControls.get(name);
+ }
+
+ public List<String> getUntypedControlNames() {
+ return List.copyOf(untypedControls.keySet());
+ }
+
+ public List<Object> getUntypedControls(Class<?> resourceType) {
+ return untypedControls.values().stream().filter(resourceType::isInstance).toList();
+ }
+
+ public void registerServer(ActiveMQServerControlImpl serverControl) {
+ Object original = this.serverControl;
+ this.serverControl = serverControl;
+ logRegistration(ResourceNames.BROKER, original, serverControl);
+ }
+
+ public void unregisterServer() {
+ Object removed = serverControl;
+ serverControl = null;
+ logUnregistration(ResourceNames.BROKER, removed);
+ }
+
+ public ActiveMQServerControl getServerControl() {
+ return serverControl;
+ }
+
+ public void registerDivertControl(String name, DivertControl divertControl) {
+ Object replaced = divertControls.put(name, divertControl);
+ logRegistration(name, replaced, divertControl);
+ }
+
+ public void unregisterDivertControl(String name) {
+ Object removed = divertControls.remove(name);
+ logUnregistration(name, removed);
+ }
+
+ public List<DivertControl> getDivertControls() {
+ return List.copyOf(divertControls.values());
+ }
+
+ public List<String> getDivertControlNames() {
+ return List.copyOf(divertControls.keySet());
}
public void clear() {
- serverControls.clear();
+ serverControl = null;
addressControls.clear();
queueControls.clear();
- serverControls.clear();
accepterControls.clear();
- serverControls.clear();
broadcastGroupControls.clear();
brokerConnectionControls.clear();
remoteBrokerConnectionControls.clear();
bridgeControls.clear();
clusterConnectionControl.clear();
connectionRouterControls.clear();
- hawtioSecurityControls.clear();
+ hawtioSecurityControl = null;
divertControls.clear();
- amqpControls.clear();
+ untypedControls.clear();
}
/**
- * This is only used by tests for asserting, so performance is not an issue
+ * Retrieves the management control object associated with the provided resource name. This method determines the
+ * type of the resource based on its prefix and returns the corresponding control object if available. If possible,
+ * use the strongly typed methods instead as performance will be better.
+ *
+ * @param name The full name of the resource for which a control object is to be retrieved. The name may include a
+ * prefix indicating the type of the resource (e.g., "queue.", "address.", "broker", etc.).
+ * @return the management control object associated with the specified resource name, or {@code null} if no control
+ * object is registered for the resource.
*/
- public Object get(String resourceName) {
- String resourceNamePrefix = resourceName;
- int idx = resourceName.indexOf(".");
+ public Object getByName(String name) {
+ String namePrefix = name;
+ String unprefixedName = name;
+ int idx = name.indexOf(".");
if (idx > 0) {
- resourceNamePrefix = resourceName.substring(0, idx + 1);
+ namePrefix = name.substring(0, idx + 1);
+ unprefixedName = name.substring(idx + 1);
}
- return switch (resourceNamePrefix) {
- case ResourceNames.BROKER -> serverControls.get(resourceName);
- case ResourceNames.ADDRESS -> addressControls.get(resourceName);
- case ResourceNames.QUEUE -> queueControls.get(resourceName);
- case ResourceNames.ACCEPTOR -> accepterControls.get(resourceName);
- case ResourceNames.BROADCAST_GROUP -> broadcastGroupControls.get(resourceName);
- case ResourceNames.BROKER_CONNECTION -> brokerConnectionControls.get(resourceName);
- case ResourceNames.REMOTE_BROKER_CONNECTION -> remoteBrokerConnectionControls.get(resourceName);
- case ResourceNames.BRIDGE -> bridgeControls.get(resourceName);
- case ResourceNames.CORE_CLUSTER_CONNECTION -> clusterConnectionControl.get(resourceName);
- case ResourceNames.CONNECTION_ROUTER -> connectionRouterControls.get(resourceName);
- case ResourceNames.MANAGEMENT_SECURITY -> hawtioSecurityControls.get(resourceName);
- case ResourceNames.DIVERT -> divertControls.get(resourceName);
- default -> {
- if (amqpControls.containsKey(resourceName)) {
- yield amqpControls.get(resourceName);
- }
- yield null;
- }
+ return switch (namePrefix) {
+ case ResourceNames.BROKER -> serverControl;
+ case ResourceNames.ADDRESS -> addressControls.get(unprefixedName);
+ case ResourceNames.QUEUE -> queueControls.get(unprefixedName);
+ case ResourceNames.ACCEPTOR -> accepterControls.get(unprefixedName);
+ case ResourceNames.BROADCAST_GROUP -> broadcastGroupControls.get(unprefixedName);
+ case ResourceNames.BROKER_CONNECTION -> brokerConnectionControls.get(unprefixedName);
+ case ResourceNames.REMOTE_BROKER_CONNECTION -> remoteBrokerConnectionControls.get(unprefixedName);
+ case ResourceNames.BRIDGE -> bridgeControls.get(unprefixedName);
+ case ResourceNames.CORE_CLUSTER_CONNECTION -> clusterConnectionControl.get(unprefixedName);
+ case ResourceNames.CONNECTION_ROUTER -> connectionRouterControls.get(unprefixedName);
+ case ResourceNames.MANAGEMENT_SECURITY -> hawtioSecurityControl;
+ case ResourceNames.DIVERT -> divertControls.get(unprefixedName);
+ default -> untypedControls.get(name);
};
}
- /**
- * This is only used by tests for asserting, so performance is not an issue
- */
- public Object legacyGetResource(String resourceName) {
- Object resource = serverControls.get(resourceName);
- if (resource == null)
- resource = addressControls.get(resourceName);
- if (resource == null)
- resource = queueControls.get(resourceName);
- if (resource == null)
- resource = accepterControls.get(resourceName);
- if (resource == null)
- resource = broadcastGroupControls.get(resourceName);
- if (resource == null)
- resource = brokerConnectionControls.get(resourceName);
- if (resource == null)
- resource = remoteBrokerConnectionControls.get(resourceName);
- if (resource == null)
- resource = bridgeControls.get(resourceName);
- if (resource == null)
- resource = clusterConnectionControl.get(resourceName);
- if (resource == null)
- resource = connectionRouterControls.get(resourceName);
- if (resource == null)
- resource = hawtioSecurityControls.get(resourceName);
- if (resource == null)
- resource = divertControls.get(resourceName);
- if (resource == null)
- resource = amqpControls.get(resourceName);
-
- return resource;
- }
-
- public List<DivertControl> getDivertControls() {
- return divertControls.values().stream().toList();
- }
-
- public List<BridgeControl> getBridgeControls() {
- return bridgeControls.values().stream().toList();
- }
-
- public Set<String> unRegisterAll() {
- Set<String> names = new HashSet<>();
- names.addAll(unregisterMap(serverControls));
- names.addAll(unregisterMap(addressControls));
- names.addAll(unregisterMap(queueControls));
- names.addAll(unregisterMap(accepterControls));
- names.addAll(unregisterMap(broadcastGroupControls));
- names.addAll(unregisterMap(brokerConnectionControls));
- names.addAll(unregisterMap(remoteBrokerConnectionControls));
- names.addAll(unregisterMap(bridgeControls));
- names.addAll(unregisterMap(clusterConnectionControl));
- names.addAll(unregisterMap(connectionRouterControls));
- names.addAll(unregisterMap(hawtioSecurityControls));
- names.addAll(unregisterMap(amqpControls));
- return names;
- }
-
- private Collection<String> unregisterMap(Map registry) {
- Set<String> resourceNames = new HashSet<>(registry.keySet());
- for (String resourceName : resourceNames) {
- unregisterFromRegistry(resourceName, registry);
- }
- return resourceNames;
- }
-
- private void unregisterFromRegistry(final String resourceName, final Map<String, Object> registry) {
- Object removed = registry.remove(resourceName);
- extracted(resourceName, removed);
- }
-
- private static void extracted(String resourceName, Object removed) {
+ private static void logUnregistration(String name, Object removed) {
if (removed != null) {
- logger.debug("Unregistered from management: {} as {}", resourceName, removed);
+ logger.debug("Unregistered from management: {} as {}", name, removed);
} else {
logger.debug("Attempted to unregister {} from management, but it was not registered.");
}
}
- private static void replaced(String resourceName, Object replaced, Object managedResource) {
+ private static void logRegistration(String name, Object replaced, Object managedResource) {
String addendum = "";
if (replaced != null) {
addendum = ". Replaced: " + replaced;
}
- logger.debug("Registered in management: {} as {}{}", resourceName, managedResource, addendum);
+ logger.debug("Registered in management: {} as {}{}", name, managedResource, addendum);
}
-
}
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ManagementServiceImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ManagementServiceImpl.java
index ae12844c4f..f7e6734d0b 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ManagementServiceImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/impl/ManagementServiceImpl.java
@@ -27,7 +27,6 @@ import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
-import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import java.util.Set;
@@ -231,9 +230,8 @@ public class ManagementServiceImpl implements ManagementService {
messageCounterManager.reschedule(configuration.getMessageCounterSamplePeriod());
messagingServerControl = new ActiveMQServerControlImpl(postOffice, configuration, resourceManager, remotingService, messagingServer, messageCounterManager, storageManager1, broadcaster);
- ObjectName objectName = objectNameBuilder.getActiveMQServerObjectName();
- registerInJMX(objectName, messagingServerControl);
- registries.registerBroker(ResourceNames.BROKER, messagingServerControl);
+ registerInJMX(objectNameBuilder.getActiveMQServerObjectName(), messagingServerControl);
+ registries.registerServer(messagingServerControl);
registerBrokerMeters();
return messagingServerControl;
@@ -263,22 +261,26 @@ public class ManagementServiceImpl implements ManagementService {
@Override
public void unregisterServer() throws Exception {
unregisterFromJMX(objectNameBuilder.getActiveMQServerObjectName());
- registries.unRegisterBroker(ResourceNames.BROKER);
+ registries.unregisterServer();
if (messagingServer != null) {
unregisterMeters(ResourceNames.BROKER + "." + messagingServer.getConfiguration().getName());
}
}
+ @Override
+ public ActiveMQServerControl getServerControl() {
+ return registries.getServerControl();
+ }
+
@Override
public void registerAddress(AddressInfo addressInfo) throws Exception {
AddressControlImpl addressControl = new AddressControlImpl(addressInfo, messagingServer, pagingManager, storageManager, securityRepository, securityStore, this);
registerInJMX(objectNameBuilder.getAddressObjectName(addressInfo.getName()), addressControl);
- registries.registerAddressControls(ResourceNames.ADDRESS + addressInfo.getName(), addressControl);
+ registries.registerAddressControl(addressInfo.getName().toString(), addressControl);
registerAddressMeters(addressInfo, addressControl);
}
- @Override
- public void registerAddressMeters(AddressInfo addressInfo, AddressControl addressControl) {
+ private void registerAddressMeters(AddressInfo addressInfo, AddressControl addressControl) {
if (messagingServer != null) { // it could be null on tests, but never on a real server
MetricsManager metricsManager = messagingServer.getMetricsManager();
if (metricsManager != null) {
@@ -296,33 +298,38 @@ public class ManagementServiceImpl implements ManagementService {
@Override
public void unregisterAddress(final SimpleString address) throws Exception {
unregisterFromJMX(objectNameBuilder.getAddressObjectName(address));
- registries.unregisterAddressControls(ResourceNames.ADDRESS + address);
+ registries.unregisterAddressControl(address.toString());
unregisterMeters(ResourceNames.ADDRESS + address);
}
@Override
public void registerQueue(final Queue queue, final SimpleString address, final StorageManager storageManager) throws Exception {
- QueueControlImpl queueControl = new QueueControlImpl(queue, address.toString(), messagingServer, storageManager, securityStore, addressSettingsRepository);
+ QueueControlImpl queueControl = new QueueControlImpl(queue, address.toString(), messagingServer, storageManager, addressSettingsRepository);
if (messageCounterManager != null) {
MessageCounter counter = new MessageCounter(queue.getName().toString(), null, queue, false, queue.isDurable(), messageCounterManager.getMaxDayCount());
queueControl.setMessageCounter(counter);
messageCounterManager.registerMessageCounter(queue.getName().toString(), counter);
}
registerInJMX(objectNameBuilder.getQueueObjectName(address, queue.getName(), queue.getRoutingType()), queueControl);
- registries.registerQueueControls(ResourceNames.QUEUE + queue.getName(), queueControl);
+ registries.registerQueueControl(queue.getName().toString(), queueControl);
registerQueueMeters(queue);
}
@Override
public void unregisterQueue(final SimpleString name, final SimpleString address, RoutingType routingType) throws Exception {
unregisterFromJMX(objectNameBuilder.getQueueObjectName(address, name, routingType));
- registries.unregisterQueueControls(ResourceNames.QUEUE + name);
+ registries.unregisterQueueControl(name.toString());
unregisterMeters(ResourceNames.QUEUE + name);
if (messageCounterManager != null) {
messageCounterManager.unregisterMessageCounter(name.toString());
}
}
+ @Override
+ public int getQueueControlCount() {
+ return registries.getQueueControlCount();
+ }
+
@Override
public List<QueueControl> getQueueControls() {
return registries.getQueueControls(null);
@@ -333,6 +340,21 @@ public class ManagementServiceImpl implements ManagementService {
return registries.getQueueControls(predicate);
}
+ @Override
+ public QueueControl getQueueControl(String name) {
+ return registries.getQueueControl(name);
+ }
+
+ @Override
+ public List<String> getQueueControlNames() {
+ return registries.getQueueControlNames();
+ }
+
+ @Override
+ public int getAddressControlCount() {
+ return registries.getAddressControlCount();
+ }
+
@Override
public List<AddressControl> getAddressControls() {
return registries.getAddressControls(null);
@@ -344,23 +366,42 @@ public class ManagementServiceImpl implements ManagementService {
}
@Override
- public AddressControl getAddressControl(String resourceName) {
- return registries.getAddressControl(resourceName);
+ public AddressControl getAddressControl(String name) {
+ return registries.getAddressControl(name);
+ }
+
+ @Override
+ public List<AcceptorControl> getAcceptorControls() {
+ return registries.getAcceptorControls();
+ }
+
+ @Override
+ public List<String> getAddressControlNames() {
+ return registries.getAddressControlNames();
}
@Override
- public AcceptorControl getAcceptorControl(String resourceName) {
- return registries.getAcceptorControl(resourceName);
+ public AcceptorControl getAcceptorControl(String name) {
+ return registries.getAcceptorControl(name);
}
@Override
- public void registerAMQPControl(String amqpResourceName, Object control) {
- registries.registerAMQPControl(amqpResourceName, control);
+ public ConnectionRouterControl getConnectionRouterControl(String name) {
+ return registries.getConnectionRouterControl(name);
}
@Override
- public void unRegisterAMQPControl(String amqpResourceName) {
- registries.unRegisterAMQPControl(amqpResourceName);
+ public void registerUntypedControl(String name, Object control, ObjectName objectName) throws Exception {
+ registerInJMX(objectName, control);
+ registries.registerUntypedControl(name, control);
+ }
+
+ @Override
+ public void unregisterUntypedControl(String name, ObjectName objectName) throws Exception {
+ if (objectName != null) {
+ unregisterFromJMX(objectName);
+ }
+ registries.unregisterUntypedControl(name);
}
private void registerQueueMeters(final Queue queue) {
@@ -406,32 +447,29 @@ public class ManagementServiceImpl implements ManagementService {
public void registerDivert(final Divert divert) throws Exception {
DivertControl divertControl = new DivertControlImpl(divert, storageManager, messagingServer.getInternalNamingPrefix());
registerInJMX(objectNameBuilder.getDivertObjectName(divert.getUniqueName().toString(), divert.getAddress().toString()), divertControl);
- registries.registerDivertControl(ResourceNames.DIVERT + divert.getUniqueName(), divertControl);
+ registries.registerDivertControl(divert.getUniqueName().toString(), divertControl);
}
@Override
public void unregisterDivert(final SimpleString name, final SimpleString address) throws Exception {
unregisterFromJMX(objectNameBuilder.getDivertObjectName(name.toString(), address.toString()));
- registries.unRegisterDivertControl(ResourceNames.DIVERT + name);
+ registries.unregisterDivertControl(name.toString());
}
@Override
public void registerAcceptor(final Acceptor acceptor, final TransportConfiguration configuration) throws Exception {
AcceptorControl control = new AcceptorControlImpl(acceptor, storageManager, configuration);
registerInJMX(objectNameBuilder.getAcceptorObjectName(configuration.getName()), control);
- registries.registerAcceptor(ResourceNames.ACCEPTOR + configuration.getName(), control);
+ registries.registerAcceptor(configuration.getName(), control);
}
@Override
public void unregisterAcceptors() {
- for (String resourceName : new HashSet<>(registries.getAcceptorNames())) {
- if (resourceName.startsWith(ResourceNames.ACCEPTOR)) {
- String name = resourceName.substring(ResourceNames.ACCEPTOR.length());
- try {
- unregisterAcceptor(name);
- } catch (Exception e) {
- ActiveMQServerLogger.LOGGER.failedToUnregisterAcceptor(name, e);
- }
+ for (String acceptorName : registries.getAcceptorControlNames()) {
+ try {
+ unregisterAcceptor(acceptorName);
+ } catch (Exception e) {
+ ActiveMQServerLogger.LOGGER.failedToUnregisterAcceptor(acceptorName, e);
}
}
}
@@ -439,14 +477,14 @@ public class ManagementServiceImpl implements ManagementService {
@Override
public void unregisterAcceptor(final String name) throws Exception {
unregisterFromJMX(objectNameBuilder.getAcceptorObjectName(name));
- registries.unregisterAcceptorControls(ResourceNames.ACCEPTOR + name);
+ registries.unregisterAcceptorControl(name);
}
@Override
public void registerBroadcastGroup(final BroadcastGroup broadcastGroup, final BroadcastGroupConfiguration configuration) throws Exception {
broadcastGroup.setNotificationService(this);
BroadcastEndpointFactory endpointFactory = configuration.getEndpointFactory();
- BaseBroadcastGroupControl control = null;
+ BaseBroadcastGroupControl control;
if (endpointFactory instanceof UDPBroadcastEndpointFactory factory) {
control = new BroadcastGroupControlImpl(broadcastGroup, storageManager, configuration, factory);
} else if (endpointFactory instanceof JGroupsFileBroadcastEndpointFactory factory) {
@@ -457,26 +495,36 @@ public class ManagementServiceImpl implements ManagementService {
control = new BaseBroadcastGroupControlImpl(broadcastGroup, storageManager, configuration);
}
registerInJMX(objectNameBuilder.getBroadcastGroupObjectName(configuration.getName()), control);
- registries.registerBroadcastGroupControls(ResourceNames.BROADCAST_GROUP + configuration.getName(), control);
+ registries.registerBroadcastGroupControl(configuration.getName(), control);
}
@Override
public void unregisterBroadcastGroup(final String name) throws Exception {
unregisterFromJMX(objectNameBuilder.getBroadcastGroupObjectName(name));
- registries.unRegisterBroadcastGroupControls(ResourceNames.BROADCAST_GROUP + name);
+ registries.unregisterBroadcastGroupControls(name);
+ }
+
+ @Override
+ public List<BaseBroadcastGroupControl> getBroadcastGroupControls() {
+ return registries.getBroadcastGroupControls();
}
@Override
public void registerBrokerConnection(BrokerConnection brokerConnection) throws Exception {
BrokerConnectionControl control = new BrokerConnectionControlImpl(brokerConnection, storageManager);
registerInJMX(objectNameBuilder.getBrokerConnectionObjectName(brokerConnection.getName()), control);
- registries.registerBrokerConnectionControl(ResourceNames.BROKER_CONNECTION + brokerConnection.getName(), control);
+ registries.registerBrokerConnectionControl(brokerConnection.getName(), control);
}
@Override
public void unregisterBrokerConnection(String name) throws Exception {
unregisterFromJMX(objectNameBuilder.getBrokerConnectionObjectName(name));
- registries.unRegisterBrokerConnectionControl(ResourceNames.BROKER_CONNECTION + name);
+ registries.unregisterBrokerConnectionControl(name);
+ }
+
+ @Override
+ public List<BrokerConnectionControl> getBrokerConnectionControls() {
+ return registries.getBrokerConnectionControls();
}
@Override
@@ -497,13 +545,18 @@ public class ManagementServiceImpl implements ManagementService {
RemoteBrokerConnectionControl control = new RemoteBrokerConnectionControlImpl(brokerConnection, storageManager);
registerInJMX(objectNameBuilder.getRemoteBrokerConnectionObjectName(nodeId, name), control);
- registries.registerRemoteBrokerConnectionControl(ResourceNames.REMOTE_BROKER_CONNECTION + nodeId + "." + name, control);
+ registries.registerRemoteBrokerConnectionControl(nodeId + "." + name, control);
}
@Override
public void unregisterRemoteBrokerConnection(String nodeId, String name) throws Exception {
unregisterFromJMX(objectNameBuilder.getRemoteBrokerConnectionObjectName(nodeId, name));
- registries.unRegisterRemoteBrokerConnectionControl(ResourceNames.REMOTE_BROKER_CONNECTION + nodeId + "." + name);
+ registries.unregisterRemoteBrokerConnectionControl(nodeId + "." + name);
+ }
+
+ @Override
+ public List<RemoteBrokerConnectionControl> getRemoteBrokerConnectionControls() {
+ return registries.getRemoteBrokerConnectionControls();
}
@Override
@@ -511,52 +564,87 @@ public class ManagementServiceImpl implements ManagementService {
bridge.setNotificationService(this);
BridgeControl control = new BridgeControlImpl(bridge, storageManager);
registerInJMX(objectNameBuilder.getBridgeObjectName(bridge.getConfiguration().getName()), control);
- registries.registerBridgeControl(ResourceNames.BRIDGE + bridge.getName(), control);
+ registries.registerBridgeControl(bridge.getName().toString(), control);
}
@Override
public void unregisterBridge(final String name) throws Exception {
- unregisterFromJMX(objectNameBuilder.getBridgeObjectName(name));
- registries.unRegisterBridgeControl(ResourceNames.BRIDGE + name);
+ unregisterFromJMX(objectNameBuilder.getBridgeObjectName(name.toString()));
+ registries.unregisterBridgeControl(name);
+ }
+
+ @Override
+ public List<BridgeControl> getBridgeControls() {
+ return registries.getBridgeControls();
+ }
+
+ @Override
+ public List<String> getBridgeControlNames() {
+ return registries.getBridgeControlNames();
+ }
+
+ @Override
+ public int getBridgeControlCount() {
+ return registries.getBridgeControlCount();
}
@Override
public void registerCluster(final ClusterConnection cluster, final ClusterConnectionConfiguration configuration) throws Exception {
ClusterConnectionControl control = new ClusterConnectionControlImpl(cluster, storageManager, configuration);
registerInJMX(objectNameBuilder.getClusterConnectionObjectName(configuration.getName()), control);
- registries.registerClusterConnectionControl(ResourceNames.CORE_CLUSTER_CONNECTION + configuration.getName(), control);
+ registries.registerClusterConnectionControl(configuration.getName(), control);
}
@Override
public void unregisterCluster(final String name) throws Exception {
- unregisterFromJMX(objectNameBuilder.getClusterConnectionObjectName(name));
- registries.unRegisterClusterConnectionControl(ResourceNames.CORE_CLUSTER_CONNECTION + name);
+ unregisterFromJMX(objectNameBuilder.getClusterConnectionObjectName(name.toString()));
+ registries.unregisterClusterConnectionControl(name);
+ }
+
+ @Override
+ public List<ClusterConnectionControl> getClusterConnectionControls() {
+ return registries.getClusterConnectionControls();
+ }
+
+ @Override
+ public List<String> getClusterConnectionControlNames() {
+ return registries.getClusterConnectionControlNames();
}
@Override
public void registerConnectionRouter(final ConnectionRouter router) throws Exception {
ConnectionRouterControl connectionRouterControl = new ConnectionRouterControlImpl(router, storageManager);
registerInJMX(objectNameBuilder.getConnectionRouterObjectName(router.getName()), connectionRouterControl);
- registries.registerConnectionRouterControl(ResourceNames.CONNECTION_ROUTER + router.getName(), connectionRouterControl);
+ registries.registerConnectionRouterControl(router.getName(), connectionRouterControl);
}
@Override
public void unregisterConnectionRouter(final String name) throws Exception {
unregisterFromJMX(objectNameBuilder.getConnectionRouterObjectName(name));
- registries.unRegisterConnectionRouterControl(ResourceNames.CONNECTION_ROUTER + name);
+ registries.unregisterConnectionRouterControl(name);
+ }
+
+ @Override
+ public List<ConnectionRouterControl> getConnectionRouterControls() {
+ return registries.getConnectionRouterControls();
}
@Override
public void registerHawtioSecurity(GuardInvocationHandler guard) throws Exception {
HawtioSecurityControl control = new HawtioSecurityControlImpl(guard, storageManager);
registerInJMX(objectNameBuilder.getSecurityObjectName(), control);
- registries.registerHawtioSecurityControl(ResourceNames.MANAGEMENT_SECURITY, control);
+ registries.registerHawtioSecurityControl(control);
}
@Override
public void unregisterHawtioSecurity() throws Exception {
unregisterFromJMX(objectNameBuilder.getSecurityObjectName());
- registries.unRegisterHawtioSecurityControl(ResourceNames.MANAGEMENT_SECURITY);
+ registries.unregisterHawtioSecurityControl();
+ }
+
+ @Override
+ public HawtioSecurityControl getHawtioSecurity() {
+ return registries.getHawtioSecurity();
}
@Override
@@ -644,24 +732,71 @@ public class ManagementServiceImpl implements ManagementService {
return CheckType.EDIT;
}
- // This is only used by tests and left to avoid massive refactoring
@Override
- public Object getResource(final String resourceName) {
- Object resource = registries.get(resourceName);
- if (resource == null) {
- return registries.legacyGetResource(resourceName);
- }
- return resource;
+ public List<DivertControl> getDivertControls() {
+ return registries.getDivertControls();
}
@Override
- public List<DivertControl> getDivertControls() {
- return registries.getDivertControls();
+ public List<String> getDivertControlNames() {
+ return registries.getDivertControlNames();
}
@Override
- public List<BridgeControl> getBridgeControls() {
- return registries.getBridgeControls();
+ public BrokerConnectionControl getBrokerConnectionControl(String name) {
+ return registries.getBrokerConnectionControl(name);
+ }
+
+ @Override
+ public RemoteBrokerConnectionControl getRemoteBrokerConnectionControl(String name) {
+ return registries.getRemoteBrokerConnectionControl(name);
+ }
+
+ @Override
+ public Object getUntypedControl(String name) {
+ return registries.getUntypedControl(name);
+ }
+
+ @Override
+ public List<Object> getUntypedControls(final Class<?> resourceType) {
+ return registries.getUntypedControls(resourceType);
+ }
+
+ @Override
+ public Object getResource(String resourceName) {
+ return registries.getByName(resourceName);
+ }
+
+ @Override
+ public Object[] getResources(final Class<?> resourceType) {
+ List<Object> resources = new ArrayList<>();
+ if (resourceType.isAssignableFrom(getServerControl().getClass())) {
+ resources.add(getServerControl());
+ }
+ getResources(resourceType, getAddressControls(), resources);
+ getResources(resourceType, getQueueControls(), resources);
+ getResources(resourceType, getAcceptorControls(), resources);
+ getResources(resourceType, getBroadcastGroupControls(), resources);
+ getResources(resourceType, getBrokerConnectionControls(), resources);
+ getResources(resourceType, getRemoteBrokerConnectionControls(), resources);
+ getResources(resourceType, getBridgeControls(), resources);
+ getResources(resourceType, getClusterConnectionControls(), resources);
+ getResources(resourceType, getConnectionRouterControls(), resources);
+ getResources(resourceType, getDivertControls(), resources);
+ if (resourceType.isAssignableFrom(getHawtioSecurity().getClass())) {
+ resources.add(getHawtioSecurity());
+ }
+ resources.addAll(getUntypedControls(resourceType));
+
+ return resources.toArray(new Object[resources.size()]);
+ }
+
+ private void getResources(final Class<?> resourceType, List<?> source, List<Object> target) {
+ for (Object entry : source) {
+ if (resourceType.isAssignableFrom(entry.getClass())) {
+ target.add(entry);
+ }
+ }
}
@Override
@@ -755,30 +890,56 @@ public class ManagementServiceImpl implements ManagementService {
started = false;
- Set<String> resourceNames = registries.unRegisterAll();//new HashSet<>(registry.keySet());
-
- for (String resourceName : resourceNames) {
- unregisterMeters(resourceName);
+ unregisterServer();
+ unregisterHawtioSecurity();
+ for (QueueControl queueControl : registries.getQueueControls(null)) {
+ unregisterQueue(SimpleString.of(queueControl.getName()), SimpleString.of(queueControl.getAddress()), RoutingType.valueOf(queueControl.getRoutingType()));
+ }
+ for (String name : registries.getAddressControlNames()) {
+ unregisterAddress(SimpleString.of(name));
+ }
+ for (String name : registries.getBrokerConnectionControlNames()) {
+ unregisterBrokerConnection(name);
+ }
+ for (String name : registries.getRemoteBrokerConnectionControlNames()) {
+ String nodeId = name;
+ String controlName = name;
+ int idx = name.indexOf(".");
+ if (idx > 0) {
+ nodeId = name.substring(0, idx + 1);
+ controlName = name.substring(idx + 1);
+ }
+ unregisterRemoteBrokerConnection(nodeId, controlName);
+ }
+ for (String name : registries.getBridgeControlNames()) {
+ unregisterBridge(name);
+ }
+ for (String name : registries.getAcceptorControlNames()) {
+ unregisterAcceptor(name);
+ }
+ for (DivertControl divert : registries.getDivertControls()) {
+ unregisterDivert(SimpleString.of(divert.getUniqueName()), SimpleString.of(divert.getAddress()));
+ }
+ for (String name : registries.getClusterConnectionControlNames()) {
+ unregisterCluster(name);
+ }
+ for (String name : registries.getBroadcastGroupControlNames()) {
+ unregisterBroadcastGroup(name);
+ }
+ for (String name : registries.getConnectionRouterControlNames()) {
+ unregisterConnectionRouter(name);
+ }
+ for (String name : registries.getUntypedControlNames()) {
+ // we do not know the ObjectName at this point so we pass null here knowing that any missed MBean will be
+ // unregistered by checking registeredNames later
+ unregisterUntypedControl(name, null);
}
if (jmxManagementEnabled) {
- if (!registeredNames.isEmpty()) {
- List<String> unexpectedResourceNames = new ArrayList<>();
- for (String name : resourceNames) {
- // only addresses, queues, and diverts should still be registered
- if (!(name.startsWith(ResourceNames.ADDRESS) || name.startsWith(ResourceNames.QUEUE) || name.startsWith(ResourceNames.DIVERT))) {
- unexpectedResourceNames.add(name);
- }
- }
- if (!unexpectedResourceNames.isEmpty()) {
- ActiveMQServerLogger.LOGGER.managementStopError(unexpectedResourceNames.size(), unexpectedResourceNames);
- }
-
- for (ObjectName on : registeredNames) {
- try {
- mbeanServer.unregisterMBean(on);
- } catch (Exception ignore) {
- }
+ for (ObjectName on : registeredNames) {
+ try {
+ mbeanServer.unregisterMBean(on);
+ } catch (Exception ignore) {
}
}
}
@@ -883,10 +1044,7 @@ public class ManagementServiceImpl implements ManagementService {
@Override
public Object getAttribute(final String resourceName, final String attribute, SecurityAuth auth) {
try {
- Object resource = registries.get(resourceName);
- if (resource == null) {
- resource = registries.legacyGetResource(resourceName);
- }
+ Object resource = registries.getByName(resourceName);
if (resource == null) {
throw ActiveMQMessageBundle.BUNDLE.cannotFindResource(resourceName);
@@ -920,10 +1078,7 @@ public class ManagementServiceImpl implements ManagementService {
final String operation,
final Object[] params,
SecurityAuth auth) throws Exception {
- Object resource = registries.get(resourceName);
- if (resource == null) {
- resource = registries.legacyGetResource(resourceName);
- }
+ Object resource = registries.getByName(resourceName);
if (resource == null) {
throw ActiveMQMessageBundle.BUNDLE.cannotFindResource(resourceName);
diff --git a/artemis-server/src/test/java/org/apache/activemq/artemis/core/server/group/impl/ClusteredResetMockTest.java b/artemis-server/src/test/java/org/apache/activemq/artemis/core/server/group/impl/ClusteredResetMockTest.java
index e404fdf229..2858ddb278 100644
--- a/artemis-server/src/test/java/org/apache/activemq/artemis/core/server/group/impl/ClusteredResetMockTest.java
+++ b/artemis-server/src/test/java/org/apache/activemq/artemis/core/server/group/impl/ClusteredResetMockTest.java
@@ -34,12 +34,18 @@ import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.TransportConfiguration;
import org.apache.activemq.artemis.api.core.management.AcceptorControl;
+import org.apache.activemq.artemis.api.core.management.ActiveMQServerControl;
import org.apache.activemq.artemis.api.core.management.AddressControl;
+import org.apache.activemq.artemis.api.core.management.BaseBroadcastGroupControl;
import org.apache.activemq.artemis.api.core.management.BridgeControl;
+import org.apache.activemq.artemis.api.core.management.BrokerConnectionControl;
+import org.apache.activemq.artemis.api.core.management.ClusterConnectionControl;
+import org.apache.activemq.artemis.api.core.management.ConnectionRouterControl;
import org.apache.activemq.artemis.api.core.management.DivertControl;
import org.apache.activemq.artemis.api.core.management.ManagementHelper;
import org.apache.activemq.artemis.api.core.management.ObjectNameBuilder;
import org.apache.activemq.artemis.api.core.management.QueueControl;
+import org.apache.activemq.artemis.api.core.management.RemoteBrokerConnectionControl;
import org.apache.activemq.artemis.core.config.ClusterConnectionConfiguration;
import org.apache.activemq.artemis.core.config.Configuration;
import org.apache.activemq.artemis.core.management.impl.ActiveMQServerControlImpl;
@@ -62,6 +68,7 @@ import org.apache.activemq.artemis.core.server.cluster.BroadcastGroup;
import org.apache.activemq.artemis.core.server.cluster.ClusterConnection;
import org.apache.activemq.artemis.core.server.impl.AddressInfo;
import org.apache.activemq.artemis.core.server.management.GuardInvocationHandler;
+import org.apache.activemq.artemis.core.server.management.HawtioSecurityControl;
import org.apache.activemq.artemis.core.server.management.ManagementService;
import org.apache.activemq.artemis.core.server.management.Notification;
import org.apache.activemq.artemis.core.server.management.NotificationListener;
@@ -234,22 +241,32 @@ public class ClusteredResetMockTest extends ServerTestBase {
}
@Override
- public AddressControl getAddressControl(String resourceName) {
+ public AddressControl getAddressControl(String name) {
return null;
}
@Override
- public AcceptorControl getAcceptorControl(String resourceName) {
+ public List<String> getAddressControlNames() {
+ return List.of();
+ }
+
+ @Override
+ public AcceptorControl getAcceptorControl(String name) {
+ return null;
+ }
+
+ @Override
+ public ConnectionRouterControl getConnectionRouterControl(String name) {
return null;
}
@Override
- public void registerAMQPControl(String amqpResourceName, Object control) {
+ public void registerUntypedControl(String name, Object control, ObjectName objectName) {
}
@Override
- public void unRegisterAMQPControl(String amqpResourceName) {
+ public void unregisterUntypedControl(String name, ObjectName objectName) {
}
@@ -258,33 +275,78 @@ public class ClusteredResetMockTest extends ServerTestBase {
return List.of();
}
+ @Override
+ public List<String> getDivertControlNames() {
+ return List.of();
+ }
+
@Override
public List<BridgeControl> getBridgeControls() {
return List.of();
}
@Override
- public void unregisterServer() throws Exception {
+ public List<String> getBridgeControlNames() {
+ return List.of();
+ }
+ @Override
+ public int getBridgeControlCount() {
+ return 0;
}
@Override
- public void registerInJMX(ObjectName objectName, Object managedResource) throws Exception {
+ public BrokerConnectionControl getBrokerConnectionControl(String name) {
+ return null;
+ }
+ @Override
+ public RemoteBrokerConnectionControl getRemoteBrokerConnectionControl(String name) {
+ return null;
}
@Override
- public void unregisterFromJMX(ObjectName objectName) throws Exception {
+ public Object getUntypedControl(String name) {
+ return null;
+ }
+ @Override
+ public List<Object> getUntypedControls(Class<?> resourceType) {
+ return List.of();
}
@Override
- public void registerAddress(AddressInfo addressInfo) throws Exception {
+ public Object getResource(String resourceName) {
+ return null;
+ }
+
+ @Override
+ public Object[] getResources(Class<?> resourceType) {
+ return new Object[0];
+ }
+
+ @Override
+ public ActiveMQServerControl getServerControl() {
+ return null;
+ }
+
+ @Override
+ public void unregisterServer() throws Exception {
+
+ }
+
+ @Override
+ public void registerInJMX(ObjectName objectName, Object managedResource) throws Exception {
+
+ }
+
+ @Override
+ public void unregisterFromJMX(ObjectName objectName) throws Exception {
}
@Override
- public void registerAddressMeters(AddressInfo addressInfo, AddressControl addressControl) throws Exception {
+ public void registerAddress(AddressInfo addressInfo) throws Exception {
}
@@ -318,6 +380,11 @@ public class ClusteredResetMockTest extends ServerTestBase {
}
+ @Override
+ public List<AcceptorControl> getAcceptorControls() {
+ return List.of();
+ }
+
@Override
public void registerDivert(Divert divert) throws Exception {
@@ -339,6 +406,11 @@ public class ClusteredResetMockTest extends ServerTestBase {
}
+ @Override
+ public List<BaseBroadcastGroupControl> getBroadcastGroupControls() {
+ return List.of();
+ }
+
@Override
public void registerBridge(Bridge bridge) throws Exception {
@@ -360,6 +432,16 @@ public class ClusteredResetMockTest extends ServerTestBase {
}
+ @Override
+ public List<ClusterConnectionControl> getClusterConnectionControls() {
+ return List.of();
+ }
+
+ @Override
+ public List<String> getClusterConnectionControlNames() {
+ return List.of();
+ }
+
@Override
public void registerConnectionRouter(ConnectionRouter router) throws Exception {
@@ -371,8 +453,8 @@ public class ClusteredResetMockTest extends ServerTestBase {
}
@Override
- public Object getResource(String resourceName) {
- return null;
+ public List<ConnectionRouterControl> getConnectionRouterControls() {
+ return List.of();
}
@Override
@@ -390,6 +472,11 @@ public class ClusteredResetMockTest extends ServerTestBase {
}
+ @Override
+ public HawtioSecurityControl getHawtioSecurity() {
+ return null;
+ }
+
@Override
public Object getAttribute(String resourceName, String attribute, SecurityAuth auth) {
return null;
@@ -400,6 +487,11 @@ public class ClusteredResetMockTest extends ServerTestBase {
return null;
}
+ @Override
+ public int getQueueControlCount() {
+ return 0;
+ }
+
@Override
public List<QueueControl> getQueueControls() {
return List.of();
@@ -410,6 +502,21 @@ public class ClusteredResetMockTest extends ServerTestBase {
return List.of();
}
+ @Override
+ public QueueControl getQueueControl(String name) {
+ return null;
+ }
+
+ @Override
+ public List<String> getQueueControlNames() {
+ return List.of();
+ }
+
+ @Override
+ public int getAddressControlCount() {
+ return 0;
+ }
+
@Override
public List<AddressControl> getAddressControls() {
return List.of();
@@ -430,6 +537,11 @@ public class ClusteredResetMockTest extends ServerTestBase {
}
+ @Override
+ public List<BrokerConnectionControl> getBrokerConnectionControls() {
+ return List.of();
+ }
+
@Override
public void start() throws Exception {
@@ -475,5 +587,10 @@ public class ClusteredResetMockTest extends ServerTestBase {
public void unregisterRemoteBrokerConnection(String nodeId, String name) throws Exception {
}
+
+ @Override
+ public List<RemoteBrokerConnectionControl> getRemoteBrokerConnectionControls() {
+ return List.of();
+ }
}
}
diff --git a/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/transport/failover/FailoverBackupLeakTest.java b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/transport/failover/FailoverBackupLeakTest.java
index 5b5295d0e7..863eb54612 100644
--- a/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/transport/failover/FailoverBackupLeakTest.java
+++ b/tests/activemq5-unit-tests/src/test/java/org/apache/activemq/transport/failover/FailoverBackupLeakTest.java
@@ -103,7 +103,7 @@ public class FailoverBackupLeakTest extends OpenwireArtemisBaseTest {
private int getConnectionCount(EmbeddedJMS server) throws Exception {
ManagementService managementService = server.getActiveMQServer().getManagementService();
- ActiveMQServerControl jmsControl = (ActiveMQServerControl) managementService.getResource(ResourceNames.BROKER);
+ ActiveMQServerControl jmsControl = (ActiveMQServerControl) managementService.getServerControl();
String[] ids = jmsControl.listConnectionIDs();
if (ids != null) {
return ids.length;
diff --git a/tests/compatibility-tests/src/main/resources/metrics/queueMetrics.groovy b/tests/compatibility-tests/src/main/resources/metrics/queueMetrics.groovy
index 50e246da77..d1b3246f2e 100644
--- a/tests/compatibility-tests/src/main/resources/metrics/queueMetrics.groovy
+++ b/tests/compatibility-tests/src/main/resources/metrics/queueMetrics.groovy
@@ -41,4 +41,3 @@ for (QueueControl c : queueControls) {
GroovyRun.assertEquals(33l, c.getMessageCount());
GroovyRun.assertEquals(33l, c.getDurableMessageCount());
}
-
diff --git a/tests/db-tests/src/test/java/org/apache/activemq/artemis/tests/db/paging/PagingTest.java b/tests/db-tests/src/test/java/org/apache/activemq/artemis/tests/db/paging/PagingTest.java
index d2a1535dca..02df5057fc 100644
--- a/tests/db-tests/src/test/java/org/apache/activemq/artemis/tests/db/paging/PagingTest.java
+++ b/tests/db-tests/src/test/java/org/apache/activemq/artemis/tests/db/paging/PagingTest.java
@@ -16,14 +16,6 @@
*/
package org.apache.activemq.artemis.tests.db.paging;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNotSame;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
-
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
@@ -75,7 +67,6 @@ import org.apache.activemq.artemis.api.core.client.ClientSessionFactory;
import org.apache.activemq.artemis.api.core.client.MessageHandler;
import org.apache.activemq.artemis.api.core.client.ServerLocator;
import org.apache.activemq.artemis.api.core.management.QueueControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.core.client.impl.ClientConsumerInternal;
import org.apache.activemq.artemis.core.config.Configuration;
import org.apache.activemq.artemis.core.config.DivertConfiguration;
@@ -141,6 +132,14 @@ import org.junit.jupiter.api.extension.ExtendWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNotSame;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
+
@ExtendWith(ParameterizedTestExtension.class)
public class PagingTest extends ParameterDBTestBase {
@@ -743,7 +742,7 @@ public class PagingTest extends ParameterDBTestBase {
Wait.assertEquals(numberOfMessages * 2, queue::getMessageCount);
- QueueControl queueControl = (QueueControl) this.server.getManagementService().getResource(ResourceNames.QUEUE + ADDRESS);
+ QueueControl queueControl = this.server.getManagementService().getQueueControl(ADDRESS.toString());
int removedMessages = queueControl.removeAllMessages();
assertEquals(numberOfMessages * 2, removedMessages);
@@ -1114,8 +1113,8 @@ public class PagingTest extends ParameterDBTestBase {
Wait.assertEquals(numberOfMessages * 4, queue::getMessageCount);
Wait.assertEquals(0, originalQueue::getMessageCount);
- QueueControl queueControl = (QueueControl) this.server.getManagementService().getResource(ResourceNames.QUEUE + ADDRESS + "Queue");
- QueueControl originalQueueControl = (QueueControl) this.server.getManagementService().getResource(ResourceNames.QUEUE + ADDRESS + "QueueOriginal");
+ QueueControl queueControl = this.server.getManagementService().getQueueControl(ADDRESS + "Queue");
+ QueueControl originalQueueControl = this.server.getManagementService().getQueueControl(ADDRESS + "QueueOriginal");
queueControl.retryMessages();
Wait.assertEquals(numberOfMessages * 2, queue::getMessageCount, 5000);
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/connect/AMQPBridgeManagementTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/connect/AMQPBridgeManagementTest.java
index 168a38acd6..fb166204d7 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/connect/AMQPBridgeManagementTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/connect/AMQPBridgeManagementTest.java
@@ -16,21 +16,6 @@
*/
package org.apache.activemq.artemis.tests.integration.amqp.connect;
-import static org.apache.activemq.artemis.protocol.amqp.connect.bridge.AMQPBridgeConstants.ADDRESS_RECEIVER_IDLE_TIMEOUT;
-import static org.apache.activemq.artemis.protocol.amqp.connect.bridge.AMQPBridgeConstants.QUEUE_RECEIVER_IDLE_TIMEOUT;
-import static org.hamcrest.CoreMatchers.allOf;
-import static org.hamcrest.CoreMatchers.containsString;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertInstanceOf;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
-
-import java.lang.invoke.MethodHandles;
-import java.net.URI;
-import java.util.concurrent.TimeUnit;
-
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Message;
@@ -38,12 +23,14 @@ import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
+import java.lang.invoke.MethodHandles;
+import java.net.URI;
+import java.util.concurrent.TimeUnit;
import org.apache.activemq.artemis.api.core.QueueConfiguration;
import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.management.BrokerConnectionControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.core.config.amqpBrokerConnectivity.AMQPBridgeAddressPolicyElement;
import org.apache.activemq.artemis.core.config.amqpBrokerConnectivity.AMQPBridgeBrokerConnectionElement;
import org.apache.activemq.artemis.core.config.amqpBrokerConnectivity.AMQPBridgeQueuePolicyElement;
@@ -64,6 +51,17 @@ import org.junit.jupiter.api.Timeout;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static org.apache.activemq.artemis.protocol.amqp.connect.bridge.AMQPBridgeConstants.ADDRESS_RECEIVER_IDLE_TIMEOUT;
+import static org.apache.activemq.artemis.protocol.amqp.connect.bridge.AMQPBridgeConstants.QUEUE_RECEIVER_IDLE_TIMEOUT;
+import static org.hamcrest.CoreMatchers.allOf;
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertInstanceOf;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
+
/**
* Tests that the broker create management objects for AMQP bridge configurations.
*/
@@ -132,10 +130,10 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
- final String brokerConnectionName = ResourceNames.BROKER_CONNECTION + getTestName();
+ final String brokerConnectionName = getTestName();
- final BrokerConnectionControl brokerConnection = (BrokerConnectionControl)
- server.getManagementService().getResource(brokerConnectionName);
+ final BrokerConnectionControl brokerConnection =
+ server.getManagementService().getBrokerConnectionControl(brokerConnectionName);
assertNotNull(brokerConnection);
assertTrue(brokerConnection.isConnected());
@@ -145,9 +143,9 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
final String consumerResourceName = AMQPBridgeManagementSupport.getBridgeAddressReceiverResourceName(getTestName(), getTestName(), "address-policy", getTestName());
final AMQPBridgeManagerControl bridgeControl =
- (AMQPBridgeManagerControl) server.getManagementService().getResource(bridgeResourceName);
+ (AMQPBridgeManagerControl) server.getManagementService().getUntypedControl(bridgeResourceName);
final AMQPBridgePolicyManagerControl addressPolicyControl =
- (AMQPBridgePolicyManagerControl) server.getManagementService().getResource(policyResourceName);
+ (AMQPBridgePolicyManagerControl) server.getManagementService().getUntypedControl(policyResourceName);
assertNotNull(bridgeControl);
assertEquals(getTestName(), bridgeControl.getName());
@@ -159,7 +157,7 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
assertEquals(0, addressPolicyControl.getMessagesReceived());
final AMQPBridgeReceiverControl consumerControl = (AMQPBridgeReceiverControl)
- server.getManagementService().getResource(consumerResourceName);
+ server.getManagementService().getUntypedControl(consumerResourceName);
assertNotNull(consumerControl);
assertEquals(getTestName(), consumerControl.getAddress());
@@ -170,9 +168,9 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
brokerConnection.stop();
// Stopping the connection should remove the bridge consumer management objects.
- Wait.assertTrue(() -> server.getManagementService().getResource(consumerResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(consumerResourceName) == null, 5_000, 100);
- assertNotNull(server.getManagementService().getResource(policyResourceName));
+ assertNotNull(server.getManagementService().getUntypedControl(policyResourceName));
server.getBrokerConnections().forEach((connection) -> {
try {
@@ -182,9 +180,9 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
}
});
- Wait.assertTrue(() -> server.getManagementService().getResource(policyResourceName) == null, 5_000, 100);
- Wait.assertTrue(() -> server.getManagementService().getResource(bridgeResourceName) == null, 5_000, 100);
- Wait.assertTrue(() -> server.getManagementService().getResource(brokerConnectionName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(policyResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(bridgeResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getBrokerConnectionControl(brokerConnectionName) == null, 5_000, 100);
peer.close();
}
@@ -239,8 +237,8 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
- final BrokerConnectionControl brokerConnection = (BrokerConnectionControl)
- server.getManagementService().getResource(ResourceNames.BROKER_CONNECTION + getTestName());
+ final BrokerConnectionControl brokerConnection =
+ server.getManagementService().getBrokerConnectionControl(getTestName());
assertNotNull(brokerConnection);
assertTrue(brokerConnection.isConnected());
@@ -250,11 +248,11 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
final String consumerResourceName = AMQPBridgeManagementSupport.getBridgeAddressReceiverResourceName(getTestName(), getTestName(), "address-policy", getTestName());
final AMQPBridgeManagerControl bridgeControl =
- (AMQPBridgeManagerControl) server.getManagementService().getResource(bridgeResourceName);
+ (AMQPBridgeManagerControl) server.getManagementService().getUntypedControl(bridgeResourceName);
final AMQPBridgePolicyManagerControl addressPolicyControl =
- (AMQPBridgePolicyManagerControl) server.getManagementService().getResource(policyResourceName);
+ (AMQPBridgePolicyManagerControl) server.getManagementService().getUntypedControl(policyResourceName);
final AMQPBridgeReceiverControl consumerControl = (AMQPBridgeReceiverControl)
- server.getManagementService().getResource(consumerResourceName);
+ server.getManagementService().getUntypedControl(consumerResourceName);
assertNotNull(bridgeControl);
assertNotNull(addressPolicyControl);
@@ -265,8 +263,8 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
// Closing the connection without a detach or close frame should still cleanup the management
// resources for the consumer but the policy views should still be in place
- Wait.assertTrue(() -> server.getManagementService().getResource(consumerResourceName) == null, 5_000, 100);
- Wait.assertTrue(() -> server.getManagementService().getResource(policyResourceName) != null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(consumerResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(policyResourceName) != null, 5_000, 100);
}
}
@@ -319,8 +317,8 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
- final BrokerConnectionControl brokerConnection = (BrokerConnectionControl)
- server.getManagementService().getResource(ResourceNames.BROKER_CONNECTION + getTestName());
+ final BrokerConnectionControl brokerConnection =
+ server.getManagementService().getBrokerConnectionControl(getTestName());
assertNotNull(brokerConnection);
assertTrue(brokerConnection.isConnected());
@@ -330,11 +328,11 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
final String consumerResourceName = AMQPBridgeManagementSupport.getBridgeAddressReceiverResourceName(getTestName(), getTestName(), "address-policy", getTestName());
final AMQPBridgeManagerControl bridgeControl =
- (AMQPBridgeManagerControl) server.getManagementService().getResource(bridgeResourceName);
+ (AMQPBridgeManagerControl) server.getManagementService().getUntypedControl(bridgeResourceName);
final AMQPBridgePolicyManagerControl addressPolicyControl =
- (AMQPBridgePolicyManagerControl) server.getManagementService().getResource(policyResourceName);
+ (AMQPBridgePolicyManagerControl) server.getManagementService().getUntypedControl(policyResourceName);
final AMQPBridgeReceiverControl consumerControl = (AMQPBridgeReceiverControl)
- server.getManagementService().getResource(consumerResourceName);
+ server.getManagementService().getUntypedControl(consumerResourceName);
assertNotNull(bridgeControl);
assertNotNull(addressPolicyControl);
@@ -349,9 +347,9 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
// Closing the connection without a detach or close frame should still cleanup the management
// resources for the consumer but the policy views should still be in place
- Wait.assertTrue(() -> server.getManagementService().getResource(consumerResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(consumerResourceName) == null, 5_000, 100);
- assertNotNull(server.getManagementService().getResource(policyResourceName));
+ assertNotNull(server.getManagementService().getUntypedControl(policyResourceName));
peer.close();
}
@@ -415,15 +413,15 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
- final String brokerConnectionName = ResourceNames.BROKER_CONNECTION + getTestName();
+ final String brokerConnectionName = getTestName();
final String bridgeResourceName = AMQPBridgeManagementSupport.getBridgeManagerResourceName(getTestName(), getTestName());
final String policyResourceName = AMQPBridgeManagementSupport.getBridgePolicyManagerResourceName(getTestName(), getTestName(), "queue-policy");
final String consumerResourceName = AMQPBridgeManagementSupport.getBridgeQueueReceiverResourceName(getTestName(), getTestName(), "queue-policy", getTestName() + "::" + getTestName());
- final BrokerConnectionControl brokerConnection = (BrokerConnectionControl)
- server.getManagementService().getResource(brokerConnectionName);
+ final BrokerConnectionControl brokerConnection =
+ server.getManagementService().getBrokerConnectionControl(brokerConnectionName);
final AMQPBridgeManagerControl bridgeControl =
- (AMQPBridgeManagerControl) server.getManagementService().getResource(bridgeResourceName);
+ (AMQPBridgeManagerControl) server.getManagementService().getUntypedControl(bridgeResourceName);
assertNotNull(brokerConnection);
assertTrue(brokerConnection.isConnected());
@@ -433,14 +431,14 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
assertEquals(0, bridgeControl.getMessagesSent());
final AMQPBridgePolicyManagerControl queuePolicyControl =
- (AMQPBridgePolicyManagerControl) server.getManagementService().getResource(policyResourceName);
+ (AMQPBridgePolicyManagerControl) server.getManagementService().getUntypedControl(policyResourceName);
assertNotNull(queuePolicyControl);
assertEquals("queue-policy", queuePolicyControl.getName());
assertEquals(0, queuePolicyControl.getMessagesReceived());
final AMQPBridgeReceiverControl consumerControl = (AMQPBridgeReceiverControl)
- server.getManagementService().getResource(consumerResourceName);
+ server.getManagementService().getUntypedControl(consumerResourceName);
assertNotNull(consumerControl);
assertEquals(getTestName(), consumerControl.getAddress());
@@ -454,9 +452,9 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
brokerConnection.stop();
// Stopping the connection should remove the bridge management objects.
- Wait.assertTrue(() -> server.getManagementService().getResource(consumerResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(consumerResourceName) == null, 5_000, 100);
- assertNotNull(server.getManagementService().getResource(policyResourceName));
+ assertNotNull(server.getManagementService().getUntypedControl(policyResourceName));
server.getBrokerConnections().forEach((brConnection) -> {
try {
@@ -466,9 +464,9 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
}
});
- Wait.assertTrue(() -> server.getManagementService().getResource(policyResourceName) == null, 5_000, 100);
- Wait.assertTrue(() -> server.getManagementService().getResource(bridgeResourceName) == null, 5_000, 100);
- Wait.assertTrue(() -> server.getManagementService().getResource(brokerConnectionName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(policyResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(bridgeResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getBrokerConnectionControl(brokerConnectionName) == null, 5_000, 100);
peer.close();
}
@@ -533,19 +531,19 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
- final String brokerConnectionName = ResourceNames.BROKER_CONNECTION + getTestName();
+ final String brokerConnectionName = getTestName();
final String bridgeResourceName = AMQPBridgeManagementSupport.getBridgeManagerResourceName(getTestName(), getTestName());
final String policyResourceName = AMQPBridgeManagementSupport.getBridgePolicyManagerResourceName(getTestName(), getTestName(), "queue-policy");
final String consumerResourceName = AMQPBridgeManagementSupport.getBridgeQueueReceiverResourceName(getTestName(), getTestName(), "queue-policy", getTestName() + "::" + getTestName());
- final BrokerConnectionControl brokerConnection = (BrokerConnectionControl)
- server.getManagementService().getResource(brokerConnectionName);
+ final BrokerConnectionControl brokerConnection =
+ server.getManagementService().getBrokerConnectionControl(brokerConnectionName);
final AMQPBridgeManagerControl bridgeControl =
- (AMQPBridgeManagerControl) server.getManagementService().getResource(bridgeResourceName);
+ (AMQPBridgeManagerControl) server.getManagementService().getUntypedControl(bridgeResourceName);
final AMQPBridgePolicyManagerControl queuePolicyControl =
- (AMQPBridgePolicyManagerControl) server.getManagementService().getResource(policyResourceName);
+ (AMQPBridgePolicyManagerControl) server.getManagementService().getUntypedControl(policyResourceName);
final AMQPBridgeReceiverControl consumerControl = (AMQPBridgeReceiverControl)
- server.getManagementService().getResource(consumerResourceName);
+ server.getManagementService().getUntypedControl(consumerResourceName);
assertNotNull(brokerConnection);
assertTrue(brokerConnection.isConnected());
@@ -558,8 +556,8 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
// Closing the connection without a detach or close frame should still cleanup the management
// resources for the consumer but the policy views should still be in place
- Wait.assertTrue(() -> server.getManagementService().getResource(consumerResourceName) == null, 5_000, 100);
- Wait.assertTrue(() -> server.getManagementService().getResource(policyResourceName) != null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(consumerResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(policyResourceName) != null, 5_000, 100);
}
}
}
@@ -622,19 +620,19 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
- final String brokerConnectionName = ResourceNames.BROKER_CONNECTION + getTestName();
+ final String brokerConnectionName = getTestName();
final String bridgeResourceName = AMQPBridgeManagementSupport.getBridgeManagerResourceName(getTestName(), getTestName());
final String policyResourceName = AMQPBridgeManagementSupport.getBridgePolicyManagerResourceName(getTestName(), getTestName(), "queue-policy");
final String consumerResourceName = AMQPBridgeManagementSupport.getBridgeQueueReceiverResourceName(getTestName(), getTestName(), "queue-policy", getTestName() + "::" + getTestName());
- final BrokerConnectionControl brokerConnection = (BrokerConnectionControl)
- server.getManagementService().getResource(brokerConnectionName);
+ final BrokerConnectionControl brokerConnection =
+ server.getManagementService().getBrokerConnectionControl(brokerConnectionName);
final AMQPBridgeManagerControl bridgeControl =
- (AMQPBridgeManagerControl) server.getManagementService().getResource(bridgeResourceName);
+ (AMQPBridgeManagerControl) server.getManagementService().getUntypedControl(bridgeResourceName);
final AMQPBridgePolicyManagerControl queuePolicyControl =
- (AMQPBridgePolicyManagerControl) server.getManagementService().getResource(policyResourceName);
+ (AMQPBridgePolicyManagerControl) server.getManagementService().getUntypedControl(policyResourceName);
final AMQPBridgeReceiverControl consumerControl = (AMQPBridgeReceiverControl)
- server.getManagementService().getResource(consumerResourceName);
+ server.getManagementService().getUntypedControl(consumerResourceName);
assertNotNull(brokerConnection);
assertTrue(brokerConnection.isConnected());
@@ -651,9 +649,9 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
// Closing the connection without a detach or close frame should still cleanup the management
// resources for the consumer but the policy views should still be in place
- Wait.assertTrue(() -> server.getManagementService().getResource(consumerResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(consumerResourceName) == null, 5_000, 100);
- assertNotNull(server.getManagementService().getResource(policyResourceName));
+ assertNotNull(server.getManagementService().getUntypedControl(policyResourceName));
peer.close();
}
@@ -711,7 +709,7 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
final String consumerResourceName = AMQPBridgeManagementSupport.getBridgeAddressReceiverResourceName(getTestName(), getTestName(), "address-policy", getTestName());
final AMQPBridgeManagerControl bridgeControl =
- (AMQPBridgeManagerControl) server.getManagementService().getResource(bridgeResourceName);
+ (AMQPBridgeManagerControl) server.getManagementService().getUntypedControl(bridgeResourceName);
final ConnectionFactory factory = CFUtil.createConnectionFactory("AMQP", "tcp://localhost:" + AMQP_PORT);
@@ -729,9 +727,9 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
final AMQPBridgePolicyManagerControl addressPolicyControl =
- (AMQPBridgePolicyManagerControl) server.getManagementService().getResource(policyResourceName);
+ (AMQPBridgePolicyManagerControl) server.getManagementService().getUntypedControl(policyResourceName);
final AMQPBridgeReceiverControl consumerControl = (AMQPBridgeReceiverControl)
- server.getManagementService().getResource(consumerResourceName);
+ server.getManagementService().getUntypedControl(consumerResourceName);
assertEquals(1, bridgeControl.getMessagesReceived());
assertEquals(1, addressPolicyControl.getMessagesReceived());
@@ -748,9 +746,9 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
// Policy bean should still be active but consumer bean should be unregistered
{
final AMQPBridgePolicyManagerControl addressPolicyControl =
- (AMQPBridgePolicyManagerControl) server.getManagementService().getResource(policyResourceName);
+ (AMQPBridgePolicyManagerControl) server.getManagementService().getUntypedControl(policyResourceName);
final AMQPBridgeReceiverControl consumerControl = (AMQPBridgeReceiverControl)
- server.getManagementService().getResource(consumerResourceName);
+ server.getManagementService().getUntypedControl(consumerResourceName);
assertNotNull(addressPolicyControl);
assertNull(consumerControl);
@@ -787,9 +785,9 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
final AMQPBridgePolicyManagerControl addressPolicyControl =
- (AMQPBridgePolicyManagerControl) server.getManagementService().getResource(policyResourceName);
+ (AMQPBridgePolicyManagerControl) server.getManagementService().getUntypedControl(policyResourceName);
final AMQPBridgeReceiverControl consumerControl = (AMQPBridgeReceiverControl)
- server.getManagementService().getResource(consumerResourceName);
+ server.getManagementService().getUntypedControl(consumerResourceName);
assertEquals(2, bridgeControl.getMessagesReceived());
assertEquals(2, addressPolicyControl.getMessagesReceived());
@@ -861,7 +859,7 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
final String consumerResourceName = AMQPBridgeManagementSupport.getBridgeQueueReceiverResourceName(getTestName(), getTestName(), "queue-policy", getTestName() + "::" + getTestName());
final AMQPBridgeManagerControl bridgeControl =
- (AMQPBridgeManagerControl) server.getManagementService().getResource(bridgeResourceName);
+ (AMQPBridgeManagerControl) server.getManagementService().getUntypedControl(bridgeResourceName);
final ConnectionFactory factory = CFUtil.createConnectionFactory("AMQP", "tcp://localhost:" + AMQP_PORT);
@@ -879,9 +877,9 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
final AMQPBridgePolicyManagerControl queuePolicyControl =
- (AMQPBridgePolicyManagerControl) server.getManagementService().getResource(policyResourceName);
+ (AMQPBridgePolicyManagerControl) server.getManagementService().getUntypedControl(policyResourceName);
final AMQPBridgeReceiverControl consumerControl = (AMQPBridgeReceiverControl)
- server.getManagementService().getResource(consumerResourceName);
+ server.getManagementService().getUntypedControl(consumerResourceName);
assertEquals(1, bridgeControl.getMessagesReceived());
assertEquals(1, queuePolicyControl.getMessagesReceived());
@@ -898,9 +896,9 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
// Policy bean should still be active but consumer bean should be unregistered
{
final AMQPBridgePolicyManagerControl queuePolicyControl =
- (AMQPBridgePolicyManagerControl) server.getManagementService().getResource(policyResourceName);
+ (AMQPBridgePolicyManagerControl) server.getManagementService().getUntypedControl(policyResourceName);
final AMQPBridgeReceiverControl consumerControl = (AMQPBridgeReceiverControl)
- server.getManagementService().getResource(consumerResourceName);
+ server.getManagementService().getUntypedControl(consumerResourceName);
assertNotNull(queuePolicyControl);
assertNull(consumerControl);
@@ -937,9 +935,9 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
final AMQPBridgePolicyManagerControl queuePolicyControl =
- (AMQPBridgePolicyManagerControl) server.getManagementService().getResource(policyResourceName);
+ (AMQPBridgePolicyManagerControl) server.getManagementService().getUntypedControl(policyResourceName);
final AMQPBridgeReceiverControl consumerControl = (AMQPBridgeReceiverControl)
- server.getManagementService().getResource(consumerResourceName);
+ server.getManagementService().getUntypedControl(consumerResourceName);
assertEquals(2, bridgeControl.getMessagesReceived());
assertEquals(2, queuePolicyControl.getMessagesReceived());
@@ -1001,21 +999,21 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
Wait.assertTrue(() -> server.bindingQuery(SimpleString.of(getTestName()), false).getQueueNames().size() >= 1);
- final String brokerConnectionName = ResourceNames.BROKER_CONNECTION + getTestName();
+ final String brokerConnectionName = getTestName();
final String bridgeResourceName = AMQPBridgeManagementSupport.getBridgeManagerResourceName(getTestName(), getTestName());
final String policyResourceName = AMQPBridgeManagementSupport.getBridgePolicyManagerResourceName(getTestName(), getTestName(), "to-address-policy");
final String producerResourceName = AMQPBridgeManagementSupport.getBridgeAddressSenderResourceName(getTestName(), getTestName(), "to-address-policy", getTestName());
- Wait.assertTrue(() -> server.getManagementService().getResource(producerResourceName) != null, 5_000, 50);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(producerResourceName) != null, 5_000, 50);
- final BrokerConnectionControl brokerConnection = (BrokerConnectionControl)
- server.getManagementService().getResource(brokerConnectionName);
+ final BrokerConnectionControl brokerConnection =
+ server.getManagementService().getBrokerConnectionControl(brokerConnectionName);
final AMQPBridgeManagerControl bridgeControl =
- (AMQPBridgeManagerControl) server.getManagementService().getResource(bridgeResourceName);
+ (AMQPBridgeManagerControl) server.getManagementService().getUntypedControl(bridgeResourceName);
final AMQPBridgePolicyManagerControl addressPolicyControl =
- (AMQPBridgePolicyManagerControl) server.getManagementService().getResource(policyResourceName);
+ (AMQPBridgePolicyManagerControl) server.getManagementService().getUntypedControl(policyResourceName);
final AMQPBridgeSenderControl producerControl = (AMQPBridgeSenderControl)
- server.getManagementService().getResource(producerResourceName);
+ server.getManagementService().getUntypedControl(producerResourceName);
assertNotNull(brokerConnection);
assertTrue(brokerConnection.isConnected());
@@ -1054,9 +1052,9 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
brokerConnection.stop();
// Stopping the connection should remove the bridge producer management objects.
- Wait.assertTrue(() -> server.getManagementService().getResource(producerResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(producerResourceName) == null, 5_000, 100);
- assertNotNull(server.getManagementService().getResource(policyResourceName));
+ assertNotNull(server.getManagementService().getUntypedControl(policyResourceName));
server.getBrokerConnections().forEach((connection) -> {
try {
@@ -1066,9 +1064,9 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
}
});
- Wait.assertTrue(() -> server.getManagementService().getResource(policyResourceName) == null, 5_000, 100);
- Wait.assertTrue(() -> server.getManagementService().getResource(bridgeResourceName) == null, 5_000, 100);
- Wait.assertTrue(() -> server.getManagementService().getResource(brokerConnectionName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(policyResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(bridgeResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getBrokerConnectionControl(brokerConnectionName) == null, 5_000, 100);
peer.close();
}
@@ -1121,21 +1119,21 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
Wait.assertTrue(() -> server.queueQuery(SimpleString.of(getTestName())).getConsumerCount() >= 1, 10_000);
- final String brokerConnectionName = ResourceNames.BROKER_CONNECTION + getTestName();
+ final String brokerConnectionName = getTestName();
final String bridgeResourceName = AMQPBridgeManagementSupport.getBridgeManagerResourceName(getTestName(), getTestName());
final String policyResourceName = AMQPBridgeManagementSupport.getBridgePolicyManagerResourceName(getTestName(), getTestName(), "to-queue-policy");
final String producerResourceName = AMQPBridgeManagementSupport.getBridgeAddressSenderResourceName(getTestName(), getTestName(), "to-queue-policy", getTestName() + "::" + getTestName());
- Wait.assertTrue(() -> server.getManagementService().getResource(producerResourceName) != null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(producerResourceName) != null, 5_000, 100);
- final BrokerConnectionControl brokerConnection = (BrokerConnectionControl)
- server.getManagementService().getResource(brokerConnectionName);
+ final BrokerConnectionControl brokerConnection =
+ server.getManagementService().getBrokerConnectionControl(brokerConnectionName);
final AMQPBridgeManagerControl bridgeControl =
- (AMQPBridgeManagerControl) server.getManagementService().getResource(bridgeResourceName);
+ (AMQPBridgeManagerControl) server.getManagementService().getUntypedControl(bridgeResourceName);
final AMQPBridgePolicyManagerControl queuePolicyControl =
- (AMQPBridgePolicyManagerControl) server.getManagementService().getResource(policyResourceName);
+ (AMQPBridgePolicyManagerControl) server.getManagementService().getUntypedControl(policyResourceName);
final AMQPBridgeSenderControl producerControl = (AMQPBridgeSenderControl)
- server.getManagementService().getResource(producerResourceName);
+ server.getManagementService().getUntypedControl(producerResourceName);
assertNotNull(brokerConnection);
assertTrue(brokerConnection.isConnected());
@@ -1174,9 +1172,9 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
brokerConnection.stop();
// Stopping the connection should remove the bridge producer management objects.
- Wait.assertTrue(() -> server.getManagementService().getResource(producerResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(producerResourceName) == null, 5_000, 100);
- assertNotNull(server.getManagementService().getResource(policyResourceName));
+ assertNotNull(server.getManagementService().getUntypedControl(policyResourceName));
server.getBrokerConnections().forEach((connection) -> {
try {
@@ -1186,9 +1184,9 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
}
});
- Wait.assertTrue(() -> server.getManagementService().getResource(policyResourceName) == null, 5_000, 100);
- Wait.assertTrue(() -> server.getManagementService().getResource(bridgeResourceName) == null, 5_000, 100);
- Wait.assertTrue(() -> server.getManagementService().getResource(brokerConnectionName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(policyResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(bridgeResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getBrokerConnectionControl(brokerConnectionName) == null, 5_000, 100);
peer.close();
}
@@ -1239,29 +1237,29 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
Wait.assertTrue(() -> server.bindingQuery(SimpleString.of(getTestName()), false).getQueueNames().size() >= 1);
- final String brokerConnectionName = ResourceNames.BROKER_CONNECTION + getTestName();
+ final String brokerConnectionName = getTestName();
final String bridgeResourceName = AMQPBridgeManagementSupport.getBridgeManagerResourceName(getTestName(), getTestName());
final String policyResourceName = AMQPBridgeManagementSupport.getBridgePolicyManagerResourceName(getTestName(), getTestName(), "to-address-policy");
final String producerResourceName = AMQPBridgeManagementSupport.getBridgeAddressSenderResourceName(getTestName(), getTestName(), "to-address-policy", getTestName());
- final BrokerConnectionControl brokerConnection = (BrokerConnectionControl)
- server.getManagementService().getResource(brokerConnectionName);
+ final BrokerConnectionControl brokerConnection =
+ server.getManagementService().getBrokerConnectionControl(brokerConnectionName);
final AMQPBridgeManagerControl bridgeControl =
- (AMQPBridgeManagerControl) server.getManagementService().getResource(bridgeResourceName);
+ (AMQPBridgeManagerControl) server.getManagementService().getUntypedControl(bridgeResourceName);
assertNotNull(brokerConnection);
assertNotNull(bridgeControl);
- Wait.assertTrue(() -> server.getManagementService().getResource(policyResourceName) != null, 5_000, 100);
- Wait.assertTrue(() -> server.getManagementService().getResource(producerResourceName) != null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(policyResourceName) != null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(producerResourceName) != null, 5_000, 100);
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
peer.close();
// Closing the connection without a detach or close frame should still cleanup the management
// resources for the consumer but the policy views should still be in place
- Wait.assertTrue(() -> server.getManagementService().getResource(producerResourceName) == null, 5_000, 100);
- Wait.assertTrue(() -> server.getManagementService().getResource(policyResourceName) != null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(producerResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(policyResourceName) != null, 5_000, 100);
}
}
@@ -1310,21 +1308,21 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
Wait.assertTrue(() -> server.bindingQuery(SimpleString.of(getTestName()), false).getQueueNames().size() >= 1);
- final String brokerConnectionName = ResourceNames.BROKER_CONNECTION + getTestName();
+ final String brokerConnectionName = getTestName();
final String bridgeResourceName = AMQPBridgeManagementSupport.getBridgeManagerResourceName(getTestName(), getTestName());
final String policyResourceName = AMQPBridgeManagementSupport.getBridgePolicyManagerResourceName(getTestName(), getTestName(), "to-address-policy");
final String producerResourceName = AMQPBridgeManagementSupport.getBridgeAddressSenderResourceName(getTestName(), getTestName(), "to-address-policy", getTestName());
- final BrokerConnectionControl brokerConnection = (BrokerConnectionControl)
- server.getManagementService().getResource(brokerConnectionName);
+ final BrokerConnectionControl brokerConnection =
+ server.getManagementService().getBrokerConnectionControl(brokerConnectionName);
final AMQPBridgeManagerControl bridgeControl =
- (AMQPBridgeManagerControl) server.getManagementService().getResource(bridgeResourceName);
+ (AMQPBridgeManagerControl) server.getManagementService().getUntypedControl(bridgeResourceName);
assertNotNull(brokerConnection);
assertNotNull(bridgeControl);
- Wait.assertTrue(() -> server.getManagementService().getResource(policyResourceName) != null, 5_000, 100);
- Wait.assertTrue(() -> server.getManagementService().getResource(producerResourceName) != null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(policyResourceName) != null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(producerResourceName) != null, 5_000, 100);
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
peer.expectDetach().optional();
@@ -1337,9 +1335,9 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
// Closing the connection without a detach or close frame should still cleanup the management
// resources for the consumer but the policy views should still be in place
- Wait.assertTrue(() -> server.getManagementService().getResource(producerResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(producerResourceName) == null, 5_000, 100);
- assertNotNull(server.getManagementService().getResource(policyResourceName));
+ assertNotNull(server.getManagementService().getUntypedControl(policyResourceName));
peer.close();
}
@@ -1392,21 +1390,21 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
Wait.assertTrue(() -> server.queueQuery(SimpleString.of(getTestName())).getConsumerCount() >= 1, 10_000);
- final String brokerConnectionName = ResourceNames.BROKER_CONNECTION + getTestName();
+ final String brokerConnectionName = getTestName();
final String bridgeResourceName = AMQPBridgeManagementSupport.getBridgeManagerResourceName(getTestName(), getTestName());
final String policyResourceName = AMQPBridgeManagementSupport.getBridgePolicyManagerResourceName(getTestName(), getTestName(), "to-queue-policy");
final String producerResourceName = AMQPBridgeManagementSupport.getBridgeAddressSenderResourceName(getTestName(), getTestName(), "to-queue-policy", getTestName() + "::" + getTestName());
- Wait.assertTrue(() -> server.getManagementService().getResource(brokerConnectionName) != null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getBrokerConnectionControl(brokerConnectionName) != null, 5_000, 100);
- final BrokerConnectionControl brokerConnection = (BrokerConnectionControl)
- server.getManagementService().getResource(brokerConnectionName);
+ final BrokerConnectionControl brokerConnection =
+ server.getManagementService().getBrokerConnectionControl(brokerConnectionName);
final AMQPBridgeManagerControl bridgeControl =
- (AMQPBridgeManagerControl) server.getManagementService().getResource(bridgeResourceName);
+ (AMQPBridgeManagerControl) server.getManagementService().getUntypedControl(bridgeResourceName);
final AMQPBridgePolicyManagerControl queuePolicyControl =
- (AMQPBridgePolicyManagerControl) server.getManagementService().getResource(policyResourceName);
+ (AMQPBridgePolicyManagerControl) server.getManagementService().getUntypedControl(policyResourceName);
final AMQPBridgeSenderControl producerControl = (AMQPBridgeSenderControl)
- server.getManagementService().getResource(producerResourceName);
+ server.getManagementService().getUntypedControl(producerResourceName);
assertNotNull(brokerConnection);
assertNotNull(bridgeControl);
@@ -1418,8 +1416,8 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
// Closing the connection without a detach or close frame should still cleanup the management
// resources for the consumer but the policy views should still be in place
- Wait.assertTrue(() -> server.getManagementService().getResource(producerResourceName) == null, 5_000, 100);
- Wait.assertTrue(() -> server.getManagementService().getResource(policyResourceName) != null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(producerResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(policyResourceName) != null, 5_000, 100);
}
}
@@ -1470,18 +1468,18 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
Wait.assertTrue(() -> server.queueQuery(SimpleString.of(getTestName())).getConsumerCount() >= 1, 10_000);
- final String brokerConnectionName = ResourceNames.BROKER_CONNECTION + getTestName();
+ final String brokerConnectionName = getTestName();
final String bridgeResourceName = AMQPBridgeManagementSupport.getBridgeManagerResourceName(getTestName(), getTestName());
final String policyResourceName = AMQPBridgeManagementSupport.getBridgePolicyManagerResourceName(getTestName(), getTestName(), "to-queue-policy");
final String producerResourceName = AMQPBridgeManagementSupport.getBridgeAddressSenderResourceName(getTestName(), getTestName(), "to-queue-policy", getTestName() + "::" + getTestName());
- Wait.assertTrue(() -> server.getManagementService().getResource(brokerConnectionName) != null, 5_000, 100);
- Wait.assertTrue(() -> server.getManagementService().getResource(bridgeResourceName) != null, 5_000, 100);
- Wait.assertTrue(() -> server.getManagementService().getResource(policyResourceName) != null, 5_000, 100);
- Wait.assertTrue(() -> server.getManagementService().getResource(producerResourceName) != null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getBrokerConnectionControl(brokerConnectionName) != null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(bridgeResourceName) != null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(policyResourceName) != null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(producerResourceName) != null, 5_000, 100);
- final BrokerConnectionControl brokerConnection = (BrokerConnectionControl)
- server.getManagementService().getResource(brokerConnectionName);
+ final BrokerConnectionControl brokerConnection =
+ server.getManagementService().getBrokerConnectionControl(brokerConnectionName);
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
peer.expectDetach().optional();
@@ -1494,9 +1492,9 @@ public class AMQPBridgeManagementTest extends AmqpClientTestSupport {
// Closing the connection without a detach or close frame should still cleanup the management
// resources for the consumer but the policy views should still be in place
- Wait.assertTrue(() -> server.getManagementService().getResource(producerResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(producerResourceName) == null, 5_000, 100);
- assertNotNull(server.getManagementService().getResource(policyResourceName));
+ assertNotNull(server.getManagementService().getUntypedControl(policyResourceName));
peer.close();
}
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/connect/AMQPFederationConfigurationReloadTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/connect/AMQPFederationConfigurationReloadTest.java
index 062ff29b8d..5e40198ef7 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/connect/AMQPFederationConfigurationReloadTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/connect/AMQPFederationConfigurationReloadTest.java
@@ -17,23 +17,14 @@
package org.apache.activemq.artemis.tests.integration.amqp.connect;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.ADDRESS_AUTO_DELETE;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.ADDRESS_AUTO_DELETE_DELAY;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.ADDRESS_AUTO_DELETE_MSG_COUNT;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.ADDRESS_RECEIVER_IDLE_TIMEOUT;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.FEDERATION_ADDRESS_RECEIVER;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.FEDERATION_CONTROL_LINK;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.FEDERATION_EVENT_LINK;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.FEDERATION_QUEUE_RECEIVER;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.FEDERATION_RECEIVER_PRIORITY;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationPolicySupport.DEFAULT_QUEUE_RECEIVER_PRIORITY_ADJUSTMENT;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationPolicySupport.FEDERATED_ADDRESS_SOURCE_PROPERTIES;
-import static org.hamcrest.CoreMatchers.allOf;
-import static org.hamcrest.CoreMatchers.containsString;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.Queue;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+import javax.jms.Topic;
import java.lang.invoke.MethodHandles;
import java.net.URI;
import java.net.URL;
@@ -45,20 +36,10 @@ import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
-import javax.jms.Connection;
-import javax.jms.ConnectionFactory;
-import javax.jms.MessageConsumer;
-import javax.jms.MessageProducer;
-import javax.jms.Queue;
-import javax.jms.Session;
-import javax.jms.TextMessage;
-import javax.jms.Topic;
-
import org.apache.activemq.artemis.api.core.QueueConfiguration;
import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.management.BrokerConnectionControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.core.config.amqpBrokerConnectivity.AMQPBrokerConnectConfiguration;
import org.apache.activemq.artemis.core.config.amqpBrokerConnectivity.AMQPFederatedBrokerConnectionElement;
import org.apache.activemq.artemis.core.config.amqpBrokerConnectivity.AMQPFederationAddressPolicyElement;
@@ -78,6 +59,23 @@ import org.junit.jupiter.api.Timeout;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.ADDRESS_AUTO_DELETE;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.ADDRESS_AUTO_DELETE_DELAY;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.ADDRESS_AUTO_DELETE_MSG_COUNT;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.ADDRESS_RECEIVER_IDLE_TIMEOUT;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.FEDERATION_ADDRESS_RECEIVER;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.FEDERATION_CONTROL_LINK;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.FEDERATION_EVENT_LINK;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.FEDERATION_QUEUE_RECEIVER;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.FEDERATION_RECEIVER_PRIORITY;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationPolicySupport.DEFAULT_QUEUE_RECEIVER_PRIORITY_ADJUSTMENT;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationPolicySupport.FEDERATED_ADDRESS_SOURCE_PROPERTIES;
+import static org.hamcrest.CoreMatchers.allOf;
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
/**
* Test for reload handling in the broker connection federation implementation
*/
@@ -194,8 +192,8 @@ public class AMQPFederationConfigurationReloadTest extends AmqpClientTestSupport
consumer.close();
- final BrokerConnectionControl brokerConnection = (BrokerConnectionControl)
- server.getManagementService().getResource(ResourceNames.BROKER_CONNECTION + getTestName());
+ final BrokerConnectionControl brokerConnection =
+ server.getManagementService().getBrokerConnectionControl(getTestName());
assertNotNull(brokerConnection);
assertTrue(brokerConnection.isConnected());
@@ -391,8 +389,8 @@ public class AMQPFederationConfigurationReloadTest extends AmqpClientTestSupport
.withOfferedCapabilities(FEDERATION_ADDRESS_RECEIVER.toString());
peer.expectFlow().withLinkCredit(1000);
- final BrokerConnectionControl brokerConnection = (BrokerConnectionControl)
- server.getManagementService().getResource(ResourceNames.BROKER_CONNECTION + getTestName());
+ final BrokerConnectionControl brokerConnection =
+ server.getManagementService().getBrokerConnectionControl(getTestName());
assertNotNull(brokerConnection);
assertTrue(brokerConnection.isConnected());
@@ -425,7 +423,7 @@ public class AMQPFederationConfigurationReloadTest extends AmqpClientTestSupport
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
- assertNull(server.getManagementService().getResource(ResourceNames.BROKER_CONNECTION + getTestName()));
+ assertNull(server.getManagementService().getBrokerConnectionControl(getTestName()));
assertNotNull(brokerConnection);
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/connect/AMQPFederationConnectTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/connect/AMQPFederationConnectTest.java
index 57965195b9..e84355992e 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/connect/AMQPFederationConnectTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/connect/AMQPFederationConnectTest.java
@@ -17,6 +17,49 @@
package org.apache.activemq.artemis.tests.integration.amqp.connect;
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.JMSException;
+import javax.jms.Session;
+import java.lang.invoke.MethodHandles;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.util.concurrent.ForkJoinPool;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.activemq.artemis.api.core.ActiveMQException;
+import org.apache.activemq.artemis.api.core.SimpleString;
+import org.apache.activemq.artemis.api.core.management.BrokerConnectionControl;
+import org.apache.activemq.artemis.core.config.amqpBrokerConnectivity.AMQPBrokerConnectConfiguration;
+import org.apache.activemq.artemis.core.config.amqpBrokerConnectivity.AMQPFederatedBrokerConnectionElement;
+import org.apache.activemq.artemis.core.config.amqpBrokerConnectivity.AMQPFederationAddressPolicyElement;
+import org.apache.activemq.artemis.core.config.amqpBrokerConnectivity.AMQPFederationQueuePolicyElement;
+import org.apache.activemq.artemis.core.server.ActiveMQServer;
+import org.apache.activemq.artemis.core.server.Queue;
+import org.apache.activemq.artemis.protocol.amqp.connect.federation.ActiveMQServerAMQPFederationPlugin;
+import org.apache.activemq.artemis.protocol.amqp.federation.FederationConsumerInfo;
+import org.apache.activemq.artemis.protocol.amqp.proton.AmqpSupport;
+import org.apache.activemq.artemis.tests.integration.amqp.AmqpClientTestSupport;
+import org.apache.activemq.artemis.tests.util.CFUtil;
+import org.apache.activemq.artemis.tests.util.Wait;
+import org.apache.qpid.proton.amqp.transport.AmqpError;
+import org.apache.qpid.protonj2.test.driver.ProtonTestClient;
+import org.apache.qpid.protonj2.test.driver.ProtonTestServer;
+import org.apache.qpid.protonj2.test.driver.matchers.messaging.MessageAnnotationsMatcher;
+import org.apache.qpid.protonj2.test.driver.matchers.transport.TransferPayloadCompositeMatcher;
+import org.apache.qpid.protonj2.test.driver.matchers.types.EncodedAmqpValueMatcher;
+import org.hamcrest.Matchers;
+import org.jgroups.util.UUID;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Timeout;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import static org.apache.activemq.artemis.protocol.amqp.connect.AMQPBrokerConnectionConstants.BROKER_CONNECTION_INFO;
import static org.apache.activemq.artemis.protocol.amqp.connect.AMQPBrokerConnectionConstants.CONNECTION_NAME;
import static org.apache.activemq.artemis.protocol.amqp.connect.AMQPBrokerConnectionConstants.NODE_ID;
@@ -69,51 +112,6 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
-import java.lang.invoke.MethodHandles;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-import java.util.concurrent.ForkJoinPool;
-import java.util.concurrent.TimeUnit;
-
-import javax.jms.Connection;
-import javax.jms.ConnectionFactory;
-import javax.jms.JMSException;
-import javax.jms.Session;
-
-import org.apache.activemq.artemis.api.core.ActiveMQException;
-import org.apache.activemq.artemis.api.core.SimpleString;
-import org.apache.activemq.artemis.api.core.management.BrokerConnectionControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
-import org.apache.activemq.artemis.core.config.amqpBrokerConnectivity.AMQPBrokerConnectConfiguration;
-import org.apache.activemq.artemis.core.config.amqpBrokerConnectivity.AMQPFederatedBrokerConnectionElement;
-import org.apache.activemq.artemis.core.config.amqpBrokerConnectivity.AMQPFederationAddressPolicyElement;
-import org.apache.activemq.artemis.core.config.amqpBrokerConnectivity.AMQPFederationQueuePolicyElement;
-import org.apache.activemq.artemis.core.server.ActiveMQServer;
-import org.apache.activemq.artemis.core.server.Queue;
-import org.apache.activemq.artemis.protocol.amqp.connect.federation.ActiveMQServerAMQPFederationPlugin;
-import org.apache.activemq.artemis.protocol.amqp.federation.FederationConsumerInfo;
-import org.apache.activemq.artemis.protocol.amqp.proton.AmqpSupport;
-import org.apache.activemq.artemis.tests.integration.amqp.AmqpClientTestSupport;
-import org.apache.activemq.artemis.tests.util.CFUtil;
-import org.apache.activemq.artemis.tests.util.Wait;
-import org.apache.qpid.proton.amqp.transport.AmqpError;
-import org.apache.qpid.protonj2.test.driver.ProtonTestClient;
-import org.apache.qpid.protonj2.test.driver.ProtonTestServer;
-import org.apache.qpid.protonj2.test.driver.matchers.messaging.MessageAnnotationsMatcher;
-import org.apache.qpid.protonj2.test.driver.matchers.transport.TransferPayloadCompositeMatcher;
-import org.apache.qpid.protonj2.test.driver.matchers.types.EncodedAmqpValueMatcher;
-import org.hamcrest.Matchers;
-import org.jgroups.util.UUID;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.Timeout;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
/**
* Tests basic connect handling of the AMQP federation feature.
*/
@@ -199,8 +197,8 @@ public class AMQPFederationConnectTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
- final BrokerConnectionControl brokerConnection = (BrokerConnectionControl)
- server.getManagementService().getResource(ResourceNames.BROKER_CONNECTION + getTestName());
+ final BrokerConnectionControl brokerConnection =
+ server.getManagementService().getBrokerConnectionControl(getTestName());
assertNotNull(brokerConnection);
assertTrue(brokerConnection.isConnected());
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/connect/AMQPFederationManagementTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/connect/AMQPFederationManagementTest.java
index c9ef4c1daf..53f4837c65 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/connect/AMQPFederationManagementTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/connect/AMQPFederationManagementTest.java
@@ -16,45 +16,13 @@
*/
package org.apache.activemq.artemis.tests.integration.amqp.connect;
-import static org.apache.activemq.artemis.protocol.amqp.connect.AMQPBrokerConnectionConstants.BROKER_CONNECTION_INFO;
-import static org.apache.activemq.artemis.protocol.amqp.connect.AMQPBrokerConnectionConstants.CONNECTION_NAME;
-import static org.apache.activemq.artemis.protocol.amqp.connect.AMQPBrokerConnectionConstants.NODE_ID;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.ADDRESS_AUTO_DELETE;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.ADDRESS_AUTO_DELETE_DELAY;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.ADDRESS_AUTO_DELETE_MSG_COUNT;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.ADDRESS_ENABLE_DIVERT_BINDINGS;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.ADDRESS_INCLUDES;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.ADDRESS_MAX_HOPS;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.ADDRESS_RECEIVER_IDLE_TIMEOUT;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.ADD_ADDRESS_POLICY;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.ADD_QUEUE_POLICY;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.FEDERATION_ADDRESS_RECEIVER;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.FEDERATION_CONFIGURATION;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.FEDERATION_CONTROL_LINK;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.FEDERATION_EVENT_LINK;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.FEDERATION_NAME;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.FEDERATION_POLICY_NAME;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.FEDERATION_QUEUE_RECEIVER;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.FEDERATION_RECEIVER_PRIORITY;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.OPERATION_TYPE;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.POLICY_NAME;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.QUEUE_INCLUDES;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.QUEUE_INCLUDE_FEDERATED;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.QUEUE_PRIORITY_ADJUSTMENT;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.QUEUE_RECEIVER_IDLE_TIMEOUT;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.RECEIVER_CREDITS;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.RECEIVER_CREDITS_LOW;
-import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationPolicySupport.DEFAULT_QUEUE_RECEIVER_PRIORITY_ADJUSTMENT;
-import static org.hamcrest.CoreMatchers.allOf;
-import static org.hamcrest.CoreMatchers.containsString;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertInstanceOf;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
-
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.Message;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.Session;
+import javax.jms.TextMessage;
import java.lang.invoke.MethodHandles;
import java.net.URI;
import java.util.ArrayList;
@@ -64,20 +32,11 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
-import javax.jms.Connection;
-import javax.jms.ConnectionFactory;
-import javax.jms.Message;
-import javax.jms.MessageConsumer;
-import javax.jms.MessageProducer;
-import javax.jms.Session;
-import javax.jms.TextMessage;
-
import org.apache.activemq.artemis.api.core.QueueConfiguration;
import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.management.BrokerConnectionControl;
import org.apache.activemq.artemis.api.core.management.RemoteBrokerConnectionControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.core.config.amqpBrokerConnectivity.AMQPBrokerConnectConfiguration;
import org.apache.activemq.artemis.core.config.amqpBrokerConnectivity.AMQPFederatedBrokerConnectionElement;
import org.apache.activemq.artemis.core.config.amqpBrokerConnectivity.AMQPFederationAddressPolicyElement;
@@ -87,11 +46,11 @@ import org.apache.activemq.artemis.core.server.impl.AddressInfo;
import org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConsumerControl;
import org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationControl;
import org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationLocalPolicyControl;
+import org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationLocalPolicyControlType;
import org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationManagementSupport;
import org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationProducerControl;
import org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationRemotePolicyControlType;
import org.apache.activemq.artemis.protocol.amqp.proton.AmqpSupport;
-import org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationLocalPolicyControlType;
import org.apache.activemq.artemis.tests.integration.amqp.AmqpClientTestSupport;
import org.apache.activemq.artemis.tests.util.CFUtil;
import org.apache.activemq.artemis.utils.Wait;
@@ -107,6 +66,45 @@ import org.junit.jupiter.api.Timeout;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static org.apache.activemq.artemis.protocol.amqp.connect.AMQPBrokerConnectionConstants.BROKER_CONNECTION_INFO;
+import static org.apache.activemq.artemis.protocol.amqp.connect.AMQPBrokerConnectionConstants.CONNECTION_NAME;
+import static org.apache.activemq.artemis.protocol.amqp.connect.AMQPBrokerConnectionConstants.NODE_ID;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.ADDRESS_AUTO_DELETE;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.ADDRESS_AUTO_DELETE_DELAY;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.ADDRESS_AUTO_DELETE_MSG_COUNT;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.ADDRESS_ENABLE_DIVERT_BINDINGS;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.ADDRESS_INCLUDES;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.ADDRESS_MAX_HOPS;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.ADDRESS_RECEIVER_IDLE_TIMEOUT;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.ADD_ADDRESS_POLICY;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.ADD_QUEUE_POLICY;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.FEDERATION_ADDRESS_RECEIVER;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.FEDERATION_CONFIGURATION;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.FEDERATION_CONTROL_LINK;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.FEDERATION_EVENT_LINK;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.FEDERATION_NAME;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.FEDERATION_POLICY_NAME;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.FEDERATION_QUEUE_RECEIVER;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.FEDERATION_RECEIVER_PRIORITY;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.OPERATION_TYPE;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.POLICY_NAME;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.QUEUE_INCLUDES;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.QUEUE_INCLUDE_FEDERATED;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.QUEUE_PRIORITY_ADJUSTMENT;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.QUEUE_RECEIVER_IDLE_TIMEOUT;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.RECEIVER_CREDITS;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConstants.RECEIVER_CREDITS_LOW;
+import static org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationPolicySupport.DEFAULT_QUEUE_RECEIVER_PRIORITY_ADJUSTMENT;
+import static org.hamcrest.CoreMatchers.allOf;
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertInstanceOf;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
+
/**
* Tests that the broker create management objects for federation configurations.
*/
@@ -185,10 +183,10 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
- final String brokerConnectionName = ResourceNames.BROKER_CONNECTION + getTestName();
+ final String brokerConnectionName = getTestName();
- final BrokerConnectionControl brokerConnection = (BrokerConnectionControl)
- server.getManagementService().getResource(brokerConnectionName);
+ final BrokerConnectionControl brokerConnection =
+ server.getManagementService().getBrokerConnectionControl(brokerConnectionName);
assertNotNull(brokerConnection);
assertTrue(brokerConnection.isConnected());
@@ -198,9 +196,9 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
final String consumerResourceName = AMQPFederationManagementSupport.getFederationSourceAddressConsumerResourceName(getTestName(), getTestName(), "address-policy", getTestName());
final AMQPFederationControl federationControl =
- (AMQPFederationControl) server.getManagementService().getResource(federationResourceName);
+ (AMQPFederationControl) server.getManagementService().getUntypedControl(federationResourceName);
final AMQPFederationLocalPolicyControl addressPolicyControl =
- (AMQPFederationLocalPolicyControl) server.getManagementService().getResource(policyResourceName);
+ (AMQPFederationLocalPolicyControl) server.getManagementService().getUntypedControl(policyResourceName);
assertNotNull(federationControl);
assertEquals(getTestName(), federationControl.getName());
@@ -212,7 +210,7 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
assertEquals(0, addressPolicyControl.getMessagesReceived());
final AMQPFederationConsumerControl consumerControl = (AMQPFederationConsumerControl)
- server.getManagementService().getResource(consumerResourceName);
+ server.getManagementService().getUntypedControl(consumerResourceName);
assertNotNull(consumerControl);
assertEquals(getTestName(), consumerControl.getAddress());
@@ -223,9 +221,9 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
brokerConnection.stop();
// Stopping the connection should remove the federation consumer management objects.
- Wait.assertTrue(() -> server.getManagementService().getResource(consumerResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(consumerResourceName) == null, 5_000, 100);
- assertNotNull(server.getManagementService().getResource(policyResourceName));
+ assertNotNull(server.getManagementService().getUntypedControl(policyResourceName));
server.getBrokerConnections().forEach((connection) -> {
try {
@@ -235,9 +233,9 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
}
});
- Wait.assertTrue(() -> server.getManagementService().getResource(policyResourceName) == null, 5_000, 100);
- Wait.assertTrue(() -> server.getManagementService().getResource(federationResourceName) == null, 5_000, 100);
- Wait.assertTrue(() -> server.getManagementService().getResource(brokerConnectionName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(policyResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(federationResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getBrokerConnectionControl(brokerConnectionName) == null, 5_000, 100);
peer.close();
}
@@ -302,8 +300,8 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
- final BrokerConnectionControl brokerConnection = (BrokerConnectionControl)
- server.getManagementService().getResource(ResourceNames.BROKER_CONNECTION + getTestName());
+ final BrokerConnectionControl brokerConnection =
+ server.getManagementService().getBrokerConnectionControl(getTestName());
assertNotNull(brokerConnection);
assertTrue(brokerConnection.isConnected());
@@ -313,11 +311,11 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
final String consumerResourceName = AMQPFederationManagementSupport.getFederationSourceAddressConsumerResourceName(getTestName(), getTestName(), "address-policy", getTestName());
final AMQPFederationControl federationControl =
- (AMQPFederationControl) server.getManagementService().getResource(federationResourceName);
+ (AMQPFederationControl) server.getManagementService().getUntypedControl(federationResourceName);
final AMQPFederationLocalPolicyControl addressPolicyControl =
- (AMQPFederationLocalPolicyControl) server.getManagementService().getResource(policyResourceName);
+ (AMQPFederationLocalPolicyControl) server.getManagementService().getUntypedControl(policyResourceName);
final AMQPFederationConsumerControl consumerControl = (AMQPFederationConsumerControl)
- server.getManagementService().getResource(consumerResourceName);
+ server.getManagementService().getUntypedControl(consumerResourceName);
assertNotNull(federationControl);
assertNotNull(addressPolicyControl);
@@ -328,8 +326,8 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
// Closing the connection without a detach or close frame should still cleanup the management
// resources for the consumer but the policy views should still be in place
- Wait.assertTrue(() -> server.getManagementService().getResource(consumerResourceName) == null, 5_000, 100);
- Wait.assertTrue(() -> server.getManagementService().getResource(policyResourceName) != null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(consumerResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(policyResourceName) != null, 5_000, 100);
}
}
@@ -392,8 +390,8 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
- final BrokerConnectionControl brokerConnection = (BrokerConnectionControl)
- server.getManagementService().getResource(ResourceNames.BROKER_CONNECTION + getTestName());
+ final BrokerConnectionControl brokerConnection =
+ server.getManagementService().getBrokerConnectionControl(getTestName());
assertNotNull(brokerConnection);
assertTrue(brokerConnection.isConnected());
@@ -403,11 +401,11 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
final String consumerResourceName = AMQPFederationManagementSupport.getFederationSourceAddressConsumerResourceName(getTestName(), getTestName(), "address-policy", getTestName());
final AMQPFederationControl federationControl =
- (AMQPFederationControl) server.getManagementService().getResource(federationResourceName);
+ (AMQPFederationControl) server.getManagementService().getUntypedControl(federationResourceName);
final AMQPFederationLocalPolicyControl addressPolicyControl =
- (AMQPFederationLocalPolicyControl) server.getManagementService().getResource(policyResourceName);
+ (AMQPFederationLocalPolicyControl) server.getManagementService().getUntypedControl(policyResourceName);
final AMQPFederationConsumerControl consumerControl = (AMQPFederationConsumerControl)
- server.getManagementService().getResource(consumerResourceName);
+ server.getManagementService().getUntypedControl(consumerResourceName);
assertNotNull(federationControl);
assertNotNull(addressPolicyControl);
@@ -422,9 +420,9 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
// Closing the connection without a detach or close frame should still cleanup the management
// resources for the consumer but the policy views should still be in place
- Wait.assertTrue(() -> server.getManagementService().getResource(consumerResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(consumerResourceName) == null, 5_000, 100);
- assertNotNull(server.getManagementService().getResource(policyResourceName));
+ assertNotNull(server.getManagementService().getUntypedControl(policyResourceName));
peer.close();
}
@@ -498,15 +496,15 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
- final String brokerConnectionName = ResourceNames.BROKER_CONNECTION + getTestName();
+ final String brokerConnectionName = getTestName();
final String federationResourceName = AMQPFederationManagementSupport.getFederationSourceResourceName(getTestName(), getTestName());
final String policyResourceName = AMQPFederationManagementSupport.getFederationSourcePolicyResourceName(getTestName(), getTestName(), "queue-policy");
final String consumerResourceName = AMQPFederationManagementSupport.getFederationSourceAddressConsumerResourceName(getTestName(), getTestName(), "queue-policy", getTestName() + "::" + getTestName());
- final BrokerConnectionControl brokerConnection = (BrokerConnectionControl)
- server.getManagementService().getResource(brokerConnectionName);
+ final BrokerConnectionControl brokerConnection =
+ server.getManagementService().getBrokerConnectionControl(brokerConnectionName);
final AMQPFederationControl federationControl =
- (AMQPFederationControl) server.getManagementService().getResource(federationResourceName);
+ (AMQPFederationControl) server.getManagementService().getUntypedControl(federationResourceName);
assertNotNull(brokerConnection);
assertTrue(brokerConnection.isConnected());
@@ -516,14 +514,14 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
assertEquals(0, federationControl.getMessagesSent());
final AMQPFederationLocalPolicyControlType queuePolicyControl =
- (AMQPFederationLocalPolicyControlType) server.getManagementService().getResource(policyResourceName);
+ (AMQPFederationLocalPolicyControlType) server.getManagementService().getUntypedControl(policyResourceName);
assertNotNull(queuePolicyControl);
assertEquals("queue-policy", queuePolicyControl.getName());
assertEquals(0, queuePolicyControl.getMessagesReceived());
final AMQPFederationConsumerControl consumerControl =
- (AMQPFederationConsumerControl) server.getManagementService().getResource(consumerResourceName);
+ (AMQPFederationConsumerControl) server.getManagementService().getUntypedControl(consumerResourceName);
assertNotNull(consumerControl);
assertEquals(getTestName(), consumerControl.getAddress());
@@ -537,9 +535,9 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
brokerConnection.stop();
// Stopping the connection should remove the federation management objects.
- Wait.assertTrue(() -> server.getManagementService().getResource(consumerResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(consumerResourceName) == null, 5_000, 100);
- assertNotNull(server.getManagementService().getResource(policyResourceName));
+ assertNotNull(server.getManagementService().getUntypedControl(policyResourceName));
server.getBrokerConnections().forEach((brConnection) -> {
try {
@@ -549,9 +547,9 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
}
});
- Wait.assertTrue(() -> server.getManagementService().getResource(policyResourceName) == null, 5_000, 100);
- Wait.assertTrue(() -> server.getManagementService().getResource(federationResourceName) == null, 5_000, 100);
- Wait.assertTrue(() -> server.getManagementService().getResource(brokerConnectionName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(policyResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(federationResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getBrokerConnectionControl(brokerConnectionName) == null, 5_000, 100);
peer.close();
}
@@ -630,18 +628,18 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
final String policyResourceName = AMQPFederationManagementSupport.getFederationSourcePolicyResourceName(getTestName(), getTestName(), "queue-policy");
final String consumerResourceName = AMQPFederationManagementSupport.getFederationSourceAddressConsumerResourceName(getTestName(), getTestName(), "queue-policy", getTestName() + "::" + getTestName());
- final BrokerConnectionControl brokerConnection = (BrokerConnectionControl)
- server.getManagementService().getResource(ResourceNames.BROKER_CONNECTION + getTestName());
+ final BrokerConnectionControl brokerConnection =
+ server.getManagementService().getBrokerConnectionControl(getTestName());
assertNotNull(brokerConnection);
assertTrue(brokerConnection.isConnected());
final AMQPFederationControl federationControl =
- (AMQPFederationControl) server.getManagementService().getResource(federationResourceName);
+ (AMQPFederationControl) server.getManagementService().getUntypedControl(federationResourceName);
final AMQPFederationLocalPolicyControlType queuePolicyControl =
- (AMQPFederationLocalPolicyControlType) server.getManagementService().getResource(policyResourceName);
+ (AMQPFederationLocalPolicyControlType) server.getManagementService().getUntypedControl(policyResourceName);
final AMQPFederationConsumerControl consumerControl =
- (AMQPFederationConsumerControl) server.getManagementService().getResource(consumerResourceName);
+ (AMQPFederationConsumerControl) server.getManagementService().getUntypedControl(consumerResourceName);
assertNotNull(federationControl);
assertNotNull(queuePolicyControl);
@@ -652,8 +650,8 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
// Closing the connection without a detach or close frame should still cleanup the management
// resources for the consumer but the policy views should still be in place
- Wait.assertTrue(() -> server.getManagementService().getResource(consumerResourceName) == null, 5_000, 100);
- Wait.assertTrue(() -> server.getManagementService().getResource(policyResourceName) != null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(consumerResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(policyResourceName) != null, 5_000, 100);
}
}
}
@@ -730,18 +728,18 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
final String policyResourceName = AMQPFederationManagementSupport.getFederationSourcePolicyResourceName(getTestName(), getTestName(), "queue-policy");
final String consumerResourceName = AMQPFederationManagementSupport.getFederationSourceAddressConsumerResourceName(getTestName(), getTestName(), "queue-policy", getTestName() + "::" + getTestName());
- final BrokerConnectionControl brokerConnection = (BrokerConnectionControl)
- server.getManagementService().getResource(ResourceNames.BROKER_CONNECTION + getTestName());
+ final BrokerConnectionControl brokerConnection =
+ server.getManagementService().getBrokerConnectionControl(getTestName());
assertNotNull(brokerConnection);
assertTrue(brokerConnection.isConnected());
final AMQPFederationControl federationControl =
- (AMQPFederationControl) server.getManagementService().getResource(federationResourceName);
+ (AMQPFederationControl) server.getManagementService().getUntypedControl(federationResourceName);
final AMQPFederationLocalPolicyControlType queuePolicyControl =
- (AMQPFederationLocalPolicyControlType) server.getManagementService().getResource(policyResourceName);
+ (AMQPFederationLocalPolicyControlType) server.getManagementService().getUntypedControl(policyResourceName);
final AMQPFederationConsumerControl consumerControl =
- (AMQPFederationConsumerControl) server.getManagementService().getResource(consumerResourceName);
+ (AMQPFederationConsumerControl) server.getManagementService().getUntypedControl(consumerResourceName);
assertNotNull(federationControl);
assertNotNull(queuePolicyControl);
@@ -756,9 +754,9 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
// Closing the connection without a detach or close frame should still cleanup the management
// resources for the consumer but the policy views should still be in place
- Wait.assertTrue(() -> server.getManagementService().getResource(consumerResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(consumerResourceName) == null, 5_000, 100);
- assertNotNull(server.getManagementService().getResource(policyResourceName));
+ assertNotNull(server.getManagementService().getUntypedControl(policyResourceName));
peer.close();
}
@@ -821,7 +819,7 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
final String consumerResourceName = AMQPFederationManagementSupport.getFederationSourceAddressConsumerResourceName(getTestName(), getTestName(), "address-policy", getTestName());
final AMQPFederationControl federationControl =
- (AMQPFederationControl) server.getManagementService().getResource(federationResourceName);
+ (AMQPFederationControl) server.getManagementService().getUntypedControl(federationResourceName);
final ConnectionFactory factory = CFUtil.createConnectionFactory("AMQP", "tcp://localhost:" + AMQP_PORT);
@@ -839,9 +837,9 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
final AMQPFederationLocalPolicyControl addressPolicyControl = (AMQPFederationLocalPolicyControl)
- server.getManagementService().getResource(policyResourceName);
+ server.getManagementService().getUntypedControl(policyResourceName);
final AMQPFederationConsumerControl consumerControl = (AMQPFederationConsumerControl)
- server.getManagementService().getResource(consumerResourceName);
+ server.getManagementService().getUntypedControl(consumerResourceName);
assertEquals(1, federationControl.getMessagesReceived());
assertEquals(1, addressPolicyControl.getMessagesReceived());
@@ -858,9 +856,9 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
// Policy bean should still be active but consumer bean should be unregistered
{
final AMQPFederationLocalPolicyControl addressPolicyControl = (AMQPFederationLocalPolicyControl)
- server.getManagementService().getResource(policyResourceName);
+ server.getManagementService().getUntypedControl(policyResourceName);
final AMQPFederationConsumerControl consumerControl = (AMQPFederationConsumerControl)
- server.getManagementService().getResource(consumerResourceName);
+ server.getManagementService().getUntypedControl(consumerResourceName);
assertNotNull(addressPolicyControl);
assertNull(consumerControl);
@@ -895,9 +893,9 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
final AMQPFederationLocalPolicyControl addressPolicyControl = (AMQPFederationLocalPolicyControl)
- server.getManagementService().getResource(policyResourceName);
+ server.getManagementService().getUntypedControl(policyResourceName);
final AMQPFederationConsumerControl consumerControl = (AMQPFederationConsumerControl)
- server.getManagementService().getResource(consumerResourceName);
+ server.getManagementService().getUntypedControl(consumerResourceName);
assertEquals(2, federationControl.getMessagesReceived());
assertEquals(2, addressPolicyControl.getMessagesReceived());
@@ -973,7 +971,7 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
final String consumerResourceName = AMQPFederationManagementSupport.getFederationSourceAddressConsumerResourceName(getTestName(), getTestName(), "queue-policy", getTestName() + "::" + getTestName());
final AMQPFederationControl federationControl =
- (AMQPFederationControl) server.getManagementService().getResource(federationResourceName);
+ (AMQPFederationControl) server.getManagementService().getUntypedControl(federationResourceName);
final ConnectionFactory factory = CFUtil.createConnectionFactory("AMQP", "tcp://localhost:" + AMQP_PORT);
@@ -991,9 +989,9 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
final AMQPFederationLocalPolicyControlType queuePolicyControl = (AMQPFederationLocalPolicyControlType)
- server.getManagementService().getResource(policyResourceName);
+ server.getManagementService().getUntypedControl(policyResourceName);
final AMQPFederationConsumerControl consumerControl = (AMQPFederationConsumerControl)
- server.getManagementService().getResource(consumerResourceName);
+ server.getManagementService().getUntypedControl(consumerResourceName);
assertEquals(1, federationControl.getMessagesReceived());
assertEquals(1, queuePolicyControl.getMessagesReceived());
@@ -1010,9 +1008,9 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
// Policy bean should still be active but consumer bean should be unregistered
{
final AMQPFederationLocalPolicyControlType queuePolicyControl = (AMQPFederationLocalPolicyControlType)
- server.getManagementService().getResource(policyResourceName);
+ server.getManagementService().getUntypedControl(policyResourceName);
final AMQPFederationConsumerControl consumerControl = (AMQPFederationConsumerControl)
- server.getManagementService().getResource(consumerResourceName);
+ server.getManagementService().getUntypedControl(consumerResourceName);
assertNotNull(queuePolicyControl);
assertNull(consumerControl);
@@ -1047,9 +1045,9 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
final AMQPFederationLocalPolicyControlType queuePolicyControl = (AMQPFederationLocalPolicyControlType)
- server.getManagementService().getResource(policyResourceName);
+ server.getManagementService().getUntypedControl(policyResourceName);
final AMQPFederationConsumerControl consumerControl = (AMQPFederationConsumerControl)
- server.getManagementService().getResource(consumerResourceName);
+ server.getManagementService().getUntypedControl(consumerResourceName);
assertEquals(2, federationControl.getMessagesReceived());
assertEquals(2, queuePolicyControl.getMessagesReceived());
@@ -1175,11 +1173,11 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
final AMQPFederationControl federationControl =
- (AMQPFederationControl) server.getManagementService().getResource(federationResourceName);
+ (AMQPFederationControl) server.getManagementService().getUntypedControl(federationResourceName);
final AMQPFederationRemotePolicyControlType remotePolicyControl = (AMQPFederationRemotePolicyControlType)
- server.getManagementService().getResource(policyResourceName);
+ server.getManagementService().getUntypedControl(policyResourceName);
AMQPFederationProducerControl producerControl = (AMQPFederationProducerControl)
- server.getManagementService().getResource(producerResourceName);
+ server.getManagementService().getUntypedControl(producerResourceName);
assertNotNull(remotePolicyControl);
assertNotNull(producerControl);
@@ -1215,7 +1213,7 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(500000, TimeUnit.SECONDS);
// Should have cleaned up the producer management resource
- assertNull(server.getManagementService().getResource(producerResourceName));
+ assertNull(server.getManagementService().getUntypedControl(producerResourceName));
peer.expectAttach().ofSender().withName("federation-address-receiver")
.withOfferedCapabilities(FEDERATION_ADDRESS_RECEIVER.toString())
@@ -1242,7 +1240,7 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.expectTransfer().accept(); // Federated message
producerControl = (AMQPFederationProducerControl)
- server.getManagementService().getResource(producerResourceName);
+ server.getManagementService().getUntypedControl(producerResourceName);
assertNotNull(producerControl);
assertEquals(getTestName(), producerControl.getAddress());
@@ -1264,7 +1262,7 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.close();
// Connection drop should clean up producer instance from management.
- Wait.assertTrue(() -> server.getManagementService().getResource(producerResourceName) == null, 5000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(producerResourceName) == null, 5000, 100);
}
}
@@ -1364,14 +1362,14 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
peer.expectConnectionToDrop();
- final BrokerConnectionControl brokerConnection = (BrokerConnectionControl)
- server.getManagementService().getResource(ResourceNames.BROKER_CONNECTION + getTestName());
+ final BrokerConnectionControl brokerConnection =
+ server.getManagementService().getBrokerConnectionControl(getTestName());
final AMQPFederationControl federationControl =
- (AMQPFederationControl) server.getManagementService().getResource(federationResourceName);
+ (AMQPFederationControl) server.getManagementService().getUntypedControl(federationResourceName);
final AMQPFederationRemotePolicyControlType remotePolicyControl = (AMQPFederationRemotePolicyControlType)
- server.getManagementService().getResource(policyResourceName);
+ server.getManagementService().getUntypedControl(policyResourceName);
final AMQPFederationProducerControl producerControl = (AMQPFederationProducerControl)
- server.getManagementService().getResource(producerResourceName);
+ server.getManagementService().getUntypedControl(producerResourceName);
assertNotNull(brokerConnection);
assertTrue(brokerConnection.isConnected());
@@ -1386,9 +1384,9 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
// Broker connection stop should clean up producer instance from management.
- Wait.assertTrue(() -> server.getManagementService().getResource(producerResourceName) == null, 10_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(producerResourceName) == null, 10_000, 100);
- assertNotNull(server.getManagementService().getResource(policyResourceName));
+ assertNotNull(server.getManagementService().getUntypedControl(policyResourceName));
peer.close();
}
@@ -1501,11 +1499,11 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
final AMQPFederationControl federationControl =
- (AMQPFederationControl) server.getManagementService().getResource(federationResourceName);
+ (AMQPFederationControl) server.getManagementService().getUntypedControl(federationResourceName);
final AMQPFederationRemotePolicyControlType remotePolicyControl = (AMQPFederationRemotePolicyControlType)
- server.getManagementService().getResource(policyResourceName);
+ server.getManagementService().getUntypedControl(policyResourceName);
AMQPFederationProducerControl producerControl = (AMQPFederationProducerControl)
- server.getManagementService().getResource(producerResourceName);
+ server.getManagementService().getUntypedControl(producerResourceName);
assertNotNull(remotePolicyControl);
assertNotNull(producerControl);
@@ -1541,7 +1539,7 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(500000, TimeUnit.SECONDS);
// Should have cleaned up the producer management resource
- assertNull(server.getManagementService().getResource(producerResourceName));
+ assertNull(server.getManagementService().getUntypedControl(producerResourceName));
peer.expectAttach().ofSender().withName("federation-queue-receiver")
.withOfferedCapabilities(FEDERATION_QUEUE_RECEIVER.toString())
@@ -1568,7 +1566,7 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.expectTransfer().accept(); // Federated message
producerControl = (AMQPFederationProducerControl)
- server.getManagementService().getResource(producerResourceName);
+ server.getManagementService().getUntypedControl(producerResourceName);
assertNotNull(producerControl);
assertEquals(getTestName(), producerControl.getQueueName());
@@ -1589,7 +1587,7 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.close();
- Wait.assertTrue(() -> server.getManagementService().getResource(producerResourceName) == null, 5000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(producerResourceName) == null, 5000, 100);
}
}
@@ -1686,14 +1684,14 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
- final BrokerConnectionControl brokerConnection = (BrokerConnectionControl)
- server.getManagementService().getResource(ResourceNames.BROKER_CONNECTION + getTestName());
+ final BrokerConnectionControl brokerConnection =
+ server.getManagementService().getBrokerConnectionControl(getTestName());
final AMQPFederationControl federationControl =
- (AMQPFederationControl) server.getManagementService().getResource(federationResourceName);
+ (AMQPFederationControl) server.getManagementService().getUntypedControl(federationResourceName);
final AMQPFederationRemotePolicyControlType remotePolicyControl = (AMQPFederationRemotePolicyControlType)
- server.getManagementService().getResource(policyResourceName);
+ server.getManagementService().getUntypedControl(policyResourceName);
final AMQPFederationProducerControl producerControl = (AMQPFederationProducerControl)
- server.getManagementService().getResource(producerResourceName);
+ server.getManagementService().getUntypedControl(producerResourceName);
assertNotNull(brokerConnection);
assertTrue(brokerConnection.isConnected());
@@ -1708,9 +1706,9 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
// Broker connection stop should clean up producer instance from management.
- Wait.assertTrue(() -> server.getManagementService().getResource(producerResourceName) == null, 5_000, 100);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(producerResourceName) == null, 5_000, 100);
- assertNotNull(server.getManagementService().getResource(policyResourceName));
+ assertNotNull(server.getManagementService().getUntypedControl(policyResourceName));
peer.close();
}
@@ -1724,7 +1722,7 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
final String serverNodeId = server.getNodeID().toString();
final String brokerConnectionName = getTestName();
- final String remoteBrokerConnectionName = ResourceNames.REMOTE_BROKER_CONNECTION + server.getNodeID() + "." + getTestName();
+ final String remoteBrokerConnectionName = server.getNodeID() + "." + getTestName();
final String federationResourceName =
AMQPFederationManagementSupport.getFederationTargetResourceName(serverNodeId, brokerConnectionName, getTestName());
final String policyResourceName = AMQPFederationManagementSupport.getFederationTargetPolicyResourceName(serverNodeId, brokerConnectionName, getTestName(), "address-policy");
@@ -1737,15 +1735,15 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
- final RemoteBrokerConnectionControl remoteBrokerConnection = (RemoteBrokerConnectionControl)
- server.getManagementService().getResource(remoteBrokerConnectionName);
+ final RemoteBrokerConnectionControl remoteBrokerConnection =
+ server.getManagementService().getRemoteBrokerConnectionControl(remoteBrokerConnectionName);
assertNotNull(remoteBrokerConnection);
assertEquals(getTestName(), remoteBrokerConnection.getName());
assertEquals(server.getNodeID().toString(), remoteBrokerConnection.getNodeId());
final AMQPFederationControl federationControl =
- (AMQPFederationControl) server.getManagementService().getResource(federationResourceName);
+ (AMQPFederationControl) server.getManagementService().getUntypedControl(federationResourceName);
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
peer.expectAttach().ofSender().withName(getTestName())
@@ -1770,9 +1768,9 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
final AMQPFederationRemotePolicyControlType remotePolicyControl = (AMQPFederationRemotePolicyControlType)
- server.getManagementService().getResource(policyResourceName);
+ server.getManagementService().getUntypedControl(policyResourceName);
final AMQPFederationProducerControl producerControl = (AMQPFederationProducerControl)
- server.getManagementService().getResource(producerResourceName);
+ server.getManagementService().getUntypedControl(producerResourceName);
assertNotNull(federationControl);
assertNotNull(remotePolicyControl);
@@ -1785,10 +1783,10 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
peer.close();
- Wait.assertTrue(() -> server.getManagementService().getResource(remoteBrokerConnectionName) == null, 5_000, 50);
- Wait.assertTrue(() -> server.getManagementService().getResource(federationResourceName) == null, 5_000, 50);
- Wait.assertTrue(() -> server.getManagementService().getResource(policyResourceName) == null, 5_000, 50);
- Wait.assertTrue(() -> server.getManagementService().getResource(producerResourceName) == null, 5_000, 50);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(remoteBrokerConnectionName) == null, 5_000, 50);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(federationResourceName) == null, 5_000, 50);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(policyResourceName) == null, 5_000, 50);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(producerResourceName) == null, 5_000, 50);
}
// Test registers and cleans up on connection dropped
@@ -1799,7 +1797,7 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
final AMQPFederationControl federationControl =
- (AMQPFederationControl) server.getManagementService().getResource(federationResourceName);
+ (AMQPFederationControl) server.getManagementService().getUntypedControl(federationResourceName);
assertNotNull(federationControl);
@@ -1826,9 +1824,9 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
final AMQPFederationRemotePolicyControlType remotePolicyControl = (AMQPFederationRemotePolicyControlType)
- server.getManagementService().getResource(policyResourceName);
+ server.getManagementService().getUntypedControl(policyResourceName);
final AMQPFederationProducerControl producerControl = (AMQPFederationProducerControl)
- server.getManagementService().getResource(producerResourceName);
+ server.getManagementService().getUntypedControl(producerResourceName);
assertNotNull(federationControl);
assertNotNull(remotePolicyControl);
@@ -1837,8 +1835,8 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
peer.close();
- Wait.assertTrue(() -> server.getManagementService().getResource(remoteBrokerConnectionName) == null, 5_000, 50);
- Wait.assertTrue(() -> server.getManagementService().getResource(federationResourceName) == null, 5_000, 50);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(remoteBrokerConnectionName) == null, 5_000, 50);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(federationResourceName) == null, 5_000, 50);
}
}
@@ -1852,7 +1850,7 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
final String serverNodeId = server.getNodeID().toString();
final String brokerConnectionName = getTestName();
- final String remoteBrokerConnectionName = ResourceNames.REMOTE_BROKER_CONNECTION + server.getNodeID() + "." + getTestName();
+ final String remoteBrokerConnectionName = server.getNodeID() + "." + getTestName();
final String federationResourceName =
AMQPFederationManagementSupport.getFederationTargetResourceName(serverNodeId, brokerConnectionName, getTestName());
final String policyResourceName = AMQPFederationManagementSupport.getFederationTargetPolicyResourceName(serverNodeId, brokerConnectionName, getTestName(), "queue-policy");
@@ -1865,15 +1863,15 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
- final RemoteBrokerConnectionControl remoteBrokerConnection = (RemoteBrokerConnectionControl)
- server.getManagementService().getResource(remoteBrokerConnectionName);
+ final RemoteBrokerConnectionControl remoteBrokerConnection =
+ server.getManagementService().getRemoteBrokerConnectionControl(remoteBrokerConnectionName);
assertNotNull(remoteBrokerConnection);
assertEquals(getTestName(), remoteBrokerConnection.getName());
assertEquals(server.getNodeID().toString(), remoteBrokerConnection.getNodeId());
final AMQPFederationControl federationControl =
- (AMQPFederationControl) server.getManagementService().getResource(federationResourceName);
+ (AMQPFederationControl) server.getManagementService().getUntypedControl(federationResourceName);
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
peer.expectAttach().ofSender().withName(getTestName() + "::" + getTestName())
@@ -1899,9 +1897,9 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
final AMQPFederationRemotePolicyControlType remotePolicyControl = (AMQPFederationRemotePolicyControlType)
- server.getManagementService().getResource(policyResourceName);
+ server.getManagementService().getUntypedControl(policyResourceName);
final AMQPFederationProducerControl producerControl = (AMQPFederationProducerControl)
- server.getManagementService().getResource(producerResourceName);
+ server.getManagementService().getUntypedControl(producerResourceName);
assertNotNull(federationControl);
assertNotNull(remotePolicyControl);
@@ -1914,10 +1912,10 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
peer.close();
- Wait.assertTrue(() -> server.getManagementService().getResource(remoteBrokerConnectionName) == null, 5_000, 50);
- Wait.assertTrue(() -> server.getManagementService().getResource(federationResourceName) == null, 5_000, 50);
- Wait.assertTrue(() -> server.getManagementService().getResource(policyResourceName) == null, 5_000, 50);
- Wait.assertTrue(() -> server.getManagementService().getResource(producerResourceName) == null, 5_000, 50);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(remoteBrokerConnectionName) == null, 5_000, 50);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(federationResourceName) == null, 5_000, 50);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(policyResourceName) == null, 5_000, 50);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(producerResourceName) == null, 5_000, 50);
}
// Test registers and cleans up on connection dropped
@@ -1928,7 +1926,7 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
final AMQPFederationControl federationControl =
- (AMQPFederationControl) server.getManagementService().getResource(federationResourceName);
+ (AMQPFederationControl) server.getManagementService().getUntypedControl(federationResourceName);
assertNotNull(federationControl);
@@ -1956,9 +1954,9 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
final AMQPFederationRemotePolicyControlType remotePolicyControl = (AMQPFederationRemotePolicyControlType)
- server.getManagementService().getResource(policyResourceName);
+ server.getManagementService().getUntypedControl(policyResourceName);
final AMQPFederationProducerControl producerControl = (AMQPFederationProducerControl)
- server.getManagementService().getResource(producerResourceName);
+ server.getManagementService().getUntypedControl(producerResourceName);
assertNotNull(federationControl);
assertNotNull(remotePolicyControl);
@@ -1967,8 +1965,8 @@ class AMQPFederationManagementTest extends AmqpClientTestSupport {
peer.waitForScriptToComplete(5, TimeUnit.SECONDS);
peer.close();
- Wait.assertTrue(() -> server.getManagementService().getResource(remoteBrokerConnectionName) == null, 5_000, 50);
- Wait.assertTrue(() -> server.getManagementService().getResource(federationResourceName) == null, 5_000, 50);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(remoteBrokerConnectionName) == null, 5_000, 50);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControl(federationResourceName) == null, 5_000, 50);
}
}
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/connect/AMQPFederationServerToServerTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/connect/AMQPFederationServerToServerTest.java
index 6faf80eae8..7dd6ec9e47 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/connect/AMQPFederationServerToServerTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/connect/AMQPFederationServerToServerTest.java
@@ -59,6 +59,7 @@ import org.apache.activemq.artemis.core.config.amqpBrokerConnectivity.AMQPFedera
import org.apache.activemq.artemis.core.server.ActiveMQServer;
import org.apache.activemq.artemis.core.server.ComponentConfigurationRoutingType;
import org.apache.activemq.artemis.core.server.impl.AddressInfo;
+import org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationConsumerControlType;
import org.apache.activemq.artemis.protocol.amqp.proton.AmqpSupport;
import org.apache.activemq.artemis.tests.integration.amqp.AmqpClientTestSupport;
import org.apache.activemq.artemis.tests.util.CFUtil;
@@ -1701,9 +1702,9 @@ public class AMQPFederationServerToServerTest extends AmqpClientTestSupport {
producerR.send(message);
server.start();
- String resourceName = "brokerconnection." + getTestName() + ".federation." + getTestName();
+
// check federation has reconnected
- Wait.assertTrue(() -> server.getManagementService().getResource(resourceName) != null);
+ Wait.assertTrue(() -> server.getManagementService().getUntypedControls(AMQPFederationConsumerControlType.class).size() == 1);
Wait.assertTrue(() -> server.bindingQuery(SimpleString.of(getTestName()), false).getQueueNames().size() >= 1);
Wait.assertTrue(() -> remoteServer.bindingQuery(SimpleString.of(getTestName()), false).getQueueNames().size() >= 1);
@@ -1794,9 +1795,9 @@ public class AMQPFederationServerToServerTest extends AmqpClientTestSupport {
producerL.send(message);
remoteServer.start();
- String resourceName = "brokerconnection." + getTestName() + ".federation." + getTestName() + ".policy.test-policy.consumer." + getTestName();
+
// check federation has reconnected
- Wait.assertTrue(() -> remoteServer.getManagementService().getResource(resourceName) != null);
+ Wait.assertTrue(() -> remoteServer.getManagementService().getUntypedControls(AMQPFederationConsumerControlType.class).size() == 1);
Wait.assertTrue(() -> server.bindingQuery(SimpleString.of(getTestName()), false).getQueueNames().size() >= 1);
Wait.assertTrue(() -> remoteServer.bindingQuery(SimpleString.of(getTestName()), false).getQueueNames().size() >= 1);
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AddressPauseTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AddressPauseTest.java
index ee440831fc..a11be3eb41 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AddressPauseTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AddressPauseTest.java
@@ -16,21 +16,21 @@
*/
package org.apache.activemq.artemis.tests.integration.client;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
import javax.jms.Connection;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import javax.jms.TopicSubscriber;
+
import org.apache.activemq.artemis.api.core.management.AddressControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.tests.util.JMSTestBase;
import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
public class AddressPauseTest extends JMSTestBase {
@@ -47,7 +47,7 @@ public class AddressPauseTest extends JMSTestBase {
try (Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE)) {
Topic topic = session.createTopic("jms.topic.MyTopic");
TopicSubscriber subscriber1 = session.createDurableSubscriber(topic, "my-subscription1");
- AddressControl addressControl = (AddressControl) server.getManagementService().getResource(ResourceNames.ADDRESS + "jms.topic.MyTopic");
+ AddressControl addressControl = server.getManagementService().getAddressControl("jms.topic.MyTopic");
MessageProducer producer = session.createProducer(topic);
final int numMessages = 100;
for (int i = 0; i < numMessages; i++) {
@@ -101,7 +101,7 @@ public class AddressPauseTest extends JMSTestBase {
try (Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE)) {
Topic topic = session.createTopic("jms.topic.MyTopic");
TopicSubscriber subscriber1 = session.createDurableSubscriber(topic, "my-subscription1");
- AddressControl addressControl = (AddressControl) server.getManagementService().getResource(ResourceNames.ADDRESS + "jms.topic.MyTopic");
+ AddressControl addressControl = server.getManagementService().getAddressControl("jms.topic.MyTopic");
MessageProducer producer = session.createProducer(topic);
for (int i = 0; i < numMessages; i++) {
TextMessage mess = session.createTextMessage("msg" + i);
@@ -128,7 +128,7 @@ public class AddressPauseTest extends JMSTestBase {
try (Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE)) {
Topic topic = session.createTopic("jms.topic.MyTopic");
TopicSubscriber subscriber1 = session.createDurableSubscriber(topic, "my-subscription1");
- AddressControl addressControl = (AddressControl) server.getManagementService().getResource(ResourceNames.ADDRESS + "jms.topic.MyTopic");
+ AddressControl addressControl = server.getManagementService().getAddressControl("jms.topic.MyTopic");
MessageProducer producer = session.createProducer(topic);
assertTrue(addressControl.isPaused());
//subscriber2 should be paused too
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AutoCreateJmsDestinationTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AutoCreateJmsDestinationTest.java
index e1717f4286..918f068477 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AutoCreateJmsDestinationTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AutoCreateJmsDestinationTest.java
@@ -16,16 +16,6 @@
*/
package org.apache.activemq.artemis.tests.integration.client;
-import static org.apache.activemq.artemis.api.core.management.ResourceNames.ADDRESS;
-import static org.apache.activemq.artemis.api.core.management.ResourceNames.QUEUE;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertInstanceOf;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
-
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
@@ -46,7 +36,6 @@ import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.client.ClientSession;
import org.apache.activemq.artemis.api.core.client.ClientSessionFactory;
import org.apache.activemq.artemis.api.core.client.ServerLocator;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.api.jms.ActiveMQJMSClient;
import org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl;
import org.apache.activemq.artemis.core.postoffice.impl.PostOfficeImpl;
@@ -61,9 +50,9 @@ import org.apache.activemq.artemis.jms.client.ActiveMQTemporaryTopic;
import org.apache.activemq.artemis.jms.client.ActiveMQTopic;
import org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager;
import org.apache.activemq.artemis.tests.util.JMSTestBase;
-import org.apache.activemq.artemis.utils.RandomUtil;
import org.apache.activemq.artemis.tests.util.Wait;
import org.apache.activemq.artemis.utils.CompositeAddress;
+import org.apache.activemq.artemis.utils.RandomUtil;
import org.apache.activemq.artemis.utils.UUIDGenerator;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
@@ -72,6 +61,14 @@ import org.junit.jupiter.api.Timeout;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertInstanceOf;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
+
public class AutoCreateJmsDestinationTest extends JMSTestBase {
private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
@@ -108,8 +105,8 @@ public class AutoCreateJmsDestinationTest extends JMSTestBase {
}
// make sure the JMX control was created for the address and queue
- assertNotNull(server.getManagementService().getResource(ADDRESS + QUEUE_NAME));
- assertNotNull(server.getManagementService().getResource(QUEUE + QUEUE_NAME));
+ assertNotNull(server.getManagementService().getAddressControl(QUEUE_NAME));
+ assertNotNull(server.getManagementService().getQueueControl(QUEUE_NAME));
connection.close();
}
@@ -143,8 +140,8 @@ public class AutoCreateJmsDestinationTest extends JMSTestBase {
}
// make sure the JMX control was created for the address and queue
- assertNotNull(server.getManagementService().getResource(ADDRESS + addressName));
- assertNotNull(server.getManagementService().getResource(QUEUE + queueName));
+ assertNotNull(server.getManagementService().getAddressControl(addressName));
+ assertNotNull(server.getManagementService().getQueueControl(queueName));
connection.close();
}
@@ -245,7 +242,7 @@ public class AutoCreateJmsDestinationTest extends JMSTestBase {
connection.close();
- assertNotNull(server.getManagementService().getResource(ResourceNames.ADDRESS + "test"));
+ assertNotNull(server.getManagementService().getAddressControl("test"));
}
@Test
@@ -304,14 +301,14 @@ public class AutoCreateJmsDestinationTest extends JMSTestBase {
connection.start();
assertNotNull(consumer.receive(500));
- assertNotNull(server.getManagementService().getResource(ResourceNames.ADDRESS + topicName));
+ assertNotNull(server.getManagementService().getAddressControl(topicName));
connection.close();
PostOfficeTestAccessor.reapAddresses((PostOfficeImpl) server.getPostOffice());
PostOfficeTestAccessor.reapAddresses((PostOfficeImpl) server.getPostOffice());
- Wait.assertTrue(() -> server.getManagementService().getResource(ResourceNames.ADDRESS + topicName) == null);
+ Wait.assertTrue(() -> server.getManagementService().getAddressControl(topicName) == null);
}
@Test
@@ -330,7 +327,7 @@ public class AutoCreateJmsDestinationTest extends JMSTestBase {
connection.close();
- assertNotNull(server.getManagementService().getResource(ResourceNames.ADDRESS + "test"));
+ assertNotNull(server.getManagementService().getAddressControl("test"));
assertNotNull(server.locateQueue(SimpleString.of("myClientID.myDurableSub")));
}
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AutoDeleteJmsDestinationTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AutoDeleteJmsDestinationTest.java
index dc2f5ff419..ef20f3566e 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AutoDeleteJmsDestinationTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AutoDeleteJmsDestinationTest.java
@@ -37,6 +37,7 @@ import org.apache.activemq.artemis.core.server.Queue;
import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
import org.apache.activemq.artemis.tests.util.JMSTestBase;
import org.apache.activemq.artemis.tests.util.Wait;
+import org.apache.activemq.artemis.utils.DestinationUtil;
import org.junit.jupiter.api.Test;
public class AutoDeleteJmsDestinationTest extends JMSTestBase {
@@ -49,11 +50,12 @@ public class AutoDeleteJmsDestinationTest extends JMSTestBase {
@Test
public void testAutoDeleteQueue() throws Exception {
+ final String queueName = "test";
Connection connection = cf.createConnection();
try {
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
- javax.jms.Queue queue = ActiveMQJMSClient.createQueue("test");
+ javax.jms.Queue queue = ActiveMQJMSClient.createQueue(queueName);
MessageProducer producer = session.createProducer(queue);
@@ -75,14 +77,14 @@ public class AutoDeleteJmsDestinationTest extends JMSTestBase {
}
Wait.waitFor(() -> {
- Binding binding = server.getPostOffice().getBinding(SimpleString.of("test"));
+ Binding binding = server.getPostOffice().getBinding(SimpleString.of(queueName));
if (binding == null) {
return false;
}
return binding.getBindable() != null;
});
// ensure the queue is still there
- Queue q = (Queue) server.getPostOffice().getBinding(SimpleString.of("test")).getBindable();
+ Queue q = (Queue) server.getPostOffice().getBinding(SimpleString.of(queueName)).getBindable();
Wait.assertEquals(1, q::getMessageCount);
assertEquals(numMessages, q.getMessagesAdded());
@@ -94,14 +96,12 @@ public class AutoDeleteJmsDestinationTest extends JMSTestBase {
connection.close();
- SimpleString qname = SimpleString.of("test");
- Wait.waitFor(() -> server.getPostOffice().getBinding(qname) == null);
-
+ SimpleString queueNameSimple = SimpleString.of(queueName);
// ensure the queue was removed
- assertNull(server.getPostOffice().getBinding(SimpleString.of("test")));
+ Wait.waitFor(() -> server.getPostOffice().getBinding(queueNameSimple) == null);
// make sure the JMX control was removed for the JMS queue
- assertNull(server.getManagementService().getResource("test"));
+ assertNull(server.getManagementService().getQueueControl(queueName));
messageConsumer2.close();
} finally {
@@ -156,10 +156,11 @@ public class AutoDeleteJmsDestinationTest extends JMSTestBase {
@Test
public void testAutoDeleteTopic() throws Exception {
+ final String topicName = "test";
Connection connection = cf.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
- javax.jms.Topic topic = ActiveMQJMSClient.createTopic("test");
+ javax.jms.Topic topic = ActiveMQJMSClient.createTopic(topicName);
MessageConsumer messageConsumer = session.createConsumer(topic);
MessageProducer producer = session.createProducer(topic);
@@ -181,13 +182,12 @@ public class AutoDeleteJmsDestinationTest extends JMSTestBase {
connection.close();
- SimpleString qName = SimpleString.of("test");
- Wait.waitFor(() -> server.locateQueue(qName) == null);
+ SimpleString topicNameSimple = SimpleString.of(topicName);
// ensure the topic was removed
- assertNull(server.locateQueue(qName));
+ Wait.waitFor(() -> server.getAddressInfo(topicNameSimple) == null);
// make sure the JMX control was removed for the JMS topic
- assertNull(server.getManagementService().getResource("jtest"));
+ assertNull(server.getManagementService().getAddressControl(topicName));
}
@Test
@@ -225,13 +225,17 @@ public class AutoDeleteJmsDestinationTest extends JMSTestBase {
@Test
public void testAutoDeleteTopicDurableSubscriber() throws Exception {
+ final String topicName = "test";
+ final String subscriptionName = "mySub";
+ final String clientID = "myClientID";
+
Connection connection = cf.createConnection();
- connection.setClientID("myClientID");
+ connection.setClientID(clientID);
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
- javax.jms.Topic topic = ActiveMQJMSClient.createTopic("test");
+ javax.jms.Topic topic = ActiveMQJMSClient.createTopic(topicName);
- MessageConsumer messageConsumer = session.createDurableConsumer(topic, "mySub");
+ MessageConsumer messageConsumer = session.createDurableConsumer(topic, subscriptionName);
MessageProducer producer = session.createProducer(topic);
final int numMessages = 100;
@@ -250,14 +254,14 @@ public class AutoDeleteJmsDestinationTest extends JMSTestBase {
}
messageConsumer.close();
- session.unsubscribe("mySub");
+ session.unsubscribe(subscriptionName);
connection.close();
// ensure the topic was removed
- assertNull(server.locateQueue(SimpleString.of("test")));
+ assertNull(server.locateQueue(DestinationUtil.createQueueNameForSubscription(true, clientID, subscriptionName)));
// make sure the JMX control was removed for the JMS topic
- assertNull(server.getManagementService().getResource("test"));
+ assertNull(server.getManagementService().getAddressControl(topicName));
}
}
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/JMSMessageCounterTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/JMSMessageCounterTest.java
index 8311108bb5..f657a1a9b8 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/JMSMessageCounterTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/JMSMessageCounterTest.java
@@ -16,24 +16,22 @@
*/
package org.apache.activemq.artemis.tests.integration.client;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
-
import java.lang.invoke.MethodHandles;
import org.apache.activemq.artemis.api.core.management.QueueControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.tests.util.JMSTestBase;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
public class JMSMessageCounterTest extends JMSTestBase {
private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
@@ -62,7 +60,7 @@ public class JMSMessageCounterTest extends JMSTestBase {
conn.close();
- QueueControl control = (QueueControl) server.getManagementService().getResource(ResourceNames.QUEUE + queue.getQueueName());
+ QueueControl control = server.getManagementService().getQueueControl(queue.getQueueName());
assertNotNull(control);
logger.debug(control.listMessageCounterAsHTML());
@@ -71,7 +69,7 @@ public class JMSMessageCounterTest extends JMSTestBase {
restartServer();
- control = (QueueControl) server.getManagementService().getResource(ResourceNames.QUEUE + queue.getQueueName());
+ control = server.getManagementService().getQueueControl(queue.getQueueName());
assertNotNull(control);
logger.debug(control.listMessageCounterAsHTML());
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/LargeMessageCompressTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/LargeMessageCompressTest.java
index 8f2a57571b..106053be3a 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/LargeMessageCompressTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/LargeMessageCompressTest.java
@@ -16,13 +16,14 @@
*/
package org.apache.activemq.artemis.tests.integration.client;
-import static org.junit.jupiter.api.Assertions.assertArrayEquals;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assumptions.assumeTrue;
-
+import javax.jms.BytesMessage;
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.Destination;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.Session;
+import javax.management.openmbean.CompositeData;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
@@ -49,9 +50,7 @@ import org.apache.activemq.artemis.api.core.client.ClientSession;
import org.apache.activemq.artemis.api.core.client.ClientSessionFactory;
import org.apache.activemq.artemis.api.core.client.ServerLocator;
import org.apache.activemq.artemis.api.core.management.QueueControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.core.config.StoreConfiguration;
-import org.apache.activemq.artemis.core.management.impl.QueueControlImpl;
import org.apache.activemq.artemis.core.server.ActiveMQServer;
import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
import org.apache.activemq.artemis.tests.extensions.parameterized.ParameterizedTestExtension;
@@ -60,14 +59,12 @@ import org.apache.activemq.artemis.utils.RandomUtil;
import org.junit.jupiter.api.TestTemplate;
import org.junit.jupiter.api.extension.ExtendWith;
-import javax.jms.BytesMessage;
-import javax.jms.Connection;
-import javax.jms.ConnectionFactory;
-import javax.jms.Destination;
-import javax.jms.MessageConsumer;
-import javax.jms.MessageProducer;
-import javax.jms.Session;
-import javax.management.openmbean.CompositeData;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
//Parameters set in superclass
@ExtendWith(ParameterizedTestExtension.class)
@@ -119,7 +116,7 @@ public class LargeMessageCompressTest extends LargeMessageTestBase {
session.close();
- QueueControlImpl queueControl = (QueueControlImpl) server.getManagementService().getResource("queue.SimpleAddress");
+ QueueControl queueControl = server.getManagementService().getQueueControl(ADDRESS.toString());
CompositeData[] browse = queueControl.browse();
@@ -673,12 +670,9 @@ public class LargeMessageCompressTest extends LargeMessageTestBase {
producer2.send(message2);
producer3.send(message3);
- QueueControl queueControl1 = (QueueControl)server.getManagementService().
- getResource(ResourceNames.QUEUE + address1);
- QueueControl queueControl2 = (QueueControl)server.getManagementService().
- getResource(ResourceNames.QUEUE + address2);
- QueueControl queueControl3 = (QueueControl)server.getManagementService().
- getResource(ResourceNames.QUEUE + address3);
+ QueueControl queueControl1 = server.getManagementService().getQueueControl(address1.toString());
+ QueueControl queueControl2 = server.getManagementService().getQueueControl(address2.toString());
+ QueueControl queueControl3 = server.getManagementService().getQueueControl(address3.toString());
assertEquals(1, queueControl1.getMessageCount());
assertEquals(1, queueControl2.getMessageCount());
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/MultipleProducersTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/MultipleProducersTest.java
index fe762e8241..a7f7d71a4b 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/MultipleProducersTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/MultipleProducersTest.java
@@ -16,9 +16,6 @@
*/
package org.apache.activemq.artemis.tests.integration.client;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.fail;
-
import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.Message;
@@ -28,7 +25,6 @@ import javax.jms.Session;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.management.QueueControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.core.settings.HierarchicalRepository;
import org.apache.activemq.artemis.core.settings.impl.AddressFullMessagePolicy;
import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
@@ -38,6 +34,9 @@ import org.apache.activemq.artemis.tests.util.Wait;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.fail;
+
public class MultipleProducersTest extends JMSTestBase {
public Connection conn;
@@ -129,7 +128,7 @@ public class MultipleProducersTest extends JMSTestBase {
// after draining queueOne send 5 message to queueOne
queueTwoMsgCount = server.locateQueue(queueTwoName).getMessageCount();
- control = (QueueControl) server.getManagementService().getResource(ResourceNames.QUEUE + queueOne.getQueueName());
+ control = server.getManagementService().getQueueControl(queueOne.getQueueName());
control.removeMessages(null);
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/bridge/BridgeReconnectTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/bridge/BridgeReconnectTest.java
index b8e9ccc230..b3859460bb 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/bridge/BridgeReconnectTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/bridge/BridgeReconnectTest.java
@@ -45,7 +45,6 @@ import org.apache.activemq.artemis.api.core.client.ClientSession;
import org.apache.activemq.artemis.api.core.client.ClientSessionFactory;
import org.apache.activemq.artemis.api.core.client.ServerLocator;
import org.apache.activemq.artemis.api.core.management.QueueControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.core.config.BridgeConfiguration;
import org.apache.activemq.artemis.core.persistence.impl.journal.JournalRecordIds;
import org.apache.activemq.artemis.core.remoting.impl.invm.InVMConnector;
@@ -410,7 +409,7 @@ public class BridgeReconnectTest extends BridgeTestBase {
forwardingConnection.fail(new ActiveMQNotConnectedException());
final ManagementService managementService = server0.getManagementService();
- QueueControl coreQueueControl = (QueueControl) managementService.getResource(ResourceNames.QUEUE + queueName);
+ QueueControl coreQueueControl = managementService.getQueueControl(queueName);
assertEquals(0, coreQueueControl.getDeliveringCount());
final int numMessages = NUM_MESSAGES;
@@ -477,7 +476,7 @@ public class BridgeReconnectTest extends BridgeTestBase {
session1.start();
final ManagementService managementService = server0.getManagementService();
- QueueControl coreQueueControl = (QueueControl) managementService.getResource(ResourceNames.QUEUE + queueName);
+ QueueControl coreQueueControl = managementService.getQueueControl(queueName);
assertEquals(0, coreQueueControl.getDeliveringCount());
final int numMessages = NUM_MESSAGES;
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/bridge/BridgeTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/bridge/BridgeTest.java
index acd400207a..388e2278ba 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/bridge/BridgeTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/bridge/BridgeTest.java
@@ -2147,10 +2147,10 @@ public class BridgeTest extends ActiveMQTestBase {
.setStaticConnectors(connectors)
.setConcurrency(concurrency);
server.deployBridge(config);
- assertEquals(concurrency, server.getManagementService().getBridgeControls().size());
+ assertEquals(concurrency, server.getManagementService().getBridgeControlCount());
server.destroyBridge(config.getName());
- assertEquals(0, server.getManagementService().getBridgeControls().size());
+ assertEquals(0, server.getManagementService().getBridgeControlCount());
}
@TestTemplate
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/bridge/ClusteredBridgeReconnectTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/bridge/ClusteredBridgeReconnectTest.java
index 2807071454..f181d8bcc3 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/bridge/ClusteredBridgeReconnectTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/bridge/ClusteredBridgeReconnectTest.java
@@ -33,7 +33,6 @@ import org.apache.activemq.artemis.api.core.client.ClientProducer;
import org.apache.activemq.artemis.api.core.client.ClientSession;
import org.apache.activemq.artemis.api.core.client.TopologyMember;
import org.apache.activemq.artemis.api.core.management.AddressControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.core.client.impl.TopologyMemberImpl;
import org.apache.activemq.artemis.core.postoffice.Binding;
import org.apache.activemq.artemis.core.postoffice.Bindings;
@@ -372,9 +371,7 @@ public class ClusteredBridgeReconnectTest extends ClusterTestBase {
assertNull(consumer1.receiveImmediate());
//pause address from node0
- String addressControlResourceName = ResourceNames.ADDRESS + "queues.testaddress";
- Object resource = servers[0].getManagementService().getResource(addressControlResourceName);
- AddressControl addressControl0 = (AddressControl) resource;
+ AddressControl addressControl0 = servers[0].getManagementService().getAddressControl("queues.testaddress");
addressControl0.pause();
Bindings bindings0 = servers[0].getPostOffice().getBindingsForAddress(SimpleString.of("queues.testaddress"));
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/distribution/ClusteredMessageCounterTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/distribution/ClusteredMessageCounterTest.java
index 2c583b4f66..a719559ea2 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/distribution/ClusteredMessageCounterTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/distribution/ClusteredMessageCounterTest.java
@@ -16,8 +16,15 @@
*/
package org.apache.activemq.artemis.tests.integration.cluster.distribution;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
import org.apache.activemq.artemis.api.core.ActiveMQException;
import org.apache.activemq.artemis.api.core.client.ClientConsumer;
@@ -27,7 +34,6 @@ import org.apache.activemq.artemis.api.core.client.ClientSessionFactory;
import org.apache.activemq.artemis.api.core.management.ActiveMQServerControl;
import org.apache.activemq.artemis.api.core.management.MessageCounterInfo;
import org.apache.activemq.artemis.api.core.management.QueueControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.core.config.impl.ConfigurationImpl;
import org.apache.activemq.artemis.core.server.cluster.impl.MessageLoadBalancingType;
import org.apache.activemq.artemis.core.settings.impl.AddressFullMessagePolicy;
@@ -36,15 +42,8 @@ import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Timer;
-import java.util.TimerTask;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicInteger;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
public class ClusteredMessageCounterTest extends ClusterTestBase {
private AtomicInteger total = new AtomicInteger();
@@ -136,7 +135,7 @@ public class ClusteredMessageCounterTest extends ClusterTestBase {
verifyReceiveAllOnSingleConsumer(true, 0, numMsg, 1);
- QueueControl control = (QueueControl) servers[1].getManagementService().getResource(ResourceNames.QUEUE + "queue0");
+ QueueControl control = servers[1].getManagementService().getQueueControl("queue0");
//wait up to 30sec to allow the counter get updated
long timeout = 30000;
@@ -172,8 +171,8 @@ public class ClusteredMessageCounterTest extends ClusterTestBase {
}
});
- QueueControl control = (QueueControl) servers[1].getManagementService().getResource(ResourceNames.QUEUE + "queue0");
- ActiveMQServerControl serverControl = (ActiveMQServerControl) servers[1].getManagementService().getResource(ResourceNames.BROKER);
+ QueueControl control = servers[1].getManagementService().getQueueControl("queue0");
+ ActiveMQServerControl serverControl = (ActiveMQServerControl) servers[1].getManagementService().getServerControl();
serverControl.setMessageCounterSamplePeriod(300);
CountDownLatch resultLatch = new CountDownLatch(40);
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/failover/BackupSyncJournalTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/failover/BackupSyncJournalTest.java
index 61fe649b92..6184ebc513 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/failover/BackupSyncJournalTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/failover/BackupSyncJournalTest.java
@@ -32,8 +32,6 @@ import org.apache.activemq.artemis.api.core.client.ClientProducer;
import org.apache.activemq.artemis.api.core.client.ClientSession;
import org.apache.activemq.artemis.api.core.client.FailoverEventListener;
import org.apache.activemq.artemis.api.core.client.FailoverEventType;
-import org.apache.activemq.artemis.api.core.management.QueueControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryInternal;
import org.apache.activemq.artemis.core.client.impl.ServerLocatorInternal;
import org.apache.activemq.artemis.core.config.Configuration;
@@ -311,7 +309,7 @@ public class BackupSyncJournalTest extends FailoverTestBase {
final boolean purgeOnNoConsumers = true;
createProducerSendSomeMessages();
primaryServer.getServer().locateQueue(ADDRESS).setPurgeOnNoConsumers(purgeOnNoConsumers);
- assertEquals(n_msgs, ((QueueControl) primaryServer.getServer().getManagementService().getResource(ResourceNames.QUEUE + ADDRESS.toString())).removeAllMessages());
+ assertEquals(n_msgs, primaryServer.getServer().getManagementService().getQueueControl(ADDRESS.toString()).removeAllMessages());
startBackupCrashPrimary();
assertNoMoreMessages();
}
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/failover/ClientConnectorFailoverTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/failover/ClientConnectorFailoverTest.java
index 1bc0aecbc3..26ca99c66c 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/failover/ClientConnectorFailoverTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/cluster/failover/ClientConnectorFailoverTest.java
@@ -16,12 +16,6 @@
*/
package org.apache.activemq.artemis.tests.integration.cluster.failover;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertNotEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.MessageConsumer;
@@ -40,7 +34,6 @@ import org.apache.activemq.artemis.api.core.client.ClientSession;
import org.apache.activemq.artemis.api.core.client.ClientSessionFactory;
import org.apache.activemq.artemis.api.core.client.ServerLocator;
import org.apache.activemq.artemis.api.core.management.QueueControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl;
import org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl;
import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
@@ -50,6 +43,12 @@ import org.apache.activemq.artemis.jms.client.ActiveMQSession;
import org.apache.activemq.artemis.tests.util.Wait;
import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
public class ClientConnectorFailoverTest extends StaticClusterWithBackupFailoverTest {
private static final String TEST_PARAM = "TEST";
@@ -117,8 +116,8 @@ public class ClientConnectorFailoverTest extends StaticClusterWithBackupFailover
assertNotNull(clientConsumer.receive(3000));
}
- QueueControl testQueueControlAfterCrash = (QueueControl)getServer(serverIdAfterCrash).
- getManagementService().getResource(ResourceNames.QUEUE + QUEUE_NAME);
+ QueueControl testQueueControlAfterCrash = getServer(serverIdAfterCrash).
+ getManagementService().getQueueControl(QUEUE_NAME);
Wait.waitFor(() -> testQueueControlAfterCrash.getMessageCount() == 0, 3000);
clientSession.stop();
@@ -173,8 +172,8 @@ public class ClientConnectorFailoverTest extends StaticClusterWithBackupFailover
int serverIdBeforeCrash = Integer.parseInt(sessionFactory.
getConnectorConfiguration().getName().substring(4));
- QueueControl testQueueControlBeforeCrash = (QueueControl)getServer(serverIdBeforeCrash).
- getManagementService().getResource(ResourceNames.QUEUE + QUEUE_NAME);
+ QueueControl testQueueControlBeforeCrash = getServer(serverIdBeforeCrash).
+ getManagementService().getQueueControl(QUEUE_NAME);
assertEquals(0, testQueueControlBeforeCrash.getMessageCount());
@@ -203,8 +202,8 @@ public class ClientConnectorFailoverTest extends StaticClusterWithBackupFailover
assertTrue(isPrimaryServerID(serverIdAfterCrash));
- QueueControl testQueueControlAfterCrash = (QueueControl)getServer(serverIdAfterCrash).
- getManagementService().getResource(ResourceNames.QUEUE + QUEUE_NAME);
+ QueueControl testQueueControlAfterCrash = getServer(serverIdAfterCrash).
+ getManagementService().getQueueControl(QUEUE_NAME);
Wait.waitFor(() -> testQueueControlAfterCrash.getMessageCount() == 1, 3000);
@@ -256,12 +255,12 @@ public class ClientConnectorFailoverTest extends StaticClusterWithBackupFailover
createQueue(serverIdBeforeCrash, QUEUES_TESTADDRESS, QUEUE_NAME, null, false);
- QueueControl testQueueControlBeforeCrash = (QueueControl) getServer(serverIdBeforeCrash).getManagementService().getResource(ResourceNames.QUEUE + QUEUE_NAME);
+ QueueControl testQueueControlBeforeCrash = getServer(serverIdBeforeCrash).getManagementService().getQueueControl(QUEUE_NAME);
assertEquals(0, testQueueControlBeforeCrash.getMessageCount());
for (int i : getPrimaryServerIDs()) {
if (i != serverIdBeforeCrash) {
- assertNull(getServer(i).getManagementService().getResource(ResourceNames.QUEUE + QUEUE_NAME));
+ assertNull(getServer(i).getManagementService().getQueueControl(QUEUE_NAME));
}
}
@@ -289,7 +288,7 @@ public class ClientConnectorFailoverTest extends StaticClusterWithBackupFailover
}
assertTrue(serverIdAfterCrashFound);
- QueueControl testQueueControlAfterCrash = (QueueControl) getServer(serverIdAfterCrash).getManagementService().getResource(ResourceNames.QUEUE + QUEUE_NAME);
+ QueueControl testQueueControlAfterCrash = getServer(serverIdAfterCrash).getManagementService().getQueueControl(QUEUE_NAME);
assertNotNull(testQueueControlAfterCrash);
assertEquals(0, testQueueControlAfterCrash.getMessageCount());
@@ -372,8 +371,8 @@ public class ClientConnectorFailoverTest extends StaticClusterWithBackupFailover
assertNotNull(messageConsumer.receive(3000));
}
- QueueControl testQueueControlAfterCrash = (QueueControl)getServer(serverIdAfterCrash).
- getManagementService().getResource(ResourceNames.QUEUE + QUEUE_NAME);
+ QueueControl testQueueControlAfterCrash = getServer(serverIdAfterCrash).
+ getManagementService().getQueueControl(QUEUE_NAME);
Wait.waitFor(() -> testQueueControlAfterCrash.getMessageCount() == 0, 3000);
}
connection.stop();
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/consumer/DetectOrphanedConsumerTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/consumer/DetectOrphanedConsumerTest.java
index a5aa2ea1d6..61bd28fde4 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/consumer/DetectOrphanedConsumerTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/consumer/DetectOrphanedConsumerTest.java
@@ -17,15 +17,10 @@
package org.apache.activemq.artemis.tests.integration.consumer;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.MessageConsumer;
import javax.jms.Session;
-
import java.lang.invoke.MethodHandles;
import org.apache.activemq.artemis.api.core.JsonUtil;
@@ -33,7 +28,6 @@ import org.apache.activemq.artemis.api.core.QueueConfiguration;
import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.management.ActiveMQServerControl;
import org.apache.activemq.artemis.api.core.management.QueueControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.core.management.impl.view.ConsumerField;
import org.apache.activemq.artemis.core.management.impl.view.ConsumerView;
import org.apache.activemq.artemis.core.server.ActiveMQServer;
@@ -47,6 +41,10 @@ import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
/**
* This test is simulating an orphaned consumer situation that was fixed in ARTEMIS-4476. the method
* QueueControl::listConsumersAsJSON should add a field orphaned=true in case the consumer is orphaned.
@@ -92,7 +90,7 @@ public class DetectOrphanedConsumerTest extends ActiveMQTestBase {
Wait.assertEquals(1, queue::getConsumerCount, 5000);
- QueueControl queueControl = (QueueControl) server.getManagementService().getResource("queue." + queue.getName().toString());
+ QueueControl queueControl = server.getManagementService().getQueueControl(queue.getName().toString());
assertNotNull(queueControl);
String result = queueControl.listConsumersAsJSON();
@@ -116,7 +114,7 @@ public class DetectOrphanedConsumerTest extends ActiveMQTestBase {
assertEquals(1, resultArray.size());
assertEquals(ConsumerView.CONSUMER_STATUS_ORPHANED, resultArray.getJsonObject(0).getString(ConsumerField.STATUS.getName()));
- ActiveMQServerControl serverControl = (ActiveMQServerControl) server.getManagementService().getResource(ResourceNames.BROKER);
+ ActiveMQServerControl serverControl = (ActiveMQServerControl) server.getManagementService().getServerControl();
String sessionID = resultArray.getJsonObject(0).getString(ConsumerField.SESSION.getAlternativeName());
int consumerID = resultArray.getJsonObject(0).getInt(ConsumerField.SEQUENTIAL_ID.getAlternativeName());
logger.debug("SessionID{} ConsumerID::{}", sessionID, consumerID);
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/RedeployTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/RedeployTest.java
index f0b7661e7d..0d88ec12e4 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/RedeployTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/RedeployTest.java
@@ -16,15 +16,18 @@
*/
package org.apache.activemq.artemis.tests.integration.jms;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertSame;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
-
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.JMSContext;
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.Queue;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+import javax.management.MBeanServer;
+import javax.management.MBeanServerFactory;
import java.io.File;
import java.io.InputStream;
import java.io.Writer;
@@ -41,19 +44,6 @@ import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
-import javax.jms.Connection;
-import javax.jms.ConnectionFactory;
-import javax.jms.JMSContext;
-import javax.jms.JMSException;
-import javax.jms.Message;
-import javax.jms.MessageConsumer;
-import javax.jms.MessageProducer;
-import javax.jms.Queue;
-import javax.jms.Session;
-import javax.jms.TextMessage;
-import javax.management.MBeanServer;
-import javax.management.MBeanServerFactory;
-
import org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration;
import org.apache.activemq.artemis.api.core.QueueConfiguration;
import org.apache.activemq.artemis.api.core.RoutingType;
@@ -62,7 +52,6 @@ import org.apache.activemq.artemis.api.core.TransportConfiguration;
import org.apache.activemq.artemis.api.core.client.ActiveMQClient;
import org.apache.activemq.artemis.api.core.client.ServerLocator;
import org.apache.activemq.artemis.api.core.management.AcceptorControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.core.config.Configuration;
import org.apache.activemq.artemis.core.config.impl.ConfigurationImpl;
import org.apache.activemq.artemis.core.postoffice.Binding;
@@ -88,6 +77,15 @@ import org.apache.activemq.artemis.tests.util.Wait;
import org.apache.activemq.artemis.utils.ReusableLatch;
import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertSame;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
+
public class RedeployTest extends ActiveMQTestBase {
/*
@@ -1499,7 +1497,7 @@ public class RedeployTest extends ActiveMQTestBase {
assertEquals("127.0.0.1", acceptor0.getParams().get(TransportConstants.HOST_PROP_NAME));
assertEquals("61616", acceptor0.getParams().get(TransportConstants.PORT_PROP_NAME));
- final AcceptorControl acceptorControl = (AcceptorControl) managementService.getResource(ResourceNames.ACCEPTOR + "artemis");
+ final AcceptorControl acceptorControl = managementService.getAcceptorControl("artemis");
assertNotNull(acceptorControl);
assertTrue(acceptorControl.isStarted());
@@ -1523,7 +1521,7 @@ public class RedeployTest extends ActiveMQTestBase {
latch.await(10, TimeUnit.SECONDS);
// Should not be present in the server any longer
- final AcceptorControl afterReload = (AcceptorControl) managementService.getResource(ResourceNames.ACCEPTOR + "artemis");
+ final AcceptorControl afterReload = managementService.getAcceptorControl("artemis");
assertNull(afterReload);
final TransportConfiguration acceptor1 = findInConfiguration("artemis1", embeddedActiveMQ.getActiveMQServer().getConfiguration());
@@ -1533,7 +1531,7 @@ public class RedeployTest extends ActiveMQTestBase {
assertEquals("127.0.0.2", acceptor1.getParams().get(TransportConstants.HOST_PROP_NAME));
assertEquals("61617", acceptor1.getParams().get(TransportConstants.PORT_PROP_NAME));
- final AcceptorControl acceptorControl1 = (AcceptorControl) managementService.getResource(ResourceNames.ACCEPTOR + "artemis1");
+ final AcceptorControl acceptorControl1 = managementService.getAcceptorControl("artemis1");
assertNotNull(acceptorControl1);
assertTrue(acceptorControl1.isStarted());
@@ -1542,7 +1540,7 @@ public class RedeployTest extends ActiveMQTestBase {
assertEquals("127.0.0.3", acceptor2.getParams().get(TransportConstants.HOST_PROP_NAME));
assertEquals("61618", acceptor2.getParams().get(TransportConstants.PORT_PROP_NAME));
- final AcceptorControl acceptorControl2 = (AcceptorControl) managementService.getResource(ResourceNames.ACCEPTOR + "artemis2");
+ final AcceptorControl acceptorControl2 = managementService.getAcceptorControl("artemis2");
assertNotNull(acceptorControl2);
assertFalse(acceptorControl2.isStarted());
@@ -1591,7 +1589,7 @@ public class RedeployTest extends ActiveMQTestBase {
assertEquals("61616", acceptor.getParams().get(TransportConstants.PORT_PROP_NAME));
assertNull(acceptor.getParams().get(TransportConstants.AUTO_START));
- final AcceptorControl acceptorControl = (AcceptorControl) managementService.getResource(ResourceNames.ACCEPTOR + "artemis");
+ final AcceptorControl acceptorControl = (AcceptorControl) managementService.getAcceptorControl("artemis");
assertNotNull(acceptorControl);
assertTrue(acceptorControl.isStarted());
@@ -1621,7 +1619,7 @@ public class RedeployTest extends ActiveMQTestBase {
assertEquals("61616", acceptorUpdated.getParams().get(TransportConstants.PORT_PROP_NAME));
assertEquals("false", acceptorUpdated.getParams().get(TransportConstants.AUTO_START));
- final AcceptorControl acceptorControl2 = (AcceptorControl) managementService.getResource(ResourceNames.ACCEPTOR + "artemis");
+ final AcceptorControl acceptorControl2 = managementService.getAcceptorControl("artemis");
assertNotNull(acceptorControl2);
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/multiprotocol/JMSMessageConsumerTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/multiprotocol/JMSMessageConsumerTest.java
index 814fce61cc..7db9d71ad4 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/multiprotocol/JMSMessageConsumerTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/multiprotocol/JMSMessageConsumerTest.java
@@ -31,8 +31,6 @@ import java.lang.invoke.MethodHandles;
import org.apache.activemq.artemis.api.core.QueueConfiguration;
import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
-import org.apache.activemq.artemis.api.core.management.AddressControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.core.paging.PagingStore;
import org.apache.activemq.artemis.core.postoffice.impl.PostOfficeImpl;
import org.apache.activemq.artemis.core.postoffice.impl.PostOfficeTestAccessor;
@@ -511,7 +509,7 @@ public class JMSMessageConsumerTest extends MultiprotocolJMSClientTestSupport {
assertEquals(0, server.locateQueue(getQueueName()).getMessageCount());
Wait.assertEquals(0, store::getAddressSize, 5000);
- assertEquals(0, ((AddressControl) server.getManagementService().getResource(ResourceNames.ADDRESS + getQueueName())).getAddressSize());
+ assertEquals(0, (server.getManagementService().getAddressControl(getQueueName())).getAddressSize());
}
}
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/multiprotocol/JMSNonDestructiveTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/multiprotocol/JMSNonDestructiveTest.java
index 13e1070db2..82cbef48fd 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/multiprotocol/JMSNonDestructiveTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/multiprotocol/JMSNonDestructiveTest.java
@@ -16,12 +16,6 @@
*/
package org.apache.activemq.artemis.tests.integration.jms.multiprotocol;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.fail;
-
import javax.jms.BytesMessage;
import javax.jms.Connection;
import javax.jms.JMSException;
@@ -30,6 +24,7 @@ import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
+import java.lang.invoke.MethodHandles;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -47,7 +42,6 @@ import org.apache.activemq.artemis.api.core.QueueConfiguration;
import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.management.QueueControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.core.postoffice.QueueBinding;
import org.apache.activemq.artemis.core.server.ActiveMQServer;
import org.apache.activemq.artemis.core.server.impl.AddressInfo;
@@ -60,7 +54,12 @@ import org.junit.jupiter.api.TestTemplate;
import org.junit.jupiter.api.extension.ExtendWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.lang.invoke.MethodHandles;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.fail;
@ExtendWith(ParameterizedTestExtension.class)
public class JMSNonDestructiveTest extends MultiprotocolJMSClientTestSupport {
@@ -176,7 +175,7 @@ public class JMSNonDestructiveTest extends MultiprotocolJMSClientTestSupport {
receive(consumerConnectionSupplier, NON_DESTRUCTIVE_QUEUE_NAME);
assertEquals(1, queueBinding.getQueue().getMessageCount(), "Ensure Message count");
- QueueControl control = (QueueControl) server.getManagementService().getResource(ResourceNames.QUEUE + NON_DESTRUCTIVE_QUEUE_NAME);
+ QueueControl control = server.getManagementService().getQueueControl(NON_DESTRUCTIVE_QUEUE_NAME);
control.removeAllMessages();
assertEquals(0, queueBinding.getQueue().getMessageCount(), "Message count after clearing queue via queue control should be 0");
@@ -197,7 +196,7 @@ public class JMSNonDestructiveTest extends MultiprotocolJMSClientTestSupport {
receiveDualConsumer(consumerConnectionSupplier, NON_DESTRUCTIVE_QUEUE_NAME);
assertEquals(1, queueBinding.getQueue().getMessageCount(), "Ensure Message count");
- QueueControl control = (QueueControl) server.getManagementService().getResource(ResourceNames.QUEUE + NON_DESTRUCTIVE_QUEUE_NAME);
+ QueueControl control = server.getManagementService().getQueueControl(NON_DESTRUCTIVE_QUEUE_NAME);
control.removeAllMessages();
assertEquals(0, queueBinding.getQueue().getMessageCount(), "Message count after clearing queue via queue control should be 0");
@@ -222,7 +221,7 @@ public class JMSNonDestructiveTest extends MultiprotocolJMSClientTestSupport {
receiveNull(consumerConnectionSupplier, NON_DESTRUCTIVE_EXPIRY_QUEUE_NAME);
assertEquals(0, queueBinding.getQueue().getMessageCount(), "Ensure Message count");
- QueueControl control = (QueueControl) server.getManagementService().getResource(ResourceNames.QUEUE + NON_DESTRUCTIVE_EXPIRY_QUEUE_NAME);
+ QueueControl control = server.getManagementService().getQueueControl(NON_DESTRUCTIVE_EXPIRY_QUEUE_NAME);
control.removeAllMessages();
assertEquals(0, queueBinding.getQueue().getMessageCount(), "Message count after clearing queue via queue control should be 0");
@@ -243,7 +242,7 @@ public class JMSNonDestructiveTest extends MultiprotocolJMSClientTestSupport {
//Consume Again as should be non-destructive
receive(consumerConnectionSupplier, NON_DESTRUCTIVE_QUEUE_NAME, 3);
- QueueControl control = (QueueControl) server.getManagementService().getResource(ResourceNames.QUEUE + NON_DESTRUCTIVE_QUEUE_NAME);
+ QueueControl control = server.getManagementService().getQueueControl(NON_DESTRUCTIVE_QUEUE_NAME);
control.removeAllMessages();
assertEquals(0, queueBinding.getQueue().getMessageCount(), "Message count after clearing queue via queue control should be 0");
@@ -264,7 +263,7 @@ public class JMSNonDestructiveTest extends MultiprotocolJMSClientTestSupport {
//Consume Again as should be non-destructive
receiveDualConsumer(consumerConnectionSupplier, NON_DESTRUCTIVE_QUEUE_NAME, 3);
- QueueControl control = (QueueControl) server.getManagementService().getResource(ResourceNames.QUEUE + NON_DESTRUCTIVE_QUEUE_NAME);
+ QueueControl control = server.getManagementService().getQueueControl(NON_DESTRUCTIVE_QUEUE_NAME);
control.removeAllMessages();
assertEquals(0, queueBinding.getQueue().getMessageCount(), "Message count after clearing queue via queue control should be 0");
@@ -300,7 +299,7 @@ public class JMSNonDestructiveTest extends MultiprotocolJMSClientTestSupport {
assertEquals(1, queueBinding.getQueue().getMessageCount(), "Ensure Message count");
- QueueControl control = (QueueControl) server.getManagementService().getResource(ResourceNames.QUEUE + NON_DESTRUCTIVE_LVQ_QUEUE_NAME);
+ QueueControl control = server.getManagementService().getQueueControl(NON_DESTRUCTIVE_LVQ_QUEUE_NAME);
control.removeAllMessages();
assertEquals(0, queueBinding.getQueue().getMessageCount(), "Message count after clearing queue via queue control should be 0");
@@ -423,7 +422,7 @@ public class JMSNonDestructiveTest extends MultiprotocolJMSClientTestSupport {
receive(CoreConnection, NON_DESTRUCTIVE_QUEUE_NAME);
assertEquals(2, queueBinding.getQueue().getMessageCount(), "Ensure Message count");
- QueueControl control = (QueueControl) server.getManagementService().getResource(ResourceNames.QUEUE + NON_DESTRUCTIVE_QUEUE_NAME);
+ QueueControl control = server.getManagementService().getQueueControl(NON_DESTRUCTIVE_QUEUE_NAME);
control.removeAllMessages();
assertEquals(0, queueBinding.getQueue().getMessageCount(), "Message count after clearing queue via queue control should be 0");
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ManagementServiceImplTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ManagementServiceImplTest.java
index dac15268b4..0bd7a3469f 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ManagementServiceImplTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ManagementServiceImplTest.java
@@ -153,14 +153,16 @@ public class ManagementServiceImplTest extends ActiveMQTestBase {
List<AddressControl> addresses = managementService.getAddressControls();
assertEquals(1, addresses.size());
assertInstanceOf(AddressControl.class, addresses.get(0));
- AddressControl addressControl = (AddressControl) addresses.get(0);
+ AddressControl addressControl = addresses.get(0);
assertEquals(address.toString(), addressControl.getAddress());
+ assertEquals(1, managementService.getAddressControlCount());
List<QueueControl> queues = managementService.getQueueControls();
assertEquals(1, queues.size());
assertInstanceOf(QueueControl.class, queues.get(0));
- QueueControl queueControl = (QueueControl) queues.get(0);
+ QueueControl queueControl = queues.get(0);
assertEquals(queue.getName().toString(), queueControl.getName());
+ assertEquals(1, managementService.getQueueControlCount());
}
@Test
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/QueueControlTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/QueueControlTest.java
index 38f9ea10e8..2656715d34 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/QueueControlTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/QueueControlTest.java
@@ -140,13 +140,13 @@ public class QueueControlTest extends ManagementTestBase {
@TestTemplate
public void testMoveMessagesInPagingMode() throws Exception {
+ SimpleString queueName = SimpleString.of("testQueue");
final int TOTAL_MESSAGES = 100;
final String DLA = "DLA";
ClientSessionFactory sf = createSessionFactory(locator);
ClientSession session = sf.createSession(false, false);
- SimpleString queueAddr = SimpleString.of("testQueue");
- session.createQueue(QueueConfiguration.of(queueAddr).setDurable(durable));
+ session.createQueue(QueueConfiguration.of(queueName).setDurable(durable));
SimpleString dlq = SimpleString.of(DLA);
session.createQueue(QueueConfiguration.of(dlq));
@@ -154,9 +154,9 @@ public class QueueControlTest extends ManagementTestBase {
AddressSettings addressSettings = new AddressSettings().setPageSizeBytes(1024 * 1024).setMaxSizeBytes(1).setDeadLetterAddress(dlq);
server.getAddressSettingsRepository().addMatch("#", addressSettings);
- sendMessageBatch(TOTAL_MESSAGES, session, queueAddr);
+ sendMessageBatch(TOTAL_MESSAGES, session, queueName);
- Queue queue = server.locateQueue(queueAddr);
+ Queue queue = server.locateQueue(queueName);
// Give time Queue.deliverAsync to deliver messages
assertTrue(waitForMessages(queue, TOTAL_MESSAGES, 5000));
@@ -165,9 +165,7 @@ public class QueueControlTest extends ManagementTestBase {
assertTrue(queuePagingStore != null && queuePagingStore.isPaging());
//invoke moveMessages op
- String queueControlResourceName = ResourceNames.QUEUE + "testQueue";
- Object resource = server.getManagementService().getResource(queueControlResourceName);
- QueueControl queueControl = (QueueControl) resource;
+ QueueControl queueControl = server.getManagementService().getQueueControl(queueName.toString());
assertEquals(TOTAL_MESSAGES, queueControl.getMessageCount());
// move messages to DLQ
@@ -176,7 +174,7 @@ public class QueueControlTest extends ManagementTestBase {
//messages shouldn't move on to the same queue
try {
- queueControl.moveMessages(1000, "", "testQueue", false, 9000);
+ queueControl.moveMessages(1000, "", queueName.toString(), false, 9000);
fail("messages cannot be moved on to the queue itself");
} catch (IllegalArgumentException ok) {
//ok
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/amq/JmsClientAckTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/amq/JmsClientAckTest.java
index 5b9179fba6..f49f0c5849 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/amq/JmsClientAckTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/amq/JmsClientAckTest.java
@@ -16,25 +16,23 @@
*/
package org.apache.activemq.artemis.tests.integration.openwire.amq;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
-
import java.util.ArrayList;
import java.util.List;
import org.apache.activemq.artemis.api.core.management.QueueControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.tests.integration.openwire.BasicOpenWireTest;
import org.apache.activemq.artemis.utils.Wait;
import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+
/**
* adapted from: org.apache.activemq.JmsClientAckTest
*/
@@ -146,8 +144,7 @@ public class JmsClientAckTest extends BasicOpenWireTest {
connection.start();
Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
Queue queue = session.createQueue(getQueueName());
- QueueControl queueControl = (QueueControl)server.getManagementService().
- getResource(ResourceNames.QUEUE + queueName);
+ QueueControl queueControl = server.getManagementService().getQueueControl(queueName);
MessageProducer producer = session.createProducer(queue);
for (int i = 0; i < messageCount; i++) {
producer.send(session.createTextMessage("MSG" + i));
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/amq/RedeliveryPolicyTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/amq/RedeliveryPolicyTest.java
index eadc309b27..54231cc234 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/amq/RedeliveryPolicyTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/amq/RedeliveryPolicyTest.java
@@ -16,12 +16,6 @@
*/
package org.apache.activemq.artemis.tests.integration.openwire.amq;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.Message;
@@ -30,17 +24,15 @@ import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
-
import java.util.concurrent.TimeUnit;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.RedeliveryPolicy;
+import org.apache.activemq.artemis.api.core.management.QueueControl;
import org.apache.activemq.artemis.core.protocol.openwire.amq.AMQConsumer;
import org.apache.activemq.artemis.core.protocol.openwire.amq.AMQConsumerAccessor;
import org.apache.activemq.artemis.core.server.ServerConsumer;
import org.apache.activemq.artemis.core.server.ServerSession;
-import org.apache.activemq.artemis.api.core.management.QueueControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.tests.integration.openwire.BasicOpenWireTest;
import org.apache.activemq.artemis.tests.util.Wait;
import org.apache.activemq.broker.region.policy.RedeliveryPolicyMap;
@@ -50,6 +42,12 @@ import org.apache.activemq.command.ActiveMQTopic;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
/**
* adapted from: org.apache.activemq.RedeliveryPolicyTest
*/
@@ -405,8 +403,7 @@ public class RedeliveryPolicyTest extends BasicOpenWireTest {
ActiveMQQueue destination = new ActiveMQQueue("TEST");
this.makeSureCoreQueueExist("TEST");
- QueueControl queueControl = (QueueControl)server.getManagementService().
- getResource(ResourceNames.QUEUE + "TEST");
+ QueueControl queueControl = server.getManagementService().getQueueControl("TEST");
MessageProducer producer = session.createProducer(destination);
for (int i = 0; i < messageCount; i++) {
@@ -448,8 +445,7 @@ public class RedeliveryPolicyTest extends BasicOpenWireTest {
ActiveMQQueue destination = new ActiveMQQueue("TEST");
this.makeSureCoreQueueExist("TEST");
- QueueControl queueControl = (QueueControl)server.getManagementService().
- getResource(ResourceNames.QUEUE + "TEST");
+ QueueControl queueControl = server.getManagementService().getQueueControl("TEST");
MessageProducer producer = session.createProducer(destination);
for (int i = 0; i < messageCount; i++) {
@@ -490,8 +486,7 @@ public class RedeliveryPolicyTest extends BasicOpenWireTest {
ActiveMQQueue destination = new ActiveMQQueue("TEST");
this.makeSureCoreQueueExist("TEST");
- QueueControl queueControl = (QueueControl)server.getManagementService().
- getResource(ResourceNames.QUEUE + "TEST");
+ QueueControl queueControl = server.getManagementService().getQueueControl("TEST");
MessageProducer producer = session.createProducer(destination);
producer.send(session.createTextMessage("The Message"));
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/interop/GeneralInteropTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/interop/GeneralInteropTest.java
index 7a48bb5fea..1076ed4bf9 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/interop/GeneralInteropTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/interop/GeneralInteropTest.java
@@ -16,12 +16,6 @@
*/
package org.apache.activemq.artemis.tests.integration.openwire.interop;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertInstanceOf;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
import javax.jms.BytesMessage;
import javax.jms.Connection;
import javax.jms.MapMessage;
@@ -48,7 +42,6 @@ import org.apache.activemq.artemis.api.core.ActiveMQException;
import org.apache.activemq.artemis.api.core.QueueConfiguration;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.management.QueueControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.core.protocol.openwire.OpenWireInterceptor;
import org.apache.activemq.artemis.core.server.ServerSession;
import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
@@ -61,6 +54,12 @@ import org.apache.activemq.transport.TransportListener;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertInstanceOf;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
/**
* This test covers interactions between core clients and openwire clients, i.e. core producers sending messages to be
* received by openwire receivers, and vice versa.
@@ -243,11 +242,9 @@ public class GeneralInteropTest extends BasicOpenWireTest {
Message message = null;
Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
Queue queue = session.createQueue(queueName);
- QueueControl queueControl = (QueueControl)server.getManagementService().
- getResource(ResourceNames.QUEUE + queueName);
+ QueueControl queueControl = server.getManagementService().getQueueControl(queueName);
- QueueControl dlqControl = (QueueControl)server.getManagementService().
- getResource(ResourceNames.QUEUE + dlq.toString());
+ QueueControl dlqControl = server.getManagementService().getQueueControl(dlq.toString());
MessageConsumer consumer = session.createConsumer(queue);
@@ -324,8 +321,7 @@ public class GeneralInteropTest extends BasicOpenWireTest {
Message message = null;
Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
Queue queue = session.createQueue(queueName);
- QueueControl queueControl = (QueueControl)server.getManagementService().
- getResource(ResourceNames.QUEUE + queueName);
+ QueueControl queueControl = server.getManagementService().getQueueControl(queueName);
MessageConsumer consumer = session.createConsumer(queue);
message = consumer.receive(5000);
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ra/ResourceAdapterTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ra/ResourceAdapterTest.java
index b9819dd366..96961cd014 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ra/ResourceAdapterTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/ra/ResourceAdapterTest.java
@@ -33,8 +33,6 @@ import org.apache.activemq.artemis.api.core.UDPBroadcastEndpointFactory;
import org.apache.activemq.artemis.api.core.client.ClientSession;
import org.apache.activemq.artemis.api.core.client.ClientSessionFactory;
import org.apache.activemq.artemis.api.core.client.ServerLocator;
-import org.apache.activemq.artemis.api.core.management.AddressControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.api.jms.ActiveMQJMSClient;
import org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl;
import org.apache.activemq.artemis.core.server.Queue;
@@ -176,7 +174,7 @@ public class ResourceAdapterTest extends ActiveMQRATestBase {
public void testTopicPrefixWhenUseJndiIsFalse() throws Exception {
final String prefix = "jms.topic.";
final String destinationName = "test";
- final SimpleString prefixedDestinationName = SimpleString.of(prefix + destinationName);
+ final String prefixedDestinationName = prefix + destinationName;
server.addAddressInfo(new AddressInfo(prefixedDestinationName).addRoutingType(RoutingType.MULTICAST));
ActiveMQResourceAdapter ra = new ActiveMQResourceAdapter();
ra.setConnectorClassName(INVM_CONNECTOR_FACTORY);
@@ -197,7 +195,7 @@ public class ResourceAdapterTest extends ActiveMQRATestBase {
activation.start();
- assertEquals(1, ((AddressControl)server.getManagementService().getResource(ResourceNames.ADDRESS + prefixedDestinationName)).getQueueNames().length);
+ assertEquals(1, (server.getManagementService().getAddressControl(prefixedDestinationName)).getQueueNames().length);
activation.stop();
}
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/routing/MQTTRedirectTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/routing/MQTTRedirectTest.java
index ec2cc95367..8a234c20ce 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/routing/MQTTRedirectTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/routing/MQTTRedirectTest.java
@@ -16,10 +16,6 @@
*/
package org.apache.activemq.artemis.tests.integration.routing;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
-
import javax.management.openmbean.CompositeData;
import javax.management.openmbean.TabularData;
import java.lang.management.ManagementFactory;
@@ -33,12 +29,11 @@ import org.apache.activemq.artemis.api.core.QueueConfiguration;
import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.management.ConnectionRouterControl;
import org.apache.activemq.artemis.api.core.management.QueueControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.core.protocol.mqtt.MQTTReasonCodes;
import org.apache.activemq.artemis.core.remoting.impl.netty.TransportConstants;
import org.apache.activemq.artemis.core.server.ActiveMQServers;
-import org.apache.activemq.artemis.core.server.routing.policies.FirstElementPolicy;
import org.apache.activemq.artemis.core.server.routing.KeyType;
+import org.apache.activemq.artemis.core.server.routing.policies.FirstElementPolicy;
import org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager;
import org.apache.activemq.artemis.tests.integration.security.SecurityTest;
import org.apache.activemq.artemis.utils.Wait;
@@ -49,6 +44,10 @@ import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
+
public class MQTTRedirectTest extends RoutingTestBase {
static {
@@ -75,10 +74,8 @@ public class MQTTRedirectTest extends RoutingTestBase {
getServer(0).createQueue(QueueConfiguration.of(topicName).setRoutingType(RoutingType.ANYCAST));
getServer(1).createQueue(QueueConfiguration.of(topicName).setRoutingType(RoutingType.ANYCAST));
- QueueControl queueControl0 = (QueueControl)getServer(0).getManagementService()
- .getResource(ResourceNames.QUEUE + topicName);
- QueueControl queueControl1 = (QueueControl)getServer(1).getManagementService()
- .getResource(ResourceNames.QUEUE + topicName);
+ QueueControl queueControl0 = getServer(0).getManagementService().getQueueControl(topicName);
+ QueueControl queueControl1 = getServer(1).getManagementService().getQueueControl(topicName);
assertEquals(0, queueControl0.countMessages());
assertEquals(0, queueControl1.countMessages());
@@ -97,8 +94,7 @@ public class MQTTRedirectTest extends RoutingTestBase {
}
client0.close();
- ConnectionRouterControl connectionRouterControl = (ConnectionRouterControl)getServer(0).getManagementService()
- .getResource(ResourceNames.CONNECTION_ROUTER + CONNECTION_ROUTER_NAME);
+ ConnectionRouterControl connectionRouterControl = (ConnectionRouterControl)getServer(0).getManagementService().getConnectionRouterControl(CONNECTION_ROUTER_NAME);
CompositeData targetData = connectionRouterControl.getTarget("admin");
CompositeData targetConnectorData = (CompositeData)targetData.get("connector");
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/routing/RedirectTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/routing/RedirectTest.java
index 17f1f6748c..966bcaf6f0 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/routing/RedirectTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/routing/RedirectTest.java
@@ -30,7 +30,6 @@ import java.util.Map;
import org.apache.activemq.artemis.api.core.QueueConfiguration;
import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.management.QueueControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.core.remoting.impl.netty.TransportConstants;
import org.apache.activemq.artemis.core.server.cluster.impl.MessageLoadBalancingType;
import org.apache.activemq.artemis.core.server.routing.KeyType;
@@ -93,10 +92,8 @@ public class RedirectTest extends RoutingTestBase {
}
private void testSimpleRedirectWithProtocol(final String protocol, final String queueName) throws Exception {
- QueueControl queueControl0 = (QueueControl)getServer(0).getManagementService()
- .getResource(ResourceNames.QUEUE + queueName);
- QueueControl queueControl1 = (QueueControl)getServer(1).getManagementService()
- .getResource(ResourceNames.QUEUE + queueName);
+ QueueControl queueControl0 = getServer(0).getManagementService().getQueueControl(queueName);
+ QueueControl queueControl1 = getServer(1).getManagementService().getQueueControl(queueName);
assertEquals(0, queueControl0.countMessages());
assertEquals(0, queueControl1.countMessages());
@@ -195,8 +192,8 @@ public class RedirectTest extends RoutingTestBase {
QueueControl[] queueControls = new QueueControl[nodes.length];
for (int node : nodes) {
- queueControls[node] = (QueueControl)getServer(node).getManagementService()
- .getResource(ResourceNames.QUEUE + queueName);
+ queueControls[node] = getServer(node).getManagementService()
+ .getQueueControl(queueName);
assertEquals(0, queueControls[node].countMessages(), "Unexpected message count for node " + node);
}
@@ -234,8 +231,8 @@ public class RedirectTest extends RoutingTestBase {
startServers(0);
- queueControls[0] = (QueueControl)getServer(0).getManagementService()
- .getResource(ResourceNames.QUEUE + queueName);
+ queueControls[0] = getServer(0).getManagementService()
+ .getQueueControl(queueName);
}
for (int i = 0; i < nodes.length - 1; i++) {
@@ -290,10 +287,10 @@ public class RedirectTest extends RoutingTestBase {
}
private void testSymmetricRedirectWithProtocol(final String protocol, final String queueName) throws Exception {
- QueueControl queueControl0 = (QueueControl)getServer(0).getManagementService()
- .getResource(ResourceNames.QUEUE + queueName);
- QueueControl queueControl1 = (QueueControl)getServer(1).getManagementService()
- .getResource(ResourceNames.QUEUE + queueName);
+ QueueControl queueControl0 = getServer(0).getManagementService()
+ .getQueueControl(queueName);
+ QueueControl queueControl1 = getServer(1).getManagementService()
+ .getQueueControl(queueName);
assertEquals(0, queueControl0.countMessages(), "Unexpected message count for node 0");
assertEquals(0, queueControl1.countMessages(), "Unexpected message count for node 1");
@@ -370,8 +367,7 @@ public class RedirectTest extends RoutingTestBase {
private void testRedirectAfterFailureWithProtocol(final String protocol, final String queueName, final int[] nodes) throws Exception {
QueueControl[] queueControls = new QueueControl[nodes.length];
for (int node : nodes) {
- queueControls[node] = (QueueControl)getServer(node).getManagementService()
- .getResource(ResourceNames.QUEUE + queueName);
+ queueControls[node] = getServer(node).getManagementService().getQueueControl(queueName);
assertEquals(0, queueControls[node].countMessages(), "Unexpected message count for node " + node);
}
@@ -403,8 +399,7 @@ public class RedirectTest extends RoutingTestBase {
startServers(failedNode);
- queueControls[failedNode] = (QueueControl)getServer(failedNode).getManagementService()
- .getResource(ResourceNames.QUEUE + queueName);
+ queueControls[failedNode] = getServer(failedNode).getManagementService().getQueueControl(queueName);
try (Connection connection = connectionFactory.createConnection()) {
connection.start();
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/scheduling/ScheduledMessageTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/scheduling/ScheduledMessageTest.java
index f69f52948e..70e3521860 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/scheduling/ScheduledMessageTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/scheduling/ScheduledMessageTest.java
@@ -16,11 +16,6 @@
*/
package org.apache.activemq.artemis.tests.integration.scheduling;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
import javax.transaction.xa.XAResource;
import javax.transaction.xa.Xid;
import java.util.ArrayList;
@@ -37,7 +32,6 @@ import org.apache.activemq.artemis.api.core.client.ClientSession;
import org.apache.activemq.artemis.api.core.client.ClientSessionFactory;
import org.apache.activemq.artemis.api.core.client.ServerLocator;
import org.apache.activemq.artemis.api.core.management.QueueControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.core.config.Configuration;
import org.apache.activemq.artemis.core.server.ActiveMQServer;
import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
@@ -49,6 +43,11 @@ import org.apache.activemq.artemis.utils.UUIDGenerator;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
public class ScheduledMessageTest extends ActiveMQTestBase {
private final SimpleString atestq = SimpleString.of("ascheduledtestq");
@@ -531,7 +530,7 @@ public class ScheduledMessageTest extends ActiveMQTestBase {
ClientMessage message = consumer.receive(500);
assertNull(message);
- QueueControl queueControl = (QueueControl) server.getManagementService().getResource(ResourceNames.QUEUE + atestq);
+ QueueControl queueControl = server.getManagementService().getQueueControl(atestq.toString());
queueControl.deliverScheduledMessage((long) queueControl.listScheduledMessages()[0].get("messageID"));
message = consumer.receive(500);
@@ -557,7 +556,7 @@ public class ScheduledMessageTest extends ActiveMQTestBase {
session.commit();
}
- QueueControl queueControl = (QueueControl) server.getManagementService().getResource(ResourceNames.QUEUE + atestq);
+ QueueControl queueControl = server.getManagementService().getQueueControl(atestq.toString());
assertEquals(1, queueControl.getMessageCount());
assertEquals(1, queueControl.getScheduledCount());
assertTrue(queueControl.removeMessage((long) queueControl.listScheduledMessages()[0].get("messageID")));
@@ -593,7 +592,7 @@ public class ScheduledMessageTest extends ActiveMQTestBase {
ClientMessage message = consumer.receive(500);
assertNull(message);
- QueueControl queueControl = (QueueControl) server.getManagementService().getResource(ResourceNames.QUEUE + atestq);
+ QueueControl queueControl = server.getManagementService().getQueueControl(atestq.toString());
queueControl.deliverScheduledMessages(propertyName + " = '" + propertyValue + "'");
message = consumer.receive(500);
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/AutoCreateDeadLetterResourcesTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/AutoCreateDeadLetterResourcesTest.java
index 71482e15ae..924cd4c5de 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/AutoCreateDeadLetterResourcesTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/AutoCreateDeadLetterResourcesTest.java
@@ -16,10 +16,6 @@
*/
package org.apache.activemq.artemis.tests.integration.server;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
import javax.jms.JMSContext;
import org.apache.activemq.artemis.api.core.QueueConfiguration;
@@ -32,19 +28,22 @@ import org.apache.activemq.artemis.api.core.client.ClientSession;
import org.apache.activemq.artemis.api.core.client.ClientSessionFactory;
import org.apache.activemq.artemis.api.core.client.ServerLocator;
import org.apache.activemq.artemis.api.core.management.QueueControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.core.config.DivertConfiguration;
import org.apache.activemq.artemis.core.server.ActiveMQServer;
import org.apache.activemq.artemis.core.server.Queue;
import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
-import org.apache.activemq.artemis.utils.RandomUtil;
import org.apache.activemq.artemis.tests.util.Wait;
import org.apache.activemq.artemis.utils.CompositeAddress;
+import org.apache.activemq.artemis.utils.RandomUtil;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+
public class AutoCreateDeadLetterResourcesTest extends ActiveMQTestBase {
public final SimpleString addressA = SimpleString.of("addressA");
public final SimpleString queueA = SimpleString.of("queueA");
@@ -281,10 +280,10 @@ public class AutoCreateDeadLetterResourcesTest extends ActiveMQTestBase {
producer.send(message);
}
- QueueControl queueControl = (QueueControl)server.getManagementService().getResource(ResourceNames.QUEUE + queueA);
+ QueueControl queueControl = server.getManagementService().getQueueControl(queueA.toString());
queueControl.sendMessagesToDeadLetterAddress(null);
- QueueControl dlqControl = (QueueControl)server.getManagementService().getResource(ResourceNames.QUEUE + dlqName);
+ QueueControl dlqControl = server.getManagementService().getQueueControl(dlqName.toString());
dlqControl.retryMessages();
for (int i = 0; i < 10; i++) {
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/QueueConfigPersistenceTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/QueueConfigPersistenceTest.java
index b2dec6bd85..2bd84bb056 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/QueueConfigPersistenceTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/QueueConfigPersistenceTest.java
@@ -16,19 +16,18 @@
*/
package org.apache.activemq.artemis.tests.integration.server;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
import org.apache.activemq.artemis.api.core.QueueConfiguration;
+import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.core.server.ActiveMQServer;
import org.apache.activemq.artemis.core.server.Queue;
-import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
public class QueueConfigPersistenceTest extends ActiveMQTestBase {
@Test
@@ -72,7 +71,7 @@ public class QueueConfigPersistenceTest extends ActiveMQTestBase {
server.start();
Queue queue = server.locateQueue(getName());
assertTrue(queue.isInternalQueue());
- assertNotNull(server.getManagementService().getResource(ResourceNames.QUEUE + getName()));
+ assertNotNull(server.getManagementService().getQueueControl(getName()));
server.stop();
}
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/ScaleDownTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/ScaleDownTest.java
index bdfb88546a..2d722e8b46 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/ScaleDownTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/ScaleDownTest.java
@@ -40,7 +40,6 @@ import org.apache.activemq.artemis.api.core.client.ClientProducer;
import org.apache.activemq.artemis.api.core.client.ClientSession;
import org.apache.activemq.artemis.api.core.client.ClientSessionFactory;
import org.apache.activemq.artemis.api.core.management.QueueControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl;
import org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl;
import org.apache.activemq.artemis.core.client.impl.ServerLocatorInternal;
@@ -187,7 +186,7 @@ public class ScaleDownTest extends ClusterTestBase {
assertEquals(TEST_SIZE - 1, getMessageCount(((LocalQueueBinding) servers[0].getPostOffice().getBinding(SimpleString.of(queueName2))).getQueue()));
// trigger scaleDown from node 0 to node 1
- ActiveMQServerControlImpl serverControl = (ActiveMQServerControlImpl) servers[0].getManagementService().getResource(ResourceNames.BROKER);
+ ActiveMQServerControlImpl serverControl = (ActiveMQServerControlImpl) servers[0].getManagementService().getServerControl();
serverControl.scaleDown(null);
// get the 2 messages from queue 1
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/UuidNamespaceTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/UuidNamespaceTest.java
index a808c0660d..e13192bbdc 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/UuidNamespaceTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/server/UuidNamespaceTest.java
@@ -21,7 +21,6 @@ import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.activemq.artemis.api.core.QueueConfiguration;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.management.QueueControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.core.config.MetricsConfiguration;
import org.apache.activemq.artemis.core.server.ActiveMQServer;
import org.apache.activemq.artemis.core.server.metrics.plugins.SimpleMetricsPlugin;
@@ -70,7 +69,7 @@ public class UuidNamespaceTest extends SingleServerTestBase {
session.createQueue(QueueConfiguration.of(queue).setAddress(address).setDurable(false).setTemporary(true));
- QueueControl queueControl = (QueueControl) server.getManagementService().getResource(ResourceNames.QUEUE + queue);
+ QueueControl queueControl = server.getManagementService().getQueueControl(queue.toString());
assertEquals(RING_SIZE, queueControl.getRingSize());
assertEquals(DLA.toString(), queueControl.getDeadLetterAddress());
assertEquals(EA.toString(), queueControl.getExpiryAddress());
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/xa/BasicXaTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/xa/BasicXaTest.java
index 5b68934175..6eee623ced 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/xa/BasicXaTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/xa/BasicXaTest.java
@@ -303,10 +303,11 @@ public class BasicXaTest extends ActiveMQTestBase {
message.acknowledge();
clientSession.end(xid2, XAResource.TMSUCCESS);
+ Wait.assertEquals(1L, () -> testQueue.getAcknowledgeAttempts(), 2000, 20);
clientSession.rollback(xid2);
- assertEquals(0, testQueue.getMessagesAcknowledged());
- assertEquals(0, testQueue.getDeliveringCount());
- assertEquals(1, testQueue.getMessageCount());
+ Wait.assertEquals(0L, () -> testQueue.getMessagesAcknowledged(), 2000, 20);
+ Wait.assertEquals(0L, () -> testQueue.getDeliveringCount(), 5000, 20);
+ Wait.assertEquals(1L, () -> testQueue.getMessageCount(), 2000, 20);
}
@TestTemplate
diff --git a/tests/jms-tests/src/test/java/org/apache/activemq/artemis/jms/tests/tools/container/LocalTestServer.java b/tests/jms-tests/src/test/java/org/apache/activemq/artemis/jms/tests/tools/container/LocalTestServer.java
index 5a46b24349..39425d5194 100644
--- a/tests/jms-tests/src/test/java/org/apache/activemq/artemis/jms/tests/tools/container/LocalTestServer.java
+++ b/tests/jms-tests/src/test/java/org/apache/activemq/artemis/jms/tests/tools/container/LocalTestServer.java
@@ -20,6 +20,7 @@ import javax.management.MBeanServerInvocationHandler;
import javax.management.ObjectName;
import javax.naming.InitialContext;
import java.io.File;
+import java.lang.invoke.MethodHandles;
import java.lang.management.ManagementFactory;
import java.util.ArrayList;
import java.util.Collection;
@@ -35,7 +36,6 @@ import org.apache.activemq.artemis.api.core.client.ActiveMQClient;
import org.apache.activemq.artemis.api.core.management.AddressControl;
import org.apache.activemq.artemis.api.core.management.ObjectNameBuilder;
import org.apache.activemq.artemis.api.core.management.QueueControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.api.jms.JMSFactoryType;
import org.apache.activemq.artemis.core.config.FileDeploymentManager;
import org.apache.activemq.artemis.core.config.impl.FileConfiguration;
@@ -51,7 +51,6 @@ import org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager
import org.apache.activemq.artemis.spi.core.security.jaas.InVMLoginModule;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.lang.invoke.MethodHandles;
public class LocalTestServer implements Server, Runnable {
@@ -324,7 +323,7 @@ public class LocalTestServer implements Server, Runnable {
@Override
public Long getMessageCountForQueue(final String queueName) throws Exception {
- QueueControl queue = (QueueControl) getActiveMQServer().getManagementService().getResource("queue." + queueName);
+ QueueControl queue = getActiveMQServer().getManagementService().getQueueControl(queueName);
if (queue != null) {
queue.flushExecutor();
return queue.getMessageCount();
@@ -335,7 +334,7 @@ public class LocalTestServer implements Server, Runnable {
@Override
public void removeAllMessages(final String queueName) throws Exception {
- QueueControl queue = (QueueControl) getActiveMQServer().getManagementService().getResource(ResourceNames.QUEUE + queueName);
+ QueueControl queue = getActiveMQServer().getManagementService().getQueueControl(queueName);
queue.removeMessages(null);
}
diff --git a/tests/soak-tests/src/test/java/org/apache/activemq/artemis/tests/soak/client/ClientCrashMassiveRollbackTest.java b/tests/soak-tests/src/test/java/org/apache/activemq/artemis/tests/soak/client/ClientCrashMassiveRollbackTest.java
index 1819254627..e14a287696 100644
--- a/tests/soak-tests/src/test/java/org/apache/activemq/artemis/tests/soak/client/ClientCrashMassiveRollbackTest.java
+++ b/tests/soak-tests/src/test/java/org/apache/activemq/artemis/tests/soak/client/ClientCrashMassiveRollbackTest.java
@@ -16,8 +16,6 @@
*/
package org.apache.activemq.artemis.tests.soak.client;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
import javax.jms.Connection;
import javax.jms.MessageConsumer;
import javax.jms.Queue;
@@ -31,7 +29,6 @@ import org.apache.activemq.artemis.api.core.client.ClientSessionFactory;
import org.apache.activemq.artemis.api.core.client.SendAcknowledgementHandler;
import org.apache.activemq.artemis.api.core.client.ServerLocator;
import org.apache.activemq.artemis.api.core.management.QueueControl;
-import org.apache.activemq.artemis.api.core.management.ResourceNames;
import org.apache.activemq.artemis.core.config.Configuration;
import org.apache.activemq.artemis.core.server.ActiveMQServer;
import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
@@ -41,6 +38,8 @@ import org.apache.activemq.artemis.utils.critical.CriticalAnalyzerPolicy;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
public class ClientCrashMassiveRollbackTest extends ActiveMQTestBase {
protected ActiveMQServer server;
protected ClientSession session;
@@ -97,7 +96,7 @@ public class ClientCrashMassiveRollbackTest extends ActiveMQTestBase {
session.setSendAcknowledgementHandler(sendHandler);
session.createQueue(QueueConfiguration.of(queueName).setAddress(queueName).setRoutingType(RoutingType.ANYCAST));
ClientProducer producer = session.createProducer(queueName);
- QueueControl queueControl = (QueueControl)server.getManagementService().getResource(ResourceNames.QUEUE + queueName);
+ QueueControl queueControl = server.getManagementService().getQueueControl(queueName);
thread.start();
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@artemis.apache.org
For additional commands, e-mail: commits-help@artemis.apache.org
(artemis) 01/03: ARTEMIS-5782 allow searching on multiple attributes
Posted by ta...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
tabish pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/artemis.git
commit d45558bb8cde2d1ae7a3f21237a5ba9b6cb5c401
Author: Andy Taylor <an...@gmail.com>
AuthorDate: Fri Feb 6 15:20:25 2026 -0600
ARTEMIS-5782 allow searching on multiple attributes
---
.../management/impl/view/ActiveMQAbstractView.java | 53 +++++-
.../core/management/impl/view/AddressView.java | 5 +-
.../core/management/impl/view/ConnectionView.java | 3 +-
.../core/management/impl/view/ConsumerView.java | 3 +-
.../core/management/impl/view/ProducerView.java | 3 +-
.../core/management/impl/view/QueueView.java | 3 +-
.../core/management/impl/view/SessionView.java | 3 +-
.../view/predicate/ActiveMQFilterPredicate.java | 164 ++---------------
.../view/predicate/AddressFilterPredicate.java | 58 +-----
.../view/predicate/AddressPredicateFilterPart.java | 69 +++++++
.../view/predicate/ConnectionFilterPredicate.java | 55 +-----
...ate.java => ConnectionPredicateFilterPart.java} | 48 +++--
.../view/predicate/ConsumerFilterPredicate.java | 48 +----
...icate.java => ConsumerPredicateFilterPart.java} | 63 +++----
...lterPredicate.java => PredicateFilterPart.java} | 114 +++++-------
.../view/predicate/ProducerFilterPredicate.java | 39 +---
...icate.java => ProducerPredicateFilterPart.java} | 49 ++---
.../impl/view/predicate/QueueFilterPredicate.java | 59 +-----
.../view/predicate/QueuePredicateFilterPart.java | 80 ++++++++
.../view/predicate/SessionFilterPredicate.java | 33 +---
...dicate.java => SessionPredicateFilterPart.java} | 35 ++--
.../impl/view/predicate/PredicateTest.java | 64 +++----
.../artemis/tests/util/ActiveMQTestBase.java | 59 ++++++
.../management/ActiveMQServerControlTest.java | 205 ++++++++++++++++++---
24 files changed, 648 insertions(+), 667 deletions(-)
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ActiveMQAbstractView.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ActiveMQAbstractView.java
index 3aa2bf09a7..00c5526713 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ActiveMQAbstractView.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ActiveMQAbstractView.java
@@ -16,9 +16,8 @@
*/
package org.apache.activemq.artemis.core.management.impl.view;
-import org.apache.activemq.artemis.json.JsonArrayBuilder;
-import org.apache.activemq.artemis.json.JsonObject;
-import org.apache.activemq.artemis.json.JsonObjectBuilder;
+import org.apache.activemq.artemis.core.management.impl.view.predicate.PredicateFilterPart;
+
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -30,13 +29,20 @@ import java.util.stream.Collectors;
import org.apache.activemq.artemis.api.core.JsonUtil;
import org.apache.activemq.artemis.core.management.impl.view.predicate.ActiveMQFilterPredicate;
+import org.apache.activemq.artemis.json.JsonArray;
+import org.apache.activemq.artemis.json.JsonArrayBuilder;
+import org.apache.activemq.artemis.json.JsonObject;
+import org.apache.activemq.artemis.json.JsonObjectBuilder;
+import org.apache.activemq.artemis.json.JsonValue;
import org.apache.activemq.artemis.utils.JsonLoader;
-public abstract class ActiveMQAbstractView<T> {
+public abstract class ActiveMQAbstractView<T, V extends PredicateFilterPart<T>> {
// use this for values which couldn't be retrieved (e.g. an exception was thrown)
protected static final String N_A = "n/a";
+ private static final String FILTER_ARRAY_FIELD = "searchFilters";
+
private static final String FILTER_FIELD = "field";
private static final String FILTER_OPERATION = "operation";
@@ -58,7 +64,7 @@ public abstract class ActiveMQAbstractView<T> {
protected Collection<T> collection;
- protected ActiveMQFilterPredicate<T> predicate;
+ protected ActiveMQFilterPredicate<T, V> predicate;
protected String sortField;
@@ -73,6 +79,11 @@ public abstract class ActiveMQAbstractView<T> {
this.collection = collection;
}
+ public List<T> filter() {
+ List<T> collect = collection.stream().filter(getPredicate()).collect(Collectors.toList());
+ return collect;
+ }
+
public String getResultsAsJson(int page, int pageSize) {
JsonObjectBuilder obj = JsonLoader.createObjectBuilder();
JsonArrayBuilder array = JsonLoader.createArrayBuilder();
@@ -89,6 +100,21 @@ public abstract class ActiveMQAbstractView<T> {
return obj.build().toString();
}
+ public String AsJson(int page, int pageSize) {
+ JsonObjectBuilder obj = JsonLoader.createObjectBuilder();
+ JsonArrayBuilder array = JsonLoader.createArrayBuilder();
+ for (T element : getPagedResult(page, pageSize)) {
+ JsonObjectBuilder jsonObjectBuilder = toJson(element);
+ //toJson() may return a null
+ if (jsonObjectBuilder != null) {
+ array.add(jsonObjectBuilder);
+ }
+ }
+ obj.add("data", array);
+ obj.add("count", collection.size());
+ return obj.build().toString();
+ }
+
public List<T> getPagedResult(int page, int pageSize) {
List<T> builder = new ArrayList<>();
final int start;
@@ -144,9 +170,7 @@ public abstract class ActiveMQAbstractView<T> {
json = JsonUtil.readJsonObject(options);
}
if (predicate != null) {
- predicate.setField(json.getString(FILTER_FIELD));
- predicate.setOperation(json.getString(FILTER_OPERATION));
- predicate.setValue(json.getString(FILTER_VALUE));
+ predicate.addFilterParts(createFilterPredicates(json));
if ((json.containsKey(SORT_COLUMN) || json.containsKey(SORT_FIELD)) && json.containsKey(SORT_ORDER)) {
if (json.containsKey(SORT_COLUMN)) {
this.sortField = json.getString(SORT_COLUMN);
@@ -158,6 +182,19 @@ public abstract class ActiveMQAbstractView<T> {
}
}
+ private List<V> createFilterPredicates(JsonObject json) {
+ ArrayList<V> predicates = new ArrayList<>();
+ JsonArray jsonArray = json.getJsonArray(FILTER_ARRAY_FIELD);
+ if (jsonArray == null) {
+ predicates.add(predicate.createFilterPart(json.getString(FILTER_FIELD), json.getString(FILTER_OPERATION), json.getString(FILTER_VALUE)));
+ } else {
+ for (JsonValue jsonValue : jsonArray) {
+ predicates.add(predicate.createFilterPart(((JsonObject)jsonValue).getString(FILTER_FIELD), ((JsonObject)jsonValue).getString(FILTER_OPERATION), ((JsonObject)jsonValue).getString(FILTER_VALUE)));
+ }
+ }
+ return predicates;
+ }
+
public abstract Class getClassT();
public abstract JsonObjectBuilder toJson(T obj);
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/AddressView.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/AddressView.java
index 34635dfe6f..f6f6cd8d57 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/AddressView.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/AddressView.java
@@ -17,12 +17,13 @@
package org.apache.activemq.artemis.core.management.impl.view;
import org.apache.activemq.artemis.api.core.management.AddressControl;
+import org.apache.activemq.artemis.core.management.impl.view.predicate.AddressPredicateFilterPart;
import org.apache.activemq.artemis.json.JsonObjectBuilder;
import org.apache.activemq.artemis.core.management.impl.view.predicate.AddressFilterPredicate;
import org.apache.activemq.artemis.core.server.ActiveMQServer;
import org.apache.activemq.artemis.utils.JsonLoader;
-public class AddressView extends ActiveMQAbstractView<AddressControl> {
+public class AddressView extends ActiveMQAbstractView<AddressControl, AddressPredicateFilterPart> {
private static final String defaultSortField = AddressField.ID.getName();
@@ -31,7 +32,7 @@ public class AddressView extends ActiveMQAbstractView<AddressControl> {
public AddressView(ActiveMQServer server) {
super();
this.server = server;
- this.predicate = new AddressFilterPredicate(server);
+ this.predicate = new AddressFilterPredicate();
}
@Override
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConnectionView.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConnectionView.java
index 3a1fc01200..f16508bf1c 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConnectionView.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConnectionView.java
@@ -22,6 +22,7 @@ import java.util.Objects;
import java.util.Set;
import java.util.TreeSet;
+import org.apache.activemq.artemis.core.management.impl.view.predicate.ConnectionPredicateFilterPart;
import org.apache.activemq.artemis.core.management.impl.view.predicate.ConnectionFilterPredicate;
import org.apache.activemq.artemis.core.remoting.impl.netty.NettyServerConnection;
import org.apache.activemq.artemis.core.server.ActiveMQServer;
@@ -31,7 +32,7 @@ import org.apache.activemq.artemis.spi.core.protocol.RemotingConnection;
import org.apache.activemq.artemis.utils.JsonLoader;
import org.apache.activemq.artemis.utils.StringUtil;
-public class ConnectionView extends ActiveMQAbstractView<RemotingConnection> {
+public class ConnectionView extends ActiveMQAbstractView<RemotingConnection, ConnectionPredicateFilterPart> {
private static final String defaultSortField = ConnectionField.CONNECTION_ID.getName();
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConsumerView.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConsumerView.java
index a64f30aac9..3f21b5e087 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConsumerView.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ConsumerView.java
@@ -19,6 +19,7 @@ package org.apache.activemq.artemis.core.management.impl.view;
import java.util.Date;
import org.apache.activemq.artemis.core.management.impl.ActiveMQServerControlImpl;
+import org.apache.activemq.artemis.core.management.impl.view.predicate.ConsumerPredicateFilterPart;
import org.apache.activemq.artemis.core.management.impl.view.predicate.ConsumerFilterPredicate;
import org.apache.activemq.artemis.core.server.ActiveMQServer;
import org.apache.activemq.artemis.core.server.ServerConsumer;
@@ -26,7 +27,7 @@ import org.apache.activemq.artemis.core.server.ServerSession;
import org.apache.activemq.artemis.json.JsonObjectBuilder;
import org.apache.activemq.artemis.utils.JsonLoader;
-public class ConsumerView extends ActiveMQAbstractView<ServerConsumer> {
+public class ConsumerView extends ActiveMQAbstractView<ServerConsumer, ConsumerPredicateFilterPart> {
public static final String CONSUMER_STATUS_OK = "OK";
public static final String CONSUMER_STATUS_ORPHANED = "Orphaned";
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ProducerView.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ProducerView.java
index b08e6076f8..71df507b32 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ProducerView.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/ProducerView.java
@@ -18,6 +18,7 @@ package org.apache.activemq.artemis.core.management.impl.view;
import java.util.Objects;
+import org.apache.activemq.artemis.core.management.impl.view.predicate.ProducerPredicateFilterPart;
import org.apache.activemq.artemis.core.management.impl.view.predicate.ProducerFilterPredicate;
import org.apache.activemq.artemis.core.server.ActiveMQServer;
import org.apache.activemq.artemis.core.server.ServerProducer;
@@ -25,7 +26,7 @@ import org.apache.activemq.artemis.core.server.ServerSession;
import org.apache.activemq.artemis.json.JsonObjectBuilder;
import org.apache.activemq.artemis.utils.JsonLoader;
-public class ProducerView extends ActiveMQAbstractView<ServerProducer> {
+public class ProducerView extends ActiveMQAbstractView<ServerProducer, ProducerPredicateFilterPart> {
private static final String defaultSortField = ProducerField.CREATION_TIME.getName();
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueView.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueView.java
index 80e20014f5..e3d74f4e28 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueView.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/QueueView.java
@@ -16,6 +16,7 @@
*/
package org.apache.activemq.artemis.core.management.impl.view;
+import org.apache.activemq.artemis.core.management.impl.view.predicate.QueuePredicateFilterPart;
import org.apache.activemq.artemis.json.JsonObjectBuilder;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.management.QueueControl;
@@ -24,7 +25,7 @@ import org.apache.activemq.artemis.core.server.ActiveMQServer;
import org.apache.activemq.artemis.core.server.Queue;
import org.apache.activemq.artemis.utils.JsonLoader;
-public class QueueView extends ActiveMQAbstractView<QueueControl> {
+public class QueueView extends ActiveMQAbstractView<QueueControl, QueuePredicateFilterPart> {
private static final String defaultSortField = QueueField.NAME.getName();
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/SessionView.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/SessionView.java
index c9c5369fcd..60205cbb74 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/SessionView.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/SessionView.java
@@ -16,6 +16,7 @@
*/
package org.apache.activemq.artemis.core.management.impl.view;
+import org.apache.activemq.artemis.core.management.impl.view.predicate.SessionPredicateFilterPart;
import org.apache.activemq.artemis.json.JsonObjectBuilder;
import java.util.Date;
import java.util.Objects;
@@ -24,7 +25,7 @@ import org.apache.activemq.artemis.core.management.impl.view.predicate.SessionFi
import org.apache.activemq.artemis.core.server.ServerSession;
import org.apache.activemq.artemis.utils.JsonLoader;
-public class SessionView extends ActiveMQAbstractView<ServerSession> {
+public class SessionView extends ActiveMQAbstractView<ServerSession, SessionPredicateFilterPart> {
private static final String defaultSortField = SessionField.ID.getName();
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ActiveMQFilterPredicate.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ActiveMQFilterPredicate.java
index c9a680bbd9..a4b91cce65 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ActiveMQFilterPredicate.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ActiveMQFilterPredicate.java
@@ -16,170 +16,44 @@
*/
package org.apache.activemq.artemis.core.management.impl.view.predicate;
-import java.util.Collection;
+import java.util.ArrayList;
+import java.util.List;
import java.util.function.Predicate;
-
-public class ActiveMQFilterPredicate<T> implements Predicate<T> {
+public abstract class ActiveMQFilterPredicate<T, V extends PredicateFilterPart<T>> implements Predicate<T> {
public enum Operation {
CONTAINS, NOT_CONTAINS, EQUALS, NOT_EQUALS, GREATER_THAN, LESS_THAN;
}
- protected String field;
-
- protected String value;
-
- protected Operation operation;
+ private final List<V> filterParts = new ArrayList<>();
public ActiveMQFilterPredicate() {
}
@Override
public boolean test(T input) {
- return true;
- }
-
- public String getField() {
- return field;
- }
-
- public void setField(String field) {
- this.field = field;
- }
-
- public String getValue() {
- return value;
- }
-
- public void setValue(String value) {
- this.value = value;
- }
-
- public Operation getOperation() {
- return operation;
- }
-
- public void setOperation(String operation) {
- if (operation != null && !operation.isBlank()) {
- this.operation = Operation.valueOf(operation);
- }
- }
-
- public boolean matches(Object field) {
- if (operation != null) {
- return switch (operation) {
- case EQUALS -> equals(field, value);
- case NOT_EQUALS -> !equals(field, value);
- case CONTAINS -> contains(field, value);
- case NOT_CONTAINS -> !contains(field, value);
- case GREATER_THAN -> false;
- case LESS_THAN -> false;
- };
- }
- return true;
- }
-
- public boolean matchAny(Collection objects) {
- for (Object o : objects) {
- if (matches(o))
- return true;
- }
- return false;
- }
-
- public boolean matches(long field) {
- long longValue;
- if (operation != null) {
-
- try {
- longValue = Long.parseLong(value);
- } catch (NumberFormatException ex) {
- //cannot compare
- if (operation == Operation.NOT_EQUALS || operation == Operation.NOT_CONTAINS) {
- return true;
- } else {
- return false;
+ if (filterParts.isEmpty())
+ return true;
+ try {
+ boolean matches = true;
+ for (V filterPart : filterParts) {
+ matches = filter(input, filterPart);
+ if (!matches) {
+ return matches;
}
}
-
- return switch (operation) {
- case EQUALS -> field == longValue;
- case NOT_EQUALS -> field != longValue;
- case CONTAINS -> false;
- case NOT_CONTAINS -> true;
- case LESS_THAN -> field < longValue;
- case GREATER_THAN -> field > longValue;
- };
+ return matches;
+ } catch (Exception e) {
+ return true;
}
- return true;
}
- public boolean matches(int field) {
- int intValue;
- if (operation != null) {
-
- try {
- intValue = Integer.parseInt(value);
- } catch (NumberFormatException ex) {
- //cannot compare
- if (operation == Operation.NOT_EQUALS || operation == Operation.NOT_CONTAINS) {
- return true;
- } else {
- return false;
- }
- }
-
- return switch (operation) {
- case EQUALS -> field == intValue;
- case NOT_EQUALS -> field != intValue;
- case CONTAINS -> false;
- case NOT_CONTAINS -> true;
- case LESS_THAN -> field < intValue;
- case GREATER_THAN -> field > intValue;
- };
- }
- return true;
+ public void addFilterParts(List<V> filterParts) {
+ this.filterParts.addAll(filterParts);
}
- public boolean matches(float field) {
- float floatValue;
- if (operation != null) {
+ protected abstract boolean filter(T input, V filterPart) throws Exception;
- try {
- floatValue = Float.parseFloat(value);
- } catch (NumberFormatException ex) {
- //cannot compare
- if (operation == Operation.NOT_EQUALS || operation == Operation.NOT_CONTAINS) {
- return true;
- } else {
- return false;
- }
- }
-
- return switch (operation) {
- case EQUALS -> field == floatValue;
- case NOT_EQUALS -> field != floatValue;
- case CONTAINS -> false;
- case NOT_CONTAINS -> true;
- case LESS_THAN -> field < floatValue;
- case GREATER_THAN -> field > floatValue;
- };
- }
- return true;
- }
-
- private boolean equals(Object field, Object value) {
- if (field == null) {
- return (value == null || value.equals(""));
- }
- return field.toString().equals(value);
- }
-
- private boolean contains(Object field, Object value) {
- if (field == null) {
- return (value == null || value.equals(""));
- }
- return field.toString().contains(value.toString());
- }
+ public abstract V createFilterPart(String field, String operation, String value);
}
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/AddressFilterPredicate.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/AddressFilterPredicate.java
index af0077a009..c0cccdc787 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/AddressFilterPredicate.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/AddressFilterPredicate.java
@@ -16,66 +16,20 @@
*/
package org.apache.activemq.artemis.core.management.impl.view.predicate;
-import java.util.Arrays;
-
import org.apache.activemq.artemis.api.core.management.AddressControl;
-import org.apache.activemq.artemis.core.management.impl.view.AddressField;
-import org.apache.activemq.artemis.core.server.ActiveMQServer;
-
-public class AddressFilterPredicate extends ActiveMQFilterPredicate<AddressControl> {
-
- private AddressField f;
- private final ActiveMQServer server;
-
- public AddressFilterPredicate(ActiveMQServer server) {
+public class AddressFilterPredicate extends ActiveMQFilterPredicate<AddressControl, AddressPredicateFilterPart> {
+ public AddressFilterPredicate() {
super();
- this.server = server;
}
@Override
- public boolean test(AddressControl address) {
- if (f == null)
- return true;
- try {
- return switch (f) {
- case ID -> matches(address.getId());
- case NAME -> matches(address.getAddress());
- case ROUTING_TYPES -> matchAny(Arrays.asList(address.getRoutingTypes()));
- case QUEUE_COUNT -> matches(address.getQueueCount());
- case INTERNAL -> matches(address.isInternal());
- case TEMPORARY -> matches(address.isTemporary());
- case AUTO_CREATED -> matches(address.isAutoCreated());
- case PAUSED -> matches(address.isPaused());
- case CURRENT_DUPLICATE_ID_CACHE_SIZE -> matches(address.getCurrentDuplicateIdCacheSize());
- case RETROACTIVE_RESOURCE -> matches(address.isRetroactiveResource());
- case UNROUTED_MESSAGE_COUNT -> matches(address.getUnRoutedMessageCount());
- case ROUTED_MESSAGE_COUNT -> matches(address.getRoutedMessageCount());
- case MESSAGE_COUNT -> matches(address.getMessageCount());
- case NUMBER_OF_BYTES_PER_PAGE -> matches(address.getNumberOfBytesPerPage());
- case ADDRESS_LIMIT_PERCENT -> matches(address.getAddressLimitPercent());
- case PAGING -> matches(address.isPaging());
- case NUMBER_OF_PAGES -> matches(address.getNumberOfPages());
- case ADDRESS_SIZE -> matches(address.getAddressSize());
- case MAX_PAGE_READ_BYTES -> matches(address.getMaxPageReadBytes());
- case MAX_PAGE_READ_MESSAGES -> matches(address.getMaxPageReadMessages());
- case PREFETCH_PAGE_BYTES -> matches(address.getPrefetchPageBytes());
- case PREFETCH_PAGE_MESSAGES -> matches(address.getPrefetchPageBytes());
- };
- } catch (Exception e) {
- return false;
- }
+ protected boolean filter(AddressControl address, AddressPredicateFilterPart filterPart) throws Exception {
+ return filterPart.filterPart(address);
}
@Override
- public void setField(String field) {
- if (field != null && !field.isEmpty()) {
- this.f = AddressField.valueOfName(field);
-
- //for backward compatibility
- if (this.f == null) {
- this.f = AddressField.valueOf(field);
- }
- }
+ public AddressPredicateFilterPart createFilterPart(String field, String operation, String value) {
+ return new AddressPredicateFilterPart(this, field, operation, value);
}
}
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/AddressPredicateFilterPart.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/AddressPredicateFilterPart.java
new file mode 100644
index 0000000000..2898e06d7e
--- /dev/null
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/AddressPredicateFilterPart.java
@@ -0,0 +1,69 @@
+/*
+ * 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.core.management.impl.view.predicate;
+
+import org.apache.activemq.artemis.api.core.management.AddressControl;
+import org.apache.activemq.artemis.core.management.impl.view.AddressField;
+
+import java.util.Arrays;
+
+public class AddressPredicateFilterPart extends PredicateFilterPart<AddressControl> {
+ private final AddressFilterPredicate addressFilterPredicate;
+ private AddressField f;
+
+ public AddressPredicateFilterPart(AddressFilterPredicate addressFilterPredicate, String field, String operation, String value) {
+ super(operation, value);
+ this.addressFilterPredicate = addressFilterPredicate;
+ if (field != null && !field.isEmpty()) {
+ f = AddressField.valueOfName(field);
+
+ //for backward compatibility
+ if (f == null) {
+ f = AddressField.valueOf(field);
+ }
+
+ }
+ }
+
+ @Override
+ public boolean filterPart(AddressControl address) throws Exception {
+ return switch (f) {
+ case ID -> matchesLong(address.getId());
+ case NAME -> matches(address.getAddress());
+ case ROUTING_TYPES -> matchAny(Arrays.asList(address.getRoutingTypes()));
+ case QUEUE_COUNT -> matchesLong(address.getQueueCount());
+ case INTERNAL -> matches(address.isInternal());
+ case TEMPORARY -> matches(address.isTemporary());
+ case AUTO_CREATED -> matches(address.isAutoCreated());
+ case PAUSED -> matches(address.isPaused());
+ case CURRENT_DUPLICATE_ID_CACHE_SIZE -> matchesLong(address.getCurrentDuplicateIdCacheSize());
+ case RETROACTIVE_RESOURCE -> matches(address.isRetroactiveResource());
+ case UNROUTED_MESSAGE_COUNT -> matchesLong(address.getUnRoutedMessageCount());
+ case ROUTED_MESSAGE_COUNT -> matchesLong(address.getRoutedMessageCount());
+ case MESSAGE_COUNT -> matchesLong(address.getMessageCount());
+ case NUMBER_OF_BYTES_PER_PAGE -> matchesLong(address.getNumberOfBytesPerPage());
+ case ADDRESS_LIMIT_PERCENT -> matchesLong(address.getAddressLimitPercent());
+ case PAGING -> matches(address.isPaging());
+ case NUMBER_OF_PAGES -> matchesLong(address.getNumberOfPages());
+ case ADDRESS_SIZE -> matchesLong(address.getAddressSize());
+ case MAX_PAGE_READ_BYTES -> matchesLong(address.getMaxPageReadBytes());
+ case MAX_PAGE_READ_MESSAGES -> matchesLong(address.getMaxPageReadMessages());
+ case PREFETCH_PAGE_BYTES -> matchesLong(address.getPrefetchPageBytes());
+ case PREFETCH_PAGE_MESSAGES -> matchesLong(address.getPrefetchPageBytes());
+ };
+ }
+}
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ConnectionFilterPredicate.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ConnectionFilterPredicate.java
index b997353d07..9b6c486f1c 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ConnectionFilterPredicate.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ConnectionFilterPredicate.java
@@ -16,21 +16,10 @@
*/
package org.apache.activemq.artemis.core.management.impl.view.predicate;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
-import java.util.function.Function;
-
-import org.apache.activemq.artemis.core.management.impl.view.ConnectionField;
-import org.apache.activemq.artemis.core.remoting.impl.netty.NettyServerConnection;
import org.apache.activemq.artemis.core.server.ActiveMQServer;
-import org.apache.activemq.artemis.core.server.ServerSession;
import org.apache.activemq.artemis.spi.core.protocol.RemotingConnection;
-public class ConnectionFilterPredicate extends ActiveMQFilterPredicate<RemotingConnection> {
-
- private ConnectionField f;
+public class ConnectionFilterPredicate extends ActiveMQFilterPredicate<RemotingConnection, ConnectionPredicateFilterPart> {
private ActiveMQServer server;
@@ -39,46 +28,12 @@ public class ConnectionFilterPredicate extends ActiveMQFilterPredicate<RemotingC
}
@Override
- public boolean test(RemotingConnection connection) {
- // Using switch over enum vs string comparison is better for perf.
- if (f == null)
- return true;
- return switch (f) {
- case CONNECTION_ID -> matches(connection.getID());
- case CLIENT_ID -> matches(connection.getClientID());
- case USERS -> matchAny(collectFromSessions(connection.getID().toString(), s -> s.getUsername()));
- case PROTOCOL -> matches(connection.getProtocolName());
- case SESSION_COUNT -> matches(server.getSessions(connection.getID().toString()).size());
- case REMOTE_ADDRESS -> matches(connection.getTransportConnection().getRemoteAddress());
- case LOCAL_ADDRESS -> matches(connection.getTransportConnection().getLocalAddress());
- case SESSION_ID -> matchAny(server.getSessions(connection.getID().toString()));
- case CREATION_TIME -> matches(connection.getCreationTime());
- case IMPLEMENTATION -> matches(connection.getClass().getSimpleName());
- case PROXY_ADDRESS -> matches(NettyServerConnection.getProxyAddress(connection.getTransportConnection()));
- case PROXY_PROTOCOL_VERSION -> matches(NettyServerConnection.getProxyProtocolVersion(connection.getTransportConnection()));
- };
- }
-
- Set<String> collectFromSessions(String connectionId, Function<ServerSession, String> getter) {
- List<ServerSession> sessions = server.getSessions(connectionId);
- Set<String> sessionAttributes = new HashSet<>();
- for (ServerSession session : sessions) {
- String value = getter.apply(session);
- String string = Objects.requireNonNullElse(value, "");
- sessionAttributes.add(string);
- }
- return sessionAttributes;
+ protected boolean filter(RemotingConnection input, ConnectionPredicateFilterPart filterPart) throws Exception {
+ return filterPart.filterPart(input);
}
@Override
- public void setField(String field) {
- if (field != null && !field.isEmpty()) {
- this.f = ConnectionField.valueOfName(field);
-
- //for backward compatibility
- if (this.f == null) {
- this.f = ConnectionField.valueOf(field);
- }
- }
+ public ConnectionPredicateFilterPart createFilterPart(String field, String operation, String value) {
+ return new ConnectionPredicateFilterPart(server, field, operation, value);
}
}
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ConnectionFilterPredicate.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ConnectionPredicateFilterPart.java
similarity index 84%
copy from artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ConnectionFilterPredicate.java
copy to artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ConnectionPredicateFilterPart.java
index b997353d07..47a352258e 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ConnectionFilterPredicate.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ConnectionPredicateFilterPart.java
@@ -16,43 +16,48 @@
*/
package org.apache.activemq.artemis.core.management.impl.view.predicate;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
-import java.util.function.Function;
-
import org.apache.activemq.artemis.core.management.impl.view.ConnectionField;
import org.apache.activemq.artemis.core.remoting.impl.netty.NettyServerConnection;
import org.apache.activemq.artemis.core.server.ActiveMQServer;
import org.apache.activemq.artemis.core.server.ServerSession;
import org.apache.activemq.artemis.spi.core.protocol.RemotingConnection;
-public class ConnectionFilterPredicate extends ActiveMQFilterPredicate<RemotingConnection> {
+import java.util.HashSet;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
+import java.util.function.Function;
+
+public class ConnectionPredicateFilterPart extends PredicateFilterPart<RemotingConnection> {
+ private final ActiveMQServer server;
private ConnectionField f;
- private ActiveMQServer server;
-
- public ConnectionFilterPredicate(ActiveMQServer server) {
+ public ConnectionPredicateFilterPart(ActiveMQServer server, String field, String operation, String value) {
+ super(operation, value);
this.server = server;
+ if (field != null && !field.isEmpty()) {
+ this.f = ConnectionField.valueOfName(field);
+
+ //for backward compatibility
+ if (this.f == null) {
+ this.f = ConnectionField.valueOf(field);
+ }
+ }
}
@Override
- public boolean test(RemotingConnection connection) {
- // Using switch over enum vs string comparison is better for perf.
- if (f == null)
- return true;
+ public boolean filterPart(RemotingConnection connection) throws Exception {
return switch (f) {
case CONNECTION_ID -> matches(connection.getID());
case CLIENT_ID -> matches(connection.getClientID());
case USERS -> matchAny(collectFromSessions(connection.getID().toString(), s -> s.getUsername()));
case PROTOCOL -> matches(connection.getProtocolName());
- case SESSION_COUNT -> matches(server.getSessions(connection.getID().toString()).size());
+ case SESSION_COUNT -> matchesLong(server.getSessions(connection.getID().toString()).size());
case REMOTE_ADDRESS -> matches(connection.getTransportConnection().getRemoteAddress());
case LOCAL_ADDRESS -> matches(connection.getTransportConnection().getLocalAddress());
case SESSION_ID -> matchAny(server.getSessions(connection.getID().toString()));
- case CREATION_TIME -> matches(connection.getCreationTime());
+ case CREATION_TIME -> matchesLong(connection.getCreationTime());
case IMPLEMENTATION -> matches(connection.getClass().getSimpleName());
case PROXY_ADDRESS -> matches(NettyServerConnection.getProxyAddress(connection.getTransportConnection()));
case PROXY_PROTOCOL_VERSION -> matches(NettyServerConnection.getProxyProtocolVersion(connection.getTransportConnection()));
@@ -70,15 +75,4 @@ public class ConnectionFilterPredicate extends ActiveMQFilterPredicate<RemotingC
return sessionAttributes;
}
- @Override
- public void setField(String field) {
- if (field != null && !field.isEmpty()) {
- this.f = ConnectionField.valueOfName(field);
-
- //for backward compatibility
- if (this.f == null) {
- this.f = ConnectionField.valueOf(field);
- }
- }
- }
}
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ConsumerFilterPredicate.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ConsumerFilterPredicate.java
index 50f4f573cc..216e2075ea 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ConsumerFilterPredicate.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ConsumerFilterPredicate.java
@@ -16,13 +16,10 @@
*/
package org.apache.activemq.artemis.core.management.impl.view.predicate;
-import org.apache.activemq.artemis.core.management.impl.view.ConsumerField;
import org.apache.activemq.artemis.core.server.ActiveMQServer;
import org.apache.activemq.artemis.core.server.ServerConsumer;
-public class ConsumerFilterPredicate extends ActiveMQFilterPredicate<ServerConsumer> {
-
- private ConsumerField f;
+public class ConsumerFilterPredicate extends ActiveMQFilterPredicate<ServerConsumer, ConsumerPredicateFilterPart> {
private final ActiveMQServer server;
@@ -32,47 +29,12 @@ public class ConsumerFilterPredicate extends ActiveMQFilterPredicate<ServerConsu
}
@Override
- public boolean test(ServerConsumer consumer) {
- // Using switch over enum vs string comparison is better for perf.
- if (f == null)
- return true;
- return switch (f) {
- case ID -> matches(consumer.getSequentialID());
- case SESSION -> matches(consumer.getSessionID());
- case USER -> matches(server.getSessionByID(consumer.getSessionID()).getUsername());
- case VALIDATED_USER -> matches(server.getSessionByID(consumer.getSessionID()).getValidatedUser());
- case ADDRESS -> matches(consumer.getQueue().getAddress());
- case QUEUE -> matches(consumer.getQueue().getName());
- case FILTER -> matches(consumer.getFilterString());
- case PROTOCOL ->
- matches(server.getSessionByID(consumer.getSessionID()).getRemotingConnection().getProtocolName());
- case CLIENT_ID ->
- matches(server.getSessionByID(consumer.getSessionID()).getRemotingConnection().getClientID());
- case LOCAL_ADDRESS ->
- matches(server.getSessionByID(consumer.getSessionID()).getRemotingConnection().getTransportConnection().getLocalAddress());
- case REMOTE_ADDRESS ->
- matches(server.getSessionByID(consumer.getSessionID()).getRemotingConnection().getTransportConnection().getRemoteAddress());
- case MESSAGES_IN_TRANSIT -> matches(consumer.getMessagesInTransit());
- case MESSAGES_IN_TRANSIT_SIZE -> matches(consumer.getMessagesInTransitSize());
- case MESSAGES_DELIVERED -> matches(consumer.getMessagesDelivered());
- case MESSAGES_DELIVERED_SIZE -> matches(consumer.getMessagesDeliveredSize());
- case MESSAGES_ACKNOWLEDGED -> matches(consumer.getMessagesAcknowledged());
- case MESSAGES_ACKNOWLEDGED_AWAITING_COMMIT -> matches(consumer.getMessagesAcknowledgedAwaitingCommit());
- case LAST_ACKNOWLEDGED_TIME -> matches(consumer.getLastAcknowledgedTime());
- case LAST_DELIVERED_TIME -> matches(consumer.getLastDeliveredTime());
- default -> true;
- };
+ protected boolean filter(ServerConsumer consumer, ConsumerPredicateFilterPart filterPart) throws Exception {
+ return filterPart.filterPart(consumer);
}
@Override
- public void setField(String field) {
- if (field != null && !field.isEmpty()) {
- this.f = ConsumerField.valueOfName(field);
-
- //for backward compatibility
- if (this.f == null) {
- this.f = ConsumerField.valueOf(field);
- }
- }
+ public ConsumerPredicateFilterPart createFilterPart(String field, String operation, String value) {
+ return new ConsumerPredicateFilterPart(server, field, operation, value);
}
}
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ConsumerFilterPredicate.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ConsumerPredicateFilterPart.java
similarity index 54%
copy from artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ConsumerFilterPredicate.java
copy to artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ConsumerPredicateFilterPart.java
index 50f4f573cc..4f81baa4f6 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ConsumerFilterPredicate.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ConsumerPredicateFilterPart.java
@@ -20,59 +20,48 @@ import org.apache.activemq.artemis.core.management.impl.view.ConsumerField;
import org.apache.activemq.artemis.core.server.ActiveMQServer;
import org.apache.activemq.artemis.core.server.ServerConsumer;
-public class ConsumerFilterPredicate extends ActiveMQFilterPredicate<ServerConsumer> {
-
- private ConsumerField f;
+public class ConsumerPredicateFilterPart extends PredicateFilterPart<ServerConsumer> {
private final ActiveMQServer server;
- public ConsumerFilterPredicate(ActiveMQServer server) {
- super();
+ private ConsumerField f;
+
+ public ConsumerPredicateFilterPart(ActiveMQServer server, String field, String operation, String value) {
+ super(operation, value);
this.server = server;
+ if (field != null && !field.isEmpty()) {
+ this.f = ConsumerField.valueOfName(field);
+
+ //for backward compatibility
+ if (this.f == null) {
+ this.f = ConsumerField.valueOf(field);
+ }
+ }
}
@Override
- public boolean test(ServerConsumer consumer) {
- // Using switch over enum vs string comparison is better for perf.
- if (f == null)
- return true;
+ public boolean filterPart(ServerConsumer consumer) throws Exception {
return switch (f) {
- case ID -> matches(consumer.getSequentialID());
+ case ID -> matchesLong(consumer.getSequentialID());
case SESSION -> matches(consumer.getSessionID());
case USER -> matches(server.getSessionByID(consumer.getSessionID()).getUsername());
case VALIDATED_USER -> matches(server.getSessionByID(consumer.getSessionID()).getValidatedUser());
case ADDRESS -> matches(consumer.getQueue().getAddress());
case QUEUE -> matches(consumer.getQueue().getName());
case FILTER -> matches(consumer.getFilterString());
- case PROTOCOL ->
- matches(server.getSessionByID(consumer.getSessionID()).getRemotingConnection().getProtocolName());
- case CLIENT_ID ->
- matches(server.getSessionByID(consumer.getSessionID()).getRemotingConnection().getClientID());
- case LOCAL_ADDRESS ->
- matches(server.getSessionByID(consumer.getSessionID()).getRemotingConnection().getTransportConnection().getLocalAddress());
- case REMOTE_ADDRESS ->
- matches(server.getSessionByID(consumer.getSessionID()).getRemotingConnection().getTransportConnection().getRemoteAddress());
- case MESSAGES_IN_TRANSIT -> matches(consumer.getMessagesInTransit());
- case MESSAGES_IN_TRANSIT_SIZE -> matches(consumer.getMessagesInTransitSize());
+ case PROTOCOL -> matches(server.getSessionByID(consumer.getSessionID()).getRemotingConnection().getProtocolName());
+ case CLIENT_ID -> matches(server.getSessionByID(consumer.getSessionID()).getRemotingConnection().getClientID());
+ case LOCAL_ADDRESS -> matches(server.getSessionByID(consumer.getSessionID()).getRemotingConnection().getTransportConnection().getLocalAddress());
+ case REMOTE_ADDRESS -> matches(server.getSessionByID(consumer.getSessionID()).getRemotingConnection().getTransportConnection().getRemoteAddress());
+ case MESSAGES_IN_TRANSIT -> matchesLong(consumer.getMessagesInTransit());
+ case MESSAGES_IN_TRANSIT_SIZE -> matchesLong(consumer.getMessagesInTransitSize());
case MESSAGES_DELIVERED -> matches(consumer.getMessagesDelivered());
- case MESSAGES_DELIVERED_SIZE -> matches(consumer.getMessagesDeliveredSize());
- case MESSAGES_ACKNOWLEDGED -> matches(consumer.getMessagesAcknowledged());
- case MESSAGES_ACKNOWLEDGED_AWAITING_COMMIT -> matches(consumer.getMessagesAcknowledgedAwaitingCommit());
- case LAST_ACKNOWLEDGED_TIME -> matches(consumer.getLastAcknowledgedTime());
- case LAST_DELIVERED_TIME -> matches(consumer.getLastDeliveredTime());
+ case MESSAGES_DELIVERED_SIZE -> matchesLong(consumer.getMessagesDeliveredSize());
+ case MESSAGES_ACKNOWLEDGED -> matchesLong(consumer.getMessagesAcknowledged());
+ case MESSAGES_ACKNOWLEDGED_AWAITING_COMMIT -> matchesLong(consumer.getMessagesAcknowledgedAwaitingCommit());
+ case LAST_ACKNOWLEDGED_TIME -> matchesLong(consumer.getLastAcknowledgedTime());
+ case LAST_DELIVERED_TIME -> matchesLong(consumer.getLastDeliveredTime());
default -> true;
};
}
-
- @Override
- public void setField(String field) {
- if (field != null && !field.isEmpty()) {
- this.f = ConsumerField.valueOfName(field);
-
- //for backward compatibility
- if (this.f == null) {
- this.f = ConsumerField.valueOf(field);
- }
- }
- }
}
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ActiveMQFilterPredicate.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/PredicateFilterPart.java
similarity index 73%
copy from artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ActiveMQFilterPredicate.java
copy to artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/PredicateFilterPart.java
index c9a680bbd9..298b47f821 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ActiveMQFilterPredicate.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/PredicateFilterPart.java
@@ -17,78 +17,41 @@
package org.apache.activemq.artemis.core.management.impl.view.predicate;
import java.util.Collection;
-import java.util.function.Predicate;
+public class PredicateFilterPart<T> {
-public class ActiveMQFilterPredicate<T> implements Predicate<T> {
+ private final String value;
- public enum Operation {
- CONTAINS, NOT_CONTAINS, EQUALS, NOT_EQUALS, GREATER_THAN, LESS_THAN;
- }
-
- protected String field;
-
- protected String value;
-
- protected Operation operation;
+ private final String operation;
- public ActiveMQFilterPredicate() {
- }
-
- @Override
- public boolean test(T input) {
- return true;
- }
+ private final ActiveMQFilterPredicate.Operation filterOperation;
- public String getField() {
- return field;
+ public PredicateFilterPart(String operation, String value) {
+ this.value = value;
+ this.operation = operation;
+ if (operation != null && !operation.isBlank()) {
+ this.filterOperation = ActiveMQFilterPredicate.Operation.valueOf(operation);
+ } else {
+ filterOperation = null;
+ }
}
- public void setField(String field) {
- this.field = field;
+ public String getOperation() {
+ return operation;
}
public String getValue() {
return value;
}
- public void setValue(String value) {
- this.value = value;
- }
-
- public Operation getOperation() {
- return operation;
+ public ActiveMQFilterPredicate.Operation getFilterOperation() {
+ return filterOperation;
}
- public void setOperation(String operation) {
- if (operation != null && !operation.isBlank()) {
- this.operation = Operation.valueOf(operation);
- }
- }
-
- public boolean matches(Object field) {
- if (operation != null) {
- return switch (operation) {
- case EQUALS -> equals(field, value);
- case NOT_EQUALS -> !equals(field, value);
- case CONTAINS -> contains(field, value);
- case NOT_CONTAINS -> !contains(field, value);
- case GREATER_THAN -> false;
- case LESS_THAN -> false;
- };
- }
+ public boolean filterPart(T input) throws Exception {
return true;
}
-
- public boolean matchAny(Collection objects) {
- for (Object o : objects) {
- if (matches(o))
- return true;
- }
- return false;
- }
-
- public boolean matches(long field) {
+ public boolean matchesLong(long field) {
long longValue;
if (operation != null) {
@@ -96,14 +59,14 @@ public class ActiveMQFilterPredicate<T> implements Predicate<T> {
longValue = Long.parseLong(value);
} catch (NumberFormatException ex) {
//cannot compare
- if (operation == Operation.NOT_EQUALS || operation == Operation.NOT_CONTAINS) {
+ if (filterOperation == ActiveMQFilterPredicate.Operation.NOT_EQUALS || filterOperation == ActiveMQFilterPredicate.Operation.NOT_CONTAINS) {
return true;
} else {
return false;
}
}
- return switch (operation) {
+ return switch (filterOperation) {
case EQUALS -> field == longValue;
case NOT_EQUALS -> field != longValue;
case CONTAINS -> false;
@@ -115,22 +78,37 @@ public class ActiveMQFilterPredicate<T> implements Predicate<T> {
return true;
}
- public boolean matches(int field) {
+ public boolean matches(Object field) {
+ if (filterOperation != null) {
+ return switch (filterOperation) {
+ case EQUALS -> equals(field, value);
+ case NOT_EQUALS -> !equals(field, value);
+ case CONTAINS -> contains(field, value);
+ case NOT_CONTAINS -> !contains(field, value);
+ case GREATER_THAN -> false;
+ case LESS_THAN -> false;
+ };
+ }
+ return true;
+ }
+
+
+ public boolean matchesInt(int field) {
int intValue;
- if (operation != null) {
+ if (filterOperation != null) {
try {
intValue = Integer.parseInt(value);
} catch (NumberFormatException ex) {
//cannot compare
- if (operation == Operation.NOT_EQUALS || operation == Operation.NOT_CONTAINS) {
+ if (filterOperation == ActiveMQFilterPredicate.Operation.NOT_EQUALS || filterOperation == ActiveMQFilterPredicate.Operation.NOT_CONTAINS) {
return true;
} else {
return false;
}
}
- return switch (operation) {
+ return switch (filterOperation) {
case EQUALS -> field == intValue;
case NOT_EQUALS -> field != intValue;
case CONTAINS -> false;
@@ -142,7 +120,8 @@ public class ActiveMQFilterPredicate<T> implements Predicate<T> {
return true;
}
- public boolean matches(float field) {
+
+ public boolean matchesFloat(float field) {
float floatValue;
if (operation != null) {
@@ -150,14 +129,14 @@ public class ActiveMQFilterPredicate<T> implements Predicate<T> {
floatValue = Float.parseFloat(value);
} catch (NumberFormatException ex) {
//cannot compare
- if (operation == Operation.NOT_EQUALS || operation == Operation.NOT_CONTAINS) {
+ if (filterOperation == ActiveMQFilterPredicate.Operation.NOT_EQUALS || filterOperation == ActiveMQFilterPredicate.Operation.NOT_CONTAINS) {
return true;
} else {
return false;
}
}
- return switch (operation) {
+ return switch (filterOperation) {
case EQUALS -> field == floatValue;
case NOT_EQUALS -> field != floatValue;
case CONTAINS -> false;
@@ -168,6 +147,13 @@ public class ActiveMQFilterPredicate<T> implements Predicate<T> {
}
return true;
}
+ public boolean matchAny(Collection objects) {
+ for (Object o : objects) {
+ if (matches(o))
+ return true;
+ }
+ return false;
+ }
private boolean equals(Object field, Object value) {
if (field == null) {
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ProducerFilterPredicate.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ProducerFilterPredicate.java
index 6552e734fe..5669469c6d 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ProducerFilterPredicate.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ProducerFilterPredicate.java
@@ -16,13 +16,10 @@
*/
package org.apache.activemq.artemis.core.management.impl.view.predicate;
-import org.apache.activemq.artemis.core.management.impl.view.ProducerField;
import org.apache.activemq.artemis.core.server.ActiveMQServer;
import org.apache.activemq.artemis.core.server.ServerProducer;
-public class ProducerFilterPredicate extends ActiveMQFilterPredicate<ServerProducer> {
-
- private ProducerField f;
+public class ProducerFilterPredicate extends ActiveMQFilterPredicate<ServerProducer, ProducerPredicateFilterPart> {
private final ActiveMQServer server;
@@ -32,38 +29,12 @@ public class ProducerFilterPredicate extends ActiveMQFilterPredicate<ServerProdu
}
@Override
- public boolean test(ServerProducer producer) {
- // Using switch over enum vs string comparison is better for perf.
- if (f == null)
- return true;
- return switch (f) {
- case ID -> matches(producer.getID());
- case CONNECTION_ID -> matches(producer.getConnectionID());
- case SESSION -> matches(producer.getSessionID());
- case USER -> matches(server.getSessionByID(producer.getSessionID()).getUsername());
- case VALIDATED_USER -> matches(server.getSessionByID(producer.getSessionID()).getValidatedUser());
- case ADDRESS ->
- matches(producer.getAddress() != null ? producer.getAddress() : server.getSessionByID(producer.getSessionID()).getDefaultAddress());
- case PROTOCOL -> matches(producer.getProtocol());
- case CLIENT_ID ->
- matches(server.getSessionByID(producer.getSessionID()).getRemotingConnection().getClientID());
- case LOCAL_ADDRESS ->
- matches(server.getSessionByID(producer.getSessionID()).getRemotingConnection().getTransportConnection().getLocalAddress());
- case REMOTE_ADDRESS ->
- matches(server.getSessionByID(producer.getSessionID()).getRemotingConnection().getTransportConnection().getRemoteAddress());
- default -> true;
- };
+ protected boolean filter(ServerProducer producer, ProducerPredicateFilterPart filterPart) throws Exception {
+ return filterPart.filterPart(producer);
}
@Override
- public void setField(String field) {
- if (field != null && !field.isEmpty()) {
- this.f = ProducerField.valueOfName(field);
-
- //for backward compatibility
- if (this.f == null) {
- this.f = ProducerField.valueOf(field);
- }
- }
+ public ProducerPredicateFilterPart createFilterPart(String field, String operation, String value) {
+ return new ProducerPredicateFilterPart(server, field, operation, value);
}
}
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ProducerFilterPredicate.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ProducerPredicateFilterPart.java
similarity index 63%
copy from artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ProducerFilterPredicate.java
copy to artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ProducerPredicateFilterPart.java
index 6552e734fe..35aa06794d 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ProducerFilterPredicate.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/ProducerPredicateFilterPart.java
@@ -20,50 +20,39 @@ import org.apache.activemq.artemis.core.management.impl.view.ProducerField;
import org.apache.activemq.artemis.core.server.ActiveMQServer;
import org.apache.activemq.artemis.core.server.ServerProducer;
-public class ProducerFilterPredicate extends ActiveMQFilterPredicate<ServerProducer> {
-
- private ProducerField f;
+public class ProducerPredicateFilterPart extends PredicateFilterPart<ServerProducer> {
private final ActiveMQServer server;
- public ProducerFilterPredicate(ActiveMQServer server) {
- super();
+ private ProducerField f;
+
+ public ProducerPredicateFilterPart(ActiveMQServer server, String field, String operation, String value) {
+ super(operation, value);
this.server = server;
+ if (field != null && !field.isEmpty()) {
+ this.f = ProducerField.valueOfName(field);
+
+ //for backward compatibility
+ if (this.f == null) {
+ this.f = ProducerField.valueOf(field);
+ }
+ }
}
@Override
- public boolean test(ServerProducer producer) {
- // Using switch over enum vs string comparison is better for perf.
- if (f == null)
- return true;
+ public boolean filterPart(ServerProducer producer) throws Exception {
return switch (f) {
- case ID -> matches(producer.getID());
+ case ID -> matchesLong(producer.getID());
case CONNECTION_ID -> matches(producer.getConnectionID());
case SESSION -> matches(producer.getSessionID());
case USER -> matches(server.getSessionByID(producer.getSessionID()).getUsername());
case VALIDATED_USER -> matches(server.getSessionByID(producer.getSessionID()).getValidatedUser());
- case ADDRESS ->
- matches(producer.getAddress() != null ? producer.getAddress() : server.getSessionByID(producer.getSessionID()).getDefaultAddress());
+ case ADDRESS -> matches(producer.getAddress() != null ? producer.getAddress() : server.getSessionByID(producer.getSessionID()).getDefaultAddress());
case PROTOCOL -> matches(producer.getProtocol());
- case CLIENT_ID ->
- matches(server.getSessionByID(producer.getSessionID()).getRemotingConnection().getClientID());
- case LOCAL_ADDRESS ->
- matches(server.getSessionByID(producer.getSessionID()).getRemotingConnection().getTransportConnection().getLocalAddress());
- case REMOTE_ADDRESS ->
- matches(server.getSessionByID(producer.getSessionID()).getRemotingConnection().getTransportConnection().getRemoteAddress());
+ case CLIENT_ID -> matches(server.getSessionByID(producer.getSessionID()).getRemotingConnection().getClientID());
+ case LOCAL_ADDRESS -> matches(server.getSessionByID(producer.getSessionID()).getRemotingConnection().getTransportConnection().getLocalAddress());
+ case REMOTE_ADDRESS -> matches(server.getSessionByID(producer.getSessionID()).getRemotingConnection().getTransportConnection().getRemoteAddress());
default -> true;
};
}
-
- @Override
- public void setField(String field) {
- if (field != null && !field.isEmpty()) {
- this.f = ProducerField.valueOfName(field);
-
- //for backward compatibility
- if (this.f == null) {
- this.f = ProducerField.valueOf(field);
- }
- }
- }
}
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/QueueFilterPredicate.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/QueueFilterPredicate.java
index 87314db48c..0d846e3a08 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/QueueFilterPredicate.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/QueueFilterPredicate.java
@@ -16,14 +16,11 @@
*/
package org.apache.activemq.artemis.core.management.impl.view.predicate;
-import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.management.QueueControl;
import org.apache.activemq.artemis.core.management.impl.view.QueueField;
import org.apache.activemq.artemis.core.server.ActiveMQServer;
-import org.apache.activemq.artemis.core.server.Consumer;
-import org.apache.activemq.artemis.core.server.Queue;
-public class QueueFilterPredicate extends ActiveMQFilterPredicate<QueueControl> {
+public class QueueFilterPredicate extends ActiveMQFilterPredicate<QueueControl, QueuePredicateFilterPart> {
private QueueField f;
@@ -35,58 +32,12 @@ public class QueueFilterPredicate extends ActiveMQFilterPredicate<QueueControl>
}
@Override
- public boolean test(QueueControl queue) {
- if (f == null)
- return true;
- try {
- return switch (f) {
- case ID -> matches(queue.getID());
- case NAME -> matches(queue.getName());
- case CONSUMER_ID -> {
- Queue q = server.locateQueue(SimpleString.of(queue.getName()));
- for (Consumer consumer : q.getConsumers()) {
- if (matches(consumer.sequentialID()))
- yield true;
- }
- yield false;
- }
- case MAX_CONSUMERS -> matches(queue.getMaxConsumers());
- case ADDRESS -> matches(queue.getAddress());
- case FILTER -> matches(queue.getFilter());
- case MESSAGE_COUNT -> matches(queue.getMessageCount());
- case CONSUMER_COUNT -> matches(queue.getConsumerCount());
- case DELIVERING_COUNT -> matches(queue.getDeliveringCount());
- case MESSAGES_ADDED -> matches(queue.getMessagesAdded());
- case MESSAGES_ACKED -> matches(queue.getMessagesAcknowledged());
- case MESSAGES_EXPIRED -> matches(queue.getMessagesExpired());
- case ROUTING_TYPE -> matches(queue.getRoutingType());
- case AUTO_CREATED -> matches(server.locateQueue(SimpleString.of(queue.getName())).isAutoCreated());
- case DURABLE -> matches(queue.isDurable());
- case PAUSED -> matches(queue.isPaused());
- case TEMPORARY -> matches(queue.isTemporary());
- case PURGE_ON_NO_CONSUMERS -> matches(queue.isPurgeOnNoConsumers());
- case MESSAGES_KILLED -> matches(queue.getMessagesKilled());
- case EXCLUSIVE -> matches(queue.isExclusive());
- case LAST_VALUE -> matches(queue.isLastValue());
- case SCHEDULED_COUNT -> matches(queue.getScheduledCount());
- case USER -> matches(queue.getUser());
- case INTERNAL_QUEUE -> matches(queue.isInternalQueue());
- default -> true;
- };
- } catch (Exception e) {
- return true;
- }
+ protected boolean filter(QueueControl queue, QueuePredicateFilterPart filterPart) throws Exception {
+ return filterPart.filterPart(queue);
}
@Override
- public void setField(String field) {
- if (field != null && !field.isEmpty()) {
- this.f = QueueField.valueOfName(field);
-
- //for backward compatibility
- if (this.f == null) {
- this.f = QueueField.valueOf(field);
- }
- }
+ public QueuePredicateFilterPart createFilterPart(String field, String operation, String value) {
+ return new QueuePredicateFilterPart(server, field, operation, value);
}
}
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/QueuePredicateFilterPart.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/QueuePredicateFilterPart.java
new file mode 100644
index 0000000000..abb7d4a3a7
--- /dev/null
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/QueuePredicateFilterPart.java
@@ -0,0 +1,80 @@
+/*
+ * 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.core.management.impl.view.predicate;
+
+import org.apache.activemq.artemis.api.core.SimpleString;
+import org.apache.activemq.artemis.api.core.management.QueueControl;
+import org.apache.activemq.artemis.core.management.impl.view.QueueField;
+import org.apache.activemq.artemis.core.server.ActiveMQServer;
+import org.apache.activemq.artemis.core.server.Consumer;
+import org.apache.activemq.artemis.core.server.Queue;
+
+public class QueuePredicateFilterPart extends PredicateFilterPart<QueueControl> {
+ private final ActiveMQServer server;
+ private QueueField f;
+
+ public QueuePredicateFilterPart(ActiveMQServer server, String field, String operation, String value) {
+ super(operation, value);
+ this.server = server;
+ if (field != null && !field.isEmpty()) {
+ f = QueueField.valueOfName(field);
+
+ //for backward compatibility
+ if (f == null) {
+ f = QueueField.valueOf(field);
+ }
+ }
+ }
+
+ @Override
+ public boolean filterPart(QueueControl queue) {
+ return switch (f) {
+ case ID -> matchesLong(queue.getID());
+ case NAME -> matches(queue.getName());
+ case CONSUMER_ID -> {
+ Queue q = server.locateQueue(SimpleString.of(queue.getName()));
+ for (Consumer consumer : q.getConsumers()) {
+ if (matchesLong(consumer.sequentialID()))
+ yield true;
+ }
+ yield false;
+ }
+ case MAX_CONSUMERS -> matchesInt(queue.getMaxConsumers());
+ case ADDRESS -> matches(queue.getAddress());
+ case FILTER -> matches(queue.getFilter());
+ case MESSAGE_COUNT -> matchesLong(queue.getMessageCount());
+ case CONSUMER_COUNT -> matchesInt(queue.getConsumerCount());
+ case DELIVERING_COUNT -> matchesInt(queue.getDeliveringCount());
+ case MESSAGES_ADDED -> matchesLong(queue.getMessagesAdded());
+ case MESSAGES_ACKED -> matchesLong(queue.getMessagesAcknowledged());
+ case MESSAGES_EXPIRED -> matchesLong(queue.getMessagesExpired());
+ case ROUTING_TYPE -> matches(queue.getRoutingType());
+ case AUTO_CREATED -> matches(server.locateQueue(SimpleString.of(queue.getName())).isAutoCreated());
+ case DURABLE -> matches(queue.isDurable());
+ case PAUSED -> matches(queue.isPaused());
+ case TEMPORARY -> matches(queue.isTemporary());
+ case PURGE_ON_NO_CONSUMERS -> matches(queue.isPurgeOnNoConsumers());
+ case MESSAGES_KILLED -> matchesLong(queue.getMessagesKilled());
+ case EXCLUSIVE -> matches(queue.isExclusive());
+ case LAST_VALUE -> matches(queue.isLastValue());
+ case SCHEDULED_COUNT -> matchesLong(queue.getScheduledCount());
+ case USER -> matches(queue.getUser());
+ case INTERNAL_QUEUE -> matches(queue.isInternalQueue());
+ default -> true;
+ };
+ }
+}
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/SessionFilterPredicate.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/SessionFilterPredicate.java
index 50a40ae6f9..d95b9eb2f3 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/SessionFilterPredicate.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/SessionFilterPredicate.java
@@ -16,44 +16,21 @@
*/
package org.apache.activemq.artemis.core.management.impl.view.predicate;
-import org.apache.activemq.artemis.core.management.impl.view.SessionField;
import org.apache.activemq.artemis.core.server.ServerSession;
-public class SessionFilterPredicate extends ActiveMQFilterPredicate<ServerSession> {
-
- private SessionField f;
+public class SessionFilterPredicate extends ActiveMQFilterPredicate<ServerSession, SessionPredicateFilterPart> {
public SessionFilterPredicate() {
super();
}
@Override
- public boolean test(ServerSession session) {
- // Using switch over enum vs string comparison is better for perf.
- if (f == null)
- return true;
- return switch (f) {
- case ID -> matches(session.getName());
- case CONNECTION_ID -> matches(session.getConnectionID());
- case CONSUMER_COUNT -> matches(session.getServerConsumers().size());
- case PRODUCER_COUNT -> matches(session.getServerProducers().size());
- case PROTOCOL -> matches(session.getRemotingConnection().getProtocolName());
- case CLIENT_ID -> matches(session.getRemotingConnection().getClientID());
- case LOCAL_ADDRESS -> matches(session.getRemotingConnection().getTransportConnection().getLocalAddress());
- case REMOTE_ADDRESS -> matches(session.getRemotingConnection().getTransportConnection().getRemoteAddress());
- default -> true;
- };
+ public SessionPredicateFilterPart createFilterPart(String field, String operation, String value) {
+ return new SessionPredicateFilterPart(field, operation, value);
}
@Override
- public void setField(String field) {
- if (field != null && !field.isEmpty()) {
- this.f = SessionField.valueOfName(field);
-
- //for backward compatibility
- if (this.f == null) {
- this.f = SessionField.valueOf(field);
- }
- }
+ protected boolean filter(ServerSession session, SessionPredicateFilterPart filterPart) throws Exception {
+ return filterPart.filterPart(session);
}
}
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/SessionFilterPredicate.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/SessionPredicateFilterPart.java
similarity index 72%
copy from artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/SessionFilterPredicate.java
copy to artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/SessionPredicateFilterPart.java
index 50a40ae6f9..0cc5c4b8df 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/SessionFilterPredicate.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/view/predicate/SessionPredicateFilterPart.java
@@ -19,24 +19,29 @@ package org.apache.activemq.artemis.core.management.impl.view.predicate;
import org.apache.activemq.artemis.core.management.impl.view.SessionField;
import org.apache.activemq.artemis.core.server.ServerSession;
-public class SessionFilterPredicate extends ActiveMQFilterPredicate<ServerSession> {
+public class SessionPredicateFilterPart extends PredicateFilterPart<ServerSession> {
private SessionField f;
- public SessionFilterPredicate() {
- super();
+ public SessionPredicateFilterPart(String field, String operation, String value) {
+ super(operation, value);
+ if (field != null && !field.isEmpty()) {
+ f = SessionField.valueOfName(field);
+
+ //for backward compatibility
+ if (f == null) {
+ f = SessionField.valueOf(field);
+ }
+ }
}
@Override
- public boolean test(ServerSession session) {
- // Using switch over enum vs string comparison is better for perf.
- if (f == null)
- return true;
+ public boolean filterPart(ServerSession session) throws Exception {
return switch (f) {
case ID -> matches(session.getName());
case CONNECTION_ID -> matches(session.getConnectionID());
- case CONSUMER_COUNT -> matches(session.getServerConsumers().size());
- case PRODUCER_COUNT -> matches(session.getServerProducers().size());
+ case CONSUMER_COUNT -> matchesLong(session.getServerConsumers().size());
+ case PRODUCER_COUNT -> matchesLong(session.getServerProducers().size());
case PROTOCOL -> matches(session.getRemotingConnection().getProtocolName());
case CLIENT_ID -> matches(session.getRemotingConnection().getClientID());
case LOCAL_ADDRESS -> matches(session.getRemotingConnection().getTransportConnection().getLocalAddress());
@@ -44,16 +49,4 @@ public class SessionFilterPredicate extends ActiveMQFilterPredicate<ServerSessio
default -> true;
};
}
-
- @Override
- public void setField(String field) {
- if (field != null && !field.isEmpty()) {
- this.f = SessionField.valueOfName(field);
-
- //for backward compatibility
- if (this.f == null) {
- this.f = SessionField.valueOf(field);
- }
- }
- }
}
diff --git a/artemis-server/src/test/java/org/apache/activemq/artemis/core/management/impl/view/predicate/PredicateTest.java b/artemis-server/src/test/java/org/apache/activemq/artemis/core/management/impl/view/predicate/PredicateTest.java
index bc2c5181f9..e7f7726e71 100644
--- a/artemis-server/src/test/java/org/apache/activemq/artemis/core/management/impl/view/predicate/PredicateTest.java
+++ b/artemis-server/src/test/java/org/apache/activemq/artemis/core/management/impl/view/predicate/PredicateTest.java
@@ -33,74 +33,62 @@ public class PredicateTest {
@Test
public void testBasePredicateEquals() {
String string = RandomUtil.randomUUIDString();
- ActiveMQFilterPredicate<String> predicate = new ActiveMQFilterPredicate<>();
- predicate.setOperation(EQUALS.name());
- predicate.setValue(string);
+ PredicateFilterPart<String> predicate = new PredicateFilterPart<>(EQUALS.name(), string);
assertTrue(predicate.matches(string));
assertFalse(predicate.matches(RandomUtil.randomUUIDString()));
- assertFalse(predicate.matches(0L));
- assertFalse(predicate.matches(0f));
- assertFalse(predicate.matches(0));
+ assertFalse(predicate.matchesLong(0L));
+ assertFalse(predicate.matchesFloat(0f));
+ assertFalse(predicate.matchesInt(0));
}
@Test
public void testBasePredicateNotEquals() {
String string = RandomUtil.randomUUIDString();
- ActiveMQFilterPredicate<String> predicate = new ActiveMQFilterPredicate<>();
- predicate.setOperation(NOT_EQUALS.name());
- predicate.setValue(string);
+ PredicateFilterPart<String> predicate = new PredicateFilterPart<>(NOT_EQUALS.name(), string);
assertFalse(predicate.matches(string));
assertTrue(predicate.matches(RandomUtil.randomUUIDString()));
- assertTrue(predicate.matches(0L));
- assertTrue(predicate.matches(0f));
- assertTrue(predicate.matches(0));
+ assertTrue(predicate.matchesLong(0L));
+ assertTrue(predicate.matchesFloat(0f));
+ assertTrue(predicate.matchesInt(0));
}
@Test
public void testBasePredicateContains() {
- ActiveMQFilterPredicate<String> predicate = new ActiveMQFilterPredicate<>();
- predicate.setOperation(CONTAINS.name());
- predicate.setValue("12");
+ PredicateFilterPart<String> predicate = new PredicateFilterPart<>(CONTAINS.name(), "12");
assertTrue(predicate.matches("0123"));
assertFalse(predicate.matches("43"));
- assertFalse(predicate.matches(0L));
- assertFalse(predicate.matches(0f));
- assertFalse(predicate.matches(0));
+ assertFalse(predicate.matchesLong(0L));
+ assertFalse(predicate.matchesFloat(0f));
+ assertFalse(predicate.matchesInt(0));
}
@Test
public void testBasePredicateNotContains() {
- ActiveMQFilterPredicate<String> predicate = new ActiveMQFilterPredicate<>();
- predicate.setOperation(NOT_CONTAINS.name());
- predicate.setValue("12");
+ PredicateFilterPart<String> predicate = new PredicateFilterPart<>(NOT_CONTAINS.name(), "12");
assertFalse(predicate.matches("0123"));
assertTrue(predicate.matches("42"));
- assertTrue(predicate.matches(0L));
- assertTrue(predicate.matches(0f));
- assertTrue(predicate.matches(0));
+ assertTrue(predicate.matchesLong(0L));
+ assertTrue(predicate.matchesFloat(0f));
+ assertTrue(predicate.matchesInt(0));
}
@Test
public void testBasePredicateLessThan() {
- ActiveMQFilterPredicate<Integer> predicate = new ActiveMQFilterPredicate<>();
- predicate.setOperation(LESS_THAN.name());
- predicate.setValue("12");
+ PredicateFilterPart<Integer> predicate = new PredicateFilterPart<>(LESS_THAN.name(), "12");
assertFalse(predicate.matches("foo"));
- assertFalse(predicate.matches(42));
- assertTrue(predicate.matches(0L));
- assertTrue(predicate.matches(0f));
- assertTrue(predicate.matches(0));
+ assertFalse(predicate.matchesInt(42));
+ assertTrue(predicate.matchesLong(0L));
+ assertTrue(predicate.matchesFloat(0f));
+ assertTrue(predicate.matchesInt(0));
}
@Test
public void testBasePredicateGreaterThan() {
- ActiveMQFilterPredicate<Integer> predicate = new ActiveMQFilterPredicate<>();
- predicate.setOperation(GREATER_THAN.name());
- predicate.setValue("12");
+ PredicateFilterPart<Integer> predicate = new PredicateFilterPart<>(GREATER_THAN.name(), "12");
assertFalse(predicate.matches("foo"));
- assertTrue(predicate.matches(42));
- assertFalse(predicate.matches(0L));
- assertFalse(predicate.matches(0f));
- assertFalse(predicate.matches(0));
+ assertTrue(predicate.matchesInt(42));
+ assertFalse(predicate.matchesLong(0L));
+ assertFalse(predicate.matchesFloat(0f));
+ assertFalse(predicate.matchesInt(0));
}
}
diff --git a/tests/artemis-test-support/src/main/java/org/apache/activemq/artemis/tests/util/ActiveMQTestBase.java b/tests/artemis-test-support/src/main/java/org/apache/activemq/artemis/tests/util/ActiveMQTestBase.java
index ec04976e66..8fa7e16b7b 100644
--- a/tests/artemis-test-support/src/main/java/org/apache/activemq/artemis/tests/util/ActiveMQTestBase.java
+++ b/tests/artemis-test-support/src/main/java/org/apache/activemq/artemis/tests/util/ActiveMQTestBase.java
@@ -2483,6 +2483,65 @@ public abstract class ActiveMQTestBase extends ArtemisTestCase {
return jsonFilterObject.toString();
}
+ public String createJsonFilter(String fieldName, String operationName, String value, boolean legacy) throws Exception {
+ Map<String, Object> filterMap = new HashMap<>();
+ filterMap.put("field", fieldName);
+ filterMap.put("operation", operationName);
+ filterMap.put("value", value);
+ if (legacy) {
+ JsonObject jsonFilterObject = JsonUtil.toJsonObject(filterMap);
+ return jsonFilterObject.toString();
+ } else {
+ Map<String, Object>[] filtersArray = new HashMap[1];
+ filtersArray[0] = filterMap;
+ Map<String, Object> filtersMap = new HashMap<>();
+ filtersMap.put("searchFilters", filtersArray);
+ JsonObject jsonFiltersObject = JsonUtil.toJsonObject(filtersMap);
+ return jsonFiltersObject.toString();
+ }
+ }
+
+ public String createJsonArrayFilter(String fieldName, String operationName, String value, String fieldName2, String operationName2, String value2) throws Exception {
+ Map<String, Object> filterMap = new HashMap<>();
+ filterMap.put("field", fieldName);
+ filterMap.put("operation", operationName);
+ filterMap.put("value", value);
+ Map<String, Object> filterMap2 = new HashMap<>();
+ filterMap2.put("field", fieldName2);
+ filterMap2.put("operation", operationName2);
+ filterMap2.put("value", value2);
+ Map<String, Object>[] filtersArray = new HashMap[2];
+ filtersArray[0] = filterMap;
+ filtersArray[1] = filterMap2;
+ Map<String, Object> filtersMap = new HashMap<>();
+ filtersMap.put("searchFilters", filtersArray);
+ JsonObject jsonFiltersObject = JsonUtil.toJsonObject(filtersMap);
+ return jsonFiltersObject.toString();
+ }
+
+ public String createJsonArrayFilter(String fieldName, String operationName, String value, String fieldName2, String operationName2, String value2, String fieldName3, String operationName3, String value3) throws Exception {
+ Map<String, Object> filterMap = new HashMap<>();
+ filterMap.put("field", fieldName);
+ filterMap.put("operation", operationName);
+ filterMap.put("value", value);
+ Map<String, Object> filterMap2 = new HashMap<>();
+ filterMap2.put("field", fieldName2);
+ filterMap2.put("operation", operationName2);
+ filterMap2.put("value", value2);
+ Map<String, Object> filterMap3 = new HashMap<>();
+ filterMap3.put("field", fieldName3);
+ filterMap3.put("operation", operationName3);
+ filterMap3.put("value", value3);
+ Map<String, Object>[] filtersArray = new HashMap[3];
+ filtersArray[0] = filterMap;
+ filtersArray[1] = filterMap2;
+ filtersArray[2] = filterMap3;
+ Map<String, Object> filtersMap = new HashMap<>();
+ filtersMap.put("searchFilters", filtersArray);
+ JsonObject jsonFiltersObject = JsonUtil.toJsonObject(filtersMap);
+ return jsonFiltersObject.toString();
+ }
+
protected static ReplicationEndpoint getReplicationEndpoint(ActiveMQServer server) {
final Activation activation = server.getActivation();
if (activation instanceof SharedNothingBackupActivation backupActivation) {
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
index 6abdf31631..5bc25a7fa0 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
@@ -3696,8 +3696,17 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
assertNotNull(obj.getJsonObject("metadata").getJsonString(ClientSession.JMS_SESSION_IDENTIFIER_PROPERTY));
}
+ @TestTemplate
+ public void testListQueuesLegacyFilter() throws Exception {
+ testListQueues(true);
+ }
+
@TestTemplate
public void testListQueues() throws Exception {
+ testListQueues(false);
+ }
+
+ public void testListQueues(boolean legacyFilter) throws Exception {
SimpleString queueName1 = SimpleString.of("my_queue_one");
SimpleString queueName2 = SimpleString.of("my_queue_two");
SimpleString queueName3 = SimpleString.of("other_queue_three");
@@ -3726,7 +3735,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
}
//test with filter that matches 2 queues
- String filterString = createJsonFilter("name", "CONTAINS", "my_queue");
+ String filterString = createJsonFilter("name", "CONTAINS", "my_queue", legacyFilter);
String queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
@@ -3738,7 +3747,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
assertTrue(array.getJsonObject(1).getString("name").contains("my_queue"));
//test with an empty filter
- filterString = createJsonFilter("internalQueue", "NOT_CONTAINS", "true");
+ filterString = createJsonFilter("internalQueue", "NOT_CONTAINS", "true", legacyFilter);
queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
@@ -3783,8 +3792,16 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
assertEquals("false", array.getJsonObject(0).getString("autoDelete"), "autoDelete");
}
+ @TestTemplate
+ public void testListQueuesOrderLegacyFilter() throws Exception {
+ testListQueuesOrder(true);
+ }
+
@TestTemplate
public void testListQueuesOrder() throws Exception {
+ testListQueuesOrder(true);
+ }
+ public void testListQueuesOrder(boolean legacyFilter) throws Exception {
SimpleString queueName1 = SimpleString.of("my_queue_1");
SimpleString queueName2 = SimpleString.of("my_queue_2");
SimpleString queueName3 = SimpleString.of("my_queue_3");
@@ -3816,7 +3833,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
}
//test default order
- String filterString = createJsonFilter("name", "CONTAINS", "my_queue");
+ String filterString = createJsonFilter("name", "CONTAINS", "my_queue", legacyFilter);
String queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
JsonObject queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
JsonArray array = (JsonArray) queuesAsJsonObject.get("data");
@@ -3827,7 +3844,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
assertEquals(queueName3.toString(), array.getJsonObject(2).getString("name"), "queue3 default Order");
//test ordered by id desc
- filterString = createJsonFilter("name", "CONTAINS", "my_queue", "id", "desc");
+ filterString = createJsonFilter("name", "CONTAINS", "my_queue", "id", "desc", legacyFilter);
queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
array = (JsonArray) queuesAsJsonObject.get("data");
@@ -3838,7 +3855,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
assertEquals(queueName1.toString(), array.getJsonObject(2).getString("name"), "queue1 ordered by id");
//ordered by address desc
- filterString = createJsonFilter("name", "CONTAINS", "my_queue", "address", "desc");
+ filterString = createJsonFilter("name", "CONTAINS", "my_queue", "address", "desc", legacyFilter);
queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
array = (JsonArray) queuesAsJsonObject.get("data");
@@ -3849,7 +3866,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
assertEquals(queueName1.toString(), array.getJsonObject(2).getString("name"), "queue1 ordered by address");
//ordered by auto create desc
- filterString = createJsonFilter("name", "CONTAINS", "my_queue", "autoCreated", "asc");
+ filterString = createJsonFilter("name", "CONTAINS", "my_queue", "autoCreated", "asc", legacyFilter);
queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
array = (JsonArray) queuesAsJsonObject.get("data");
@@ -3860,7 +3877,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
assertEquals("true", array.getJsonObject(2).getString("autoCreated"), "pos3 ordered by autocreate");
//ordered by filter desc
- filterString = createJsonFilter("name", "CONTAINS", "my_queue", "filter", "desc");
+ filterString = createJsonFilter("name", "CONTAINS", "my_queue", "filter", "desc", legacyFilter);
queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
array = (JsonArray) queuesAsJsonObject.get("data");
@@ -3871,7 +3888,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
assertEquals(queueName3.toString(), array.getJsonObject(2).getString("name"), "queue3 ordered by filter");
//ordered by max consumers asc
- filterString = createJsonFilter("name", "CONTAINS", "my_queue", "maxConsumers", "asc");
+ filterString = createJsonFilter("name", "CONTAINS", "my_queue", "maxConsumers", "asc", legacyFilter);
queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
array = (JsonArray) queuesAsJsonObject.get("data");
@@ -3883,7 +3900,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
//ordering between the pages
//page 1
- filterString = createJsonFilter("name", "CONTAINS", "my_queue", "address", "desc");
+ filterString = createJsonFilter("name", "CONTAINS", "my_queue", "address", "desc", legacyFilter);
queuesAsJsonString = serverControl.listQueues(filterString, 1, 1);
queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
array = (JsonArray) queuesAsJsonObject.get("data");
@@ -3891,7 +3908,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
assertEquals(queueName3.toString(), array.getJsonObject(0).getString("name"), "queue3 ordered by page");
//page 2
- filterString = createJsonFilter("name", "CONTAINS", "my_queue", "address", "desc");
+ filterString = createJsonFilter("name", "CONTAINS", "my_queue", "address", "desc", legacyFilter);
queuesAsJsonString = serverControl.listQueues(filterString, 2, 1);
queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
array = (JsonArray) queuesAsJsonObject.get("data");
@@ -3899,7 +3916,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
assertEquals(queueName2.toString(), array.getJsonObject(0).getString("name"), "queue2 ordered by page");
//page 3
- filterString = createJsonFilter("name", "CONTAINS", "my_queue", "address", "desc");
+ filterString = createJsonFilter("name", "CONTAINS", "my_queue", "address", "desc", legacyFilter);
queuesAsJsonString = serverControl.listQueues(filterString, 3, 1);
queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
array = (JsonArray) queuesAsJsonObject.get("data");
@@ -3908,8 +3925,17 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
}
+ @TestTemplate
+ public void testListQueuesNumericFilterLegacyFilter() throws Exception {
+ testListQueuesNumericFilter(true);
+ }
+
@TestTemplate
public void testListQueuesNumericFilter() throws Exception {
+ testListQueuesNumericFilter(false);
+ }
+
+ public void testListQueuesNumericFilter(boolean legacyFilter) throws Exception {
SimpleString queueName1 = SimpleString.of("my_queue_one");
SimpleString queueName2 = SimpleString.of("my_queue_two");
SimpleString queueName3 = SimpleString.of("one_consumer_queue_three");
@@ -3973,7 +3999,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
session.commit();
//test with CONTAINS returns nothing for numeric field
- String filterString = createJsonFilter("CONSUMER_COUNT", "CONTAINS", "0");
+ String filterString = createJsonFilter("CONSUMER_COUNT", "CONTAINS", "0", legacyFilter);
String queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
JsonObject queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
@@ -3981,7 +4007,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
assertEquals(0, array.size(), "number of queues returned from query");
//test with LESS_THAN returns 1 queue
- filterString = createJsonFilter("CONSUMER_COUNT", "LESS_THAN", "1");
+ filterString = createJsonFilter("CONSUMER_COUNT", "LESS_THAN", "1", legacyFilter);
queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
@@ -3990,7 +4016,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
assertEquals(queueName4.toString(), array.getJsonObject(1).getString("name"), "correct queue returned from query");
//test with GREATER_THAN returns 2 queue
- filterString = createJsonFilter("CONSUMER_COUNT", "GREATER_THAN", "2");
+ filterString = createJsonFilter("CONSUMER_COUNT", "GREATER_THAN", "2", legacyFilter);
queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
@@ -3999,7 +4025,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
assertEquals(queueName2.toString(), array.getJsonObject(0).getString("name"), "correct queue returned from query");
//test with GREATER_THAN returns 2 queue
- filterString = createJsonFilter("CONSUMER_COUNT", "EQUALS", "3");
+ filterString = createJsonFilter("CONSUMER_COUNT", "EQUALS", "3", legacyFilter);
queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
@@ -4008,7 +4034,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
assertEquals(queueName2.toString(), array.getJsonObject(0).getString("name"), "correct queue returned from query");
//test with MESSAGE_COUNT returns 2 queue
- filterString = createJsonFilter("MESSAGE_COUNT", "GREATER_THAN", "5");
+ filterString = createJsonFilter("MESSAGE_COUNT", "GREATER_THAN", "5", legacyFilter);
queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
@@ -4017,7 +4043,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
assertEquals(queueName1.toString(), array.getJsonObject(0).getString("name"), "correct queue returned from query");
//test with MESSAGE_ADDED returns 1 queue
- filterString = createJsonFilter("MESSAGES_ADDED", "GREATER_THAN", "5");
+ filterString = createJsonFilter("MESSAGES_ADDED", "GREATER_THAN", "5", legacyFilter);
queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
@@ -4026,7 +4052,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
assertEquals(queueName1.toString(), array.getJsonObject(0).getString("name"), "correct queue returned from query");
//test with DELIVERING_COUNT returns 1 queue
- filterString = createJsonFilter("DELIVERING_COUNT", "GREATER_THAN", "5");
+ filterString = createJsonFilter("DELIVERING_COUNT", "GREATER_THAN", "5", legacyFilter);
queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
@@ -4035,7 +4061,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
assertEquals(queueName1.toString(), array.getJsonObject(0).getString("name"), "correct queue returned from query");
//test with MESSAGE_ACKED returns 1 queue
- filterString = createJsonFilter("MESSAGES_ACKED", "GREATER_THAN", "0");
+ filterString = createJsonFilter("MESSAGES_ACKED", "GREATER_THAN", "0", legacyFilter);
queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
@@ -4044,7 +4070,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
assertEquals(queueName1.toString(), array.getJsonObject(0).getString("name"), "correct queue returned from query");
//test with MAX_CONSUMERS returns 1 queue
- filterString = createJsonFilter("MAX_CONSUMERS", "GREATER_THAN", "9");
+ filterString = createJsonFilter("MAX_CONSUMERS", "GREATER_THAN", "9", legacyFilter);
queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
@@ -4053,7 +4079,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
assertEquals(queueName3.toString(), array.getJsonObject(0).getString("name"), "correct queue returned from query");
//test with MESSAGES_KILLED returns 0 queue
- filterString = createJsonFilter("MESSAGES_KILLED", "GREATER_THAN", "0");
+ filterString = createJsonFilter("MESSAGES_KILLED", "GREATER_THAN", "0", legacyFilter);
queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
@@ -4064,8 +4090,17 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
}
+ @TestTemplate
+ public void testListQueuesNumericFilterInvalidLegacyFilter() throws Exception {
+ testListQueuesNumericFilterInvalid(true);
+ }
+
@TestTemplate
public void testListQueuesNumericFilterInvalid() throws Exception {
+ testListQueuesNumericFilterInvalid(false);
+ }
+
+ public void testListQueuesNumericFilterInvalid(boolean legacyFilter) throws Exception {
SimpleString queueName1 = SimpleString.of("my_queue_one");
SimpleString queueName2 = SimpleString.of("one_consumer_queue_two");
SimpleString queueName3 = SimpleString.of("one_consumer_queue_three");
@@ -4111,7 +4146,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
ClientConsumer consumer2_q1 = session.createConsumer(queueName1);
//test with CONTAINS returns nothing for numeric field
- String filterString = createJsonFilter("CONSUMER_COUNT", "CONTAINS", "NOT_NUMBER");
+ String filterString = createJsonFilter("CONSUMER_COUNT", "CONTAINS", "NOT_NUMBER", legacyFilter);
String queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
JsonObject queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
@@ -4119,7 +4154,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
assertEquals(0, array.size(), "number of queues returned from query");
//test with LESS_THAN and not a number
- filterString = createJsonFilter("CONSUMER_COUNT", "LESS_THAN", "NOT_NUMBER");
+ filterString = createJsonFilter("CONSUMER_COUNT", "LESS_THAN", "NOT_NUMBER", legacyFilter);
queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
@@ -4127,7 +4162,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
assertEquals(0, array.size(), "number of queues returned from LESS_THAN query");
//test with GREATER_THAN and not a number
- filterString = createJsonFilter("CONSUMER_COUNT", "GREATER_THAN", "NOT_NUMBER");
+ filterString = createJsonFilter("CONSUMER_COUNT", "GREATER_THAN", "NOT_NUMBER", legacyFilter);
queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
@@ -4135,7 +4170,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
assertEquals(0, array.size(), "number of queues returned from GREATER_THAN query");
//test with EQUALS and not number
- filterString = createJsonFilter("CONSUMER_COUNT", "EQUALS", "NOT_NUMBER");
+ filterString = createJsonFilter("CONSUMER_COUNT", "EQUALS", "NOT_NUMBER", legacyFilter);
queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
@@ -4143,7 +4178,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
assertEquals(0, array.size(), "number of queues returned from EQUALS query");
//test with LESS_THAN on string value returns no queue
- filterString = createJsonFilter("name", "LESS_THAN", "my_queue");
+ filterString = createJsonFilter("name", "LESS_THAN", "my_queue", legacyFilter);
queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
@@ -4151,7 +4186,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
assertEquals(0, array.size(), "number of queues returned from LESS_THAN on non numeric field");
//test with GREATER_THAN on string value returns no queue
- filterString = createJsonFilter("name", "GREATER_THAN", "my_queue");
+ filterString = createJsonFilter("name", "GREATER_THAN", "my_queue", legacyFilter);
queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
@@ -4159,7 +4194,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
assertEquals(0, array.size(), "number of queues returned from GREATER_THAN on non numeric field");
//test with GREATER_THAN and empty string
- filterString = createJsonFilter("CONSUMER_COUNT", "GREATER_THAN", " ");
+ filterString = createJsonFilter("CONSUMER_COUNT", "GREATER_THAN", " ", legacyFilter);
queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
@@ -4167,7 +4202,7 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
assertEquals(0, array.size(), "number of queues returned from GREATER_THAN query");
//test with CONSUMER_COUNT against a float value
- filterString = createJsonFilter("CONSUMER_COUNT", "GREATER_THAN", "0.12");
+ filterString = createJsonFilter("CONSUMER_COUNT", "GREATER_THAN", "0.12", legacyFilter);
queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
@@ -4178,6 +4213,97 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
}
+ @TestTemplate
+ public void testListQueuesMultipleFilters() throws Exception {
+ SimpleString queueName1 = SimpleString.of("my_queue_one");
+ SimpleString queueName2 = SimpleString.of("my_queue_two");
+ SimpleString queueName3 = SimpleString.of("my_queue_one_two");
+
+ ActiveMQServerControl serverControl = createManagementControl();
+
+ server.addAddressInfo(new AddressInfo(queueName1, RoutingType.ANYCAST));
+ if (legacyCreateQueue) {
+ server.createQueue(queueName1, RoutingType.ANYCAST, queueName1, null, false, false);
+ } else {
+ server.createQueue(QueueConfiguration.of(queueName1).setRoutingType(RoutingType.ANYCAST).setDurable(false));
+ }
+
+ server.addAddressInfo(new AddressInfo(queueName2, RoutingType.ANYCAST));
+ if (legacyCreateQueue) {
+ server.createQueue(queueName2, RoutingType.ANYCAST, queueName2, null, false, false);
+ } else {
+ server.createQueue(QueueConfiguration.of(queueName2).setRoutingType(RoutingType.ANYCAST).setDurable(false));
+ }
+
+ server.addAddressInfo(new AddressInfo(queueName3, RoutingType.ANYCAST));
+ if (legacyCreateQueue) {
+ server.createQueue(queueName3, RoutingType.ANYCAST, queueName3, null, true, false);
+ } else {
+ server.createQueue(QueueConfiguration.of(queueName3).setRoutingType(RoutingType.ANYCAST).setDurable(true));
+ }
+
+ //test with filter that matches 2 queues
+ String filterString = createJsonFilter("name", "CONTAINS", "my_queue");
+
+ String queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
+
+ JsonObject queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
+ JsonArray array = (JsonArray) queuesAsJsonObject.get("data");
+
+ assertEquals(3, array.size(), "number of queues returned from query");
+ assertTrue(array.getJsonObject(0).getString("name").contains("my_queue"));
+ assertTrue(array.getJsonObject(1).getString("name").contains("my_queue"));
+ assertTrue(array.getJsonObject(2).getString("name").contains("my_queue"));
+
+ //test with an 2 filters
+ filterString = createJsonArrayFilter("name", "CONTAINS", "my_queue", "name", "CONTAINS", "one");
+
+ queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
+
+ queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
+ array = (JsonArray) queuesAsJsonObject.get("data");
+
+ // at least 3 queues or more
+ assertEquals(2, array.size(), "number of queues returned from query");
+ assertTrue(array.getJsonObject(0).getString("name").contains("my_queue"));
+ assertTrue(array.getJsonObject(1).getString("name").contains("my_queue"));
+ assertTrue(array.getJsonObject(0).getString("name").contains("one"));
+ assertTrue(array.getJsonObject(1).getString("name").contains("one"));
+ filterString = createJsonArrayFilter("name", "CONTAINS", "my_queue", "name", "CONTAINS", "one", "durable", "EQUALS", "true");
+
+ queuesAsJsonString = serverControl.listQueues(filterString, 1, 50);
+
+ queuesAsJsonObject = JsonUtil.readJsonObject(queuesAsJsonString);
+ array = (JsonArray) queuesAsJsonObject.get("data");
+
+ assertEquals(1, array.size(), "number of queues returned from query");
+ //check all field names are available
+ assertNotEquals("", array.getJsonObject(0).getString("name"), "name");
+ assertNotEquals("", array.getJsonObject(0).getString("id"), "id");
+ assertNotEquals("", array.getJsonObject(0).getString("address"), "address");
+ assertEquals("", array.getJsonObject(0).getString("filter"), "filter");
+ assertEquals("true", array.getJsonObject(0).getString("durable"), "durable");
+ assertEquals("false", array.getJsonObject(0).getString("paused"), "paused");
+ assertNotEquals("", array.getJsonObject(0).getString("temporary"), "temporary");
+ assertEquals("false", array.getJsonObject(0).getString("purgeOnNoConsumers"), "purgeOnNoConsumers");
+ assertNotEquals("", array.getJsonObject(0).getString("consumerCount"), "consumerCount");
+ assertEquals("-1", array.getJsonObject(0).getString("maxConsumers"), "maxConsumers");
+ assertEquals("false", array.getJsonObject(0).getString("autoCreated"), "autoCreated");
+ assertNotEquals("", array.getJsonObject(0).getString("routingType"), "routingType");
+ assertEquals("0", array.getJsonObject(0).getString("messagesAdded"), "messagesAdded");
+ assertEquals("0", array.getJsonObject(0).getString("messageCount"), "messageCount");
+ assertEquals("0", array.getJsonObject(0).getString("messagesAcked"), "messagesAcked");
+ assertEquals("0", array.getJsonObject(0).getString("deliveringCount"), "deliveringCount");
+ assertEquals("0", array.getJsonObject(0).getString("messagesKilled"), "messagesKilled");
+ assertEquals("false", array.getJsonObject(0).getString("exclusive"), "exclusive");
+ assertEquals("false", array.getJsonObject(0).getString("lastValue"), "lastValue");
+ assertEquals("0", array.getJsonObject(0).getString("scheduledCount"), "scheduledCount");
+ assertEquals("false", array.getJsonObject(0).getString("groupRebalance"), "groupRebalance");
+ assertEquals("-1", array.getJsonObject(0).getString("groupBuckets"), "groupBuckets");
+ assertEquals("", array.getJsonObject(0).getString("groupFirstKey"), "groupFirstKey");
+ assertEquals("false", array.getJsonObject(0).getString("autoDelete"), "autoDelete");
+ }
+
@TestTemplate
public void testListAddresses() throws Exception {
SimpleString queueName1 = SimpleString.of("my_queue_one");
@@ -6584,6 +6710,27 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
return jsonFilterObject.toString();
}
+ public String createJsonFilter(String fieldName, String operationName, String value, String sortField, String sortOrder, boolean legacyFilter) throws Exception {
+ Map<String, Object> filterMap = new HashMap<>();
+ filterMap.put("field", fieldName);
+ filterMap.put("operation", operationName);
+ filterMap.put("value", value);
+ filterMap.put("sortField", sortField);
+ filterMap.put("sortOrder", sortOrder);
+ if (legacyFilter) {
+ JsonObject jsonFilterObject = JsonUtil.toJsonObject(filterMap);
+ return jsonFilterObject.toString();
+ } else {
+ Map<String, Object>[] filtersArray = new HashMap[1];
+ filtersArray[0] = filterMap;
+ Map<String, Object> filtersMap = new HashMap<>();
+ filtersMap.put("searchFilters", filtersArray);
+ JsonObject jsonFiltersObject = JsonUtil.toJsonObject(filtersMap);
+ return jsonFiltersObject.toString();
+ }
+ }
+
+
private void sendMessagesWithPredefinedSize(int numberOfMessages,
ClientSession session,
ClientProducer producer,
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@artemis.apache.org
For additional commands, e-mail: commits-help@artemis.apache.org