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/29 11:56:15 UTC

svn commit: r1536653 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/security/user/ main/java/org/apache/jackrabbit/oak/spi/security/user/ test/java/org/apache/jackrabbit/oak/security/user/autosave/

Author: angela
Date: Tue Oct 29 10:56:14 2013
New Revision: 1536653

URL: http://svn.apache.org/r1536653
Log:
OAK-50 : Implement User Management

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserConfigurationImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/user/UserConstants.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/UserConfigurationImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserConfigurationImpl.java?rev=1536653&r1=1536652&r2=1536653&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserConfigurationImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserConfigurationImpl.java Tue Oct 29 10:56:14 2013
@@ -27,6 +27,7 @@ import org.apache.felix.scr.annotations.
 import org.apache.jackrabbit.api.security.user.UserManager;
 import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
+import org.apache.jackrabbit.oak.security.user.autosave.AutoSaveEnabledManager;
 import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider;
 import org.apache.jackrabbit.oak.spi.lifecycle.WorkspaceInitializer;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationBase;
@@ -34,6 +35,7 @@ import org.apache.jackrabbit.oak.spi.sec
 import org.apache.jackrabbit.oak.spi.security.SecurityConfiguration;
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
 import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
+import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
 import org.apache.jackrabbit.oak.spi.xml.ProtectedItemImporter;
 
 /**
@@ -87,6 +89,11 @@ public class UserConfigurationImpl exten
     @Nonnull
     @Override
     public UserManager getUserManager(Root root, NamePathMapper namePathMapper) {
-        return new UserManagerImpl(root, namePathMapper, getSecurityProvider());
+        UserManager umgr = new UserManagerImpl(root, namePathMapper, getSecurityProvider());
+        if (getParameters().getConfigValue(UserConstants.PARAM_SUPPORT_AUTOSAVE, false)) {
+            return new AutoSaveEnabledManager(umgr, root);
+        } else {
+            return umgr;
+        }
     }
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/user/UserConstants.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/user/UserConstants.java?rev=1536653&r1=1536652&r2=1536653&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/user/UserConstants.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/security/user/UserConstants.java Tue Oct 29 10:56:14 2013
@@ -167,4 +167,19 @@ public interface UserConstants {
      * is used.
      */
     String PARAM_AUTHORIZABLE_ACTION_PROVIDER = "authorizableActionProvider";
+
+    /**
+     * Optional configuration parameter that might be used to get back support
+     * for the auto-save behavior which has been dropped in the default
+     * user management implementation present with OAK.
+     *
+     * <p>Note that this option has been added for those cases where API consumers
+     * rely on the implementation specific behavior present with Jackrabbit 2.x.
+     * In general using this option should not be required as the Jackrabbit
+     * User Management API expects that API consumers tests the auto-save
+     * mode is enabled. Therefore this option should be considered a temporary
+     * workaround after upgrading a repository to OAK; the affected code should
+     * be reviewed and adjusted accordingly.</p>
+     */
+    String PARAM_SUPPORT_AUTOSAVE = "supportAutoSave";
 }

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=1536653&r1=1536652&r2=1536653&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 Tue Oct 29 10:56:14 2013
@@ -17,15 +17,20 @@
 package org.apache.jackrabbit.oak.security.user.autosave;
 
 import java.security.Principal;
+import java.util.Collections;
 import java.util.Iterator;
 import javax.jcr.RepositoryException;
 import javax.jcr.Value;
 
+import com.google.common.collect.ImmutableMap;
 import org.apache.jackrabbit.api.security.user.Authorizable;
 import org.apache.jackrabbit.api.security.user.Group;
 import org.apache.jackrabbit.api.security.user.Impersonation;
 import org.apache.jackrabbit.api.security.user.User;
+import org.apache.jackrabbit.api.security.user.UserManager;
 import org.apache.jackrabbit.oak.AbstractSecurityTest;
+import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
+import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
 import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
 import org.junit.Test;
 
@@ -37,12 +42,12 @@ import static org.junit.Assert.fail;
 
 public class AutoSaveEnabledManagerTest extends AbstractSecurityTest {
 
-    private AutoSaveEnabledManager mgr;
+    private UserManager mgr;
 
     @Override
     public void before() throws Exception {
         super.before();
-        mgr = new AutoSaveEnabledManager(getUserManager(root), root);
+        mgr = getUserManager(root);
     }
 
     @Override
@@ -61,6 +66,23 @@ public class AutoSaveEnabledManagerTest 
         super.after();
     }
 
+    @Override
+    protected ConfigurationParameters getSecurityConfigParameters() {
+        ConfigurationParameters userConfig = ConfigurationParameters.of(
+                Collections.singletonMap(UserConstants.PARAM_SUPPORT_AUTOSAVE, Boolean.TRUE));
+        return ConfigurationParameters.of(ImmutableMap.of(UserConfiguration.NAME, userConfig));
+    }
+
+    @Test
+    public void testAutoSaveEnabled() throws RepositoryException {
+        assertTrue(mgr instanceof AutoSaveEnabledManager);
+        assertTrue(mgr.isAutoSave());
+
+        mgr.autoSave(false);
+        assertFalse(mgr.isAutoSave());
+        mgr.autoSave(true);
+    }
+
     @Test
     public void testGetAuthorizable() throws RepositoryException {
         Authorizable a = mgr.getAuthorizable(UserConstants.DEFAULT_ANONYMOUS_ID);