You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/02/05 17:11:56 UTC

svn commit: r1240759 - /openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/DelegatePermissionCollection.java

Author: rmannibucau
Date: Sun Feb  5 16:11:56 2012
New Revision: 1240759

URL: http://svn.apache.org/viewvc?rev=1240759&view=rev
Log:
trying to manage a bit the memory in our fast permission collection implementatino

Modified:
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/DelegatePermissionCollection.java

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/DelegatePermissionCollection.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/DelegatePermissionCollection.java?rev=1240759&r1=1240758&r2=1240759&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/DelegatePermissionCollection.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/DelegatePermissionCollection.java Sun Feb  5 16:11:56 2012
@@ -44,6 +44,7 @@ public class DelegatePermissionCollectio
     }
 
     public static class FastPermissionCollection extends PermissionCollection {
+        private static final int MAX_CACHE_SIZE = Integer.getInteger("openejb.permission-collection.cache.size", 3000);
         private final List<Permission> permissions = new ArrayList<Permission>();
         private final Map<Permission, Boolean> alreadyEvaluatedPermissions = new ConcurrentHashMap<Permission, Boolean>();
 
@@ -58,6 +59,12 @@ public class DelegatePermissionCollectio
                 return alreadyEvaluatedPermissions.get(permission);
             }
 
+            // clear the cache if it is too big
+            // TODO: look if we should use a FIFO strategy or sthg like that
+            if (alreadyEvaluatedPermissions.size() > MAX_CACHE_SIZE) {
+                alreadyEvaluatedPermissions.clear();
+            }
+
             for (Permission perm : permissions) {
                 if (perm.implies(permission)) {
                     alreadyEvaluatedPermissions.put(permission, true);