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 ju...@apache.org on 2012/10/18 18:12:52 UTC

svn commit: r1399718 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/ test/java/org/apache/jackrabbit/oak/ test/java/org/apache/jackrabbit/oak/plugins/name/ test/java/org/apache/jackrabbit/oak/util/

Author: jukka
Date: Thu Oct 18 16:12:52 2012
New Revision: 1399718

URL: http://svn.apache.org/viewvc?rev=1399718&view=rev
Log:
OAK-352: Oak builder for simplified repository construction

Add methods for simplifying test cases that need only a single ContentSession or Root

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/AbstractOakTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/name/ReadWriteNamespaceRegistryTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/util/JsopUtilTest.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java?rev=1399718&r1=1399717&r2=1399718&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java Thu Oct 18 16:12:52 2012
@@ -18,11 +18,15 @@ package org.apache.jackrabbit.oak;
 
 import java.util.List;
 import javax.annotation.Nonnull;
+import javax.jcr.NoSuchWorkspaceException;
+import javax.security.auth.login.LoginException;
 
 import com.google.common.collect.Lists;
 import org.apache.jackrabbit.mk.api.MicroKernel;
 import org.apache.jackrabbit.mk.core.MicroKernelImpl;
 import org.apache.jackrabbit.oak.api.ContentRepository;
+import org.apache.jackrabbit.oak.api.ContentSession;
+import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.core.ContentRepositoryImpl;
 import org.apache.jackrabbit.oak.kernel.KernelNodeStore;
 import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore;
@@ -35,6 +39,7 @@ import org.apache.jackrabbit.oak.spi.com
 import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider;
 import org.apache.jackrabbit.oak.spi.query.CompositeQueryIndexProvider;
 import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
+import org.apache.jackrabbit.oak.spi.security.OpenSecurityProvider;
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
@@ -61,7 +66,7 @@ public class Oak {
 
     private final List<ValidatorProvider> validatorProviders = Lists.newArrayList();
 
-    private SecurityProvider securityProvider;
+    private SecurityProvider securityProvider = new OpenSecurityProvider();
 
     private ConflictHandler conflictHandler;
 
@@ -180,6 +185,54 @@ public class Oak {
                 securityProvider);
     }
 
