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/06/18 17:13:43 UTC

svn commit: r1351383 - in /karaf/trunk/jaas/command: ./ src/main/java/org/apache/karaf/jaas/command/

Author: jbonofre
Date: Mon Jun 18 15:13:42 2012
New Revision: 1351383

URL: http://svn.apache.org/viewvc?rev=1351383&view=rev
Log:
[KARAF-1541] Refactoring of the jaas commands, using shell tables and arguments

Modified:
    karaf/trunk/jaas/command/pom.xml
    karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/JaasCommandSupport.java
    karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListRealmsCommand.java
    karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ManageRealmCommand.java

Modified: karaf/trunk/jaas/command/pom.xml
URL: http://svn.apache.org/viewvc/karaf/trunk/jaas/command/pom.xml?rev=1351383&r1=1351382&r2=1351383&view=diff
==============================================================================
--- karaf/trunk/jaas/command/pom.xml (original)
+++ karaf/trunk/jaas/command/pom.xml Mon Jun 18 15:13:42 2012
@@ -55,6 +55,11 @@
             <groupId>org.apache.karaf.shell</groupId>
             <artifactId>org.apache.karaf.shell.console</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.karaf.shell</groupId>
+            <artifactId>org.apache.karaf.shell.table</artifactId>
+            <scope>provided</scope>
+        </dependency>
 
         <dependency>
             <groupId>org.apache.servicemix.bundles</groupId>

Modified: karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/JaasCommandSupport.java
URL: http://svn.apache.org/viewvc/karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/JaasCommandSupport.java?rev=1351383&r1=1351382&r2=1351383&view=diff
==============================================================================
--- karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/JaasCommandSupport.java (original)
+++ karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/JaasCommandSupport.java Mon Jun 18 15:13:42 2012
@@ -15,6 +15,7 @@
  */
 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;
@@ -52,50 +53,51 @@ public abstract class JaasCommandSupport
                 commandQueue.add(this);
             }
         } else {
-            System.err.println("No JAAS Realm / Module has been selected.");
+            System.err.println("No JAAS Realm / Module has been selected");
         }
         return null;
     }
 
 
     /**
-     * Returns the Jaas Realm named as realmName.
+     * Returns the JAAS Realm named as realmName.
      *
-     * @param realmName
-     * @return
+     * @param realmName the name of the JAAS Realm.
+     * @return the corresponding <code>JaasRealm</code>.
      */
-    public JaasRealm findRealmByNameOrIndex(String realmName, int index) {
-        JaasRealm realm = null;
+    public JaasRealm findRealm(String realmName) {
         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);
+            for (JaasRealm realm : realms) {
+                if (realm.getName().equals(realmName)) {
+                    return realm;
+                }
             }
         }
-        return realm;
+        return null;
     }
 
     /**
-     * Returns the Jaas Module entry of the specified realm, named as moduleName.
+     * Returns the JAAS Module entry of the specified realm, identified by the given name.
      *
-     * @param moduleName
-     * @return
+     * @param realm the JAAS realm.
+     * @param moduleName the JAAS module name.
+     * @return the corresponding <code>AppConfigurationEntry</code>.
      */
