You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2012/09/23 21:53:36 UTC

svn commit: r1389132 - in /karaf/branches/karaf-2.3.x/jaas/command/src/main/java/org/apache/karaf/jaas/command: JaasCommandSupport.java ManageRealmCommand.java

Author: jbonofre
Date: Sun Sep 23 19:53:35 2012
New Revision: 1389132

URL: http://svn.apache.org/viewvc?rev=1389132&view=rev
Log:
[KARAF-1541] Enhance the jaas:manage to handle different selection ways

Modified:
    karaf/branches/karaf-2.3.x/jaas/command/src/main/java/org/apache/karaf/jaas/command/JaasCommandSupport.java
    karaf/branches/karaf-2.3.x/jaas/command/src/main/java/org/apache/karaf/jaas/command/ManageRealmCommand.java

Modified: karaf/branches/karaf-2.3.x/jaas/command/src/main/java/org/apache/karaf/jaas/command/JaasCommandSupport.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.3.x/jaas/command/src/main/java/org/apache/karaf/jaas/command/JaasCommandSupport.java?rev=1389132&r1=1389131&r2=1389132&view=diff
==============================================================================
--- karaf/branches/karaf-2.3.x/jaas/command/src/main/java/org/apache/karaf/jaas/command/JaasCommandSupport.java (original)
+++ karaf/branches/karaf-2.3.x/jaas/command/src/main/java/org/apache/karaf/jaas/command/JaasCommandSupport.java Sun Sep 23 19:53:35 2012
@@ -15,7 +15,6 @@
  */
 package org.apache.karaf.jaas.command;
 
-import org.apache.karaf.jaas.boot.ProxyLoginModule;
 import org.apache.karaf.jaas.config.JaasRealm;
 import org.apache.karaf.jaas.modules.BackingEngine;
 import org.apache.karaf.jaas.modules.BackingEngineService;
@@ -58,53 +57,6 @@ public abstract class JaasCommandSupport
         return null;
     }
 
-
-    /**
-     * Returns the Jaas Realm named as realmName.
-     *
-     * @param realmName
-     * @return
-     */
-    public JaasRealm findRealmByNameOrIndex(String realmName, int index) {
-        JaasRealm realm = null;
-        if (realms != null) {
-            for (int i=1; i <= realms.size();i++) {
-                if (realms.get(i-1).getName().equals(realmName) || index == i)
-                    return realms.get(i-1);
-            }
-        }
-        return realm;
-    }
-
-    /**
-     * Returns the Jaas Module entry of the specified realm, named as moduleName.
-     *
-     * @param moduleName
-     * @return
-     */
-    public AppConfigurationEntry findEntryByRealmAndName(JaasRealm realm, String moduleName) {
-        AppConfigurationEntry appConfigurationEntry = null;
-        if (realm != null) {
-
-            AppConfigurationEntry[] entries = realm.getEntries();
-
-            //If no moduleName provided and a there is a single module in the realm.
-            if (entries != null && entries.length == 1 && moduleName == null) {
-                return entries[0];
-            }
-
-            for (AppConfigurationEntry entry : entries) {
-                String moduleClass = (String) entry.getOptions().get(ProxyLoginModule.PROPERTY_MODULE);
-                if (moduleName.equals(entry.getLoginModuleName()) || moduleName.equals(moduleClass)) {
-                    return entry;
-                }
-            }
-
-        }
-        return appConfigurationEntry;
-    }
-
-
     public List<JaasRealm> getRealms() {
         return realms;
     }
@@ -120,4 +72,5 @@ public abstract class JaasCommandSupport
     public void setBackingEngineService(BackingEngineService backingEngineService) {
         this.backingEngineService = backingEngineService;
     }
+
 }

