[Yanel-commits] rev 48919 -
public/yanel/trunk/src/contributions/resources/policymanager/src/java/org/wyona/yanel/impl/resources/policymanager
michi at wyona.com
michi at wyona.com
Tue Apr 20 15:31:46 CEST 2010
Author: michi
Date: 2010-04-20 15:31:45 +0200 (Tue, 20 Apr 2010)
New Revision: 48919
Modified:
public/yanel/trunk/src/contributions/resources/policymanager/src/java/org/wyona/yanel/impl/resources/policymanager/PolicyManagerResource.java
Log:
get policies as XML nearly finished
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-20 12:56:15 UTC (rev 48918)
+++ public/yanel/trunk/src/contributions/resources/policymanager/src/java/org/wyona/yanel/impl/resources/policymanager/PolicyManagerResource.java 2010-04-20 13:31:45 UTC (rev 48919)
@@ -4,6 +4,8 @@
package org.wyona.yanel.impl.resources.policymanager;
+import org.wyona.security.core.GroupPolicy;
+import org.wyona.security.core.IdentityPolicy;
import org.wyona.security.core.UsecasePolicy;
import org.wyona.security.core.api.AccessManagementException;
import org.wyona.security.core.api.Group;
@@ -353,7 +355,7 @@
org.wyona.security.core.UsecasePolicy[] up = p.getUsecasePolicies();
if (up != null && up.length > 0) {
for (int i = 0; i < up.length; i++) {
- org.wyona.security.core.GroupPolicy[] ids = up[i].getGroupPolicies();
+ GroupPolicy[] ids = up[i].getGroupPolicies();
for (int j = 0; j < ids.length; j++) {
List<String> groupRights;
if ((groupRights = groups.get(ids[j].getId())) != null) {
@@ -461,33 +463,53 @@
* @param orderedBy Allows ordering by usecases or identities
* @param showParents Show the policies of the parent nodes, which allows to figure out how the policy has been aggregated
*/
- private StringBuilder getPoliciesAsXML(String path, String contentItemId, int orderedBy, boolean showParents) {
+ private StringBuilder getPoliciesAsXML(String path, String contentItemId, int orderedBy, boolean showParents) throws Exception {
+ log.warn("DEBUG: Get policies for path: " + path);
StringBuilder sb = new StringBuilder();
- sb.append("<?xml version=\"1.0\"?><policy-viewer xmlns=\"http://www.wyona.org/security/1.0\"><usecases><usecase id=\"r\">Read</usecase><usecase id=\"w\">Write</usecase></usecases>");
- sb.append("<policies>");
- sb.append("<node local-name=\"/\">");
- sb.append("<policy use-inherited-policies=\"true\">");
- sb.append("<usecase id=\"r\">");
- sb.append("<user id=\"test-user\" permission=\"false\" naz-blocked=\"true\" naz-permission-unlike-group=\"true\"/>");
- sb.append("<group id=\"test-group\" permission=\"true\" naz-permission-unlike-members=\"true\"/>");
- sb.append("</usecase>");
- sb.append("</policy>");
- sb.append("</node>");
+ sb.append("<?xml version=\"1.0\"?><policy-viewer xmlns=\"http://www.wyona.org/security/1.0\">");
- sb.append("<node local-name=\"foo\"/>");
+ sb.append("<usecases><usecase id=\"r\">Read</usecase><usecase id=\"w\">Write</usecase></usecases>");
- sb.append("<node local-name=\"bar\">");
- sb.append("<policy use-inherited-policies=\"true\">");
- sb.append("<usecase id=\"w\">");
- sb.append("<user id=\"test-user\" permission=\"false\" naz-blocked=\"true\" naz-permission-unlike-group=\"true\"/>");
- sb.append("<group id=\"test-group\" permission=\"true\"/>");
+ sb.append("<policies>");
+
+ String[] names = path.split("/");
+ StringBuilder currentPath = new StringBuilder();
+ for (int i = 0; i < names.length; i++) {
+ currentPath.append(names[i] + "/");
+ boolean aggregate = false;
+ Policy p = getRealm().getPolicyManager().getPolicy(currentPath.toString(), aggregate);
+
+ if (p != null) {
+ if (i == 0) {
+ sb.append("<node local-name=\"" + "/" + "\">");
+ } else {
+ sb.append("<node local-name=\"" + names[i] + "\">");
+ }
+ sb.append("<policy use-inherited-policies=\"" + p.useInheritedPolicies() + "\">");
+ UsecasePolicy[] up = p.getUsecasePolicies();
+ for (int k = 0; k < up.length; k++) {
+ sb.append("<usecase id=\"" + up[k].getName() + "\">");
+ // TODO: Use ItemPolicy and cast check in order to get the right order
+ 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 ...
+ }
+ 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 ...
+ }
sb.append("</usecase>");
- sb.append("</policy>");
- sb.append("</node>");
+ }
+ sb.append("</policy>");
+ sb.append("</node>");
+ } else {
+ sb.append("<node local-name=\"" + names[i] + "\"/>");
+ }
+ }
- sb.append("</policies>");
- sb.append("</policy-viewer>");
+ sb.append("</policies>");
+ sb.append("</policy-viewer>");
return sb;
}
}
More information about the Yanel-commits
mailing list