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/19 17:56:35 UTC
svn commit: r1400140 - in /jackrabbit/oak/trunk/oak-jcr/src:
main/java/org/apache/jackrabbit/oak/jcr/
test/java/org/apache/jackrabbit/oak/jcr/
test/java/org/apache/jackrabbit/oak/jcr/security/privilege/
Author: jukka
Date: Fri Oct 19 15:56:34 2012
New Revision: 1400140
URL: http://svn.apache.org/viewvc?rev=1400140&view=rev
Log:
OAK-352: Oak builder for simplified repository construction
Add a Jcr class for constructing RepositoryImpl instances with all the relevant components included
Added:
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/Jcr.java (with props)
Modified:
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/OakRepositoryFactory.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/RepositoryImpl.java
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/AbstractRepositoryTest.java
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakRepositoryStub.java
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/privilege/PrivilegeRegistrationTest.java
Added: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/Jcr.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/Jcr.java?rev=1400140&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/Jcr.java (added)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/Jcr.java Fri Oct 19 15:56:34 2012
@@ -0,0 +1,142 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.jcr;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.DEFAULT_INDEX_HOME;
+
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+
+import javax.annotation.Nonnull;
+import javax.jcr.Repository;
+
+import org.apache.jackrabbit.mk.api.MicroKernel;
+import org.apache.jackrabbit.oak.Oak;
+import org.apache.jackrabbit.oak.core.OrderedChildrenEditor;
+import org.apache.jackrabbit.oak.plugins.commit.AnnotatingConflictHandler;
+import org.apache.jackrabbit.oak.plugins.commit.ConflictValidatorProvider;
+import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneHook;
+import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneReindexHook;
+import org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexHook;
+import org.apache.jackrabbit.oak.plugins.name.NameValidatorProvider;
+import org.apache.jackrabbit.oak.plugins.name.NamespaceValidatorProvider;
+import org.apache.jackrabbit.oak.plugins.nodetype.DefaultTypeEditor;
+import org.apache.jackrabbit.oak.plugins.nodetype.InitialContent;
+import org.apache.jackrabbit.oak.plugins.nodetype.TypeValidatorProvider;
+import org.apache.jackrabbit.oak.security.SecurityProviderImpl;
+import org.apache.jackrabbit.oak.spi.commit.CommitHook;
+import org.apache.jackrabbit.oak.spi.commit.ConflictHandler;
+import org.apache.jackrabbit.oak.spi.commit.Validator;
+import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider;
+import org.apache.jackrabbit.oak.spi.lifecycle.MicroKernelTracker;
+import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
+import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
+
+public class Jcr {
+
+ private final Oak oak;
+
+ private ScheduledExecutorService executor =
+ Executors.newScheduledThreadPool(0);
+
+ private SecurityProvider securityProvider;
+
+ private Jcr(Oak oak) {
+ this.oak = oak;
+
+ with(new InitialContent());
+
+ with(new DefaultTypeEditor());
+
+ with(new SecurityProviderImpl());
+
+ with(new NameValidatorProvider());
+ with(new NamespaceValidatorProvider());
+ with(new TypeValidatorProvider());
+ with(new ConflictValidatorProvider());
+
+ with(new PropertyIndexHook());
+ with(new LuceneReindexHook(DEFAULT_INDEX_HOME));
+ with(new LuceneHook(DEFAULT_INDEX_HOME));
+ with(new OrderedChildrenEditor());
+ with(new AnnotatingConflictHandler());
+ }
+
+ public Jcr() {
+ this(new Oak());
+ }
+
+ public Jcr(MicroKernel kernel) {
+ this(new Oak(kernel));
+ }
+
+ @Nonnull
+ public Jcr with(@Nonnull MicroKernelTracker initializer) {
+ oak.with(checkNotNull(initializer));
+ return this;
+ }
+
+ @Nonnull
+ public Jcr with(@Nonnull QueryIndexProvider provider) {
+ oak.with(checkNotNull(provider));
+ return this;
+ }
+
+ @Nonnull
+ public Jcr with(@Nonnull CommitHook hook) {
+ oak.with(checkNotNull(hook));
+ return this;
+ }
+
+ @Nonnull
+ public Jcr with(@Nonnull ValidatorProvider provider) {
+ oak.with(checkNotNull(provider));
+ return this;
+ }
+
+ @Nonnull
+ public Jcr with(@Nonnull Validator validator) {
+ oak.with(checkNotNull(validator));
+ return this;
+ }
+
+ @Nonnull
+ public Jcr with(@Nonnull SecurityProvider securityProvider) {
+ oak.with(checkNotNull(securityProvider));
+ this.securityProvider = securityProvider;
+ return this;
+ }
+
+ @Nonnull
+ public Jcr with(@Nonnull ConflictHandler conflictHandler) {
+ oak.with(checkNotNull(conflictHandler));
+ return this;
+ }
+
+ @Nonnull
+ public Jcr with(@Nonnull ScheduledExecutorService executor) {
+ this.executor = checkNotNull(executor);
+ return this;
+ }
+
+ public Repository createRepository() {
+ return new RepositoryImpl(
+ oak.createContentRepository(), executor, securityProvider);
+ }
+
+}
Propchange: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/Jcr.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/OakRepositoryFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/OakRepositoryFactory.java?rev=1400140&r1=1400139&r2=1400140&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/OakRepositoryFactory.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/OakRepositoryFactory.java Fri Oct 19 15:56:34 2012
@@ -19,14 +19,10 @@ package org.apache.jackrabbit.oak.jcr;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Map;
-import java.util.concurrent.Executors;
import javax.jcr.Repository;
import javax.jcr.RepositoryException;
import javax.jcr.RepositoryFactory;
-import org.apache.jackrabbit.mk.core.MicroKernelImpl;
-import org.apache.jackrabbit.oak.security.SecurityProviderImpl;
-
public class OakRepositoryFactory implements RepositoryFactory {
private static final String REPOSITORY_URI = "org.apache.jackrabbit.repository.uri";
@@ -51,7 +47,7 @@ public class OakRepositoryFactory implem
URI uri, Map<String, String> parameters)
throws RepositoryException {
// TODO correctly interpret uri
- return new RepositoryImpl(new MicroKernelImpl(), Executors.newScheduledThreadPool(0), new SecurityProviderImpl());
+ return new Jcr().createRepository();
}
}
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/RepositoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/RepositoryImpl.java?rev=1400140&r1=1400139&r2=1400140&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/RepositoryImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/RepositoryImpl.java Fri Oct 19 15:56:34 2012
@@ -26,24 +26,8 @@ import javax.jcr.Value;
import javax.security.auth.login.LoginException;
import org.apache.jackrabbit.commons.SimpleValueFactory;
-import org.apache.jackrabbit.mk.api.MicroKernel;
-import org.apache.jackrabbit.oak.Oak;
import org.apache.jackrabbit.oak.api.ContentRepository;
import org.apache.jackrabbit.oak.api.ContentSession;
-import org.apache.jackrabbit.oak.core.OrderedChildrenEditor;
-import org.apache.jackrabbit.oak.kernel.KernelNodeStore;
-import org.apache.jackrabbit.oak.plugins.commit.AnnotatingConflictHandler;
-import org.apache.jackrabbit.oak.plugins.commit.ConflictValidatorProvider;
-import org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexHook;
-import org.apache.jackrabbit.oak.plugins.name.NameValidatorProvider;
-import org.apache.jackrabbit.oak.plugins.name.NamespaceValidatorProvider;
-import org.apache.jackrabbit.oak.plugins.nodetype.InitialContent;
-import org.apache.jackrabbit.oak.plugins.nodetype.TypeValidatorProvider;
-import org.apache.jackrabbit.oak.spi.commit.CompositeHook;
-import org.apache.jackrabbit.oak.spi.commit.CompositeValidatorProvider;
-import org.apache.jackrabbit.oak.spi.commit.ConflictHandler;
-import org.apache.jackrabbit.oak.spi.commit.ValidatingHook;
-import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider;
import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -58,21 +42,6 @@ public class RepositoryImpl implements R
*/
private static final Logger log = LoggerFactory.getLogger(RepositoryImpl.class);
- private static final ValidatorProvider DEFAULT_VALIDATOR =
- new CompositeValidatorProvider(
- new NameValidatorProvider(),
- new NamespaceValidatorProvider(),
- new TypeValidatorProvider(),
- new ConflictValidatorProvider());
-
- private static final CompositeHook DEFAULT_COMMIT_HOOK =
- new CompositeHook(
- new ValidatingHook(DEFAULT_VALIDATOR),
- new PropertyIndexHook(),
- new OrderedChildrenEditor());
-
- private static final ConflictHandler DEFAULT_CONFLICT_HANDLER = new AnnotatingConflictHandler();
-
private final Descriptors descriptors = new Descriptors(new SimpleValueFactory());
private final ContentRepository contentRepository;
@@ -80,16 +49,6 @@ public class RepositoryImpl implements R
private final SecurityProvider securityProvider;
- public RepositoryImpl(MicroKernel kernel, ScheduledExecutorService executor,
- SecurityProvider securityProvider) {
- this(new Oak(setupInitialContent(kernel))
- .with(DEFAULT_COMMIT_HOOK)
- .with(DEFAULT_CONFLICT_HANDLER)
- .with(securityProvider)
- .createContentRepository(),
- executor, securityProvider);
- }
-
public RepositoryImpl(
ContentRepository contentRepository,
ScheduledExecutorService executor,
@@ -208,8 +167,4 @@ public class RepositoryImpl implements R
return login(null, workspace);
}
- private static MicroKernel setupInitialContent(MicroKernel mk) {
- new InitialContent().available(new KernelNodeStore(mk));
- return mk;
- }
}
\ No newline at end of file
Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/AbstractRepositoryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/AbstractRepositoryTest.java?rev=1400140&r1=1400139&r2=1400140&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/AbstractRepositoryTest.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/AbstractRepositoryTest.java Fri Oct 19 15:56:34 2012
@@ -25,11 +25,7 @@ import javax.jcr.Session;
import javax.jcr.SimpleCredentials;
import javax.security.auth.login.Configuration;
-import org.apache.jackrabbit.mk.api.MicroKernel;
-import org.apache.jackrabbit.mk.core.MicroKernelImpl;
import org.apache.jackrabbit.oak.security.OakConfiguration;
-import org.apache.jackrabbit.oak.security.SecurityProviderImpl;
-import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
import org.junit.After;
import org.junit.Before;
@@ -71,10 +67,7 @@ public abstract class AbstractRepository
protected Repository getRepository() throws RepositoryException {
if (repository == null) {
- MicroKernel mk = new MicroKernelImpl();
- ScheduledExecutorService executorService = getExecutor();
- SecurityProvider securityProvider = new SecurityProviderImpl();
- repository = new RepositoryImpl(mk, executorService, securityProvider);
+ repository = new Jcr().with(getExecutor()).createRepository();
}
return repository;
}
Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakRepositoryStub.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakRepositoryStub.java?rev=1400140&r1=1400139&r2=1400140&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakRepositoryStub.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakRepositoryStub.java Fri Oct 19 15:56:34 2012
@@ -29,7 +29,6 @@ import javax.security.auth.login.Configu
import org.apache.jackrabbit.mk.core.MicroKernelImpl;
import org.apache.jackrabbit.oak.security.OakConfiguration;
-import org.apache.jackrabbit.oak.security.SecurityProviderImpl;
import org.apache.jackrabbit.test.NotExecutableException;
import org.apache.jackrabbit.test.RepositoryStub;
@@ -50,10 +49,9 @@ public class OakRepositoryStub extends R
Configuration.setConfiguration(new OakConfiguration());
String dir = "target/mk-tck-" + System.currentTimeMillis();
- repository = new RepositoryImpl(
- new MicroKernelImpl(dir),
- Executors.newScheduledThreadPool(1),
- new SecurityProviderImpl());
+ repository = new Jcr(new MicroKernelImpl(dir))
+ .with(Executors.newScheduledThreadPool(1))
+ .createRepository();
Session session = repository.login(superuser);
try {
Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/privilege/PrivilegeRegistrationTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/privilege/PrivilegeRegistrationTest.java?rev=1400140&r1=1400139&r2=1400140&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/privilege/PrivilegeRegistrationTest.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/privilege/PrivilegeRegistrationTest.java Fri Oct 19 15:56:34 2012
@@ -35,8 +35,7 @@ import javax.jcr.security.Privilege;
import org.apache.jackrabbit.api.security.authorization.PrivilegeManager;
import org.apache.jackrabbit.mk.core.MicroKernelImpl;
-import org.apache.jackrabbit.oak.jcr.RepositoryImpl;
-import org.apache.jackrabbit.oak.security.SecurityProviderImpl;
+import org.apache.jackrabbit.oak.jcr.Jcr;
import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants;
import org.junit.After;
import org.junit.Before;
@@ -59,9 +58,9 @@ public class PrivilegeRegistrationTest e
// create a separate repository in order to be able to remove registered privileges.
String dir = "target/mk-tck-" + System.currentTimeMillis();
- repository = new RepositoryImpl(new MicroKernelImpl(dir),
- Executors.newScheduledThreadPool(1),
- new SecurityProviderImpl());
+ repository = new Jcr(new MicroKernelImpl(dir))
+ .with(Executors.newScheduledThreadPool(1))
+ .createRepository();
session = getAdminSession();
privilegeManager = getPrivilegeManager(session);