Author: reschke
Date: Thu Jan 23 13:41:50 2014
New Revision: 1560684

URL: http://svn.apache.org/r1560684
Log:
OAK-1266 - renaming sql/jcrbc->rdb, test fixture

Added:
    
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakDocumentRDBRepositoryStub.java
   (with props)
Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoMK.java
    
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java
    
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/tck/TCKBase.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoMK.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoMK.java?rev=1560684&r1=1560683&r2=1560684&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoMK.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoMK.java
 Thu Jan 23 13:41:50 2014
@@ -24,6 +24,7 @@ import java.util.concurrent.ExecutionExc
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
+import javax.sql.DataSource;
 
 import com.google.common.cache.Cache;
 import com.google.common.cache.CacheBuilder;
@@ -682,17 +683,32 @@ public class MongoMK implements MicroKer
         }
 
         /**
-         * Sets a JDBC connection to use. By default an in-memory store is 
used.
+         * Sets a JDBC connection URL to use for the RDB document store.
+         * 
          * @return this
          */
-        public Builder setMongoJDBC(String jdbcurl, String username, String 
password) {
-            // TODO maybe we need different connections for document store and 
node store
+        public Builder setRDBConnection(String jdbcurl, String username, 
String password) {
+            // TODO maybe we need different connections for document store and
+            // node store
             this.documentStore = new RDBDocumentStore(jdbcurl, username, 
password);
             this.blobStore = new RDBBlobStore(jdbcurl, username, password);
             return this;
         }
 
         /**
+         * Sets a {@link DataSource} to use for the RDB document store.
+         * 
+         * @return this
+         */
+        public Builder setRDBConnection(DataSource ds) {
+            // TODO maybe we need different connections for document store and
+            // node store
+            this.documentStore = new RDBDocumentStore(ds);
+            this.blobStore = new RDBBlobStore(ds);
+            return this;
+        }
+
+        /**
          * Use the timing document store wrapper.
          * 
          * @param timing whether to use the timing wrapper.

Modified: 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java?rev=1560684&r1=1560683&r2=1560684&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/NodeStoreFixture.java
 Thu Jan 23 13:41:50 2014
@@ -80,21 +80,20 @@ public abstract class NodeStoreFixture {
             }
         }
     };
-    
+
     public static final NodeStoreFixture MONGO_NS = 
createMongoFixture("mongodb://localhost:27017/oak");
 
     public static final NodeStoreFixture MONGO_JDBC = new NodeStoreFixture() {
         @Override
         public NodeStore createNodeStore() {
             String id = UUID.randomUUID().toString();
-            return new MongoMK.Builder().setMongoJDBC("jdbc:h2:mem:" + id, 
"sa", "").getNodeStore();
+            return new MongoMK.Builder().setRDBConnection("jdbc:h2:mem:" + id, 
"sa", "").getNodeStore();
         }
 
         @Override
         public NodeStore createNodeStore(int clusterNodeId) {
             try {
-                return new MongoMK.Builder()
-                                .setMongoJDBC("jdbc:h2:mem:oaknodes-" + 
clusterNodeId, "sa", "").getNodeStore();
+                return new 
MongoMK.Builder().setRDBConnection("jdbc:h2:mem:oaknodes-" + clusterNodeId, 
"sa", "").getNodeStore();
             } catch (Exception e) {
                 return null;
             }

Added: 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakDocumentRDBRepositoryStub.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakDocumentRDBRepositoryStub.java?rev=1560684&view=auto
==============================================================================
--- 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakDocumentRDBRepositoryStub.java
 (added)
+++ 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakDocumentRDBRepositoryStub.java
 Thu Jan 23 13:41:50 2014
@@ -0,0 +1,116 @@
+/*
+ * 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 java.security.Principal;
+import java.util.Properties;
+
+import javax.jcr.Credentials;
+import javax.jcr.GuestCredentials;
+import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.UnsupportedRepositoryOperationException;
+
+import org.apache.jackrabbit.api.JackrabbitSession;
+import org.apache.jackrabbit.oak.plugins.mongomk.MongoMK;
+import org.apache.jackrabbit.test.NotExecutableException;
+import org.apache.jackrabbit.test.RepositoryStub;
+
+/**
+ * A repository stub implementation for the RDB document store.
+ */
+public class OakDocumentRDBRepositoryStub extends RepositoryStub {
+
+    protected static final String URL = System.getProperty("rdb.jdbc-url", 
"jdbc:h2:mem:oaknodes");
+
+    protected static final String USERNAME = 
System.getProperty("rdb.jcbc-user", "sa");
+
+    protected static final String PASSWD = 
System.getProperty("rdb.jdbc-passwd", "");
+
+    private static final Principal UNKNOWN_PRINCIPAL = new Principal() {
+        @Override
+        public String getName() {
+            return "an_unknown_user";
+        }
+    };
+
+    private final Repository repository;
+
+    /**
+     * Constructor as required by the JCR TCK.
+     * 
+     * @param settings
+     *            repository settings
+     * @throws javax.jcr.RepositoryException
+     *             If an error occurs.
+     */
+    public OakDocumentRDBRepositoryStub(Properties settings) throws 
RepositoryException {
+        super(settings);
+
+        Session session = null;
+        try {
+            this.repository = createRepository(URL, USERNAME, PASSWD);
+
+            session = getRepository().login(superuser);
+            TestContentLoader loader = new TestContentLoader();
+            loader.loadTestContent(session);
+        } catch (Exception e) {
+            throw new RepositoryException(e);
+        } finally {
+            if (session != null) {
+                session.logout();
+            }
+        }
+        // Runtime.getRuntime().addShutdownHook(new Thread(new 
ShutdownHook(connection)));
+    }
+
+    protected Repository createRepository(String url, String username, String 
password) {
+        MongoMK m = new MongoMK.Builder().setClusterId(1).memoryCacheSize(64 * 
1024 * 1024)
+                .setRDBConnection(url, username, password).open();
+        Jcr jcr = new Jcr(m);
+        return jcr.createRepository();
+    }
+
+    /**
+     * Returns the configured repository instance.
+     * 
+     * @return the configured repository instance.
+     */
+    @Override
+    public synchronized Repository getRepository() {
+        return repository;
+    }
+
+    @Override
+    public Credentials getReadOnlyCredentials() {
+        return new GuestCredentials();
+    }
+
+    @Override
+    public Principal getKnownPrincipal(Session session) throws 
RepositoryException {
+        if (session instanceof JackrabbitSession) {
+            return ((JackrabbitSession) 
session).getPrincipalManager().getPrincipal(session.getUserID());
+        }
+        throw new UnsupportedRepositoryOperationException();
+    }
+
+    @Override
+    public Principal getUnknownPrincipal(Session session) throws 
RepositoryException, NotExecutableException {
+        return UNKNOWN_PRINCIPAL;
+    }
+}

Propchange: 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/OakDocumentRDBRepositoryStub.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/tck/TCKBase.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/tck/TCKBase.java?rev=1560684&r1=1560683&r2=1560684&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/tck/TCKBase.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/tck/TCKBase.java
 Thu Jan 23 13:41:50 2014
@@ -54,6 +54,7 @@ public abstract class TCKBase extends Te
         if (OakMongoMKRepositoryStub.isMongoDBAvailable()) {
             Setup.wrap(this, OakMongoMKRepositoryStub.class.getName());
         }
+        // Setup.wrap(this, OakDocumentRDBRepositoryStub.class.getName());
     }
 
     abstract protected void addTests();


Reply via email to