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; } } }
