Update of /var/cvs/src/org/mmbase/security
In directory james.mmbase.org:/tmp/cvs-serv28704

Modified Files:
        Action.java ActionChecker.java ActionRepository.java 
        Authorization.java MemoryActionRepository.java 
Log Message:
tried to match actions stuff with actions stuff of didactor. Some changes in 
result of that. Most importantly, actions must accept parameters


See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/security


Index: Action.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/security/Action.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- Action.java 21 Jan 2008 15:25:28 -0000      1.5
+++ Action.java 21 Jan 2008 17:28:15 -0000      1.6
@@ -9,6 +9,7 @@
 */
 package org.mmbase.security;
 
+import org.mmbase.util.functions.Parameters;
 import org.mmbase.util.LocalizedString;
 
 /**
@@ -17,7 +18,7 @@
  * component XML's).
  *
  * @author Michiel Meeuwissen
- * @version $Id: Action.java,v 1.5 2008/01/21 15:25:28 michiel Exp $
+ * @version $Id: Action.java,v 1.6 2008/01/21 17:28:15 michiel Exp $
  * @since MMBase-1.9
  */
 public class Action implements java.io.Serializable {
@@ -64,4 +65,7 @@
     public String toString() {
         return nameSpace + ":" + name + ":" + defaultChecker;
     }
+    public Parameters createParameters() {
+        return new Parameters();
+    }
 }


Index: ActionChecker.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/security/ActionChecker.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- ActionChecker.java  6 Dec 2007 08:08:35 -0000       1.3
+++ ActionChecker.java  21 Jan 2008 17:28:15 -0000      1.4
@@ -9,18 +9,20 @@
 */
 package org.mmbase.security;
 