+    /**
+     * Creates a content repository with the given configuration
+     * and logs in to the default workspace with no credentials,
+     * returning the resulting content session.
+     * <p>
+     * This method exists mostly as a convenience for one-off tests,
+     * as there's no way to create other sessions for accessing the
+     * same repository.
+     * <p>
+     * There is typically no need to explicitly close the returned
+     * session unless the repository has explicitly been configured
+     * to reserve some resources until all sessions have been closed.
+     * The repository will be garbage collected once the session is no
+     * longer used.
+     *
+     * @return content session
+     */
+    public ContentSession createContentSession() {
+        try {
+            return createContentRepository().login(null, null);
+        } catch (NoSuchWorkspaceException e) {
+            throw new IllegalStateException("Default workspace not found", e);
+        } catch (LoginException e) {
+            throw new IllegalStateException("Anonymous login not allowed", e);
+        }
+    }
+
+    /**
+     * Creates a content repository with the given configuration
+     * and returns a {@link Root} instance after logging in to the
+     * default workspace with no credentials.
+     * <p>
+     * This method exists mostly as a convenience for one-off tests, as
+     * the returned root is the only way to access the session or the
+     * repository.
+     * <p>
+     * Note that since there is no way to close the underlying content
+     * session, this method should only be used when no components that
+     * require sessions to be closed have been configured. The repository
+     * and the session will be garbage collected once the root is no longer
+     * used.
+     *
+     * @return root instance
+     */
+    public Root createRoot() {
+        return createContentSession().getLatestRoot();
+    }
+
     private CommitHook createCommitHook() {
         withValidatorHook();
         return CompositeHook.compose(commitHooks);

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/AbstractOakTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/AbstractOakTest.java?rev=1399718&r1=1399717&r2=1399718&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/AbstractOakTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/AbstractOakTest.java Thu Oct 18 16:12:52 2012
@@ -34,7 +34,6 @@ import org.apache.jackrabbit.oak.plugins
 import org.apache.jackrabbit.oak.security.OakConfiguration;
 import org.apache.jackrabbit.oak.spi.lifecycle.CompositeMicroKernelTracker;
 import org.apache.jackrabbit.oak.spi.lifecycle.MicroKernelTracker;
-import org.apache.jackrabbit.oak.spi.security.OpenSecurityProvider;
 import org.junit.Before;
 
 /**
@@ -59,10 +58,6 @@ public abstract class AbstractOakTest {
 
     protected abstract ContentRepository createRepository();
 
-    protected static ContentRepository createEmptyRepository() {
-        return new Oak().with(new OpenSecurityProvider()).createContentRepository();
-    }
-
     protected ContentRepository getContentRepository() {
         return contentRepository;
     }

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/name/ReadWriteNamespaceRegistryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/name/ReadWriteNamespaceRegistryTest.java?rev=1399718&r1=1399717&r2=1399718&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/name/ReadWriteNamespaceRegistryTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/name/ReadWriteNamespaceRegistryTest.java Thu Oct 18 16:12:52 2012
@@ -18,8 +18,7 @@ package org.apache.jackrabbit.oak.plugin
 
 import javax.jcr.NamespaceRegistry;
 
-import org.apache.jackrabbit.oak.AbstractOakTest;
-import org.apache.jackrabbit.oak.api.ContentRepository;
+import org.apache.jackrabbit.oak.Oak;
 import org.apache.jackrabbit.oak.api.ContentSession;
 import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.api.Tree;
@@ -27,16 +26,11 @@ import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
 
-public class ReadWriteNamespaceRegistryTest extends AbstractOakTest {
-
-    @Override
-    protected ContentRepository createRepository() {
-        return createEmptyRepository();
-    }
+public class ReadWriteNamespaceRegistryTest{
 
     @Test
     public void testMappings() throws Exception {
-        final ContentSession session = createAdminSession();
+        final ContentSession session = new Oak().createContentSession();
         NamespaceRegistry r = new ReadWriteNamespaceRegistry() {
             @Override
             protected Tree getReadTree() {

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/util/JsopUtilTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/util/JsopUtilTest.java?rev=1399718&r1=1399717&r2=1399718&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/util/JsopUtilTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/util/JsopUtilTest.java Thu Oct 18 16:12:52 2012
@@ -16,40 +16,23 @@
  */
 package org.apache.jackrabbit.oak.util;
 
-import org.apache.jackrabbit.oak.AbstractOakTest;
-import org.apache.jackrabbit.oak.api.ContentRepository;
-import org.apache.jackrabbit.oak.api.ContentSession;
-import org.apache.jackrabbit.oak.api.Root;
-import org.apache.jackrabbit.oak.api.Tree;
-import org.apache.jackrabbit.oak.query.JsopUtil;
-import org.junit.Before;
-import org.junit.Test;
-
 import static junit.framework.Assert.assertEquals;
 import static junit.framework.Assert.assertFalse;
 import static junit.framework.Assert.assertTrue;
 import static org.apache.jackrabbit.oak.api.Type.STRING;
 
-public class JsopUtilTest extends AbstractOakTest {
-
-    protected ContentSession session;
-    protected Root root;
-
-    @Override
-    @Before
-    public void before() throws Exception {
-        super.before();
-        session = createAdminSession();
-        root = session.getLatestRoot();
-    }
+import org.apache.jackrabbit.oak.Oak;
+import org.apache.jackrabbit.oak.api.Root;
+import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.query.JsopUtil;
+import org.junit.Test;
 
-    @Override
-    protected ContentRepository createRepository() {
-        return createEmptyRepository();
-    }
+public class JsopUtilTest {
 
     @Test
     public void test() throws Exception {
+        Root root = new Oak().createRoot();
+
         Tree t = root.getTree("/");
         assertFalse(t.hasChild("test"));