Repository: karaf
Updated Branches:
  refs/heads/karaf-3.0.x 9626f7d39 -> 7c6b1ed06


[KARAF-3022]RBAC - support the JMX operation match starts with a wildcard
(cherry picked from commit 33674bd395334366db889ed6e1af37eb0e0078fd)


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/7c6b1ed0
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/7c6b1ed0
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/7c6b1ed0

Branch: refs/heads/karaf-3.0.x
Commit: 7c6b1ed068131e9201809dd864d56e5277d7b77c
Parents: 9626f7d
Author: Freeman Fang <[email protected]>
Authored: Fri Jun 6 16:01:56 2014 +0800
Committer: Freeman Fang <[email protected]>
Committed: Fri Jun 6 16:02:53 2014 +0800

----------------------------------------------------------------------
 .../guard/tools/ACLConfigurationParser.java     | 20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/7c6b1ed0/service/guard/src/main/java/org/apache/karaf/service/guard/tools/ACLConfigurationParser.java
----------------------------------------------------------------------
diff --git 
a/service/guard/src/main/java/org/apache/karaf/service/guard/tools/ACLConfigurationParser.java
 
b/service/guard/src/main/java/org/apache/karaf/service/guard/tools/ACLConfigurationParser.java
index 1449c7b..b389a90 100644
--- 
a/service/guard/src/main/java/org/apache/karaf/service/guard/tools/ACLConfigurationParser.java
+++ 
b/service/guard/src/main/java/org/apache/karaf/service/guard/tools/ACLConfigurationParser.java
@@ -274,15 +274,25 @@ public class ACLConfigurationParser {
                 return s2.length() - s1.length();
             }
         });
+        
         for (Enumeration<String> e = properties.keys(); e.hasMoreElements(); ) 
{
             String key = e.nextElement();
             if (key.endsWith("*")) {
-                String str = key.substring(0, key.length() - 1);
-                if (str.startsWith("*")) {
-                    str = str.substring(1);
+                String prefix = key.substring(0, key.length() - 1);
+                if (methodName.startsWith(prefix)) {
+                    wildcardRules.put(prefix, properties.get(key).toString());
                 }
-                if (methodName.contains(str)) {
-                    wildcardRules.put(str, properties.get(key).toString());
+            }
+            if (key.startsWith("*")) {
+                String suffix = key.substring(1);
+                if (methodName.endsWith(suffix)) {
+                    wildcardRules.put(suffix, properties.get(key).toString());
+                }
+            }
+            if (key.startsWith("*") && key.endsWith("*") && key.length() > 1) {
+                String middle = key.substring(1, key.length() - 1);
+                if (methodName.contains(middle)) {
+                    wildcardRules.put(middle, properties.get(key).toString());
                 }
             }
         }

Reply via email to