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 al...@apache.org on 2015/08/07 12:07:03 UTC
svn commit: r1694643 - in /jackrabbit/oak/trunk:
oak-core/src/main/java/org/apache/jackrabbit/oak/
oak-core/src/test/java/org/apache/jackrabbit/oak/
oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/
Author: alexparvulescu
Date: Fri Aug 7 10:07:02 2015
New Revision: 1694643
URL: http://svn.apache.org/r1694643
Log:
OAK-2760 HttpServer in Oak creates multiple instance of ContentRepository
- patch provided by Francesco Mari (@frm)
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/OakTest.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/Jcr.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/package-info.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=1694643&r1=1694642&r2=1694643&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 Fri Aug 7 10:07:02 2015
@@ -146,8 +146,7 @@ public class Oak {
private final Closer closer = Closer.create();
- private boolean initialized;
-
+ private ContentRepository contentRepository;
/**
* Default {@code ScheduledExecutorService} used for scheduling background tasks.
@@ -547,10 +546,22 @@ public class Oak {
return this.whiteboard;
}
+ /**
+ * Returns the content repository instance created with the given
+ * configuration. If the repository doesn't exist yet, a new instance will
+ * be created and returned for each subsequent call of this method.
+ *
+ * @return content repository
+ */
public ContentRepository createContentRepository() {
- //TODO FIXME OAK-2736
- //checkState(!initialized, "Oak instance should be used only once to create the ContentRepository instance");
- initialized = true;
+ if (contentRepository == null) {
+ contentRepository = createNewContentRepository();
+ }
+
+ return contentRepository;
+ }
+
+ private ContentRepository createNewContentRepository() {
final List<Registration> regs = Lists.newArrayList();
regs.add(whiteboard.register(Executor.class, getExecutor(), Collections.emptyMap()));
@@ -573,7 +584,6 @@ public class Oak {
indexRegistration.registerAsyncIndexer(task, t.getValue());
}
- // TODO verify how this fits in with OAK-2749
PropertyIndexAsyncReindex asyncPI = new PropertyIndexAsyncReindex(
new AsyncIndexUpdate(IndexConstants.ASYNC_REINDEX_VALUE,
store, indexEditors, true), getExecutor());
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/OakTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/OakTest.java?rev=1694643&r1=1694642&r2=1694643&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/OakTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/OakTest.java Fri Aug 7 10:07:02 2015
@@ -27,7 +27,6 @@ import org.apache.jackrabbit.oak.api.Con
import org.apache.jackrabbit.oak.api.ContentSession;
import org.apache.jackrabbit.oak.spi.security.OpenSecurityProvider;
import org.apache.jackrabbit.oak.spi.whiteboard.WhiteboardUtils;
-import org.junit.Ignore;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
@@ -72,12 +71,20 @@ public class OakTest {
}
- @Ignore("OAK-2736")
- @Test(expected = IllegalStateException.class)
- public void throwISEUponReuse() throws Exception{
+ @Test
+ public void testContentRepositoryReuse() throws Exception {
Oak oak = new Oak().with(new OpenSecurityProvider());
- oak.createContentRepository();
- oak.createContentRepository();
+ ContentRepository r0 = null;
+ ContentRepository r1 = null;
+ try {
+ r0 = oak.createContentRepository();
+ r1 = oak.createContentRepository();
+ assertEquals(r0, r1);
+ } finally {
+ if (r0 != null) {
+ ((Closeable) r0).close();
+ }
+ }
}
@Test
Modified: 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=1694643&r1=1694642&r2=1694643&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/Jcr.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/Jcr.java Fri Aug 7 10:07:02 2015
@@ -26,6 +26,7 @@ import javax.annotation.Nonnull;
import javax.jcr.Repository;
import org.apache.jackrabbit.oak.Oak;
+import org.apache.jackrabbit.oak.api.ContentRepository;
import org.apache.jackrabbit.oak.jcr.repository.RepositoryImpl;
import org.apache.jackrabbit.oak.plugins.commit.ConflictValidatorProvider;
import org.apache.jackrabbit.oak.plugins.index.IndexEditorProvider;
@@ -69,6 +70,8 @@ public class Jcr {
private int observationQueueLength = DEFAULT_OBSERVATION_QUEUE_LENGTH;
private CommitRateLimiter commitRateLimiter = null;
+ private Repository repository;
+
public Jcr(Oak oak) {
this.oak = oak;
@@ -198,13 +201,21 @@ public class Jcr {
return this;
}
+ public ContentRepository createContentRepository() {
+ return oak.createContentRepository();
+ }
+
public Repository createRepository() {
- return new RepositoryImpl(
- oak.createContentRepository(),
- oak.getWhiteboard(),
- securityProvider,
- observationQueueLength,
- commitRateLimiter);
+ if (repository == null) {
+ repository = new RepositoryImpl(
+ oak.createContentRepository(),
+ oak.getWhiteboard(),
+ securityProvider,
+ observationQueueLength,
+ commitRateLimiter);
+ }
+
+ return repository;
}
}
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/package-info.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/package-info.java?rev=1694643&r1=1694642&r2=1694643&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/package-info.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/package-info.java Fri Aug 7 10:07:02 2015
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-@Version("1.0")
+@Version("1.1.0")
@Export(optional = "provide:=true")
package org.apache.jackrabbit.oak.jcr;