[Yanel-commits] rev 48955 - public/yanel/trunk/src/contributions/resources/policymanager/src/java/org/wyona/yanel/impl/resources/policymanager

michi at wyona.com michi at wyona.com
Wed Apr 21 16:10:45 CEST 2010


Author: michi
Date: 2010-04-21 16:10:45 +0200 (Wed, 21 Apr 2010)
New Revision: 48955

Modified:
   public/yanel/trunk/src/contributions/resources/policymanager/src/java/org/wyona/yanel/impl/resources/policymanager/PolicyManagerResource.java
Log:
resolve groups

Modified: public/yanel/trunk/src/contributions/resources/policymanager/src/java/org/wyona/yanel/impl/resources/policymanager/PolicyManagerResource.java
===================================================================
--- public/yanel/trunk/src/contributions/resources/policymanager/src/java/org/wyona/yanel/impl/resources/policymanager/PolicyManagerResource.java	2010-04-21 13:26:47 UTC (rev 48954)
+++ public/yanel/trunk/src/contributions/resources/policymanager/src/java/org/wyona/yanel/impl/resources/policymanager/PolicyManagerResource.java	2010-04-21 14:10:45 UTC (rev 48955)
@@ -474,6 +474,7 @@
 
         sb.append("<?xml version=\"1.0\"?><policy-viewer xmlns=\"http://www.wyona.org/security/1.0\">");
 
+        // TODO: ...
         sb.append("<usecases><usecase id=\"r\">Read</usecase><usecase id=\"w\">Write</usecase></usecases>");
 
         sb.append("<policies>");
@@ -527,11 +528,12 @@
      * @param showParents Show the policies of the parent nodes, which allows to figure out how the policy has been aggregated
      */
     private StringBuilder getAggregatedPolicyAsXML(String path, String contentItemId, int orderedBy, boolean showParents) throws Exception {
-        log.warn("DEBUG: Get policies for path: " + path);
+        log.warn("DEBUG: Get aggregated policy for path: " + path);
         StringBuilder sb = new StringBuilder();
 
         sb.append("<?xml version=\"1.0\"?><policy-viewer xmlns=\"http://www.wyona.org/security/1.0\">");
 
+        // TODO: ...
         sb.append("<usecases><usecase id=\"r\">Read</usecase><usecase id=\"w\">Write</usecase></usecases>");
 
         sb.append("<policies>");
@@ -552,7 +554,16 @@
                     }
                     GroupPolicy[] gp = up[k].getGroupPolicies();
                     for (int j = 0; j < gp.length; j++) {
-                        sb.append("<group id=\"" + gp[j].getId() + "\" permission=\"" + gp[j].getPermission() + "\" naz-permission-unlike-members=\"true\"/>"); // TODO: naz ...
+                        Item[] members = getRealm().getIdentityManager().getGroupManager().getGroup(gp[j].getId()).getMembers();
+                        for (int i = 0; i < members.length; i++) {
+                            if (members[i] instanceof User) {
+                                sb.append("<user id=\"" + members[i].getID() + "\" permission=\"" + gp[j].getPermission() + "\" naz-permission-unlike-members=\"true\"/>"); // TODO: naz ...
+                            } else if (members[i] instanceof Group) {
+                                log.warn("Sub-group '" + members[i].getID() + "' of group '" + gp[j].getId() + "' needs to be resolved!");
+                            } else {
+                                log.warn("No such member type implemented!");
+                            }
+                        }
                     }
                     sb.append("</usecase>");
                 }



More information about the Yanel-commits mailing list