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

michi at wyona.com michi at wyona.com
Thu Nov 18 10:57:13 CET 2010


Author: michi
Date: 2010-11-18 10:57:13 +0100 (Thu, 18 Nov 2010)
New Revision: 54762

Modified:
   public/yanel/trunk/src/contributions/resources/policymanager/src/java/org/wyona/yanel/impl/resources/policymanager/PolicyManagerResource.java
Log:
get policy by usecases 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-11-18 09:50:43 UTC (rev 54761)
+++ public/yanel/trunk/src/contributions/resources/policymanager/src/java/org/wyona/yanel/impl/resources/policymanager/PolicyManagerResource.java	2010-11-18 09:57:13 UTC (rev 54762)
@@ -155,8 +155,11 @@
                 } else {
                     //response.setContentType("text/html; charset=" + DEFAULT_ENCODING);
                     String identitiesURL = backToRealm + getPath().substring(1) + "?" + PARAMETER_USECASE + "=update&get=identities";
+
                     //String policyURL = backToRealm + getPath().substring(1) + "?" + PARAMETER_USECASE + "=update&get=policy-by-usecases";
                     String policyURL = backToRealm + getPath().substring(1) + "?" + PARAMETER_USECASE + "=update&get=policy";
+                    // DEPRECATED: String policyURL = backToRealm + getPath().substring(1) + "?" + PARAMETER_USECASE + "=update&get=policy";
+
                     String saveURL = backToRealm + getPath().substring(1) + "?" + PARAMETER_USECASE +"=update&post=policy"; // This doesn't seem to work with all browsers!
 
                     String cancelURL = getReferer(backToRealm);
@@ -276,7 +279,7 @@
     }
 
     /**
-     * Get policy as XML sorted by usecases
+     * Get policy as XML sorted by usecases (TODO: Move this into security library as utility class)
      *
      * @param pm Policy manager
      * @param path Policy path
@@ -297,9 +300,7 @@
             } else {
                 sb.append("<policy xmlns=\"http://www.wyona.org/security/1.0\" use-inherited-policies=\"" + policy.useInheritedPolicies() + "\">");
 
-                // TODO: Use getPolicyItems(policy) instead ...
-                sb.append(getPolicyIdentities(policy));
-                sb.append(getPolicyGroups(policy));
+                sb.append(getPolicyUsecasesAsXML(policy));
             }
         } catch (Exception e) {
             log.error(e.getMessage(), e);
@@ -344,6 +345,36 @@
     }
 
     /**
+     * Get policy usecases as XML
+     * @param p Policy
+     */
+    static public StringBuilder getPolicyUsecasesAsXML(Policy p) {
+        StringBuilder sb = new StringBuilder();
+        UsecasePolicy[] up = p.getUsecasePolicies();
+        for (int i = 0; i < up.length; i++) {
+            sb.append("<usecase id=\"" + up[i].getName() + "\">");
+            org.wyona.security.core.ItemPolicy[] ip = up[i].getItemPolicies();
+            for (int k = 0; k < ip.length; k++) {
+                if (ip[k] instanceof IdentityPolicy) {
+                    Identity id = ((IdentityPolicy)ip[k]).getIdentity();
+                    if (id.isWorld()) {
+                        sb.append("<world permission=\"" + ip[k].getPermission() + "\"/>");
+                    } else {
+                        sb.append("<user id=\"" + id.getUsername() + "\" permission=\"" + ip[k].getPermission() + "\"/>");
+                    }
+                } else if (ip[k] instanceof GroupPolicy) {
+                    sb.append("<group id=\"" + ip[k].getId() + "\" permission=\"" + ip[k].getPermission() + "\"/>");
+                } else {
+                    log.error("No such policy item type implemented: " + ip[k]);
+                }
+            }
+            sb.append("</usecase>");
+        }
+
+        return sb;
+    }
+
+    /**
      * Get users (TODO: Move this code into the security package)
      * XXX(?) REFACTORME this method seems suspiciously similar to {@link #getPolicyGroups(Policy)}...
      */



More information about the Yanel-commits mailing list