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

michi at wyona.com michi at wyona.com
Sat Apr 24 00:19:17 CEST 2010


Author: michi
Date: 2010-04-24 00:19:17 +0200 (Sat, 24 Apr 2010)
New Revision: 49021

Modified:
   public/yanel/trunk/src/contributions/resources/policymanager/src/java/org/wyona/yanel/impl/resources/policymanager/PolicyManagerResource.java
Log:
merge users with groupd users and removed doubles

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-23 21:24:58 UTC (rev 49020)
+++ public/yanel/trunk/src/contributions/resources/policymanager/src/java/org/wyona/yanel/impl/resources/policymanager/PolicyManagerResource.java	2010-04-23 22:19:17 UTC (rev 49021)
@@ -546,21 +546,33 @@
                 sb.append("<policy use-inherited-policies=\"" + p.useInheritedPolicies() + "\">");
                 UsecasePolicy[] up = p.getUsecasePolicies();
                 for (int k = 0; k < up.length; k++) {
+                    // TODO: Do not list 'rw' users within 'r-' users! QUESTION: How to make this generic?!
                     sb.append("<usecase id=\"" + up[k].getName() + "\">");
-                    // TODO: Use ItemPolicy and cast check in order to get the right order
+
+                    // TODO (optional): Use ItemPolicy and cast check in order to get the right order!
+                    List mergedListOfUserPolicies = new java.util.ArrayList();
+
                     IdentityPolicy[] ip = up[k].getIdentityPolicies();
                     for (int j = 0; j < ip.length; j++) {
-                        sb.append("<user id=\"" + ip[j].getId() + "\" permission=\"" + ip[j].getPermission() + "\" naz-blocked=\"true\" naz-permission-unlike-group=\"true\"/>"); // TODO: naz ...
+                        mergedListOfUserPolicies.add(ip[j]);
                     }
+
                     GroupPolicy[] gp = up[k].getGroupPolicies();
                     for (int j = 0; j < gp.length; j++) {
                         List resolvedGroups = new java.util.ArrayList();
                         resolvedGroups.add(gp[j].getId());
                         User[] groupUsers = resolveGroup(gp[j].getId(), resolvedGroups);
                         for (int i = 0; i < groupUsers.length; i++) {
-                            sb.append("<user id=\"" + groupUsers[i].getID() + "\" permission=\"" + gp[j].getPermission() + "\" naz-permission-unlike-members=\"true\"/>"); // TODO: naz ...
+                            if (!existsWithinMergedList(groupUsers[i].getID(), mergedListOfUserPolicies)) {
+                                mergedListOfUserPolicies.add(new IdentityPolicy(new Identity(groupUsers[i].getID()), gp[j].getPermission()));
+                            }
                         }
                     }
+
+                    for (int j = 0; j < mergedListOfUserPolicies.size(); j++) {
+                        IdentityPolicy identityPolicy = (IdentityPolicy) mergedListOfUserPolicies.get(j);
+                        sb.append("<user id=\"" + identityPolicy.getId() + "\" permission=\"" + identityPolicy.getPermission() + "\"/>");
+                    }
                     sb.append("</usecase>");
                 }
                 sb.append("</policy>");
@@ -615,4 +627,16 @@
          }
          return false;
      }
+
+    /**
+     * Check whether user is part of merged list
+     */
+     private boolean existsWithinMergedList(String userId, List mergedListOfUserPolicies) {
+         for (int i = 0; i < mergedListOfUserPolicies.size(); i++) {
+             if (userId.equals(((IdentityPolicy)mergedListOfUserPolicies.get(i)).getId())) {
+                 return true;
+             }
+         }
+         return false;
+     }
 }



More information about the Yanel-commits mailing list