Author: reschke
Date: Thu Apr 11 11:23:38 2019
New Revision: 1857314

URL: http://svn.apache.org/viewvc?rev=1857314&view=rev
Log:
OAK-8214: RDBDocumentStore may not inherit ReadOnly flag from DocumentNodeStore

Added:
    
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentNodeStoreBuilderTest.java
   (with props)
Modified:
    
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentNodeStoreBuilder.java

Modified: 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentNodeStoreBuilder.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentNodeStoreBuilder.java?rev=1857314&r1=1857313&r2=1857314&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentNodeStoreBuilder.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentNodeStoreBuilder.java
 Thu Apr 11 11:23:38 2019
@@ -16,7 +16,7 @@
  */
 package org.apache.jackrabbit.oak.plugins.document.rdb;
 
-import static com.google.common.base.Suppliers.ofInstance;
+import static com.google.common.base.Suppliers.memoize;
 
 import javax.sql.DataSource;
 
@@ -59,8 +59,8 @@ public class RDBDocumentNodeStoreBuilder
      * @return this
      */
     public RDBDocumentNodeStoreBuilder setRDBConnection(DataSource ds, 
RDBOptions options) {
-        this.documentStoreSupplier = ofInstance(new RDBDocumentStore(ds, this, 
options));
-        if(blobStore == null) {
+        this.documentStoreSupplier = memoize(() -> new RDBDocumentStore(ds, 
this, options));
+        if (blobStore == null) {
             GarbageCollectableBlobStore s = new RDBBlobStore(ds, options);
             setGCBlobStore(s);
         }
@@ -74,8 +74,8 @@ public class RDBDocumentNodeStoreBuilder
      * @return this
      */
     public RDBDocumentNodeStoreBuilder setRDBConnection(DataSource 
documentStoreDataSource, DataSource blobStoreDataSource) {
-        this.documentStoreSupplier = ofInstance(new 
RDBDocumentStore(documentStoreDataSource, this));
-        if(blobStore == null) {
+        this.documentStoreSupplier = memoize(() -> new 
RDBDocumentStore(documentStoreDataSource, this));
+        if (blobStore == null) {
             GarbageCollectableBlobStore s = new 
RDBBlobStore(blobStoreDataSource);
             setGCBlobStore(s);
         }

Added: 
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentNodeStoreBuilderTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentNodeStoreBuilderTest.java?rev=1857314&view=auto
==============================================================================
--- 
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentNodeStoreBuilderTest.java
 (added)
+++ 
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentNodeStoreBuilderTest.java
 Thu Apr 11 11:23:38 2019
@@ -0,0 +1,46 @@
+/*
+ * 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.plugins.document.rdb;
+
+import static org.junit.Assert.fail;
+
+import java.util.UUID;
+
+import javax.sql.DataSource;
+
+import org.apache.jackrabbit.oak.plugins.document.DocumentStoreException;
+import org.junit.Test;
+
+public class RDBDocumentNodeStoreBuilderTest {
+
+    @Test
+    public void testReadOnly() throws Exception {
+        // see OAK-8214
+
+        DataSource dataSource = RDBDataSourceFactory.forJdbcUrl("jdbc:h2:mem:" 
+ UUID.randomUUID(), "", "");
+
+        RDBDocumentNodeStoreBuilder b = 
RDBDocumentNodeStoreBuilder.newRDBDocumentNodeStoreBuilder();
+        b.setRDBConnection(dataSource);
+        b.setReadOnlyMode();
+
+        try {
+            b.getDocumentStore();
+            fail("should not get here");
+        } catch (DocumentStoreException expected) {
+        }
+    }
+}

Propchange: 
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentNodeStoreBuilderTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentNodeStoreBuilderTest.java
------------------------------------------------------------------------------
    svn:executable = *


Reply via email to