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