[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