You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by an...@apache.org on 2013/10/26 08:39:08 UTC
svn commit: r1535932 - in /jackrabbit/oak/trunk/oak-core/src:
main/java/org/apache/jackrabbit/oak/security/user/autosave/
test/java/org/apache/jackrabbit/oak/security/user/autosave/
Author: angela
Date: Sat Oct 26 06:39:07 2013
New Revision: 1535932
URL: http://svn.apache.org/r1535932
Log:
OAK-50 : Implement User Management
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/AuthorizableWrapper.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/AutoSaveEnabledManager.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/autosave/AutoSaveEnabledManagerTest.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/AuthorizableWrapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/AuthorizableWrapper.java?rev=1535932&r1=1535931&r2=1535932&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/AuthorizableWrapper.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/AuthorizableWrapper.java Sat Oct 26 06:39:07 2013
@@ -22,7 +22,6 @@ import com.google.common.base.Function;
import com.google.common.collect.Iterators;
import org.apache.jackrabbit.api.security.user.Authorizable;
import org.apache.jackrabbit.api.security.user.Group;
-import org.apache.jackrabbit.api.security.user.User;
class AuthorizableWrapper<T extends Authorizable> implements Function<T, T> {
@@ -36,10 +35,8 @@ class AuthorizableWrapper<T extends Auth
public T apply(T authorizable) {
if (authorizable == null) {
return null;
- } else if (authorizable.isGroup()) {
- return (T) new GroupImpl((Group) authorizable, mgr);
} else {
- return (T) new UserImpl((User) authorizable, mgr);
+ return (T) mgr.wrap(authorizable);
}
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/AutoSaveEnabledManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/AutoSaveEnabledManager.java?rev=1535932&r1=1535931&r2=1535932&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/AutoSaveEnabledManager.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/AutoSaveEnabledManager.java Sat Oct 26 06:39:07 2013
@@ -17,16 +17,21 @@
package org.apache.jackrabbit.oak.security.user.autosave;
import java.security.Principal;
+import java.util.Iterator;
+import javax.annotation.CheckForNull;
+import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.jcr.RepositoryException;
+import javax.jcr.UnsupportedRepositoryOperationException;
+import org.apache.jackrabbit.api.security.user.Authorizable;
+import org.apache.jackrabbit.api.security.user.AuthorizableExistsException;
import org.apache.jackrabbit.api.security.user.Group;
+import org.apache.jackrabbit.api.security.user.Query;
import org.apache.jackrabbit.api.security.user.User;
+import org.apache.jackrabbit.api.security.user.UserManager;
import org.apache.jackrabbit.oak.api.CommitFailedException;
import org.apache.jackrabbit.oak.api.Root;
-import org.apache.jackrabbit.oak.namepath.NamePathMapper;
-import org.apache.jackrabbit.oak.security.user.UserManagerImpl;
-import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
/**
* Implementation of the user management that allows to set the autosave flag.
@@ -50,20 +55,87 @@ import org.apache.jackrabbit.oak.spi.sec
* }
* </pre>
*/
-public class AutoSaveEnabledManager extends UserManagerImpl {
+public class AutoSaveEnabledManager implements UserManager {
+ private final UserManager dlg;
private final Root root;
private boolean autosave = true;
- public AutoSaveEnabledManager(Root root, NamePathMapper namePathMapper, SecurityProvider securityProvider) {
- super(root, namePathMapper, securityProvider);
+ public AutoSaveEnabledManager(UserManager dlg, Root root) {
+ this.dlg = dlg;
this.root = root;
}
@Override
+ public Authorizable getAuthorizable(String s) throws RepositoryException {
+ return wrap(dlg.getAuthorizable(s));
+ }
+
+ @Override
+ public Authorizable getAuthorizable(Principal principal) throws RepositoryException {
+ return wrap(dlg.getAuthorizable(principal));
+ }
+
+ @Override
+ public Authorizable getAuthorizableByPath(String s) throws UnsupportedRepositoryOperationException, RepositoryException {
+ return wrap(dlg.getAuthorizableByPath(s));
+ }
+
+ @Override
+ public Iterator<Authorizable> findAuthorizables(String s, String s1) throws RepositoryException {
+ return AuthorizableWrapper.createIterator(dlg.findAuthorizables(s, s1), this);
+ }
+
+ @Override
+ public Iterator<Authorizable> findAuthorizables(String s, String s1, int i) throws RepositoryException {
+ return AuthorizableWrapper.createIterator(dlg.findAuthorizables(s, s1, i), this);
+ }
+
+ @Override
+ public Iterator<Authorizable> findAuthorizables(Query query) throws RepositoryException {
+ return AuthorizableWrapper.createIterator(dlg.findAuthorizables(query), this);
+ }
+
+ @Override
+ public User createUser(String userID, String password) throws AuthorizableExistsException, RepositoryException {
+ try {
+ return wrap(dlg.createUser(userID, password));
+ } finally {
+ autosave();
+ }
+ }
+
+ @Override
public User createUser(String userID, String password, Principal principal, @Nullable String intermediatePath) throws RepositoryException {
try {
- return new UserImpl(super.createUser(userID, password, principal, intermediatePath), this);
+ return wrap(dlg.createUser(userID, password, principal, intermediatePath));
+ } finally {
+ autosave();
+ }
+ }
+
+ @Override
+ public Group createGroup(String groupId) throws AuthorizableExistsException, RepositoryException {
+ try {
+ return wrap(dlg.createGroup(groupId));
+ } finally {
+ autosave();
+ }
+ }
+
+ @Override
+ public Group createGroup(Principal principal) throws AuthorizableExistsException, RepositoryException {
+ try {
+ return wrap(dlg.createGroup(principal));
+ } finally {
+ autosave();
+ }
+ }
+
+ @Override
+ public Group createGroup(Principal principal, String groupId) throws AuthorizableExistsException, RepositoryException {
+ try {
+ return wrap(dlg.createGroup(principal, groupId));
} finally {
autosave();
}
@@ -72,7 +144,7 @@ public class AutoSaveEnabledManager exte
@Override
public Group createGroup(String groupID, Principal principal, @Nullable String intermediatePath) throws RepositoryException {
try {
- return new GroupImpl(super.createGroup(groupID, principal, intermediatePath), this);
+ return wrap(dlg.createGroup(groupID, principal, intermediatePath));
} finally {
autosave();
}
@@ -88,6 +160,8 @@ public class AutoSaveEnabledManager exte
autosave = enable;
}
+ //--------------------------------------------------------------------------
+
void autosave() throws RepositoryException {
if (autosave) {
try {
@@ -99,4 +173,26 @@ public class AutoSaveEnabledManager exte
}
}
}
+
+ @CheckForNull
+ Authorizable wrap(@Nullable Authorizable authorizable) {
+ if (authorizable == null) {
+ return null;
+ }
+ if (authorizable.isGroup()) {
+ return wrap((Group) authorizable);
+ } else {
+ return wrap((User) authorizable);
+ }
+ }
+
+ @Nonnull
+ User wrap(@Nonnull User user) {
+ return new UserImpl(user, this);
+ }
+
+ @Nonnull
+ Group wrap(@Nonnull Group group) {
+ return new GroupImpl(group, this);
+ }
}
\ No newline at end of file
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/autosave/AutoSaveEnabledManagerTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/autosave/AutoSaveEnabledManagerTest.java?rev=1535932&r1=1535931&r2=1535932&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/autosave/AutoSaveEnabledManagerTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/autosave/AutoSaveEnabledManagerTest.java Sat Oct 26 06:39:07 2013
@@ -26,9 +26,12 @@ import org.apache.jackrabbit.api.securit
import org.apache.jackrabbit.api.security.user.Impersonation;
import org.apache.jackrabbit.api.security.user.User;
import org.apache.jackrabbit.oak.AbstractSecurityTest;
+import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
import org.junit.Test;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -39,7 +42,7 @@ public class AutoSaveEnabledManagerTest
@Override
public void before() throws Exception {
super.before();
- mgr = new AutoSaveEnabledManager(root, getNamePathMapper(), getSecurityProvider());
+ mgr = new AutoSaveEnabledManager(getUserManager(root), root);
}
@Override
@@ -59,6 +62,36 @@ public class AutoSaveEnabledManagerTest
}
@Test
+ public void testGetAuthorizable() throws RepositoryException {
+ Authorizable a = mgr.getAuthorizable(UserConstants.DEFAULT_ANONYMOUS_ID);
+ assertNotNull(a);
+ assertTrue(a instanceof AuthorizableImpl);
+ assertTrue(a instanceof UserImpl);
+
+ a = mgr.getAuthorizableByPath(a.getPath());
+ assertNotNull(a);
+ assertTrue(a instanceof AuthorizableImpl);
+ assertTrue(a instanceof UserImpl);
+
+ a = mgr.getAuthorizable(a.getPrincipal());
+ assertNotNull(a);
+ assertTrue(a instanceof AuthorizableImpl);
+ assertTrue(a instanceof UserImpl);
+
+ assertNull(mgr.getAuthorizable("unknown"));
+ }
+
+ @Test
+ public void testFindAuthorizable() throws RepositoryException {
+ Iterator<Authorizable> res = mgr.findAuthorizables(UserConstants.REP_AUTHORIZABLE_ID, UserConstants.DEFAULT_ANONYMOUS_ID);
+ assertTrue(res.hasNext());
+
+ Authorizable a = res.next();
+ assertNotNull(a);
+ assertTrue(a instanceof AuthorizableImpl);
+ }
+
+ @Test
public void testIsAutoSave() {
assertTrue(mgr.isAutoSave());
}