You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2016/11/07 16:37:07 UTC
[47/50] [abbrv] activemq-artemis git commit: Remove JMS prefixes
Remove JMS prefixes
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/3ac7a0c5
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/3ac7a0c5
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/3ac7a0c5
Branch: refs/heads/ARTEMIS-780
Commit: 3ac7a0c54b322e8aa92870249555b62519f9f623
Parents: 31173e9
Author: jbertram <jb...@apache.com>
Authored: Fri Oct 21 19:58:01 2016 -0500
Committer: Clebert Suconic <cl...@apache.org>
Committed: Mon Nov 7 11:29:24 2016 -0500
----------------------------------------------------------------------
.../commands/destination/DestinationAction.java | 2 +-
.../cli/commands/tools/XmlDataImporter.java | 6 +-
.../activemq/cli/test/FileBrokerTest.java | 2 +-
artemis-cli/src/test/resources/broker-nojms.xml | 4 +-
.../src/test/resources/broker-reload.xml | 4 +-
artemis-cli/src/test/resources/broker.xml | 4 +-
.../config/ActiveMQDefaultConfiguration.java | 3 +-
.../artemis/api/core/client/ClientSession.java | 2 +
.../core/management/ActiveMQServerControl.java | 12 ++
.../core/management/AddressSettingsInfo.java | 4 +-
.../api/core/management/ResourceNames.java | 4 +-
.../artemis/api/core/management/RoleInfo.java | 15 +-
.../core/client/impl/ClientSessionImpl.java | 12 ++
.../core/impl/ActiveMQSessionContext.java | 7 +
.../core/protocol/core/impl/PacketDecoder.java | 6 +
.../core/protocol/core/impl/PacketImpl.java | 2 +
.../impl/wireformat/CreateAddressMessage.java | 116 ++++++++++++
.../activemq/artemis/core/security/Role.java | 31 +++-
.../spi/core/remoting/SessionContext.java | 2 +
.../artemis/utils/SecurityFormatter.java | 7 +-
.../main/resources/activemq-version.properties | 2 +-
.../artemis/jms/client/ActiveMQDestination.java | 40 ++--
.../artemis/jms/client/ActiveMQMessage.java | 29 ++-
.../jms/client/ActiveMQMessageConsumer.java | 2 +
.../jms/client/ActiveMQMessageProducer.java | 16 +-
.../artemis/jms/client/ActiveMQQueue.java | 6 +-
.../artemis/jms/client/ActiveMQSession.java | 34 ++--
.../artemis/jms/client/ActiveMQTopic.java | 4 +-
.../management/impl/JMSServerControlImpl.java | 64 +++----
.../management/impl/JMSTopicControlImpl.java | 8 +-
.../jms/server/impl/JMSServerManagerImpl.java | 183 +++++++++----------
.../impl/JMSManagementServiceImpl.java | 8 +-
...MSResourceMultipleFileConfigurationTest.java | 2 +-
...dJMSResourceSingleFileConfigurationTest.java | 2 +-
.../amqp/broker/ProtonProtocolManager.java | 3 +-
.../amqp/converter/TestConversions.java | 2 +-
.../core/protocol/openwire/amq/AMQConsumer.java | 11 +-
.../core/protocol/openwire/amq/AMQSession.java | 7 +-
.../protocol/openwire/util/OpenWireUtil.java | 15 +-
.../core/protocol/stomp/StompConnection.java | 12 +-
.../core/protocol/stomp/StompSession.java | 3 +-
.../EmbeddedRestActiveMQJMSTest.java | 2 +-
.../artemis/rest/test/EmbeddedTest.java | 2 +-
.../activemq/artemis/rest/test/JMSTest.java | 20 +-
.../artemis/rest/test/SelectorTest.java | 31 ++--
.../activemq/artemis/rest/test/XmlTest.java | 2 +-
artemis-rest/src/test/resources/broker.xml | 2 +-
.../impl/ActiveMQServerControlImpl.java | 22 ++-
.../core/persistence/AddressBindingInfo.java | 2 +
.../core/persistence/QueueBindingInfo.java | 2 +-
.../core/persistence/config/PersistedRoles.java | 26 ++-
.../journal/AbstractJournalStorageManager.java | 4 +-
.../codec/PersistentAddressBindingEncoding.java | 17 +-
.../codec/PersistentQueueBindingEncoding.java | 14 +-
.../core/postoffice/impl/PostOfficeImpl.java | 11 ++
.../postoffice/impl/SimpleAddressManager.java | 5 +-
.../core/ServerSessionPacketHandler.java | 11 ++
.../artemis/core/security/CheckType.java | 6 +
.../artemis/core/server/ActiveMQServer.java | 4 +-
.../artemis/core/server/QueueConfig.java | 10 +-
.../artemis/core/server/ServerSession.java | 3 +
.../core/server/cluster/impl/BridgeImpl.java | 18 +-
.../core/server/impl/ActiveMQServerImpl.java | 79 +++++---
.../artemis/core/server/impl/AddressInfo.java | 21 ++-
.../server/impl/PostOfficeJournalLoader.java | 3 +-
.../artemis/core/server/impl/QueueImpl.java | 7 +-
.../core/server/impl/ScaleDownHandler.java | 2 +-
.../core/server/impl/ServerSessionImpl.java | 27 ++-
.../management/impl/ManagementServiceImpl.java | 2 +
.../core/settings/impl/AddressSettings.java | 43 +++--
.../impl/FileConfigurationParserTest.java | 2 +-
.../core/config/impl/FileConfigurationTest.java | 4 +-
.../WrongRoleFileConfigurationParserTest.java | 2 +-
.../artemis/core/security/RoleTest.java | 25 ++-
.../core/settings/AddressSettingsTest.java | 8 +-
.../artemis/core/settings/RepositoryTest.java | 14 +-
.../artemis/jms/example/ManagementExample.java | 4 +-
.../jms/example/PreacknowledgeExample.java | 2 +-
.../rest/dup-send/src/main/java/PostOrder.java | 2 +-
.../dup-send/src/main/java/PostOrderWithId.java | 2 +-
.../dup-send/src/main/java/ReceiveOrder.java | 2 +-
.../messaging/test/AutoAckTopicTest.java | 2 +-
.../jms-to-rest/src/main/java/JmsReceive.java | 2 +-
.../rest/jms-to-rest/src/main/java/JmsSend.java | 2 +-
.../jms-to-rest/src/main/java/RestReceive.java | 2 +-
.../jms-to-rest/src/main/java/RestSend.java | 2 +-
.../rest/push/src/main/java/PostOrder.java | 2 +-
.../rest/push/src/main/java/PushReg.java | 4 +-
.../push/src/main/java/ReceiveShipping.java | 2 +-
.../artemis/jms/example/ProtonCPPExample.java | 2 +-
.../artemis/jms/example/AMQPQueueExample.java | 2 +-
.../example/StompDualAuthenticationExample.java | 2 +-
.../StompEmbeddedWithInterceptorExample.java | 2 +-
.../artemis/jms/example/StompExample.java | 2 -
.../artemis/jms/example/StompExample.java | 2 +-
.../artemis/jms/example/StompExample.java | 2 +-
.../artemis/jms/example/StompExample.java | 2 +-
pom.xml | 2 +-
.../artemiswrapper/ArtemisBrokerWrapper.java | 14 +-
.../JmsQueueCompositeSendReceiveTest.java | 2 +-
.../org/apache/activemq/OptimizedAckTest.java | 6 +-
.../apache/activemq/RemoveDestinationTest.java | 2 +-
.../activemq/ZeroPrefetchConsumerTest.java | 2 +-
.../activemq/transport/SoWriteTimeoutTest.java | 4 +-
.../transport/failover/AMQ1925Test.java | 2 +-
.../FailoverConsumerUnconsumedTest.java | 2 +-
.../LargeMessageOverReplicationTest.java | 2 +-
...eOnSyncLargeMessageOverReplication2Test.java | 2 +-
...ceOnSyncLargeMessageOverReplicationTest.java | 2 +-
.../extras/byteman/StompInternalStateTest.java | 2 +-
.../tests/extras/byteman/TimeoutXATest.java | 2 +-
.../tests/extras/jms/bridge/BridgeTestBase.java | 7 +-
.../jms/bridge/ClusteredBridgeTestBase.java | 4 +-
...MDBMultipleHandlersServerDisconnectTest.java | 4 +-
.../integration/addressing/AddressingTest.java | 2 +-
.../integration/amqp/AmqpClientTestSupport.java | 4 +-
.../amqp/AmqpDurableReceiverTest.java | 2 +-
.../amqp/AmqpTempDestinationTest.java | 2 +
.../amqp/ProtonMaxFrameSizeTest.java | 6 +-
.../tests/integration/amqp/ProtonTest.java | 14 +-
.../amqp/SendingAndReceivingTest.java | 2 +-
.../integration/cli/DestinationCommandTest.java | 4 +-
.../client/AutoCreateJmsDestinationTest.java | 42 +++--
.../client/AutoDeleteJmsDestinationTest.java | 18 +-
.../integration/client/HangConsumerTest.java | 4 +-
.../client/InterruptedLargeMessageTest.java | 2 +-
.../client/JMSMessageCounterTest.java | 5 +-
.../client/JMSPagingFileDeleteTest.java | 6 +-
.../client/JmsNettyNioStressTest.java | 4 +-
.../client/MultipleProducersTest.java | 11 +-
.../clientcrash/PendingDeliveriesTest.java | 4 +-
.../integration/cluster/bridge/BridgeTest.java | 6 +-
.../cluster/distribution/ClusterTestBase.java | 4 +-
.../distribution/SymmetricClusterTest.java | 22 +--
.../AutomaticColocatedQuorumVoteTest.java | 2 +-
.../MultipleServerFailoverTestBase.java | 4 +-
.../cluster/failover/SecurityFailoverTest.java | 2 +-
.../crossprotocol/AMQPToOpenwireTest.java | 4 +-
.../crossprotocol/OpenWireToAMQPTest.java | 4 +-
.../divert/ReplicationWithDivertTest.java | 4 +-
.../interceptors/InterceptorTest.java | 3 +-
.../jms/ActiveMQConnectionFactoryTest.java | 17 +-
.../tests/integration/jms/JmsProducerTest.java | 1 -
.../tests/integration/jms/RedeployTest.java | 8 +-
.../integration/jms/client/CreateQueueTest.java | 9 +-
.../jms/client/TopicCleanupTest.java | 2 +-
.../jms/cluster/BindingsClusterTest.java | 58 +++---
.../jms/cluster/JMSFailoverListenerTest.java | 5 +-
.../jms/cluster/JMSFailoverTest.java | 7 +-
.../jms/cluster/JMSReconnectTest.java | 7 +-
.../jms/cluster/LargeMessageOverBridgeTest.java | 20 +-
.../jms/cluster/TemporaryQueueClusterTest.java | 24 ++-
.../jms/cluster/TopicClusterTest.java | 11 +-
.../integration/jms/consumer/ConsumerTest.java | 9 +-
.../jms/divert/DivertAndACKClientTest.java | 2 +-
.../jms/jms2client/NonExistentQueueTest.java | 2 +-
.../server/management/JMSQueueControlTest.java | 2 +-
.../management/JMSQueueControlUsingJMSTest.java | 3 +-
.../management/JMSServerControl2Test.java | 20 +-
.../server/management/JMSServerControlTest.java | 8 +-
.../jms/server/management/TopicControlTest.java | 9 +-
.../management/TopicControlUsingJMSTest.java | 3 +-
.../journal/DuplicateRecordIdTest.java | 2 +-
.../integration/karaf/ArtemisFeatureTest.java | 2 +-
.../management/ActiveMQServerControlTest.java | 10 +-
.../ActiveMQServerControlUsingCoreTest.java | 14 ++
.../management/AddressControlTest.java | 4 +-
.../management/AddressControlUsingCoreTest.java | 2 +-
...tyManagementWithConfiguredAdminUserTest.java | 4 +-
.../management/SecurityNotificationTest.java | 4 +-
.../integration/mqtt/imported/MQTTTest.java | 2 +-
.../integration/openwire/BasicOpenWireTest.java | 8 +-
.../integration/openwire/OpenWireTestBase.java | 10 +-
.../openwire/SimpleOpenWireTest.java | 18 +-
.../openwire/VerySimpleOenwireTest.java | 4 +-
.../amq/ProducerFlowControlSendFailTest.java | 2 +-
.../openwire/amq/ProducerFlowControlTest.java | 2 +-
.../integration/paging/PagingOrderTest.java | 14 +-
.../integration/paging/PagingReceiveTest.java | 2 +-
.../RolesConfigurationStorageTest.java | 10 +-
.../integration/ra/ActiveMQClusteredTest.java | 2 +-
.../ra/ActiveMQMessageHandlerSecurityTest.java | 2 +-
.../ra/ActiveMQMessageHandlerTest.java | 14 +-
.../integration/ra/ActiveMQRATestBase.java | 6 +-
.../tests/integration/ra/JMSContextTest.java | 2 +-
.../integration/ra/OutgoingConnectionTest.java | 2 +-
.../ra/OutgoingConnectionTestJTA.java | 6 +-
.../rest/RestDeserializationTest.java | 9 +-
.../rest/util/QueueRestMessageContext.java | 2 +-
.../rest/util/TopicRestMessageContext.java | 2 +-
.../integration/security/LDAPSecurityTest.java | 4 +-
.../integration/security/SecurityTest.java | 102 +++++------
.../integration/server/ResourceLimitTest.java | 2 +-
.../integration/ssl/DualAuthenticationTest.java | 4 +-
.../tests/integration/stomp/StompTest.java | 15 +-
.../tests/integration/stomp/StompTestBase.java | 8 +-
.../util/AbstractStompClientConnection.java | 3 +
.../integration/stomp/v11/StompV11Test.java | 4 +-
.../integration/stomp/v11/StompV11TestBase.java | 4 +-
.../integration/stomp/v12/StompV12Test.java | 4 +-
.../tests/util/JMSClusteredTestBase.java | 4 +-
.../src/test/resources/reload-test-jms.xml | 4 +-
.../test/resources/reload-test-updated-jms.xml | 8 +-
.../jms/tests/ActiveMQServerTestCase.java | 2 +-
.../activemq/artemis/jms/tests/BrowserTest.java | 2 +-
.../artemis/jms/tests/MessageProducerTest.java | 2 +-
.../activemq/artemis/jms/tests/SessionTest.java | 4 +-
.../jms/tests/message/MessageHeaderTest.java | 5 +
.../tests/tools/container/LocalTestServer.java | 12 +-
.../artemis/amqpJMS/ActiveMQAMQPAdmin.java | 4 +-
.../message/headers/MessageHeaderTest.java | 4 +-
.../storage/SendReceiveMultiThreadTest.java | 4 +-
.../impl/WildcardAddressManagerUnitTest.java | 8 +-
.../impl/ActiveMQSecurityManagerImplTest.java | 28 +--
.../tests/unit/jms/ActiveMQDestinationTest.java | 21 ++-
215 files changed, 1254 insertions(+), 841 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ac7a0c5/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/destination/DestinationAction.java
----------------------------------------------------------------------
diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/destination/DestinationAction.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/destination/DestinationAction.java
index e161dd3..55353d9 100644
--- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/destination/DestinationAction.java
+++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/destination/DestinationAction.java
@@ -82,7 +82,7 @@ public abstract class DestinationAction extends ConnectionAbstract {
ClientSessionFactory sessionFactory = locator.createSessionFactory();
ClientSession session = sessionFactory.createSession(user, password, false, true, true, false, ActiveMQClient.DEFAULT_ACK_BATCH_SIZE)) {
session.start();
- ClientRequestor requestor = new ClientRequestor(session, "jms.queue.activemq.management");
+ ClientRequestor requestor = new ClientRequestor(session, "activemq.management");
ClientMessage message = session.createMessage(false);
cb.setUpInvocation(message);
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ac7a0c5/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataImporter.java
----------------------------------------------------------------------
diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataImporter.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataImporter.java
index 8cd0784..587e402 100644
--- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataImporter.java
+++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataImporter.java
@@ -326,7 +326,7 @@ public final class XmlDataImporter extends ActionAbstract {
// Get the ID of the queues involved so the message can be routed properly. This is done because we cannot
// send directly to a queue, we have to send to an address instead but not all the queues related to the
// address may need the message
- try (ClientRequestor requestor = new ClientRequestor(managementSession, "jms.queue.activemq.management")) {
+ try (ClientRequestor requestor = new ClientRequestor(managementSession, "activemq.management")) {
ClientMessage managementMessage = managementSession.createMessage(false);
ManagementHelper.putAttribute(managementMessage, "core.queue." + queue, "ID");
managementSession.start();
@@ -825,7 +825,7 @@ public final class XmlDataImporter extends ActionAbstract {
reader.next();
}
- try (ClientRequestor requestor = new ClientRequestor(managementSession, "jms.queue.activemq.management")) {
+ try (ClientRequestor requestor = new ClientRequestor(managementSession, "activemq.management")) {
ClientMessage managementMessage = managementSession.createMessage(false);
ManagementHelper.putOperationInvocation(managementMessage, ResourceNames.JMS_SERVER, "createConnectionFactory", name, Boolean.parseBoolean(ha), discoveryGroupName.length() > 0, Integer.parseInt(type), connectors, entries, clientId, Long.parseLong(clientFailureCheckPeriod), Long.parseLong(connectionTtl), Long.parseLong(callTimeout), Long.parseLong(callFailoverTimeout), Integer.parseInt(minLargeMessageSize), Boolean.parseBoolean(compressLargeMessages), Integer.parseInt(consumerWindowSize), Integer.parseInt(consumerMaxRate), Integer.parseInt(confirmationWindowSize), Integer.parseInt(producerWindowSize), Integer.parseInt(producerMaxRate), Boolean.parseBoolean(blockOnAcknowledge), Boolean.parseBoolean(blockOnDurableSend), Boolean.parseBoolean(blockOnNonDurableSend), Boolean.parseBoolean(autoGroup), Boolean.parseBoolean(preacknowledge), loadBalancingPolicyClassName, Integer.parseInt(transactionBatchSize), Integer.parseInt(dupsOkBatchSize), Boolean.parseBoolean(useGlobalPools), In
teger.parseInt(scheduledThreadMaxPoolSize), Integer.parseInt(threadMaxPoolSize), Long.parseLong(retryInterval), Double.parseDouble(retryIntervalMultiplier), Long.parseLong(maxRetryInterval), Integer.parseInt(reconnectAttempts), Boolean.parseBoolean(failoverOnInitialConnection), groupId);
//Boolean.parseBoolean(cacheLargeMessagesClient));
@@ -883,7 +883,7 @@ public final class XmlDataImporter extends ActionAbstract {
reader.next();
}
- try (ClientRequestor requestor = new ClientRequestor(managementSession, "jms.queue.activemq.management")) {
+ try (ClientRequestor requestor = new ClientRequestor(managementSession, "activemq.management")) {
ClientMessage managementMessage = managementSession.createMessage(false);
if ("Queue".equals(type)) {
ManagementHelper.putOperationInvocation(managementMessage, ResourceNames.JMS_SERVER, "createQueue", name, entries, selector);
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ac7a0c5/artemis-cli/src/test/java/org/apache/activemq/cli/test/FileBrokerTest.java
----------------------------------------------------------------------
diff --git a/artemis-cli/src/test/java/org/apache/activemq/cli/test/FileBrokerTest.java b/artemis-cli/src/test/java/org/apache/activemq/cli/test/FileBrokerTest.java
index 296a3d2..a50a49f 100644
--- a/artemis-cli/src/test/java/org/apache/activemq/cli/test/FileBrokerTest.java
+++ b/artemis-cli/src/test/java/org/apache/activemq/cli/test/FileBrokerTest.java
@@ -114,7 +114,7 @@ public class FileBrokerTest {
ServerLocator locator = ActiveMQClient.createServerLocator("tcp://localhost:61616");
ClientSessionFactory sf = locator.createSessionFactory();
ClientSession session = sf.createSession("myUser", "myPass", false, true, false, false, 0);
- ClientProducer producer = session.createProducer("jms.queue.DLQ");
+ ClientProducer producer = session.createProducer("DLQ");
producer.send(session.createMessage(true));
replacePatternInFile(path, "guest", "X");
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ac7a0c5/artemis-cli/src/test/resources/broker-nojms.xml
----------------------------------------------------------------------
diff --git a/artemis-cli/src/test/resources/broker-nojms.xml b/artemis-cli/src/test/resources/broker-nojms.xml
index e0fcced..11cb787 100644
--- a/artemis-cli/src/test/resources/broker-nojms.xml
+++ b/artemis-cli/src/test/resources/broker-nojms.xml
@@ -61,8 +61,8 @@ under the License.
<address-settings>
<!--default for catch all-->
<address-setting match="#">
- <dead-letter-address>jms.queue.DLQ</dead-letter-address>
- <expiry-address>jms.queue.ExpiryQueue</expiry-address>
+ <dead-letter-address>DLQ</dead-letter-address>
+ <expiry-address>ExpiryQueue</expiry-address>
<redelivery-delay>0</redelivery-delay>
<max-size-bytes>10485760</max-size-bytes>
<message-counter-history-day-limit>10</message-counter-history-day-limit>
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ac7a0c5/artemis-cli/src/test/resources/broker-reload.xml
----------------------------------------------------------------------
diff --git a/artemis-cli/src/test/resources/broker-reload.xml b/artemis-cli/src/test/resources/broker-reload.xml
index 3063f5f..93f909c 100644
--- a/artemis-cli/src/test/resources/broker-reload.xml
+++ b/artemis-cli/src/test/resources/broker-reload.xml
@@ -64,8 +64,8 @@ under the License.
<address-settings>
<!--default for catch all-->
<address-setting match="#">
- <dead-letter-address>jms.queue.DLQ</dead-letter-address>
- <expiry-address>jms.queue.ExpiryQueue</expiry-address>
+ <dead-letter-address>DLQ</dead-letter-address>
+ <expiry-address>ExpiryQueue</expiry-address>
<redelivery-delay>0</redelivery-delay>
<max-size-bytes>10485760</max-size-bytes>
<message-counter-history-day-limit>10</message-counter-history-day-limit>
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ac7a0c5/artemis-cli/src/test/resources/broker.xml
----------------------------------------------------------------------
diff --git a/artemis-cli/src/test/resources/broker.xml b/artemis-cli/src/test/resources/broker.xml
index de51e9a..d4e2400 100644
--- a/artemis-cli/src/test/resources/broker.xml
+++ b/artemis-cli/src/test/resources/broker.xml
@@ -65,8 +65,8 @@ under the License.
<address-settings>
<!--default for catch all-->
<address-setting match="#">
- <dead-letter-address>jms.queue.DLQ</dead-letter-address>
- <expiry-address>jms.queue.ExpiryQueue</expiry-address>
+ <dead-letter-address>DLQ</dead-letter-address>
+ <expiry-address>ExpiryQueue</expiry-address>
<redelivery-delay>0</redelivery-delay>
<max-size-bytes>10485760</max-size-bytes>
<message-counter-history-day-limit>10</message-counter-history-day-limit>
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ac7a0c5/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/config/ActiveMQDefaultConfiguration.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/config/ActiveMQDefaultConfiguration.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/config/ActiveMQDefaultConfiguration.java
index b952430..f9861a4 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/config/ActiveMQDefaultConfiguration.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/config/ActiveMQDefaultConfiguration.java
@@ -157,8 +157,7 @@ public final class ActiveMQDefaultConfiguration {
// true means that the server supports wild card routing
private static boolean DEFAULT_WILDCARD_ROUTING_ENABLED = true;
- // the name of the management address to send management messages to. It is prefixed with "jms.queue" so that JMS clients can send messages to it.
- private static SimpleString DEFAULT_MANAGEMENT_ADDRESS = new SimpleString("jms.queue.activemq.management");
+ private static SimpleString DEFAULT_MANAGEMENT_ADDRESS = new SimpleString("activemq.management");
// the name of the address that consumers bind to receive management notifications
private static SimpleString DEFAULT_MANAGEMENT_NOTIFICATION_ADDRESS = new SimpleString("activemq.notifications");
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ac7a0c5/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/client/ClientSession.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/client/ClientSession.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/client/ClientSession.java
index dd1c45c..fbd33d3 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/client/ClientSession.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/client/ClientSession.java
@@ -198,6 +198,8 @@ public interface ClientSession extends XAResource, AutoCloseable {
*/
int getVersion();
+ void createAddress(final SimpleString address, final boolean multicast) throws ActiveMQException;
+
// Queue Operations ----------------------------------------------
/**
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ac7a0c5/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ActiveMQServerControl.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ActiveMQServerControl.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ActiveMQServerControl.java
index 075a5ef..87a4a79 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ActiveMQServerControl.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ActiveMQServerControl.java
@@ -747,6 +747,18 @@ public interface ActiveMQServerControl {
@Parameter(desc = "a comma-separated list of roles allowed to send management messages messages", name = "manage") String manageRoles,
@Parameter(desc = "a comma-separated list of roles allowed to browse queues", name = "browse") String browseRoles) throws Exception;
+ @Operation(desc = "Add security settings for addresses matching the addressMatch", impact = MBeanOperationInfo.ACTION)
+ void addSecuritySettings(@Parameter(desc = "an address match", name = "addressMatch") String addressMatch,
+ @Parameter(desc = "a comma-separated list of roles allowed to send messages", name = "send") String sendRoles,
+ @Parameter(desc = "a comma-separated list of roles allowed to consume messages", name = "consume") String consumeRoles,
+ @Parameter(desc = "a comma-separated list of roles allowed to create durable queues", name = "createDurableQueueRoles") String createDurableQueueRoles,
+ @Parameter(desc = "a comma-separated list of roles allowed to delete durable queues", name = "deleteDurableQueueRoles") String deleteDurableQueueRoles,
+ @Parameter(desc = "a comma-separated list of roles allowed to create non durable queues", name = "createNonDurableQueueRoles") String createNonDurableQueueRoles,
+ @Parameter(desc = "a comma-separated list of roles allowed to delete non durable queues", name = "deleteNonDurableQueueRoles") String deleteNonDurableQueueRoles,
+ @Parameter(desc = "a comma-separated list of roles allowed to send management messages messages", name = "manage") String manageRoles,
+ @Parameter(desc = "a comma-separated list of roles allowed to browse queues", name = "browse") String browseRoles,
+ @Parameter(desc = "a comma-separated list of roles allowed to create addresses", name = "createAddressRoles") String createAddressRoles) throws Exception;
+
@Operation(desc = "Remove security settings for an address", impact = MBeanOperationInfo.ACTION)
void removeSecuritySettings(@Parameter(desc = "an address match", name = "addressMatch") String addressMatch) throws Exception;
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ac7a0c5/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/AddressSettingsInfo.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/AddressSettingsInfo.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/AddressSettingsInfo.java
index b182470..7c2b074 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/AddressSettingsInfo.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/AddressSettingsInfo.java
@@ -67,7 +67,7 @@ public final class AddressSettingsInfo {
public static AddressSettingsInfo from(final String jsonString) {
JsonObject object = JsonUtil.readJsonObject(jsonString);
- return new AddressSettingsInfo(object.getString("addressFullMessagePolicy"), object.getJsonNumber("maxSizeBytes").longValue(), object.getInt("pageSizeBytes"), object.getInt("pageCacheMaxSize"), object.getInt("maxDeliveryAttempts"), object.getJsonNumber("redeliveryDelay").longValue(), object.getJsonNumber("redeliveryMultiplier").doubleValue(), object.getJsonNumber("maxRedeliveryDelay").longValue(), object.getString("DLA"), object.getString("expiryAddress"), object.getBoolean("lastValueQueue"), object.getJsonNumber("redistributionDelay").longValue(), object.getBoolean("sendToDLAOnNoRoute"), object.getJsonNumber("slowConsumerThreshold").longValue(), object.getJsonNumber("slowConsumerCheckPeriod").longValue(), object.getString("slowConsumerPolicy"), object.getBoolean("autoCreateJmsQueues"), object.getBoolean("autoDeleteJmsQueues"), object.getBoolean("autoCreateJmsTopics"), object.getBoolean("autoDeleteJmsTopics"));
+ return new AddressSettingsInfo(object.getString("addressFullMessagePolicy"), object.getJsonNumber("maxSizeBytes").longValue(), object.getInt("pageSizeBytes"), object.getInt("pageCacheMaxSize"), object.getInt("maxDeliveryAttempts"), object.getJsonNumber("redeliveryDelay").longValue(), object.getJsonNumber("redeliveryMultiplier").doubleValue(), object.getJsonNumber("maxRedeliveryDelay").longValue(), object.getString("DLA"), object.getString("expiryAddress"), object.getBoolean("lastValueQueue"), object.getJsonNumber("redistributionDelay").longValue(), object.getBoolean("sendToDLAOnNoRoute"), object.getJsonNumber("slowConsumerThreshold").longValue(), object.getJsonNumber("slowConsumerCheckPeriod").longValue(), object.getString("slowConsumerPolicy"), object.getBoolean("autoCreateJmsQueues"), object.getBoolean("autoCreateJmsTopics"), object.getBoolean("autoDeleteJmsQueues"), object.getBoolean("autoDeleteJmsTopics"));
}
// Constructors --------------------------------------------------
@@ -89,8 +89,8 @@ public final class AddressSettingsInfo {
long slowConsumerCheckPeriod,
String slowConsumerPolicy,
boolean autoCreateJmsQueues,
- boolean autoDeleteJmsQueues,
boolean autoCreateJmsTopics,
+ boolean autoDeleteJmsQueues,
boolean autoDeleteJmsTopics) {
this.addressFullMessagePolicy = addressFullMessagePolicy;
this.maxSizeBytes = maxSizeBytes;
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ac7a0c5/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ResourceNames.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ResourceNames.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ResourceNames.java
index 37f74ed..a8c7632 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ResourceNames.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/ResourceNames.java
@@ -44,9 +44,9 @@ public final class ResourceNames {
public static final String JMS_SERVER = "jms.server";
- public static final String JMS_QUEUE = "jms.queue.";
+// public static final String JMS_QUEUE = "jms.queue.";
- public static final String JMS_TOPIC = "jms.topic.";
+// public static final String JMS_TOPIC = "jms.topic.";
public static final String JMS_CONNECTION_FACTORY = "jms.connectionfactory.";
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ac7a0c5/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/RoleInfo.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/RoleInfo.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/RoleInfo.java
index d3fc9db..bbf12aa 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/RoleInfo.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/RoleInfo.java
@@ -45,6 +45,8 @@ public final class RoleInfo {
private final boolean browse;
+ private final boolean createAddress;
+
/**
* Returns an array of RoleInfo corresponding to the JSON serialization returned
* by {@link AddressControl#getRolesAsJSON()}.
@@ -54,7 +56,7 @@ public final class RoleInfo {
RoleInfo[] roles = new RoleInfo[array.size()];
for (int i = 0; i < array.size(); i++) {
JsonObject r = array.getJsonObject(i);
- RoleInfo role = new RoleInfo(r.getString("name"), r.getBoolean("send"), r.getBoolean("consume"), r.getBoolean("createDurableQueue"), r.getBoolean("deleteDurableQueue"), r.getBoolean("createNonDurableQueue"), r.getBoolean("deleteNonDurableQueue"), r.getBoolean("manage"), r.getBoolean("browse"));
+ RoleInfo role = new RoleInfo(r.getString("name"), r.getBoolean("send"), r.getBoolean("consume"), r.getBoolean("createDurableQueue"), r.getBoolean("deleteDurableQueue"), r.getBoolean("createNonDurableQueue"), r.getBoolean("deleteNonDurableQueue"), r.getBoolean("manage"), r.getBoolean("browse"), r.getBoolean("createAddress"));
roles[i] = role;
}
return roles;
@@ -68,7 +70,8 @@ public final class RoleInfo {
final boolean createNonDurableQueue,
final boolean deleteNonDurableQueue,
final boolean manage,
- final boolean browse) {
+ final boolean browse,
+ final boolean createAddress) {
this.name = name;
this.send = send;
this.consume = consume;
@@ -78,6 +81,7 @@ public final class RoleInfo {
this.deleteNonDurableQueue = deleteNonDurableQueue;
this.manage = manage;
this.browse = browse;
+ this.createAddress = createAddress;
}
/**
@@ -142,4 +146,11 @@ public final class RoleInfo {
public boolean isBrowse() {
return browse;
}
+
+ /**
+ * Returns whether this role can create addresses.
+ */
+ public boolean isCreateAddress() {
+ return createAddress;
+ }
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ac7a0c5/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionImpl.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionImpl.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionImpl.java
index fd6355a..2739109 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionImpl.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionImpl.java
@@ -279,6 +279,18 @@ public final class ClientSessionImpl implements ClientSessionInternal, FailureLi
}
@Override
+ public void createAddress(final SimpleString address, final boolean multicast) throws ActiveMQException {
+ checkClosed();
+
+ startCall();
+ try {
+ sessionContext.createAddress(address, multicast);
+ } finally {
+ endCall();
+ }
+ }
+
+ @Override
public void createQueue(final SimpleString address,
final SimpleString queueName,
final SimpleString filterString,
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ac7a0c5/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/ActiveMQSessionContext.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/ActiveMQSessionContext.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/ActiveMQSessionContext.java
index 56c7135..4e25037 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/ActiveMQSessionContext.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/ActiveMQSessionContext.java
@@ -50,6 +50,7 @@ import org.apache.activemq.artemis.core.protocol.core.CommandConfirmationHandler
import org.apache.activemq.artemis.core.protocol.core.CoreRemotingConnection;
import org.apache.activemq.artemis.core.protocol.core.Packet;
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.ActiveMQExceptionMessage;
+import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateAddressMessage;
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateQueueMessage;
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateSessionMessage;
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateSharedQueueMessage;
@@ -583,6 +584,12 @@ public class ActiveMQSessionContext extends SessionContext {
}
@Override
+ public void createAddress(SimpleString address, final boolean multicast) throws ActiveMQException {
+ CreateAddressMessage request = new CreateAddressMessage(address, multicast, true);
+ sessionChannel.sendBlocking(request, PacketImpl.NULL_RESPONSE);
+ }
+
+ @Override
public void createQueue(SimpleString address,
SimpleString queueName,
SimpleString filterString,
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ac7a0c5/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/PacketDecoder.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/PacketDecoder.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/PacketDecoder.java
index 54c2022..834822c 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/PacketDecoder.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/PacketDecoder.java
@@ -27,6 +27,7 @@ import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CheckFailo
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.ClusterTopologyChangeMessage;
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.ClusterTopologyChangeMessage_V2;
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.ClusterTopologyChangeMessage_V3;
+import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateAddressMessage;
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateQueueMessage;
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateSessionMessage;
import org.apache.activemq.artemis.core.protocol.core.impl.wireformat.CreateSessionResponseMessage;
@@ -88,6 +89,7 @@ import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CLU
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CLUSTER_TOPOLOGY_V3;
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CREATESESSION;
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CREATESESSION_RESP;
+import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CREATE_ADDRESS;
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CREATE_QUEUE;
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.CREATE_SHARED_QUEUE;
import static org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl.DELETE_QUEUE;
@@ -235,6 +237,10 @@ public abstract class PacketDecoder implements Serializable {
packet = new SessionQueueQueryResponseMessage_V2();
break;
}
+ case CREATE_ADDRESS: {
+ packet = new CreateAddressMessage();
+ break;
+ }
case CREATE_QUEUE: {
packet = new CreateQueueMessage();
break;
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ac7a0c5/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/PacketImpl.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/PacketImpl.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/PacketImpl.java
index 6dddf3b..e07d9b5 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/PacketImpl.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/PacketImpl.java
@@ -249,6 +249,8 @@ public class PacketImpl implements Packet {
public static final byte SESS_BINDINGQUERY_RESP_V3 = -10;
+ public static final byte CREATE_ADDRESS = -11;
+
// Static --------------------------------------------------------
public PacketImpl(final byte type) {
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ac7a0c5/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/wireformat/CreateAddressMessage.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/wireformat/CreateAddressMessage.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/wireformat/CreateAddressMessage.java
new file mode 100644
index 0000000..484a2ac
--- /dev/null
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/wireformat/CreateAddressMessage.java
@@ -0,0 +1,116 @@
+/*
+ * 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.protocol.core.impl.wireformat;
+
+import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
+import org.apache.activemq.artemis.api.core.SimpleString;
+import org.apache.activemq.artemis.core.protocol.core.impl.PacketImpl;
+
+public class CreateAddressMessage extends PacketImpl {
+
+ private SimpleString address;
+
+ private boolean multicast;
+
+ private boolean requiresResponse;
+
+ public CreateAddressMessage(final SimpleString address,
+ final boolean multicast,
+ final boolean requiresResponse) {
+ this();
+
+ this.address = address;
+ this.multicast = multicast;
+ this.requiresResponse = requiresResponse;
+ }
+
+ public CreateAddressMessage() {
+ super(CREATE_ADDRESS);
+ }
+
+ // Public --------------------------------------------------------
+
+ @Override
+ public String toString() {
+ StringBuffer buff = new StringBuffer(getParentString());
+ buff.append(", address=" + address);
+ buff.append(", multicast=" + multicast);
+ buff.append("]");
+ return buff.toString();
+ }
+
+ public SimpleString getAddress() {
+ return address;
+ }
+
+ public boolean isMulticast() {
+ return multicast;
+ }
+
+ public boolean isRequiresResponse() {
+ return requiresResponse;
+ }
+
+ public void setAddress(SimpleString address) {
+ this.address = address;
+ }
+
+ @Override
+ public void encodeRest(final ActiveMQBuffer buffer) {
+ buffer.writeSimpleString(address);
+ buffer.writeBoolean(multicast);
+ buffer.writeBoolean(requiresResponse);
+ }
+
+ @Override
+ public void decodeRest(final ActiveMQBuffer buffer) {
+ address = buffer.readSimpleString();
+ multicast = buffer.readBoolean();
+ requiresResponse = buffer.readBoolean();
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = super.hashCode();
+ result = prime * result + ((address == null) ? 0 : address.hashCode());
+ result = prime * result + (multicast ? 1231 : 1237);
+ result = prime * result + (requiresResponse ? 1231 : 1237);
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (!super.equals(obj))
+ return false;
+ if (!(obj instanceof CreateAddressMessage))
+ return false;
+ CreateAddressMessage other = (CreateAddressMessage) obj;
+ if (address == null) {
+ if (other.address != null)
+ return false;
+ } else if (!address.equals(other.address))
+ return false;
+ if (multicast != other.multicast)
+ return false;
+ if (requiresResponse != other.requiresResponse)
+ return false;
+ return true;
+ }
+}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ac7a0c5/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/security/Role.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/security/Role.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/security/Role.java
index 2efddfa..2792d52 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/security/Role.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/security/Role.java
@@ -34,6 +34,8 @@ public class Role implements Serializable {
private final boolean consume;
+ private final boolean createAddress;
+
private final boolean createDurableQueue;
private final boolean deleteDurableQueue;
@@ -47,7 +49,7 @@ public class Role implements Serializable {
private final boolean browse;
public JsonObject toJson() {
- return JsonLoader.createObjectBuilder().add("name", name).add("send", send).add("consume", consume).add("createDurableQueue", createDurableQueue).add("deleteDurableQueue", deleteDurableQueue).add("createNonDurableQueue", createNonDurableQueue).add("deleteNonDurableQueue", deleteNonDurableQueue).add("manage", manage).add("browse", browse).build();
+ return JsonLoader.createObjectBuilder().add("name", name).add("send", send).add("consume", consume).add("createDurableQueue", createDurableQueue).add("deleteDurableQueue", deleteDurableQueue).add("createNonDurableQueue", createNonDurableQueue).add("deleteNonDurableQueue", deleteNonDurableQueue).add("manage", manage).add("browse", browse).add("createAddress", createAddress).build();
}
/**
@@ -84,12 +86,28 @@ public class Role implements Serializable {
final boolean deleteNonDurableQueue,
final boolean manage,
final boolean browse) {
+ // This constructor exists for version compatibility on the API. If either createDurableQueue or createNonDurableQueue
+ // is true then createAddress will be true.
+ this(name, send, consume, createDurableQueue, deleteDurableQueue, createNonDurableQueue, deleteNonDurableQueue, manage, browse, createDurableQueue || createNonDurableQueue);
+ }
+
+ public Role(final String name,
+ final boolean send,
+ final boolean consume,
+ final boolean createDurableQueue,
+ final boolean deleteDurableQueue,
+ final boolean createNonDurableQueue,
+ final boolean deleteNonDurableQueue,
+ final boolean manage,
+ final boolean browse,
+ final boolean createAddress) {
if (name == null) {
throw new NullPointerException("name is null");
}
this.name = name;
this.send = send;
this.consume = consume;
+ this.createAddress = createAddress;
this.createDurableQueue = createDurableQueue;
this.deleteDurableQueue = deleteDurableQueue;
this.createNonDurableQueue = createNonDurableQueue;
@@ -110,6 +128,10 @@ public class Role implements Serializable {
return consume;
}
+ public boolean isCreateAddress() {
+ return createAddress;
+ }
+
public boolean isCreateDurableQueue() {
return createDurableQueue;
}
@@ -136,6 +158,9 @@ public class Role implements Serializable {
if (consume) {
stringReturn.append(" consume ");
}
+ if (createAddress) {
+ stringReturn.append(" createAddress ");
+ }
if (createDurableQueue) {
stringReturn.append(" createDurableQueue ");
}
@@ -174,6 +199,9 @@ public class Role implements Serializable {
if (consume != role.consume) {
return false;
}
+ if (createAddress != role.createAddress) {
+ return false;
+ }
if (createDurableQueue != role.createDurableQueue) {
return false;
}
@@ -208,6 +236,7 @@ public class Role implements Serializable {
result = name.hashCode();
result = 31 * result + (send ? 1 : 0);
result = 31 * result + (consume ? 1 : 0);
+ result = 31 * result + (createAddress ? 1 : 0);
result = 31 * result + (createDurableQueue ? 1 : 0);
result = 31 * result + (deleteDurableQueue ? 1 : 0);
result = 31 * result + (createNonDurableQueue ? 1 : 0);
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ac7a0c5/artemis-core-client/src/main/java/org/apache/activemq/artemis/spi/core/remoting/SessionContext.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/spi/core/remoting/SessionContext.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/spi/core/remoting/SessionContext.java
index 1f15cc6..79d50c1 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/spi/core/remoting/SessionContext.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/spi/core/remoting/SessionContext.java
@@ -166,6 +166,8 @@ public abstract class SessionContext {
public abstract void deleteQueue(SimpleString queueName) throws ActiveMQException;
+ public abstract void createAddress(SimpleString address, boolean multicast) throws ActiveMQException;
+
public abstract void createQueue(SimpleString address,
SimpleString queueName,
SimpleString filterString,
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ac7a0c5/artemis-core-client/src/main/java/org/apache/activemq/artemis/utils/SecurityFormatter.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/utils/SecurityFormatter.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/utils/SecurityFormatter.java
index b4fe581..7e9ff32 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/utils/SecurityFormatter.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/utils/SecurityFormatter.java
@@ -32,7 +32,8 @@ public class SecurityFormatter {
String createNonDurableQueueRoles,
String deleteNonDurableQueueRoles,
String manageRoles,
- String browseRoles) {
+ String browseRoles,
+ String createAddressRoles) {
List<String> createDurableQueue = toList(createDurableQueueRoles);
List<String> deleteDurableQueue = toList(deleteDurableQueueRoles);
List<String> createNonDurableQueue = toList(createNonDurableQueueRoles);
@@ -41,6 +42,7 @@ public class SecurityFormatter {
List<String> consume = toList(consumeRoles);
List<String> manage = toList(manageRoles);
List<String> browse = toList(browseRoles);
+ List<String> createAddress = toList(createAddressRoles);
Set<String> allRoles = new HashSet<>();
allRoles.addAll(createDurableQueue);
@@ -51,10 +53,11 @@ public class SecurityFormatter {
allRoles.addAll(consume);
allRoles.addAll(manage);
allRoles.addAll(browse);
+ allRoles.addAll(createAddress);
Set<Role> roles = new HashSet<>(allRoles.size());
for (String role : allRoles) {
- roles.add(new Role(role, send.contains(role), consume.contains(role), createDurableQueue.contains(role), deleteDurableQueue.contains(role), createNonDurableQueue.contains(role), deleteNonDurableQueue.contains(role), manageRoles.contains(role), browse.contains(role)));
+ roles.add(new Role(role, send.contains(role), consume.contains(role), createDurableQueue.contains(role), deleteDurableQueue.contains(role), createNonDurableQueue.contains(role), deleteNonDurableQueue.contains(role), manageRoles.contains(role), browse.contains(role), createAddressRoles.contains(role)));
}
return roles;
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ac7a0c5/artemis-core-client/src/main/resources/activemq-version.properties
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/resources/activemq-version.properties b/artemis-core-client/src/main/resources/activemq-version.properties
index b6f4af2..a39b422 100644
--- a/artemis-core-client/src/main/resources/activemq-version.properties
+++ b/artemis-core-client/src/main/resources/activemq-version.properties
@@ -20,4 +20,4 @@ activemq.version.minorVersion=${activemq.version.minorVersion}
activemq.version.microVersion=${activemq.version.microVersion}
activemq.version.incrementingVersion=${activemq.version.incrementingVersion}
activemq.version.versionTag=${activemq.version.versionTag}
-activemq.version.compatibleVersionList=121,122,123,124,125,126,127,128
+activemq.version.compatibleVersionList=121,122,123,124,125,126,127,128,129
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ac7a0c5/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQDestination.java
----------------------------------------------------------------------
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQDestination.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQDestination.java
index 4aed49f..37b0a98 100644
--- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQDestination.java
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQDestination.java
@@ -43,13 +43,13 @@ public class ActiveMQDestination implements Destination, Serializable, Reference
*/
private static final long serialVersionUID = 5027962425462382883L;
- public static final String JMS_QUEUE_ADDRESS_PREFIX = "jms.queue.";
+// public static final String JMS_QUEUE_ADDRESS_PREFIX = "jms.queue.";
- public static final String JMS_TEMP_QUEUE_ADDRESS_PREFIX = "jms.tempqueue.";
+// public static final String JMS_TEMP_QUEUE_ADDRESS_PREFIX = "jms.tempqueue.";
- public static final String JMS_TOPIC_ADDRESS_PREFIX = "jms.topic.";
+// public static final String JMS_TOPIC_ADDRESS_PREFIX = "jms.topic.";
- public static final String JMS_TEMP_TOPIC_ADDRESS_PREFIX = "jms.temptopic.";
+// public static final String JMS_TEMP_TOPIC_ADDRESS_PREFIX = "jms.temptopic.";
public static final String QUEUE_QUALIFIED_PREFIX = "queue://";
public static final String TOPIC_QUALIFIED_PREFIX = "topic://";
@@ -98,23 +98,23 @@ public class ActiveMQDestination implements Destination, Serializable, Reference
}
}
- public static Destination fromAddress(final String address) {
- if (address.startsWith(ActiveMQDestination.JMS_QUEUE_ADDRESS_PREFIX)) {
- String name = address.substring(ActiveMQDestination.JMS_QUEUE_ADDRESS_PREFIX.length());
+ public static Destination fromPrefixedName(final String address) {
+ if (address.startsWith(ActiveMQDestination.QUEUE_QUALIFIED_PREFIX)) {
+ String name = address.substring(ActiveMQDestination.QUEUE_QUALIFIED_PREFIX.length());
return createQueue(name);
- } else if (address.startsWith(ActiveMQDestination.JMS_TOPIC_ADDRESS_PREFIX)) {
- String name = address.substring(ActiveMQDestination.JMS_TOPIC_ADDRESS_PREFIX.length());
+ } else if (address.startsWith(ActiveMQDestination.TOPIC_QUALIFIED_PREFIX)) {
+ String name = address.substring(ActiveMQDestination.TOPIC_QUALIFIED_PREFIX.length());
return createTopic(name);
- } else if (address.startsWith(ActiveMQDestination.JMS_TEMP_QUEUE_ADDRESS_PREFIX)) {
- String name = address.substring(ActiveMQDestination.JMS_TEMP_QUEUE_ADDRESS_PREFIX.length());
+ } else if (address.startsWith(ActiveMQDestination.TEMP_QUEUE_QUALIFED_PREFIX)) {
+ String name = address.substring(ActiveMQDestination.TEMP_QUEUE_QUALIFED_PREFIX.length());
- return new ActiveMQTemporaryQueue(address, name, null);
- } else if (address.startsWith(ActiveMQDestination.JMS_TEMP_TOPIC_ADDRESS_PREFIX)) {
- String name = address.substring(ActiveMQDestination.JMS_TEMP_TOPIC_ADDRESS_PREFIX.length());
+ return new ActiveMQTemporaryQueue(name, name, null);
+ } else if (address.startsWith(ActiveMQDestination.TEMP_TOPIC_QUALIFED_PREFIX)) {
+ String name = address.substring(ActiveMQDestination.TEMP_TOPIC_QUALIFED_PREFIX.length());
- return new ActiveMQTemporaryTopic(address, name, null);
+ return new ActiveMQTemporaryTopic(name, name, null);
} else {
throw new JMSRuntimeException("Invalid address " + address);
}
@@ -202,11 +202,11 @@ public class ActiveMQDestination implements Destination, Serializable, Reference
}
public static SimpleString createQueueAddressFromName(final String name) {
- return new SimpleString(JMS_QUEUE_ADDRESS_PREFIX + name);
+ return new SimpleString(QUEUE_QUALIFIED_PREFIX + name);
}
public static SimpleString createTopicAddressFromName(final String name) {
- return new SimpleString(JMS_TOPIC_ADDRESS_PREFIX + name);
+ return new SimpleString(TOPIC_QUALIFIED_PREFIX + name);
}
public static ActiveMQQueue createQueue(final String name) {
@@ -218,11 +218,11 @@ public class ActiveMQDestination implements Destination, Serializable, Reference
}
public static ActiveMQTemporaryQueue createTemporaryQueue(final String name, final ActiveMQSession session) {
- return new ActiveMQTemporaryQueue(JMS_TEMP_QUEUE_ADDRESS_PREFIX.concat(name), name, session);
+ return new ActiveMQTemporaryQueue(name, name, session);
}
public static ActiveMQTemporaryQueue createTemporaryQueue(final String name) {
- return createTemporaryQueue(name, null);
+ return createTemporaryQueue(/*TEMP_QUEUE_QUALIFED_PREFIX + */name, null);
}
public static ActiveMQTemporaryQueue createTemporaryQueue(final ActiveMQSession session) {
@@ -238,7 +238,7 @@ public class ActiveMQDestination implements Destination, Serializable, Reference
}
public static ActiveMQTemporaryTopic createTemporaryTopic(String name, final ActiveMQSession session) {
- return new ActiveMQTemporaryTopic(JMS_TEMP_TOPIC_ADDRESS_PREFIX.concat(name), name, session);
+ return new ActiveMQTemporaryTopic(/*TEMP_TOPIC_QUALIFED_PREFIX + */name, name, session);
}
public static ActiveMQTemporaryTopic createTemporaryTopic(String name) {
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ac7a0c5/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessage.java
----------------------------------------------------------------------
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessage.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessage.java
index 12b1296..283f958 100644
--- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessage.java
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessage.java
@@ -47,6 +47,11 @@ import org.apache.activemq.artemis.core.message.impl.MessageInternal;
import org.apache.activemq.artemis.reader.MessageUtil;
import org.apache.activemq.artemis.utils.UUID;
+import static org.apache.activemq.artemis.jms.client.ActiveMQDestination.QUEUE_QUALIFIED_PREFIX;
+import static org.apache.activemq.artemis.jms.client.ActiveMQDestination.TEMP_QUEUE_QUALIFED_PREFIX;
+import static org.apache.activemq.artemis.jms.client.ActiveMQDestination.TEMP_TOPIC_QUALIFED_PREFIX;
+import static org.apache.activemq.artemis.jms.client.ActiveMQDestination.TOPIC_QUALIFIED_PREFIX;
+
/**
* ActiveMQ Artemis implementation of a JMS Message.
* <br>
@@ -196,6 +201,8 @@ public class ActiveMQMessage implements javax.jms.Message {
private long jmsDeliveryTime;
+ private boolean fromQueue;
+
// Constructors --------------------------------------------------
/*
@@ -353,7 +360,7 @@ public class ActiveMQMessage implements javax.jms.Message {
SimpleString repl = MessageUtil.getJMSReplyTo(message);
if (repl != null) {
- replyTo = ActiveMQDestination.fromAddress(repl.toString());
+ replyTo = ActiveMQDestination.fromPrefixedName(repl.toString());
}
}
return replyTo;
@@ -370,9 +377,19 @@ public class ActiveMQMessage implements javax.jms.Message {
throw new InvalidDestinationException("Foreign destination " + dest);
}
+ String prefix = "";
+ if (dest instanceof ActiveMQTemporaryQueue) {
+ prefix = TEMP_QUEUE_QUALIFED_PREFIX;
+ } else if (dest instanceof ActiveMQQueue) {
+ prefix = QUEUE_QUALIFIED_PREFIX;
+ } else if (dest instanceof ActiveMQTemporaryTopic) {
+ prefix = TEMP_TOPIC_QUALIFED_PREFIX;
+ } else if (dest instanceof ActiveMQTopic) {
+ prefix = TOPIC_QUALIFIED_PREFIX;
+ }
ActiveMQDestination jbd = (ActiveMQDestination) dest;
- MessageUtil.setJMSReplyTo(message, jbd.getSimpleAddress());
+ MessageUtil.setJMSReplyTo(message, SimpleString.toSimpleString(prefix + jbd.getAddress()));
replyTo = jbd;
}
@@ -381,9 +398,9 @@ public class ActiveMQMessage implements javax.jms.Message {
@Override
public Destination getJMSDestination() throws JMSException {
if (dest == null) {
- SimpleString sdest = message.getAddress();
+ SimpleString address = message.getAddress();
- dest = sdest == null ? null : ActiveMQDestination.fromAddress(sdest.toString());
+ dest = address == null ? null : ActiveMQDestination.fromPrefixedName((fromQueue ? QUEUE_QUALIFIED_PREFIX : TOPIC_QUALIFIED_PREFIX) + address.toString());
}
return dest;
@@ -762,6 +779,10 @@ public class ActiveMQMessage implements javax.jms.Message {
// Public --------------------------------------------------------
+ public void setFromQueue(boolean fromQueue) {
+ this.fromQueue = fromQueue;
+ }
+
public void setIndividualAcknowledge() {
this.individualAck = true;
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ac7a0c5/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessageConsumer.java
----------------------------------------------------------------------
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessageConsumer.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessageConsumer.java
index 8bc1fd8..b449aea 100644
--- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessageConsumer.java
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessageConsumer.java
@@ -240,6 +240,8 @@ public final class ActiveMQMessageConsumer implements QueueReceiver, TopicSubscr
} else {
coreMessage.acknowledge();
}
+
+ jmsMsg.setFromQueue(destination instanceof ActiveMQQueue);
}
return jmsMsg;
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ac7a0c5/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessageProducer.java
----------------------------------------------------------------------
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessageProducer.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessageProducer.java
index 270cc9f..c552d69 100644
--- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessageProducer.java
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessageProducer.java
@@ -403,9 +403,19 @@ public class ActiveMQMessageProducer implements MessageProducer, QueueSender, To
try {
ClientSession.AddressQuery query = clientSession.addressQuery(address);
- // if it's autoCreateJMSQueue we will let the PostOffice.route to execute the creation at the server's side
- // as that's a more efficient path for such operation
- if (!query.isExists() && ((address.toString().startsWith(ActiveMQDestination.JMS_QUEUE_ADDRESS_PREFIX) && !query.isAutoCreateJmsQueues()) || (address.toString().startsWith(ActiveMQDestination.JMS_TOPIC_ADDRESS_PREFIX) && !query.isAutoCreateJmsTopics()))) {
+ if (!query.isExists() && query.isAutoCreateJmsQueues()) {
+ if (destination.isQueue() && !destination.isTemporary()) {
+ clientSession.createAddress(address, false);
+ clientSession.createQueue(address, address, null, true);
+ } else if (destination.isQueue() && destination.isTemporary()) {
+ clientSession.createAddress(address, false);
+ clientSession.createTemporaryQueue(address, address);
+ } else if (!destination.isQueue() && !destination.isTemporary()) {
+ clientSession.createAddress(address, true);
+ } else if (!destination.isQueue() && destination.isTemporary()) {
+ clientSession.createAddress(address, true);
+ }
+ } else if (!query.isExists() && !query.isAutoCreateJmsQueues()) {
throw new InvalidDestinationException("Destination " + address + " does not exist");
} else {
connection.addKnownDestination(address);
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ac7a0c5/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQQueue.java
----------------------------------------------------------------------
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQQueue.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQQueue.java
index c7a5728..2632dae 100644
--- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQQueue.java
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQQueue.java
@@ -33,7 +33,7 @@ public class ActiveMQQueue extends ActiveMQDestination implements Queue {
// Static --------------------------------------------------------
public static SimpleString createAddressFromName(final String name) {
- return new SimpleString(JMS_QUEUE_ADDRESS_PREFIX + name);
+ return new SimpleString(name);
}
// Attributes ----------------------------------------------------
@@ -41,11 +41,11 @@ public class ActiveMQQueue extends ActiveMQDestination implements Queue {
// Constructors --------------------------------------------------
public ActiveMQQueue(final String name) {
- super(JMS_QUEUE_ADDRESS_PREFIX + name, name, false, true, null);
+ super(name, name, false, true, null);
}
public ActiveMQQueue(final String name, boolean temporary) {
- super(JMS_QUEUE_ADDRESS_PREFIX + name, name, temporary, true, null);
+ super(name, name, temporary, true, null);
}
/**
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ac7a0c5/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQSession.java
----------------------------------------------------------------------
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQSession.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQSession.java
index 47d1512..d40ca21 100644
--- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQSession.java
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQSession.java
@@ -299,7 +299,15 @@ public class ActiveMQSession implements QueueSession, TopicSession {
if (jbd != null) {
ClientSession.AddressQuery response = session.addressQuery(jbd.getSimpleAddress());
- if (!response.isExists() && ((jbd.getAddress().startsWith(ActiveMQDestination.JMS_QUEUE_ADDRESS_PREFIX) && !response.isAutoCreateJmsQueues()) || (jbd.getAddress().startsWith(ActiveMQDestination.JMS_TOPIC_ADDRESS_PREFIX) && !response.isAutoCreateJmsTopics()))) {
+ if (!response.isExists() && response.isAutoCreateJmsQueues()) {
+ if (jbd.isQueue()) {
+ session.createAddress(jbd.getSimpleAddress(), false);
+ session.createQueue(jbd.getSimpleAddress(), jbd.getSimpleAddress(), null, true);
+ } else {
+ session.createAddress(jbd.getSimpleAddress(), true);
+ }
+
+ } else if (!response.isExists() && !response.isAutoCreateJmsQueues()) {
throw new InvalidDestinationException("Destination " + jbd.getName() + " does not exist");
}
@@ -559,7 +567,7 @@ public class ActiveMQSession implements QueueSession, TopicSession {
AddressQuery response = session.addressQuery(dest.getSimpleAddress());
- if (!response.isExists()) {
+ if (!response.isExists() && !response.isAutoCreateJmsTopics()) {
throw ActiveMQJMSClientBundle.BUNDLE.destinationDoesNotExist(dest.getSimpleAddress());
}
@@ -652,8 +660,12 @@ public class ActiveMQSession implements QueueSession, TopicSession {
} else {
AddressQuery response = session.addressQuery(dest.getSimpleAddress());
- if (!response.isExists() && !response.isAutoCreateJmsTopics()) {
- throw new InvalidDestinationException("Topic " + dest.getName() + " does not exist");
+ if (!response.isExists()) {
+ if (response.isAutoCreateJmsQueues()) {
+ session.createAddress(dest.getSimpleAddress(), true);
+ } else {
+ throw new InvalidDestinationException("Topic " + dest.getName() + " does not exist");
+ }
}
connection.addKnownDestination(dest.getSimpleAddress());
@@ -774,26 +786,26 @@ public class ActiveMQSession implements QueueSession, TopicSession {
throw JMSExceptionHelper.convertFromActiveMQException(ActiveMQJMSClientBundle.BUNDLE.invalidFilter(e, new SimpleString(filterString)));
}
- ActiveMQDestination jbq = (ActiveMQDestination) queue;
+ ActiveMQDestination activeMQDestination = (ActiveMQDestination) queue;
- if (!jbq.isQueue()) {
+ if (!activeMQDestination.isQueue()) {
throw new InvalidDestinationException("Cannot create a browser on a topic");
}
try {
- AddressQuery response = session.addressQuery(new SimpleString(jbq.getAddress()));
+ AddressQuery response = session.addressQuery(new SimpleString(activeMQDestination.getAddress()));
if (!response.isExists()) {
if (response.isAutoCreateJmsQueues()) {
- session.createQueue(jbq.getSimpleAddress(), jbq.getSimpleAddress(), true);
+ session.createQueue(activeMQDestination.getSimpleAddress(), activeMQDestination.getSimpleAddress(), true);
} else {
- throw new InvalidDestinationException("Destination " + jbq.getName() + " does not exist");
+ throw new InvalidDestinationException("Destination " + activeMQDestination.getName() + " does not exist");
}
}
} catch (ActiveMQException e) {
throw JMSExceptionHelper.convertFromActiveMQException(e);
}
- return new ActiveMQQueueBrowser(options, (ActiveMQQueue) jbq, filterString, session);
+ return new ActiveMQQueueBrowser(options, (ActiveMQQueue) activeMQDestination, filterString, session);
}
@@ -1082,7 +1094,7 @@ public class ActiveMQSession implements QueueSession, TopicSession {
AddressQuery query = session.addressQuery(topic.getSimpleAddress());
- if (!query.isExists() && !query.isAutoCreateJmsTopics()) {
+ if (!query.isExists() && !query.isAutoCreateJmsQueues()) {
return null;
} else {
return topic;
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ac7a0c5/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQTopic.java
----------------------------------------------------------------------
diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQTopic.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQTopic.java
index 14f4e50..5ffd918 100644
--- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQTopic.java
+++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQTopic.java
@@ -32,7 +32,7 @@ public class ActiveMQTopic extends ActiveMQDestination implements Topic {
// Static --------------------------------------------------------
public static SimpleString createAddressFromName(final String name) {
- return new SimpleString(JMS_TOPIC_ADDRESS_PREFIX + name);
+ return new SimpleString(name);
}
// Attributes ----------------------------------------------------
@@ -44,7 +44,7 @@ public class ActiveMQTopic extends ActiveMQDestination implements Topic {
}
public ActiveMQTopic(final String name, boolean temporary) {
- super(JMS_TOPIC_ADDRESS_PREFIX + name, name, temporary, false, null);
+ super(name, name, temporary, false, null);
}
/**
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ac7a0c5/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/management/impl/JMSServerControlImpl.java
----------------------------------------------------------------------
diff --git a/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/management/impl/JMSServerControlImpl.java b/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/management/impl/JMSServerControlImpl.java
index 974d8fb..e9e2f3c 100644
--- a/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/management/impl/JMSServerControlImpl.java
+++ b/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/management/impl/JMSServerControlImpl.java
@@ -16,7 +16,6 @@
*/
package org.apache.activemq.artemis.jms.management.impl;
-import javax.jms.JMSRuntimeException;
import javax.json.JsonArray;
import javax.json.JsonArrayBuilder;
import javax.json.JsonObject;
@@ -38,6 +37,7 @@ import java.util.Map;
import java.util.Set;
import java.util.concurrent.atomic.AtomicLong;
+import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.TransportConfiguration;
import org.apache.activemq.artemis.api.core.client.ClientSession;
import org.apache.activemq.artemis.api.core.management.Parameter;
@@ -52,11 +52,12 @@ import org.apache.activemq.artemis.core.client.impl.TopologyMemberImpl;
import org.apache.activemq.artemis.core.filter.Filter;
import org.apache.activemq.artemis.core.management.impl.AbstractControl;
import org.apache.activemq.artemis.core.management.impl.MBeanInfoHelper;
+import org.apache.activemq.artemis.core.server.Queue;
import org.apache.activemq.artemis.core.server.ServerConsumer;
import org.apache.activemq.artemis.core.server.ServerSession;
import org.apache.activemq.artemis.core.server.cluster.ClusterConnection;
import org.apache.activemq.artemis.core.server.cluster.ClusterManager;
-import org.apache.activemq.artemis.jms.client.ActiveMQDestination;
+import org.apache.activemq.artemis.core.server.impl.AddressInfo;
import org.apache.activemq.artemis.jms.server.ActiveMQJMSServerLogger;
import org.apache.activemq.artemis.jms.server.JMSServerManager;
import org.apache.activemq.artemis.jms.server.config.ConnectionFactoryConfiguration;
@@ -101,28 +102,6 @@ public class JMSServerControlImpl extends AbstractControl implements JMSServerCo
return trimmed;
}
- private static String[] determineJMSDestination(String coreAddress) {
- String[] result = new String[2]; // destination name & type
- if (coreAddress.startsWith(ActiveMQDestination.JMS_QUEUE_ADDRESS_PREFIX)) {
- result[0] = coreAddress.substring(ActiveMQDestination.JMS_QUEUE_ADDRESS_PREFIX.length());
- result[1] = "queue";
- } else if (coreAddress.startsWith(ActiveMQDestination.JMS_TEMP_QUEUE_ADDRESS_PREFIX)) {
- result[0] = coreAddress.substring(ActiveMQDestination.JMS_TEMP_QUEUE_ADDRESS_PREFIX.length());
- result[1] = "tempqueue";
- } else if (coreAddress.startsWith(ActiveMQDestination.JMS_TOPIC_ADDRESS_PREFIX)) {
- result[0] = coreAddress.substring(ActiveMQDestination.JMS_TOPIC_ADDRESS_PREFIX.length());
- result[1] = "topic";
- } else if (coreAddress.startsWith(ActiveMQDestination.JMS_TEMP_TOPIC_ADDRESS_PREFIX)) {
- result[0] = coreAddress.substring(ActiveMQDestination.JMS_TEMP_TOPIC_ADDRESS_PREFIX.length());
- result[1] = "temptopic";
- } else {
- ActiveMQJMSServerLogger.LOGGER.debug("JMSServerControlImpl.determineJMSDestination()" + coreAddress);
- // not related to JMS
- return null;
- }
- return result;
- }
-
public static MBeanNotificationInfo[] getNotificationInfos() {
JMSNotificationType[] values = JMSNotificationType.values();
String[] names = new String[values.length];
@@ -822,24 +801,45 @@ public class JMSServerControlImpl extends AbstractControl implements JMSServerCo
return server.getActiveMQServer().destroyConnectionWithSessionMetadata(ClientSession.JMS_SESSION_CLIENT_ID_PROPERTY, clientID);
}
+ private String determineJMSDestinationType(Queue queue) {
+ String result;
+ if (server.getActiveMQServer().getAddressInfo(SimpleString.toSimpleString(queue.getAddress().toString())).getRoutingType() == AddressInfo.RoutingType.ANYCAST) {
+ if (queue.isTemporary()) {
+ result = "tempqueue";
+ } else {
+ result = "queue";
+ }
+ } else if (server.getActiveMQServer().getAddressInfo(SimpleString.toSimpleString(queue.getAddress().toString())).getRoutingType() == AddressInfo.RoutingType.MULTICAST) {
+ if (queue.isTemporary()) {
+ result = "temptopic";
+ } else {
+ result = "topic";
+ }
+ } else {
+ ActiveMQJMSServerLogger.LOGGER.debug("JMSServerControlImpl.determineJMSDestinationType() " + queue);
+ // not related to JMS
+ return null;
+ }
+ return result;
+ }
+
private JsonObject toJSONObject(ServerConsumer consumer) {
- String[] destinationInfo = determineJMSDestination(consumer.getQueue().getAddress().toString());
- if (destinationInfo == null) {
+ AddressInfo addressInfo = server.getActiveMQServer().getAddressInfo(SimpleString.toSimpleString(consumer.getQueue().getAddress().toString()));
+ if (addressInfo == null) {
return null;
}
- JsonObjectBuilder obj = JsonLoader.createObjectBuilder().add("consumerID", consumer.getID()).add("connectionID", consumer.getConnectionID().toString()).add("sessionID", consumer.getSessionID()).add("queueName", consumer.getQueue().getName().toString()).add("browseOnly", consumer.isBrowseOnly()).add("creationTime", consumer.getCreationTime()).add("destinationName", destinationInfo[0]).add("destinationType", destinationInfo[1]);
+ JsonObjectBuilder obj = JsonLoader.createObjectBuilder().add("consumerID", consumer.getID()).add("connectionID", consumer.getConnectionID().toString()).add("sessionID", consumer.getSessionID()).add("queueName", consumer.getQueue().getName().toString()).add("browseOnly", consumer.isBrowseOnly()).add("creationTime", consumer.getCreationTime()).add("destinationName", consumer.getQueue().getAddress().toString()).add("destinationType", determineJMSDestinationType(consumer.getQueue()));
// JMS consumer with message filter use the queue's filter
Filter queueFilter = consumer.getQueue().getFilter();
if (queueFilter != null) {
obj.add("filter", queueFilter.getFilterString().toString());
}
- if (destinationInfo[1].equals("topic")) {
- try {
- ActiveMQDestination.decomposeQueueNameForDurableSubscription(consumer.getQueue().getName().toString());
- obj.add("durable", true);
- } catch (IllegalArgumentException | JMSRuntimeException e) {
+ if (addressInfo.getRoutingType().equals(AddressInfo.RoutingType.MULTICAST)) {
+ if (consumer.getQueue().isTemporary()) {
obj.add("durable", false);
+ } else {
+ obj.add("durable", true);
}
} else {
obj.add("durable", false);
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/3ac7a0c5/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/management/impl/JMSTopicControlImpl.java
----------------------------------------------------------------------
diff --git a/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/management/impl/JMSTopicControlImpl.java b/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/management/impl/JMSTopicControlImpl.java
index cd8e4e0..f60f526 100644
--- a/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/management/impl/JMSTopicControlImpl.java
+++ b/artemis-jms-server/src/main/java/org/apache/activemq/artemis/jms/management/impl/JMSTopicControlImpl.java
@@ -297,16 +297,16 @@ public class JMSTopicControlImpl extends StandardMBean implements TopicControl {
String clientID = null;
String subName = null;
- if (queue.isDurable() && !queue.getName().startsWith(ResourceNames.JMS_TOPIC)) {
+ if (queue.isDurable()) {
Pair<String, String> pair = ActiveMQDestination.decomposeQueueNameForDurableSubscription(queue.getName());
clientID = pair.getA();
subName = pair.getB();
- } else if (queue.getName().startsWith(ResourceNames.JMS_TOPIC)) {
+ } else {
// in the case of heirarchical topics the queue name will not follow the <part>.<part> pattern of normal
// durable subscribers so skip decomposing the name for the client ID and subscription name and just
// hard-code it
- clientID = "ActiveMQ";
- subName = "ActiveMQ";
+ clientID = "";
+ subName = "";
}
String filter = queue.getFilter() != null ? queue.getFilter() : null;