Repository: karaf
Updated Branches:
  refs/heads/master bdc4ee05b -> 9844397f2


[KARAF-3061] Problems with jaas:realms / jaas:manage commands when using 
multiple realms of the same name


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

Branch: refs/heads/master
Commit: 9844397f2d124e3def2e8a1232eee8c1dcba1afb
Parents: bdc4ee0
Author: Guillaume Nodet <[email protected]>
Authored: Fri Jun 20 15:55:15 2014 +0200
Committer: Guillaume Nodet <[email protected]>
Committed: Fri Jun 20 16:20:05 2014 +0200

----------------------------------------------------------------------
 .../karaf/jaas/command/JaasCommandSupport.java  | 23 ++++++++++++++++++++
 .../karaf/jaas/command/ListRealmsCommand.java   |  6 +++++
 .../karaf/jaas/command/ManageRealmCommand.java  | 16 +++++++++++---
 3 files changed, 42 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/9844397f/jaas/command/src/main/java/org/apache/karaf/jaas/command/JaasCommandSupport.java
----------------------------------------------------------------------
diff --git 
a/jaas/command/src/main/java/org/apache/karaf/jaas/command/JaasCommandSupport.java
 
b/jaas/command/src/main/java/org/apache/karaf/jaas/command/JaasCommandSupport.java
index cbfb6d1..e1da418 100644
--- 
a/jaas/command/src/main/java/org/apache/karaf/jaas/command/JaasCommandSupport.java
+++ 
b/jaas/command/src/main/java/org/apache/karaf/jaas/command/JaasCommandSupport.java
@@ -15,8 +15,12 @@
  */
 package org.apache.karaf.jaas.command;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Queue;
+import java.util.TreeMap;
 
 import javax.security.auth.login.AppConfigurationEntry;
 
@@ -75,6 +79,25 @@ public abstract class JaasCommandSupport implements Action {
             }
         }
         return null;
+       }
+
+    public List<JaasRealm> getRealms() {
+        return getRealms(false);
+    }
+
+    public List<JaasRealm> getRealms(boolean hidden) {
+        if (hidden) {
+            return realms;
+        } else {
+            Map<String, JaasRealm> map = new TreeMap<String, JaasRealm>();
+            for (JaasRealm realm : realms) {
+                if (!map.containsKey(realm.getName())
+                        || realm.getRank() > 
map.get(realm.getName()).getRank()) {
+                    map.put(realm.getName(), realm);
+                }
+            }
+            return new ArrayList<JaasRealm>(map.values());
+        }
     }
 
     public void setRealms(List<JaasRealm> realms) {

http://git-wip-us.apache.org/repos/asf/karaf/blob/9844397f/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListRealmsCommand.java
----------------------------------------------------------------------
diff --git 
a/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListRealmsCommand.java
 
b/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListRealmsCommand.java
index 25cfe14..4b45678 100644
--- 
a/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListRealmsCommand.java
+++ 
b/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListRealmsCommand.java
@@ -15,6 +15,8 @@
  */
 package org.apache.karaf.jaas.command;
 
+import java.util.List;
+
 import javax.security.auth.login.AppConfigurationEntry;
 
 import org.apache.karaf.jaas.boot.ProxyLoginModule;
@@ -32,6 +34,9 @@ public class ListRealmsCommand extends JaasCommandSupport {
     @Option(name = "--no-format", description = "Disable table rendered 
output", required = false, multiValued = false)
     boolean noFormat;
 
+    @Option(name = "-h", aliases = {"--hidden"}, description = "Show hidden 
realms", required = false, multiValued = false)
+    boolean hidden;
+
     @Override
     protected Object doExecute(BackingEngine engine) throws Exception {
         return null;
@@ -44,6 +49,7 @@ public class ListRealmsCommand extends JaasCommandSupport {
         table.column("Realm Name");
         table.column("Login Module Class Name");
 
+        List<JaasRealm> realms = getRealms(hidden);
         if (realms != null && realms.size() > 0) {
             int index = 1;
             for (JaasRealm realm : realms) {

http://git-wip-us.apache.org/repos/asf/karaf/blob/9844397f/jaas/command/src/main/java/org/apache/karaf/jaas/command/ManageRealmCommand.java
----------------------------------------------------------------------
diff --git 
a/jaas/command/src/main/java/org/apache/karaf/jaas/command/ManageRealmCommand.java
 
b/jaas/command/src/main/java/org/apache/karaf/jaas/command/ManageRealmCommand.java
index 58375c6..4f6006f 100644
--- 
a/jaas/command/src/main/java/org/apache/karaf/jaas/command/ManageRealmCommand.java
+++ 
b/jaas/command/src/main/java/org/apache/karaf/jaas/command/ManageRealmCommand.java
@@ -16,6 +16,7 @@
 package org.apache.karaf.jaas.command;
 
 import java.util.LinkedList;
+import java.util.List;
 import java.util.Queue;
 
 import javax.security.auth.login.AppConfigurationEntry;
@@ -48,6 +49,9 @@ public class ManageRealmCommand extends JaasCommandSupport {
     @Option(name = "-f", aliases = { "--force" }, description = "Force the 
management of this realm, even if another one was under management", required = 
false, multiValued = false)
     boolean force;
 
+    @Option(name = "-h", aliases = {"--hidden"}, description = "Manage hidden 
realms", required = false, multiValued = false)
+    boolean hidden;
+
     @SuppressWarnings("unchecked")
     @Override
     public Object execute() throws Exception {
@@ -69,6 +73,7 @@ public class ManageRealmCommand extends JaasCommandSupport {
 
             if (index > 0) {
                 // user provided the index, get the realm AND entry from the 
index
+                List<JaasRealm> realms = getRealms(hidden);
                 if (realms != null && realms.size() > 0) {
                     int i = 1;
                     realms_loop: for (JaasRealm r : realms) {
@@ -87,6 +92,7 @@ public class ManageRealmCommand extends JaasCommandSupport {
                     }
                 }
             } else {
+                List<JaasRealm> realms = getRealms(hidden);
                 if (realms != null && realms.size() > 0) {
                     for (JaasRealm r : realms) {
                         if (r.getName().equals(realmName)) {
@@ -102,13 +108,17 @@ public class ManageRealmCommand extends 
JaasCommandSupport {
                                         }
                                     } else {
                                         if 
(moduleName.equals(e.getLoginModuleName()) || moduleName.equals(moduleClass)) {
-                                            entry = e;
-                                            break;
+                                               if (getBackingEngine(e) != 
null) {
+                                                                               
                entry = e;
+                                                                               
                break;
+                                                                               
        }
                                         }
                                     }
                                 }
+                                if (entry != null) {
+                                    break;
+                                }
                             }
-                            break;
                         }
                     }
                 }

Reply via email to