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

Modified Files:
      Tag: MMBase-1_8
        ClassAuthentication.java 
Log Message:
  MMB-1655


See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/security/classsecurity
See also: http://www.mmbase.org/jira/browse/MMB-1655


Index: ClassAuthentication.java
===================================================================
RCS file: 
/var/cvs/src/org/mmbase/security/classsecurity/ClassAuthentication.java,v
retrieving revision 1.13
retrieving revision 1.13.2.1
diff -u -b -r1.13 -r1.13.2.1
--- ClassAuthentication.java    14 Jul 2006 08:16:49 -0000      1.13
+++ ClassAuthentication.java    9 Jun 2008 09:44:50 -0000       1.13.2.1
@@ -30,7 +30,7 @@
  * its configuration file, contains this configuration.
  *
  * @author   Michiel Meeuwissen
- * @version  $Id: ClassAuthentication.java,v 1.13 2006/07/14 08:16:49 michiel 
Exp $
+ * @version  $Id: ClassAuthentication.java,v 1.13.2.1 2008/06/09 09:44:50 
michiel Exp $
  * @see      ClassAuthenticationWrapper
  * @since    MMBase-1.8
  */
@@ -88,6 +88,7 @@
                     Node node = authenticates.item(i);
                     String clazz    = 
node.getAttributes().getNamedItem("class").getNodeValue();
                     String method   = 
node.getAttributes().getNamedItem("method").getNodeValue();
+                    int    weight   = 
Integer.parseInt(node.getAttributes().getNamedItem("weight").getNodeValue());
                     Node property   = node.getFirstChild();
                     Map map = new HashMap();
                     while (property != null) {
@@ -98,17 +99,19 @@
                         }
                         property = property.getNextSibling();
                     }
-                    authenticatedClasses.add(new Login(Pattern.compile(clazz), 
method, Collections.unmodifiableMap(map)));
+                    authenticatedClasses.add(new Login(Pattern.compile(clazz), 
method, Collections.unmodifiableMap(map), weight));
                 }
             } catch (Exception e) {
                 log.error(u + " " + e.getMessage(), e);
             }
         }
 
+        Collections.sort(authenticatedClasses);
+
         { // last fall back, everybody may get the 'anonymous' cloud.
             Map map = new HashMap();
             map.put("rank", "anonymous");
-            authenticatedClasses.add(new Login(Pattern.compile(".*"), "class", 
Collections.unmodifiableMap(map)));
+            authenticatedClasses.add(new Login(Pattern.compile(".*"), "class", 
Collections.unmodifiableMap(map), Integer.MIN_VALUE));
         }
 
         log.service("Class authentication: " + authenticatedClasses);
@@ -178,21 +181,30 @@
     /**
      * A structure to hold the login information.
      */
-    public static class  Login {
-        Pattern classPattern;
-        String application;
-        Map    map;
-        Login(Pattern p , String a, Map m) {
+    public static class  Login implements Comparable {
+        final Pattern classPattern;
+        final String application;
+        final Map    map;
+        final int    weight;
+        Login(Pattern p , String a, Map m, int w) {
             classPattern = p;
             application = a;
             map = m;
+            weight = w;
         }
 
         public Map getMap() {
             return map;
         }
         public String toString() {
-            return classPattern.pattern() + (application.equals("class") ? "" 
: ": " + application);
+            return "" + weight + ":" + classPattern.pattern() + 
(application.equals("class") ? "" : ": " + application) + " " + map;
+        }
+        public int compareTo(Object o) {
+            if (o instanceof Login) {
+                return ((Login) o).weight - this.weight;
+            } else {
+                return 0;
+            }
         }
     }
 
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to