Repository: karaf
Updated Branches:
  refs/heads/karaf-3.0.x fab0ca62d -> a9b9e5497


[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/a9b9e549
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/a9b9e549
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/a9b9e549

Branch: refs/heads/karaf-3.0.x
Commit: a9b9e54975fa936f31d5d64923f3e0809ced2245
Parents: fab0ca6
Author: Guillaume Nodet <gno...@gmail.com>
Authored: Fri Jun 20 15:55:15 2014 +0200
Committer: Guillaume Nodet <gno...@gmail.com>
Committed: Fri Jun 20 16:16:01 2014 +0200

----------------------------------------------------------------------
 .../karaf/jaas/command/JaasCommandSupport.java  | 22 +++++++++++-
 .../karaf/jaas/command/ListRealmsCommand.java   |  8 ++++-
 .../karaf/jaas/command/ManageRealmCommand.java  | 38 +++++++++++---------
 3 files changed, 49 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/a9b9e549/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 bd6e9f7..d631780 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
@@ -22,8 +22,13 @@ import org.apache.karaf.jaas.modules.BackingEngineService;
 import org.apache.karaf.shell.console.OsgiCommandSupport;
 
 import javax.security.auth.login.AppConfigurationEntry;
+
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Queue;
+import java.util.TreeMap;
 
 public abstract class JaasCommandSupport extends OsgiCommandSupport {
 
@@ -60,7 +65,22 @@ public abstract class JaasCommandSupport extends 
OsgiCommandSupport {
     }
 
     public List<JaasRealm> getRealms() {
-        return realms;
+        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/a9b9e549/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 76354dc..c608db2 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,9 @@
  */
 package org.apache.karaf.jaas.command;
 
+import java.util.List;
+import javax.security.auth.login.AppConfigurationEntry;
+
 import org.apache.karaf.shell.commands.Command;
 import org.apache.karaf.jaas.boot.ProxyLoginModule;
 import org.apache.karaf.jaas.config.JaasRealm;
@@ -31,13 +34,16 @@ 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;
     }
 
     protected Object doExecute() throws Exception {
-        List<JaasRealm> realms = getRealms();
+        List<JaasRealm> realms = getRealms(hidden);
 
         ShellTable table = new ShellTable();
         table.column("Index");

http://git-wip-us.apache.org/repos/asf/karaf/blob/a9b9e549/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 89b5195..86f2b4e 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
@@ -41,6 +41,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
     protected Object doExecute() throws Exception {
@@ -62,7 +65,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();
+                List<JaasRealm> realms = getRealms(hidden);
                 if (realms != null && realms.size() > 0) {
                     int i = 1;
                     realms_loop: for (JaasRealm r : realms) {
@@ -86,22 +89,23 @@ public class ManageRealmCommand extends JaasCommandSupport {
                     for (JaasRealm r : realms) {
                         if (r.getName().equals(realmName)) {
                             realm = r;
-                            break;
-                        }
-                    }
-
-                }
-                AppConfigurationEntry[] entries = realm.getEntries();
-                if (entries != null) {
-                    for (AppConfigurationEntry e : entries) {
-                        String moduleClass = (String) 
e.getOptions().get(ProxyLoginModule.PROPERTY_MODULE);
-                        if (moduleName == null) {
-                            entry = e;
-                            break;
-                        } else {
-                            if (moduleName.equals(e.getLoginModuleName()) || 
moduleName.equals(moduleClass)) {
-                                entry = e;
-                                break;
+                            AppConfigurationEntry[] entries = 
realm.getEntries();
+                            if (entries != null) {
+                                for (AppConfigurationEntry e : entries) {
+                                    String moduleClass = (String) 
e.getOptions().get(ProxyLoginModule.PROPERTY_MODULE);
+                                    if (moduleName == null) {
+                                        entry = e;
+                                        break;
+                                    } else {
+                                        if 
(moduleName.equals(e.getLoginModuleName()) || moduleName.equals(moduleClass)) {
+                                            entry = e;
+                                            break;
+                                        }
+                                    }
+                                }
+                                if (entry != null) {
+                                    break;
+                                }
                             }
                         }
                     }

Reply via email to