-    public AppConfigurationEntry findEntryByRealmAndName(JaasRealm realm, String moduleName) {
-        if (realm == null || moduleName == null)
-            return null;
+    public AppConfigurationEntry findLoginModule(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 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) {
-                if (moduleName.equals(entry.getLoginModuleName())) {
+                String moduleClass = (String) entry.getOptions().get(ProxyLoginModule.PROPERTY_MODULE);
+                if (moduleName.equals(entry.getLoginModuleName()) || moduleName.equals(moduleClass)) {
                     return entry;
                 }
             }

Modified: karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListRealmsCommand.java
URL: http://svn.apache.org/viewvc/karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListRealmsCommand.java?rev=1351383&r1=1351382&r2=1351383&view=diff
==============================================================================
--- karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListRealmsCommand.java (original)
+++ karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ListRealmsCommand.java Mon Jun 18 15:13:42 2012
@@ -19,15 +19,14 @@ import org.apache.karaf.shell.commands.C
 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.shell.table.ShellTable;
 
 import javax.security.auth.login.AppConfigurationEntry;
 import java.util.List;
 
-@Command(scope = "jaas", name = "realm-list", description = "Lists the existing JAAS realms.")
+@Command(scope = "jaas", name = "realm-list", description = "List JAAS realms")
 public class ListRealmsCommand extends JaasCommandSupport {
 
-    private static final String REALM_LIST_FORMAT = "%5s %-20s %-80s";
-
     @Override
     protected Object doExecute(BackingEngine engine) throws Exception {
         return null;
@@ -35,9 +34,12 @@ public class ListRealmsCommand extends J
 
     protected Object doExecute() throws Exception {
         List<JaasRealm> realms = getRealms();
+
+        ShellTable table = new ShellTable();
+        table.column("Realm Name");
+        table.column("Login Module Class Name");
+
         if (realms != null && realms.size() > 0) {
-            System.out.println(String.format(REALM_LIST_FORMAT, "Index","Realm", "Module Class"));
-            int index = 1;
             for (JaasRealm realm : realms) {
                 String realmName = realm.getName();
                 AppConfigurationEntry[] entries = realm.getEntries();
@@ -45,15 +47,14 @@ public class ListRealmsCommand extends J
                 if (entries != null && entries.length > 0) {
                     for (int i = 0; i < entries.length; i++) {
                         String moduleClass = (String) entries[i].getOptions().get(ProxyLoginModule.PROPERTY_MODULE);
-                        System.out.println(String.format(REALM_LIST_FORMAT, index++, realmName, moduleClass));
+                        table.addRow().addContent(realmName, moduleClass);
                     }
-                } else {
-                    System.out.println(String.format(REALM_LIST_FORMAT, realmName, "No module found for realm."));
                 }
             }
-        } else {
-            System.err.println("No realm found");
         }
+
+        table.print(System.out);
+
         return null;
     }
 

Modified: karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ManageRealmCommand.java
URL: http://svn.apache.org/viewvc/karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ManageRealmCommand.java?rev=1351383&r1=1351382&r2=1351383&view=diff
==============================================================================
--- karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ManageRealmCommand.java (original)
+++ karaf/trunk/jaas/command/src/main/java/org/apache/karaf/jaas/command/ManageRealmCommand.java Mon Jun 18 15:13:42 2012
@@ -15,6 +15,7 @@
  */
 package org.apache.karaf.jaas.command;
 
+import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
 import org.apache.karaf.shell.commands.Option;
 import org.apache.karaf.jaas.config.JaasRealm;
@@ -24,40 +25,33 @@ import javax.security.auth.login.AppConf
 import java.util.LinkedList;
 import java.util.Queue;
 
-@Command(scope = "jaas", name = "realm-manage", description = "Manage user and roles of a JAAS Realm.")
+@Command(scope = "jaas", name = "realm-manage", description = "Manage user and roles of a JAAS Realm")
 public class ManageRealmCommand extends JaasCommandSupport {
 
-    @Option(name = "--realm", description = "Jaas Realm", required = false, multiValued = false)
+    @Argument(index = 0, name = "realm", description = "JAAS Realm", required = true, multiValued = false)
     String realmName;
 
-    @Option(name = "--index", description = "Realm Index", required = false, multiValued = false)
-    int index;
-
-    @Option(name = "--module", aliases = {}, description = "Realm Module", required = false, multiValued = false)
+    @Argument(index = 1, name = "module", description = "JAAS Realm Module Class Name", required = false, multiValued = false)
     String moduleName;
 
-    @Option(name = "--force", aliases = {}, 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 ) {
-            System.err.println("A valid realm or the realm index need to be specified");
-            return null;
-        }
         JaasRealm oldRealm = (JaasRealm) this.session.get(JAAS_REALM);
         AppConfigurationEntry oldEntry = (AppConfigurationEntry) this.session.get(JAAS_ENTRY);
 
         if (oldRealm != null && !oldRealm.getName().equals(realmName) && !force) {
-            System.err.println("Another realm is being edited.  Cancel / update first, or use the --force option");
+            System.err.println("Another realm is being edited.  Cancel/update first, or use the --force option.");
         } else if (oldEntry != null && !oldEntry.getLoginModuleName().equals(moduleName) && !force) {
-            System.err.println("Another module is being edited.  Cancel / update first, or use the --force option");
+            System.err.println("Another module is being edited.  Cancel/update first, or use the --force option.");
         } else {
 
-            JaasRealm realm = findRealmByNameOrIndex(realmName, index);
+            JaasRealm realm = findRealm(realmName);
 
             if (realm != null) {
-                AppConfigurationEntry entry = findEntryByRealmAndName(realm, moduleName);
+                AppConfigurationEntry entry = findLoginModule(realm, moduleName);
 
                 if (entry != null) {
                     Queue<JaasCommandSupport> commands = null;
@@ -67,15 +61,14 @@ public class ManageRealmCommand extends 
                         commands = new LinkedList<JaasCommandSupport>();
                     }
 
-
                     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 module: %s in realm:%s", moduleName, realmName));
+                    System.err.println(String.format("Could not find module %s in realm %s", moduleName, realmName));
                 }
             } else {
-                System.err.println(String.format("Could not find realm:%s", realmName));
+                System.err.println(String.format("Could not find realm %s", realmName));
             }
         }
         return null;