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 2017/03/28 22:33:28 UTC
[1/2] activemq-artemis git commit: ARTEMIS-1064 AddressControl
routingType fix
Repository: activemq-artemis
Updated Branches:
refs/heads/master e3a23cda7 -> facc9dbc9
ARTEMIS-1064 AddressControl routingType fix
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/b7e11f92
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/b7e11f92
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/b7e11f92
Branch: refs/heads/master
Commit: b7e11f92b663334ec2e38337a1012e9cfbc13cb1
Parents: e3a23cd
Author: Justin Bertram <jb...@apache.org>
Authored: Tue Mar 28 14:28:31 2017 -0500
Committer: Justin Bertram <jb...@apache.org>
Committed: Tue Mar 28 15:30:52 2017 -0500
----------------------------------------------------------------------
.../activemq/artemis/api/core/JsonUtil.java | 11 +-
.../api/core/management/AddressControl.java | 11 +-
.../management/impl/AddressControlImpl.java | 18 +-
.../management/AddressControlTest.java | 45 ++++
.../management/AddressControlUsingCoreTest.java | 233 +++++++------------
5 files changed, 155 insertions(+), 163 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b7e11f92/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/JsonUtil.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/JsonUtil.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/JsonUtil.java
index 5fefbbc..150789e 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/JsonUtil.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/JsonUtil.java
@@ -28,6 +28,7 @@ import javax.management.openmbean.CompositeData;
import javax.management.openmbean.CompositeDataSupport;
import java.io.ByteArrayInputStream;
import java.io.StringReader;
+import java.lang.reflect.Array;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -303,10 +304,16 @@ public final class JsonUtil {
}
} else if (jsonValue instanceof Object[]) {
Object[] array = (Object[]) jsonValue;
+ Object[] result;
+ if (desiredType != null) {
+ result = (Object[]) Array.newInstance(desiredType, array.length);
+ } else {
+ result = array;
+ }
for (int i = 0; i < array.length; i++) {
- array[i] = convertJsonValue(array[i], desiredType);
+ result[i] = convertJsonValue(array[i], desiredType);
}
- return array;
+ return result;
} else {
return jsonValue;
}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b7e11f92/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/AddressControl.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/AddressControl.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/AddressControl.java
index 635eb72..0dadad1 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/AddressControl.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/management/AddressControl.java
@@ -18,9 +18,6 @@ package org.apache.activemq.artemis.api.core.management;
import javax.management.MBeanOperationInfo;
import java.util.Map;
-import java.util.Set;
-
-import org.apache.activemq.artemis.api.core.RoutingType;
/**
* An AddressControl is used to manage an address.
@@ -36,14 +33,14 @@ public interface AddressControl {
/*
* Whether multicast routing is enabled for this address
* */
- @Attribute(desc = "Get the delivery modes enabled on this address")
- Set<RoutingType> getDeliveryModes();
+ @Attribute(desc = "Get the routing types enabled on this address")
+ String[] getRoutingTypes();
/*
* Whether multicast routing is enabled for this address
* */
- @Attribute(desc = "Get the delivery modes enabled on this address as JSON")
- String getDeliveryModesAsJSON() throws Exception;
+ @Attribute(desc = "Get the routing types enabled on this address as JSON")
+ String getRoutingTypesAsJSON() throws Exception;
/**
* Returns the roles (name and permissions) associated with this address.
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b7e11f92/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/AddressControlImpl.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/AddressControlImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/AddressControlImpl.java
index 37756dc..afdca45 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/AddressControlImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/AddressControlImpl.java
@@ -98,19 +98,25 @@ public class AddressControlImpl extends AbstractControl implements AddressContro
}
@Override
- public Set<RoutingType> getDeliveryModes() {
- return addressInfo.getRoutingTypes();
+ public String[] getRoutingTypes() {
+ Set<RoutingType> routingTypes = addressInfo.getRoutingTypes();
+ String[] result = new String[routingTypes.size()];
+ int i = 0;
+ for (RoutingType routingType : routingTypes) {
+ result[i++] = routingType.toString();
+ }
+ return result;
}
@Override
- public String getDeliveryModesAsJSON() throws Exception {
+ public String getRoutingTypesAsJSON() throws Exception {
clearIO();
try {
JsonArrayBuilder json = JsonLoader.createArrayBuilder();
- Set<RoutingType> routingTypes = getDeliveryModes();
+ String[] routingTypes = getRoutingTypes();
- for (RoutingType routingType : routingTypes) {
- json.add(routingType.toString());
+ for (String routingType : routingTypes) {
+ json.add(routingType);
}
return json.build().toString();
} finally {
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b7e11f92/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/AddressControlTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/AddressControlTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/AddressControlTest.java
index 35e1aa2..e62ce12 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/AddressControlTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/AddressControlTest.java
@@ -16,10 +16,15 @@
*/
package org.apache.activemq.artemis.tests.integration.management;
+import javax.json.JsonArray;
+import javax.json.JsonString;
+import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import org.apache.activemq.artemis.api.config.ActiveMQDefaultConfiguration;
+import org.apache.activemq.artemis.api.core.JsonUtil;
+import org.apache.activemq.artemis.api.core.RoutingType;
import org.apache.activemq.artemis.api.core.SimpleString;
import org.apache.activemq.artemis.api.core.client.ClientMessage;
import org.apache.activemq.artemis.api.core.client.ClientProducer;
@@ -48,6 +53,10 @@ public class AddressControlTest extends ManagementTestBase {
private ServerLocator locator;
private ClientSessionFactory sf;
+ public boolean usingCore() {
+ return false;
+ }
+
@Test
public void testGetAddress() throws Exception {
SimpleString address = RandomUtil.randomSimpleString();
@@ -265,6 +274,42 @@ public class AddressControlTest extends ManagementTestBase {
Assert.assertEquals(1024, addressControl.getNumberOfBytesPerPage());
}
+ @Test
+ public void testGetRoutingTypes() throws Exception {
+ SimpleString address = RandomUtil.randomSimpleString();
+ session.createAddress(address, RoutingType.ANYCAST, false);
+
+ AddressControl addressControl = createManagementControl(address);
+ String[] routingTypes = addressControl.getRoutingTypes();
+ Assert.assertEquals(1, routingTypes.length);
+ Assert.assertEquals(RoutingType.ANYCAST.toString(), routingTypes[0]);
+
+ address = RandomUtil.randomSimpleString();
+ Set<RoutingType> types = new HashSet<>();
+ types.add(RoutingType.ANYCAST);
+ types.add(RoutingType.MULTICAST);
+ session.createAddress(address, types, false);
+
+ addressControl = createManagementControl(address);
+ routingTypes = addressControl.getRoutingTypes();
+ Set<String> strings = new HashSet<>(Arrays.asList(routingTypes));
+ Assert.assertEquals(2, strings.size());
+ Assert.assertTrue(strings.contains(RoutingType.ANYCAST.toString()));
+ Assert.assertTrue(strings.contains(RoutingType.MULTICAST.toString()));
+ }
+
+ @Test
+ public void testGetRoutingTypesAsJSON() throws Exception {
+ SimpleString address = RandomUtil.randomSimpleString();
+ session.createAddress(address, RoutingType.ANYCAST, false);
+
+ AddressControl addressControl = createManagementControl(address);
+ JsonArray jsonArray = JsonUtil.readJsonArray(addressControl.getRoutingTypesAsJSON());
+
+ assertEquals(1, jsonArray.size());
+ assertEquals(RoutingType.ANYCAST.toString(), ((JsonString) jsonArray.get(0)).getString());
+ }
+
// Package protected ---------------------------------------------
// Protected -----------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b7e11f92/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/AddressControlUsingCoreTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/AddressControlUsingCoreTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/AddressControlUsingCoreTest.java
index 4b8e487..d9c9f2e 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/AddressControlUsingCoreTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/AddressControlUsingCoreTest.java
@@ -16,173 +16,110 @@
*/
package org.apache.activemq.artemis.tests.integration.management;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.Map;
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.AddressControl;
import org.apache.activemq.artemis.api.core.management.ResourceNames;
-import org.apache.activemq.artemis.core.config.Configuration;
-import org.apache.activemq.artemis.core.security.CheckType;
-import org.apache.activemq.artemis.core.security.Role;
-import org.apache.activemq.artemis.core.server.ActiveMQServer;
-import org.apache.activemq.artemis.utils.RandomUtil;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import static org.apache.activemq.artemis.tests.util.RandomUtil.randomString;
-
-public class AddressControlUsingCoreTest extends ManagementTestBase {
+public class AddressControlUsingCoreTest extends AddressControlTest {
// Constants -----------------------------------------------------
// Attributes ----------------------------------------------------
- private ActiveMQServer server;
-
- private ServerLocator locator;
-
- private ClientSessionFactory sf;
-
- protected ClientSession session;
-
// Static --------------------------------------------------------
// Constructors --------------------------------------------------
- // Public --------------------------------------------------------
-
- @Test
- public void testGetAddress() throws Exception {
- SimpleString address = RandomUtil.randomSimpleString();
- SimpleString queue = RandomUtil.randomSimpleString();
-
- session.createQueue(address, queue, false);
-
- CoreMessagingProxy proxy = createProxy(address);
-
- Assert.assertEquals(address.toString(), proxy.retrieveAttributeValue("address"));
-
- session.deleteQueue(queue);
- }
-
- @Test
- public void testGetQueueNames() throws Exception {
- SimpleString address = RandomUtil.randomSimpleString();
- SimpleString queue = RandomUtil.randomSimpleString();
- SimpleString anotherQueue = RandomUtil.randomSimpleString();
-
- session.createQueue(address, queue, true);
-
- CoreMessagingProxy proxy = createProxy(address);
- Object[] queueNames = (Object[]) proxy.retrieveAttributeValue("queueNames");
- Assert.assertEquals(1, queueNames.length);
- Assert.assertEquals(queue.toString(), queueNames[0]);
-
- session.createQueue(address, anotherQueue, false);
- queueNames = (Object[]) proxy.retrieveAttributeValue("queueNames");
- Assert.assertEquals(2, queueNames.length);
-
- session.deleteQueue(queue);
-
- queueNames = (Object[]) proxy.retrieveAttributeValue("queueNames");
- Assert.assertEquals(1, queueNames.length);
- Assert.assertEquals(anotherQueue.toString(), queueNames[0]);
-
- session.deleteQueue(anotherQueue);
- }
-
- @Test
- public void testGetBindingNames() throws Exception {
- SimpleString address = RandomUtil.randomSimpleString();
- SimpleString queue = RandomUtil.randomSimpleString();
- String divertName = RandomUtil.randomString();
-
- session.createQueue(address, queue, false);
-
- CoreMessagingProxy proxy = createProxy(address);
- Object[] bindingNames = (Object[]) proxy.retrieveAttributeValue("bindingNames");
- assertEquals(1, bindingNames.length);
- assertEquals(queue.toString(), bindingNames[0]);
-
- server.getActiveMQServerControl().createDivert(divertName, randomString(), address.toString(), RandomUtil.randomString(), false, null, null);
-
- bindingNames = (Object[]) proxy.retrieveAttributeValue("bindingNames");
- assertEquals(2, bindingNames.length);
-
- session.deleteQueue(queue);
-
- bindingNames = (Object[]) proxy.retrieveAttributeValue("bindingNames");
- assertEquals(1, bindingNames.length);
- assertEquals(divertName.toString(), bindingNames[0]);
- }
-
- @Test
- public void testGetRoles() throws Exception {
- SimpleString address = RandomUtil.randomSimpleString();
- SimpleString queue = RandomUtil.randomSimpleString();
- Role role = new Role(RandomUtil.randomString(), RandomUtil.randomBoolean(), RandomUtil.randomBoolean(), RandomUtil.randomBoolean(), RandomUtil.randomBoolean(), RandomUtil.randomBoolean(), RandomUtil.randomBoolean(), RandomUtil.randomBoolean(), RandomUtil.randomBoolean(), RandomUtil.randomBoolean(), RandomUtil.randomBoolean());
-
- session.createQueue(address, queue, true);
-
- CoreMessagingProxy proxy = createProxy(address);
- Object[] roles = (Object[]) proxy.retrieveAttributeValue("roles");
- for (Object role2 : roles) {
- System.out.println(((Object[]) role2)[0]);
- }
- Assert.assertEquals(0, roles.length);
-
- Set<Role> newRoles = new HashSet<>();
- newRoles.add(role);
- server.getSecurityRepository().addMatch(address.toString(), newRoles);
-
- roles = (Object[]) proxy.retrieveAttributeValue("roles", String.class);
- Assert.assertEquals(1, roles.length);
- Object[] r = (Object[]) roles[0];
- Assert.assertEquals(role.getName(), r[0]);
- Assert.assertEquals(CheckType.SEND.hasRole(role), r[1]);
- Assert.assertEquals(CheckType.CONSUME.hasRole(role), r[2]);
- Assert.assertEquals(CheckType.CREATE_DURABLE_QUEUE.hasRole(role), r[3]);
- Assert.assertEquals(CheckType.DELETE_DURABLE_QUEUE.hasRole(role), r[4]);
- Assert.assertEquals(CheckType.CREATE_NON_DURABLE_QUEUE.hasRole(role), r[5]);
- Assert.assertEquals(CheckType.DELETE_NON_DURABLE_QUEUE.hasRole(role), r[6]);
- Assert.assertEquals(CheckType.MANAGE.hasRole(role), r[7]);
-
- session.deleteQueue(queue);
- }
-
- // Package protected ---------------------------------------------
-
- // Protected -----------------------------------------------------
@Override
- @Before
- public void setUp() throws Exception {
- super.setUp();
-
- Configuration config = createDefaultInVMConfig().setJMXManagementEnabled(true);
- server = createServer(false, config);
- server.setMBeanServer(mbeanServer);
- server.start();
-
- locator = createInVMNonHALocator().setBlockOnNonDurableSend(true);
- sf = createSessionFactory(locator);
- session = sf.createSession(false, true, false);
- session.start();
+ protected AddressControl createManagementControl(final SimpleString name) throws Exception {
+ return new AddressControl() {
+ private final CoreMessagingProxy proxy = new CoreMessagingProxy(addServerLocator(createInVMNonHALocator()), ResourceNames.ADDRESS + name);
+
+ @Override
+ public String getAddress() {
+ return (String) proxy.retrieveAttributeValue("address");
+ }
+
+ @Override
+ public String[] getRoutingTypes() {
+ return (String[]) proxy.retrieveAttributeValue("routingTypes", String.class);
+ }
+
+ @Override
+ public String getRoutingTypesAsJSON() throws Exception {
+ return (String) proxy.retrieveAttributeValue("routingTypesAsJSON");
+ }
+
+ @Override
+ public Object[] getRoles() throws Exception {
+ return (Object[]) proxy.retrieveAttributeValue("roles");
+ }
+
+ @Override
+ public String getRolesAsJSON() throws Exception {
+ return (String) proxy.retrieveAttributeValue("rolesAsJSON");
+ }
+
+ @Override
+ public long getAddressSize() throws Exception {
+ return (long) proxy.retrieveAttributeValue("addressSize");
+ }
+
+ @Override
+ public long getNumberOfMessages() throws Exception {
+ return (long) proxy.retrieveAttributeValue("numberOfMessages");
+ }
+
+ @Override
+ public String[] getQueueNames() throws Exception {
+ return (String[]) proxy.retrieveAttributeValue("queueNames", String.class);
+ }
+
+ @Override
+ public int getNumberOfPages() throws Exception {
+ return (int) proxy.retrieveAttributeValue("numberOfPages", Integer.class);
+ }
+
+ @Override
+ public boolean isPaging() throws Exception {
+ return (boolean) proxy.retrieveAttributeValue("paging");
+ }
+
+ @Override
+ public long getNumberOfBytesPerPage() throws Exception {
+ return (long) proxy.retrieveAttributeValue("numberOfBytesPerPage");
+ }
+
+ @Override
+ public String[] getBindingNames() throws Exception {
+ return (String[]) proxy.retrieveAttributeValue("bindingNames", String.class);
+ }
+
+ @Override
+ public long getMessageCount() {
+ return (long) proxy.retrieveAttributeValue("messageCount");
+ }
+
+ @Override
+ public String sendMessage(Map<String, String> headers,
+ int type,
+ String body,
+ boolean durable,
+ String user,
+ String password) throws Exception {
+ return (String) proxy.invokeOperation("sendMessage", headers, type, body, durable, user, password);
+ }
+ };
}
- protected CoreMessagingProxy createProxy(final SimpleString address) throws Exception {
- CoreMessagingProxy proxy = new CoreMessagingProxy(addServerLocator(createInVMNonHALocator()), ResourceNames.ADDRESS + address);
-
- return proxy;
- }
+ // Public --------------------------------------------------------
- protected AddressControl createManagementControl(final SimpleString address) throws Exception {
- return ManagementControlHelper.createAddressControl(address, mbeanServer);
+ @Override
+ public boolean usingCore() {
+ return true;
}
// Private -------------------------------------------------------
[2/2] activemq-artemis git commit: This closes #1146
Posted by cl...@apache.org.
This closes #1146
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/facc9dbc
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/facc9dbc
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/facc9dbc
Branch: refs/heads/master
Commit: facc9dbc940411983ea754e4dfbdf66401f930ac
Parents: e3a23cd b7e11f9
Author: Clebert Suconic <cl...@apache.org>
Authored: Tue Mar 28 18:33:16 2017 -0400
Committer: Clebert Suconic <cl...@apache.org>
Committed: Tue Mar 28 18:33:16 2017 -0400
----------------------------------------------------------------------
.../activemq/artemis/api/core/JsonUtil.java | 11 +-
.../api/core/management/AddressControl.java | 11 +-
.../management/impl/AddressControlImpl.java | 18 +-
.../management/AddressControlTest.java | 45 ++++
.../management/AddressControlUsingCoreTest.java | 233 +++++++------------
5 files changed, 155 insertions(+), 163 deletions(-)
----------------------------------------------------------------------