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

Modified Files:
        ClassAuthentication.java 
Log Message:
for performance reasons, don't exeggerate all this pattern checking and stuff




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


Index: ClassAuthentication.java
===================================================================
RCS file: 
/var/cvs/src/org/mmbase/security/classsecurity/ClassAuthentication.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- ClassAuthentication.java    9 Jun 2008 09:53:20 -0000       1.18
+++ ClassAuthentication.java    21 Aug 2008 15:40:19 -0000      1.19
@@ -29,7 +29,7 @@
  * its configuration file, contains this configuration.
  *
  * @author   Michiel Meeuwissen
- * @version  $Id: ClassAuthentication.java,v 1.18 2008/06/09 09:53:20 michiel 
Exp $
+ * @version  $Id: ClassAuthentication.java,v 1.19 2008/08/21 15:40:19 michiel 
Exp $
  * @see      ClassAuthenticationWrapper
  * @since    MMBase-1.8
  */
@@ -38,6 +38,8 @@
 
     public static final String PUBLIC_ID_CLASSSECURITY_1_0 = "-//MMBase//DTD 
classsecurity config 1.0//EN";
     public static final String DTD_CLASSSECURITY_1_0       = 
"classsecurity_1_0.dtd";
+
+    private static int MAX_DEPTH = 10;
     static {
         XMLEntityResolver.registerPublicID(PUBLIC_ID_CLASSSECURITY_1_0, 
DTD_CLASSSECURITY_1_0, ClassAuthentication.class);
     }
@@ -145,7 +147,7 @@
                 }
             }
         }
-        if (log.isDebugEnabled()) {
+        if (log.isTraceEnabled()) {
             log.trace("Class authenticating (" + authenticatedClasses + ")");
         }
         Throwable t = new Throwable();
@@ -154,11 +156,19 @@
         for (Login n : authenticatedClasses) {
             if (application == null || application.equals(n.application)) {
                 Pattern p = n.classPattern;
+                int depth = 0;
                 for (StackTraceElement element : stack) {
                     String className = element.getClassName();
+                    if (depth++ > MAX_DEPTH) {
+                        // for performance reasons, don't exeggerate all this 
pattern checking and stuff
+                        log.debug("not found in time");
+                        break;
+                    }
                     if (className.startsWith("org.mmbase.security.")) continue;
                     if 
(className.startsWith("org.mmbase.bridge.implementation.")) continue;
+                    if (log.isTraceEnabled()) {
                     log.trace("Checking " + className);
+                    }
                     if (p.matcher(className).matches()) {
                         if (log.isDebugEnabled()) {
                             log.debug("" + className + " matches! ->" + n + " 
" + n.getMap());
_______________________________________________
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to