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 2018/03/08 17:09:47 UTC

[1/2] activemq-artemis git commit: ARTEMIS-1736 - make sure access methods are ordered when used

Repository: activemq-artemis
Updated Branches:
  refs/heads/master 9ae059bae -> d30c463a7


ARTEMIS-1736 - make sure access methods are ordered when used

https://issues.apache.org/jira/browse/ARTEMIS-1736


Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/e849471c
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/e849471c
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/e849471c

Branch: refs/heads/master
Commit: e849471c832b7475939bfe969aef99ba6aa828a7
Parents: 9ae059b
Author: andytaylor <an...@gmail.com>
Authored: Thu Mar 8 09:49:56 2018 +0000
Committer: andytaylor <an...@gmail.com>
Committed: Thu Mar 8 16:12:08 2018 +0000

----------------------------------------------------------------------
 .../server/management/JMXAccessControlList.java |  7 +++-
 .../management/JMXAccessControlListTest.java    | 39 ++++++++++++++++++++
 2 files changed, 44 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/e849471c/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/JMXAccessControlList.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/JMXAccessControlList.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/JMXAccessControlList.java
index e9644c0..5430157 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/JMXAccessControlList.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/management/JMXAccessControlList.java
@@ -20,6 +20,7 @@ import javax.management.ObjectName;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Hashtable;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
@@ -105,7 +106,9 @@ public class JMXAccessControlList {
          domainAccess.put(id, access);
       }
 
-      if (method.endsWith("*")) {
+      if (method.equals("*")) {
+         access.addCatchAll(roles);
+      } else if (method.endsWith("*")) {
          String prefix = method.replace("*", "");
          access.addMethodsPrefixes(prefix, roles);
       } else {
@@ -130,7 +133,7 @@ public class JMXAccessControlList {
       private final String domain;
       List<String> catchAllRoles = new ArrayList<>();
       Map<String, List<String>> methodRoles = new HashMap<>();
-      Map<String, List<String>> methodPrefixRoles = new HashMap<>();
+      Map<String, List<String>> methodPrefixRoles = new LinkedHashMap<>();
 
       Access(String domain) {
          this.domain = domain;

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/e849471c/artemis-server/src/test/java/org/apache/activemq/artemis/core/server/management/JMXAccessControlListTest.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/test/java/org/apache/activemq/artemis/core/server/management/JMXAccessControlListTest.java b/artemis-server/src/test/java/org/apache/activemq/artemis/core/server/management/JMXAccessControlListTest.java
index d077f44..9d91f83 100644
--- a/artemis-server/src/test/java/org/apache/activemq/artemis/core/server/management/JMXAccessControlListTest.java
+++ b/artemis-server/src/test/java/org/apache/activemq/artemis/core/server/management/JMXAccessControlListTest.java
@@ -150,4 +150,43 @@ public class JMXAccessControlListTest {
       List<String> roles = controlList.getRolesForObject(new ObjectName("org.myDomain.foo:*"), "setSomethingMore");
       Assert.assertArrayEquals(roles.toArray(), new String[]{"admin"});
    }
+
+   @Test
+   public void testKeylessDomain() throws MalformedObjectNameException {
+      JMXAccessControlList controlList = new JMXAccessControlList();
+      controlList.addToRoleAccess("org.myDomain.foo", null,"list*", "amq","monitor");
+      controlList.addToRoleAccess("org.myDomain.foo", null,"get*", "amq","monitor");
+      controlList.addToRoleAccess("org.myDomain.foo", null,"is*", "amq","monitor");
+      controlList.addToRoleAccess("org.myDomain.foo", null,"set*", "amq");
+      controlList.addToRoleAccess("org.myDomain.foo", null,"*", "amq");
+
+      List<String> roles = controlList.getRolesForObject(new ObjectName("org.myDomain.foo:foo=bar"), "listFoo");
+      Assert.assertNotNull(roles);
+      Assert.assertEquals(roles.size(), 2);
+      Assert.assertEquals(roles.get(0), "amq");
+      Assert.assertEquals(roles.get(1), "monitor");
+
+      roles = controlList.getRolesForObject(new ObjectName("org.myDomain.foo:foo=bar"), "getFoo");
+      Assert.assertNotNull(roles);
+      Assert.assertEquals(roles.size(), 2);
+      Assert.assertEquals(roles.get(0), "amq");
+      Assert.assertEquals(roles.get(1), "monitor");
+
+      roles = controlList.getRolesForObject(new ObjectName("org.myDomain.foo:foo=bar"), "isFoo");
+      Assert.assertNotNull(roles);
+      Assert.assertEquals(roles.size(), 2);
+      Assert.assertEquals(roles.get(0), "amq");
+      Assert.assertEquals(roles.get(1), "monitor");
+
+      roles = controlList.getRolesForObject(new ObjectName("org.myDomain.foo:foo=bar"), "setFoo");
+      Assert.assertNotNull(roles);
+      Assert.assertEquals(roles.size(), 1);
+      Assert.assertEquals(roles.get(0), "amq");
+
+      roles = controlList.getRolesForObject(new ObjectName("org.myDomain.foo:foo=bar"), "createFoo");
+      Assert.assertNotNull(roles);
+      Assert.assertEquals(roles.size(), 1);
+      Assert.assertEquals(roles.get(0), "amq");
+
+   }
 }


[2/2] activemq-artemis git commit: This closes #1939

Posted by cl...@apache.org.
This closes #1939


Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/d30c463a
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/d30c463a
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/d30c463a

Branch: refs/heads/master
Commit: d30c463a71f8ca207662f5605375424d76dbdb43
Parents: 9ae059b e849471
Author: Clebert Suconic <cl...@apache.org>
Authored: Thu Mar 8 12:09:41 2018 -0500
Committer: Clebert Suconic <cl...@apache.org>
Committed: Thu Mar 8 12:09:41 2018 -0500

----------------------------------------------------------------------
 .../server/management/JMXAccessControlList.java |  7 +++-
 .../management/JMXAccessControlListTest.java    | 39 ++++++++++++++++++++
 2 files changed, 44 insertions(+), 2 deletions(-)
----------------------------------------------------------------------