Modified: karaf/branches/karaf-2.3.x/jaas/command/src/main/java/org/apache/karaf/jaas/command/ManageRealmCommand.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.3.x/jaas/command/src/main/java/org/apache/karaf/jaas/command/ManageRealmCommand.java?rev=1389132&r1=1389131&r2=1389132&view=diff
==============================================================================
--- karaf/branches/karaf-2.3.x/jaas/command/src/main/java/org/apache/karaf/jaas/command/ManageRealmCommand.java (original)
+++ karaf/branches/karaf-2.3.x/jaas/command/src/main/java/org/apache/karaf/jaas/command/ManageRealmCommand.java Sun Sep 23 19:53:35 2012
@@ -17,11 +17,13 @@ package org.apache.karaf.jaas.command;
 
 import org.apache.felix.gogo.commands.Command;
 import org.apache.felix.gogo.commands.Option;
+import org.apache.karaf.jaas.boot.ProxyLoginModule;
 import org.apache.karaf.jaas.config.JaasRealm;
 import org.apache.karaf.jaas.modules.BackingEngine;
 
 import javax.security.auth.login.AppConfigurationEntry;
 import java.util.LinkedList;
+import java.util.List;
 import java.util.Queue;
 
 @Command(scope = "jaas", name = "manage", description = "Manage users and roles of a JAAS Realm")
@@ -36,12 +38,12 @@ public class ManageRealmCommand extends 
     @Option(name = "--module", aliases = {}, description = "Login Module Class Name", required = false, multiValued = false)
     String moduleName;
 
-    @Option(name = "-f", aliases = { "--force" }, description = "Force the management of this realm, even if another one was under management", required = false, multiValued = false)
+    @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;
 
     @Override
     protected Object doExecute() throws Exception {
-        if (realmName == null && index <= 0 ) {
+        if (realmName == null && index <= 0) {
             System.err.println("A valid realm or the realm index need to be specified");
             return null;
         }
@@ -54,28 +56,77 @@ public class ManageRealmCommand extends 
             System.err.println("Another JAAS Login Module is being edited. Cancel/update first, or use the --force option.");
         } else {
 
-            JaasRealm realm = findRealmByNameOrIndex(realmName, index);
+            JaasRealm realm = null;
+            AppConfigurationEntry entry = null;
 
-            if (realm != null) {
-                AppConfigurationEntry entry = findEntryByRealmAndName(realm, moduleName);
-
-                if (entry != null) {
-                    Queue<JaasCommandSupport> commands = null;
-
-                    commands = (Queue<JaasCommandSupport>) this.session.get(JAAS_CMDS);
-                    if (commands == null) {
-                        commands = new LinkedList<JaasCommandSupport>();
+            if (index > 0) {
+                // user provided the index, get the realm AND entry from the index
+                List<JaasRealm> realms = getRealms();
+                if (realms != null && realms.size() > 0) {
+                    int i = 1;
+                    for (JaasRealm r : realms) {
+                        AppConfigurationEntry[] entries = r.getEntries();
+
+                        if (entries != null) {
+                            for (int j = 0; j < entries.length; j++) {
+                                if (i == index) {
+                                    realm = r;
+                                    entry = entries[j];
+                                    break;
+                                }
+                                i++;
+                            }
+                        }
                     }
-
-                    this.session.put(JAAS_REALM, realm);
-                    this.session.put(JAAS_ENTRY, entry);
-                    this.session.put(JAAS_CMDS, commands);
-                } else {
-                    System.err.println(String.format("Could not find JAAS Login Module %s in JAAS Realm %s", moduleName, realmName));
                 }
             } else {
-                System.err.println(String.format("Could not find JAAS Realm %s", realmName));
+                List<JaasRealm> realms = getRealms();
+                if (realms != null && realms.size() > 0) {
+                    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;
+                            }
+                        }
+                    }
+                }
             }
+
+            if (realm == null) {
+                System.err.println("JAAS realm has not been found.");
+                return null;
+            }
+
+            if (entry == null) {
+                System.err.println("JAAS module has not been found.");
+                return null;
+            }
+
+            Queue<JaasCommandSupport> commands = null;
+
+            commands = (Queue<JaasCommandSupport>) this.session.get(JAAS_CMDS);
+            if (commands == null) {
+                commands = new LinkedList<JaasCommandSupport>();
+            }
+
+            this.session.put(JAAS_REALM, realm);
+            this.session.put(JAAS_ENTRY, entry);
+            this.session.put(JAAS_CMDS, commands);
         }
         return null;
     }