[Yanel-commits] rev 47647 - public/yanel/trunk/src/contributions/resources/security-api/src/java/org/wyona/yanel/impl/resources/securityapi

michi at wyona.com michi at wyona.com
Tue Feb 16 14:30:02 CET 2010


Author: michi
Date: 2010-02-16 14:30:02 +0100 (Tue, 16 Feb 2010)
New Revision: 47647

Modified:
   public/yanel/trunk/src/contributions/resources/security-api/src/java/org/wyona/yanel/impl/resources/securityapi/UserManagerResource.java
Log:
get groups implemented

Modified: public/yanel/trunk/src/contributions/resources/security-api/src/java/org/wyona/yanel/impl/resources/securityapi/UserManagerResource.java
===================================================================
--- public/yanel/trunk/src/contributions/resources/security-api/src/java/org/wyona/yanel/impl/resources/securityapi/UserManagerResource.java	2010-02-16 13:26:49 UTC (rev 47646)
+++ public/yanel/trunk/src/contributions/resources/security-api/src/java/org/wyona/yanel/impl/resources/securityapi/UserManagerResource.java	2010-02-16 13:30:02 UTC (rev 47647)
@@ -6,8 +6,15 @@
 
 import org.wyona.yanel.impl.resources.BasicXMLResource;
 
+import org.wyona.security.core.api.AccessManagementException;
+import org.wyona.security.core.api.Group;
+import org.wyona.security.core.api.GroupManager;
+import org.wyona.security.core.api.Item;
+
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
+import java.util.Arrays;
+import java.util.Comparator;
 
 import org.apache.log4j.Logger;
 
@@ -28,6 +35,7 @@
 
         StringBuilder sb = new StringBuilder("<?xml version=\"1.0\"?>");
         sb.append("<security-api>");
+        try {
         String usecase = getEnvironment().getRequest().getParameter("yanel.usecase");
         if (usecase != null) {
             log.warn("DEBUG: Yanel usecase: " + usecase);
@@ -36,12 +44,18 @@
                 sb.append(getUsersAsXML());
             } else if (usecase.equals("getuser")) {
                 sb.append(getUserAsXML(getEnvironment().getRequest().getParameter("id")));
+            } else if (usecase.equals("getgroups")) {
+                sb.append(getGroupsAsXML());
             } else {
                 sb.append("<no-such-yanel-usecase-implemented>" + usecase + "</no-such-yanel-usecase-implemented>");
             }
         } else {
             sb.append("<no-yanel-usecase/>");
         }
+        } catch(Exception e) {
+            log.error(e, e);
+            sb.append("<exception>" + e.getMessage() + "</exception>");
+        }
         sb.append("</security-api>");
 
         return new ByteArrayInputStream(sb.toString().getBytes());
@@ -73,4 +87,34 @@
         sb.append("</user>");
         return sb;
     }
+
+    /**
+     * Get all groups
+     */
+    private StringBuilder getGroupsAsXML() throws Exception {
+        GroupManager gm = getRealm().getIdentityManager().getGroupManager();
+        Group[] groups = gm.getGroups();
+        Arrays.sort(groups, new ItemIDComparator());
+        StringBuilder sb = new StringBuilder("<groups>");
+        for (int i = 0; i < groups.length; i++) {
+        sb.append("<group id=\"" + groups[i].getID() + "\">" + groups[i].getName() + "</group>");
+        }
+        sb.append("</groups>");
+        return sb;
+    }
+
+    /**
+     *
+     */
+    public class ItemIDComparator implements Comparator<Item> {
+        public int compare(Item item1, Item item2) {
+            try {
+                String id1 = item1.getID();
+                String id2 = item2.getID();
+                return id1.compareToIgnoreCase(id2);
+            } catch (AccessManagementException e) {
+                throw new RuntimeException(e.getMessage(), e);
+            }
+        }
+    }
 }



More information about the Yanel-commits mailing list