You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by mr...@apache.org on 2010/01/07 09:20:33 UTC
svn commit: r896793 - in /jackrabbit/branches/2.0: ./
jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/
jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/principal/
Author: mreutegg
Date: Thu Jan 7 08:20:13 2010
New Revision: 896793
URL: http://svn.apache.org/viewvc?rev=896793&view=rev
Log:
JCR-2452: DefaultPrincipalProvider#collectGroupMembership puts wrong principal instance into the cache
Modified:
jackrabbit/branches/2.0/ (props changed)
jackrabbit/branches/2.0/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/DefaultPrincipalProvider.java
jackrabbit/branches/2.0/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/principal/DefaultPrincipalProviderTest.java
Propchange: jackrabbit/branches/2.0/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Jan 7 08:20:13 2010
@@ -2,4 +2,4 @@
/jackrabbit/sandbox/JCR-1456:774917-886178
/jackrabbit/sandbox/JCR-2170:812417-816332
/jackrabbit/sandbox/tripod-JCR-2209:795441-795863
-/jackrabbit/trunk:891595,891629,892253,892263,894150-894151,896408
+/jackrabbit/trunk:891595,891629,892253,892263,894150-894151,896408,896532
Modified: jackrabbit/branches/2.0/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/DefaultPrincipalProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.0/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/DefaultPrincipalProvider.java?rev=896793&r1=896792&r2=896793&view=diff
==============================================================================
--- jackrabbit/branches/2.0/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/DefaultPrincipalProvider.java (original)
+++ jackrabbit/branches/2.0/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/DefaultPrincipalProvider.java Thu Jan 7 08:20:13 2010
@@ -280,7 +280,13 @@
try {
final Authorizable auth = userManager.getAuthorizable(princ);
if (auth != null) {
- addToCache(princ);
+ /*
+ make sure the principal is contained in the cache.
+ however, avoid putting the given 'princ' but assert that
+ the cached principal is obtained with the system session
+ used to deliver principals with this provider implementation.
+ */
+ addToCache(auth.getPrincipal());
Iterator<Group> itr = auth.memberOf();
while (itr.hasNext()) {
Group group = itr.next();
Modified: jackrabbit/branches/2.0/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/principal/DefaultPrincipalProviderTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.0/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/principal/DefaultPrincipalProviderTest.java?rev=896793&r1=896792&r2=896793&view=diff
==============================================================================
--- jackrabbit/branches/2.0/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/principal/DefaultPrincipalProviderTest.java (original)
+++ jackrabbit/branches/2.0/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/principal/DefaultPrincipalProviderTest.java Thu Jan 7 08:20:13 2010
@@ -21,11 +21,13 @@
import org.apache.jackrabbit.api.security.user.Group;
import org.apache.jackrabbit.api.security.user.User;
import org.apache.jackrabbit.core.security.user.UserManagerImpl;
+import org.apache.jackrabbit.core.security.TestPrincipal;
import org.apache.jackrabbit.test.NotExecutableException;
import javax.jcr.RepositoryException;
import java.security.Principal;
import java.util.Properties;
+import java.util.Set;
/**
* <code>DefaultPrincipalProviderTest</code>...
@@ -102,4 +104,20 @@
save(superuser);
}
}
+
+ /**
+ *
+ * @throws Exception
+ */
+ public void testCacheDoesntContainTestPrincipalImpl() throws Exception {
+ Set<Principal> principals = getPrincipalSetFromSession(superuser);
+ for (Principal p : principals) {
+ Principal testPrinc = new TestPrincipal(p.getName());
+ principalProvider.getGroupMembership(testPrinc);
+ Principal fromProvider = ((DefaultPrincipalProvider) principalProvider).providePrincipal(p.getName());
+
+ assertNotSame(testPrinc, fromProvider);
+ assertFalse(fromProvider instanceof TestPrincipal);
+ }
+ }
}
\ No newline at end of file