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:06:21 UTC
svn commit: r1240756 - in /openejb/trunk/openejb/container/openejb-core/src:
main/java/org/apache/openejb/assembler/classic/DelegatePermissionCollection.java
test/java/org/apache/openejb/core/stateful/StatefulSecurityPermissionsTest.java
Author: rmannibucau
Date: Sun Feb 5 16:06:21 2012
New Revision: 1240756
URL: http://svn.apache.org/viewvc?rev=1240756&view=rev
Log:
reactivating our own PermissionCollection implementation
Modified:
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/DelegatePermissionCollection.java
openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/core/stateful/StatefulSecurityPermissionsTest.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=1240756&r1=1240755&r2=1240756&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:06:21 2012
@@ -4,10 +4,11 @@ import org.apache.openejb.util.ArrayEnum
import java.security.Permission;
import java.security.PermissionCollection;
-import java.security.Permissions;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
public class DelegatePermissionCollection extends PermissionCollection {
private static final String PERMISSION_COLLECTION_CLASS = "openejb.permission-collection.class";
@@ -34,15 +35,17 @@ public class DelegatePermissionCollectio
return (PermissionCollection) DelegatePermissionCollection.class.getClassLoader()
.loadClass(
System.getProperty(PERMISSION_COLLECTION_CLASS,
- Permissions.class.getName()))
+ FastPermissionCollection.class.getName()))
.newInstance();
} catch (Exception cnfe) {
- return new Permissions();
+ // return new Permissions(); // the jdk implementation, it seems slow at least for startup up
+ return new FastPermissionCollection();
}
}
public static class FastPermissionCollection extends PermissionCollection {
private final List<Permission> permissions = new ArrayList<Permission>();
+ private final Map<Permission, Boolean> alreadyEvaluatedPermissions = new ConcurrentHashMap<Permission, Boolean>();
@Override
public synchronized void add(Permission permission) {
@@ -51,11 +54,17 @@ public class DelegatePermissionCollectio
@Override
public synchronized boolean implies(Permission permission) {
+ if (alreadyEvaluatedPermissions.containsKey(permission)) {
+ return alreadyEvaluatedPermissions.get(permission);
+ }
+
for (Permission perm : permissions) {
- if (perm.implies(perm)) {
+ if (perm.implies(permission)) {
+ alreadyEvaluatedPermissions.put(permission, true);
return true;
}
}
+ alreadyEvaluatedPermissions.put(permission, false);
return false;
}
Modified: openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/core/stateful/StatefulSecurityPermissionsTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/core/stateful/StatefulSecurityPermissionsTest.java?rev=1240756&r1=1240755&r2=1240756&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/core/stateful/StatefulSecurityPermissionsTest.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/core/stateful/StatefulSecurityPermissionsTest.java Sun Feb 5 16:06:21 2012
@@ -16,32 +16,6 @@
*/
package org.apache.openejb.core.stateful;
-import java.rmi.RemoteException;
-import java.security.*;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.UUID;
-import javax.annotation.security.DenyAll;
-import javax.annotation.security.PermitAll;
-import javax.annotation.security.RolesAllowed;
-import javax.ejb.CreateException;
-import javax.ejb.EJBAccessException;
-import javax.ejb.EJBHome;
-import javax.ejb.EJBLocalHome;
-import javax.ejb.EJBLocalObject;
-import javax.ejb.EJBObject;
-import javax.ejb.Init;
-import javax.ejb.Local;
-import javax.ejb.LocalHome;
-import javax.ejb.Remote;
-import javax.ejb.RemoteHome;
-import javax.ejb.Remove;
-import javax.naming.InitialContext;
-import javax.security.auth.Subject;
-import javax.security.auth.login.LoginException;
-
import junit.framework.TestCase;
import org.apache.openejb.assembler.classic.Assembler;
import org.apache.openejb.assembler.classic.EjbJarInfo;
@@ -61,6 +35,35 @@ import org.apache.openejb.jee.StatefulBe
import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.spi.SecurityService;
+import javax.annotation.security.DenyAll;
+import javax.annotation.security.PermitAll;
+import javax.annotation.security.RolesAllowed;
+import javax.ejb.CreateException;
+import javax.ejb.EJBAccessException;
+import javax.ejb.EJBHome;
+import javax.ejb.EJBLocalHome;
+import javax.ejb.EJBLocalObject;
+import javax.ejb.EJBObject;
+import javax.ejb.Init;
+import javax.ejb.Local;
+import javax.ejb.LocalHome;
+import javax.ejb.Remote;
+import javax.ejb.RemoteHome;
+import javax.ejb.Remove;
+import javax.naming.InitialContext;
+import javax.security.auth.Subject;
+import javax.security.auth.login.LoginException;
+import java.rmi.RemoteException;
+import java.security.Permission;
+import java.security.PermissionCollection;
+import java.security.Principal;
+import java.security.ProtectionDomain;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.UUID;
+
/**
* @version $Rev$ $Date$
*/