+import org.mmbase.bridge.Node;
+import org.mmbase.util.functions.Parameters;
 /**
  * A piece of 'action check' functionality. Provided by actions themselves, 
but security
  * implementations can perhaps also use this interface to administer their 
implementation of [EMAIL PROTECTED]
  * Authorization#check(UserContext, Action)}.
  *
  * @author Michiel Meeuwissen
- * @version $Id: ActionChecker.java,v 1.3 2007/12/06 08:08:35 michiel Exp $
+ * @version $Id: ActionChecker.java,v 1.4 2008/01/21 17:28:15 michiel Exp $
  * @since MMBase-1.9
  */
 public interface ActionChecker extends java.io.Serializable {
 
-    boolean check(UserContext user, Action ac);
+    boolean check(UserContext user, Action ac, Parameters parameters);
 
     /**
      * This basic implementation of ActionChecker checks the action only based 
on rank. A minimal
@@ -32,7 +34,7 @@
         public Rank(org.mmbase.security.Rank r) {
             rank = r;
         }
-        public boolean check(UserContext user, Action ac) {
+        public boolean check(UserContext user, Action ac, Parameters 
parameters) {
             return user.getRank().getInt() >= rank.getInt();
         }
         public String toString() {


Index: ActionRepository.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/security/ActionRepository.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- ActionRepository.java       21 Jan 2008 15:25:28 -0000      1.6
+++ ActionRepository.java       21 Jan 2008 17:28:15 -0000      1.7
@@ -16,7 +16,7 @@
  *
  * @see [EMAIL PROTECTED] Action}.
  * @author Michiel Meeuwissen
- * @version $Id: ActionRepository.java,v 1.6 2008/01/21 15:25:28 michiel Exp $
+ * @version $Id: ActionRepository.java,v 1.7 2008/01/21 17:28:15 michiel Exp $
  * @since MMBase-1.9
  */
 public abstract class ActionRepository extends Configurable {
@@ -33,7 +33,11 @@
 
     public abstract void add(Action a);
 
-    public abstract Action get(String nameSpace, String name);
+    public abstract Map<String, Action> get(String nameSpace);
 
-    public abstract Collection<Action> getActions();
+    public Action get(String nameSpace, String name) {
+        return get(nameSpace).get(name);
+    }
+
+    public abstract Collection<Map<String, Action>> getActions();
 }


Index: Authorization.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/security/Authorization.java,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -b -r1.28 -r1.29
--- Authorization.java  25 Jul 2007 07:17:40 -0000      1.28
+++ Authorization.java  21 Jan 2008 17:28:15 -0000      1.29
@@ -12,6 +12,7 @@
 import java.util.Set;
 import java.util.HashSet;
 
+import org.mmbase.util.functions.Parameters;
 import org.mmbase.bridge.Query;
 import org.mmbase.storage.search.Constraint;
 
@@ -21,7 +22,7 @@
  *
  * @author Eduard Witteveen
  * @author Michiel Meeuwissen
- * @version $Id: Authorization.java,v 1.28 2007/07/25 07:17:40 michiel Exp $
+ * @version $Id: Authorization.java,v 1.29 2008/01/21 17:28:15 michiel Exp $
  */
 public abstract class Authorization extends Configurable {
 
@@ -137,14 +138,14 @@
      * in the MMBase cloud.
      * @since MMBase-1.9
      */
-    public boolean check(UserContext user, Action ac) {
-        return ac.getDefault().check(user, ac);
+    public boolean check(UserContext user, Action ac, Parameters parameters) {
+        return ac.getDefault().check(user, ac, parameters);
     }
     /**
      * @since MMBase-1.9
      */
-    public final void verify(UserContext user, Action ac) {
-        if (!check(user, ac)) {
+    public final void verify(UserContext user, Action ac, Parameters 
parameters) {
+        if (!check(user, ac, parameters)) {
             throw new SecurityException("Action '" + ac + " was NOT permitted 
to " + user.getIdentifier());
         }
     }


Index: MemoryActionRepository.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/security/MemoryActionRepository.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- MemoryActionRepository.java 21 Jan 2008 15:25:28 -0000      1.6
+++ MemoryActionRepository.java 21 Jan 2008 17:28:15 -0000      1.7
@@ -18,33 +18,13 @@
  * this repository on startup.
  *
  * @author Michiel Meeuwissen
- * @version $Id: MemoryActionRepository.java,v 1.6 2008/01/21 15:25:28 michiel 
Exp $
+ * @version $Id: MemoryActionRepository.java,v 1.7 2008/01/21 17:28:15 michiel 
Exp $
  * @since MMBase-1.9
  */
 public class MemoryActionRepository extends ActionRepository {
     private static final Logger log = 
Logging.getLoggerInstance(MMBaseCop.class);
 
-    private static class Key  {
-        private final String nameSpace;
-        private final String name;
-        Key(String ns, String n) {
-            nameSpace = ns;
-            name = n;
-        }
-        public int hashCode() {
-            return name.hashCode();
-        }
-        public boolean equals(Object o) {
-            if (o instanceof Key) {
-                Key k = (Key) o;
-                return k.name.equals(name) && (k.nameSpace == null ? nameSpace 
== null : k.nameSpace.equals(nameSpace));
-            } else {
-                return false;
-            }
-        }
-    }
-
-    private final Map<Key, Action> store = new HashMap<Key, Action>();
+    private final Map<String, Map<String, Action>> store = new HashMap<String, 
Map<String, Action>>();
 
     public MemoryActionRepository() {
     }
@@ -54,13 +34,27 @@
 
     public void add(Action a) {
         log.info("Adding " + a + " to " + this);
-        store.put(new Key(a.getNameSpace(), a.getName()), a);
+        Map<String, Action> map = store.get(a.getNameSpace());
+        if (map == null) {
+            map = new HashMap<String, Action>();
+            store.put(a.getNameSpace(), map);
+        }
+        map.put(a.getName(), a);
+    }
+    public Map<String, Action> get(String nameSpace) {
+        Map<String, Action> map = store.get(nameSpace);
+        if (map == null) {
+            return Collections.emptyMap();
+        } else {
+            return Collections.unmodifiableMap(map);
+        }
     }
 
     public Action get(String nameSpace, String name) {
-        return store.get(new Key(nameSpace, name));
+        return get(nameSpace).get(name);
     }
-    public Collection<Action> getActions() {
+
+    public Collection<Map<String, Action>> getActions() {
         return store.values();
     }
 
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to