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

michi at wyona.com michi at wyona.com
Sat Feb 13 00:18:26 CET 2010


Author: michi
Date: 2010-02-13 00:18:25 +0100 (Sat, 13 Feb 2010)
New Revision: 47583

Modified:
   public/yanel/trunk/src/contributions/resources/policymanager/src/java/org/wyona/yanel/impl/resources/policymanager/PolicyManagerResource.java
Log:
add world from original policy as a workaround

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-02-12 23:15:46 UTC (rev 47582)
+++ public/yanel/trunk/src/contributions/resources/policymanager/src/java/org/wyona/yanel/impl/resources/policymanager/PolicyManagerResource.java	2010-02-12 23:18:25 UTC (rev 47583)
@@ -5,6 +5,7 @@
 package org.wyona.yanel.impl.resources.policymanager;
 
 import org.wyona.commons.xml.XMLHelper;
+import org.wyona.security.core.UsecasePolicy;
 import org.wyona.security.core.api.AccessManagementException;
 import org.wyona.security.core.api.Group;
 import org.wyona.security.core.api.GroupManager;
@@ -354,7 +355,7 @@
     static public StringBuffer getPolicyIdentities(Policy p) {
         List<String> world = new LinkedList<String>();
         Map<String, List<String>> users = new HashMap<String, List<String>>();
-        org.wyona.security.core.UsecasePolicy[] up = p.getUsecasePolicies();
+        UsecasePolicy[] up = p.getUsecasePolicies();
         if (up != null && up.length > 0) {
             for (int i = 0; i < up.length; i++) {
                 org.wyona.security.core.IdentityPolicy[] idps = up[i].getIdentityPolicies();
@@ -445,15 +446,22 @@
     private void writePolicy(InputStream policyAsInputStream, PolicyManager pm, String path, IdentityManager im) throws Exception {
         Policy policy = new org.wyona.security.util.PolicyParser().parseXML(policyAsInputStream, im);
 
-        // INFO: Add WORLD permissions, because policy editor does not support WORLD editing yet
+        // INFO: Add WORLD permissions, because policy editor does not support WORLD editing yet. As soon as the policy editor supports WORLD editing, then this piece of code becomes obsolete
         Policy originalPolicy = pm.getPolicy(path, false);
         if (originalPolicy != null) {
             org.wyona.security.core.UsecasePolicy[] up = originalPolicy.getUsecasePolicies();
             for (int i = 0; i < up.length; i++) {
-                Identity[] identities = up[i].getIdentities();
-                for (int k = 0; k < identities.length; k++) {
-                    if (identities[k].isWorld()) {
-                        log.warn("TODO: Add WORLD to usecase: " + up[i].getName());
+                org.wyona.security.core.IdentityPolicy[] ip = up[i].getIdentityPolicies();
+                for (int k = 0; k < ip.length; k++) {
+                    if (ip[k].getIdentity().isWorld()) {
+                        log.warn("Add WORLD to usecase: " + up[i].getName());
+                        if (policy.getUsecasePolicy(up[i].getName()) != null) {
+                            policy.getUsecasePolicy(up[i].getName()).addIdentity(new Identity(), ip[k].getPermission());
+                        } else {
+                            UsecasePolicy newUP = new org.wyona.security.core.UsecasePolicy(up[i].getName());
+                            newUP.addIdentity(new Identity(), ip[k].getPermission());
+                            policy.addUsecasePolicy(newUP);
+                        }
                     }
                 }
             }



More information about the Yanel-commits mailing list