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 md...@apache.org on 2012/04/11 19:19:12 UTC
svn commit: r1324877 - in
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core:
ConnectionImpl.java TmpRepositoryService.java
Author: mduerig
Date: Wed Apr 11 17:19:11 2012
New Revision: 1324877
URL: http://svn.apache.org/viewvc?rev=1324877&view=rev
Log:
OAK-62: ConnectionImpl should not acquire Microkernel instance
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ConnectionImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TmpRepositoryService.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ConnectionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ConnectionImpl.java?rev=1324877&r1=1324876&r2=1324877&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ConnectionImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ConnectionImpl.java Wed Apr 11 17:19:11 2012
@@ -16,8 +16,6 @@
*/
package org.apache.jackrabbit.oak.core;
-import org.apache.jackrabbit.mk.MicroKernelFactory;
-import org.apache.jackrabbit.mk.api.MicroKernel;
import org.apache.jackrabbit.mk.api.MicroKernelException;
import org.apache.jackrabbit.oak.api.AuthInfo;
import org.apache.jackrabbit.oak.api.CommitFailedException;
@@ -26,8 +24,6 @@ import org.apache.jackrabbit.oak.api.Nod
import org.apache.jackrabbit.oak.api.NodeStateEditor;
import org.apache.jackrabbit.oak.api.NodeStore;
import org.apache.jackrabbit.oak.api.QueryEngine;
-import org.apache.jackrabbit.oak.kernel.KernelNodeStore;
-import org.apache.jackrabbit.oak.query.QueryEngineImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -62,25 +58,14 @@ public class ConnectionImpl implements C
}
static Connection createWorkspaceConnection(SimpleCredentials credentials,
- String workspace, boolean create, String microKernelUrl, String revision)
+ String workspace, NodeStore store, String revision, QueryEngine queryEngine)
throws NoSuchWorkspaceException {
- MicroKernel microKernel = MicroKernelFactory.getInstance(microKernelUrl);
-
- // FIXME: workspace setup must be done elsewhere...
- if (create) {
- String headRev = microKernel.getHeadRevision();
- if (!microKernel.nodeExists('/' + workspace, headRev)) {
- microKernel.commit("/", "+ \"" + workspace + "\" : {}", headRev, null);
- }
- }
-
- NodeStore store = new KernelNodeStore(microKernel); // TODO: pass revision?
+ // TODO set revision!?
NodeState wspRoot = store.getRoot().getChildNode(workspace);
if (wspRoot == null) {
throw new NoSuchWorkspaceException(workspace);
}
- QueryEngine queryEngine = new QueryEngineImpl(microKernel);
return new ConnectionImpl(credentials, workspace, store, wspRoot, queryEngine);
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TmpRepositoryService.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TmpRepositoryService.java?rev=1324877&r1=1324876&r2=1324877&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TmpRepositoryService.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/TmpRepositoryService.java Wed Apr 11 17:19:11 2012
@@ -16,8 +16,15 @@
*/
package org.apache.jackrabbit.oak.core;
+import org.apache.jackrabbit.mk.MicroKernelFactory;
+import org.apache.jackrabbit.mk.api.MicroKernel;
import org.apache.jackrabbit.oak.api.Connection;
+import org.apache.jackrabbit.oak.api.NodeState;
+import org.apache.jackrabbit.oak.api.NodeStateEditor;
+import org.apache.jackrabbit.oak.api.QueryEngine;
import org.apache.jackrabbit.oak.api.RepositoryService;
+import org.apache.jackrabbit.oak.kernel.KernelNodeStore;
+import org.apache.jackrabbit.oak.query.QueryEngineImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -39,10 +46,12 @@ public class TmpRepositoryService implem
// TODO: retrieve default wsp-name from configuration
private static final String DEFAULT_WORKSPACE_NAME = "default";
- private final String microKernelUrl;
+ private final MicroKernel microKernel;
+ private final KernelNodeStore nodeStore;
public TmpRepositoryService(String microKernelUrl) {
- this.microKernelUrl = microKernelUrl;
+ microKernel = MicroKernelFactory.getInstance(microKernelUrl);
+ nodeStore = new KernelNodeStore(microKernel);
}
@Override
@@ -61,17 +70,28 @@ public class TmpRepositoryService implem
} else {
sc = null;
}
+
+ if (sc == null) {
+ throw new LoginException("login failed");
+ }
final String wspName = (workspaceName == null) ? DEFAULT_WORKSPACE_NAME : workspaceName;
final String revision = getRevision(credentials);
- if (sc != null) {
- return ConnectionImpl.createWorkspaceConnection(
- sc, wspName, wspName.equals(DEFAULT_WORKSPACE_NAME),
- microKernelUrl, revision);
- } else {
- throw new LoginException("login failed...");
+ // FIXME: workspace setup must be done elsewhere...
+ if (wspName.equals(DEFAULT_WORKSPACE_NAME)) {
+ NodeState root = nodeStore.getRoot();
+ NodeState wspNode = root.getChildNode(wspName);
+ if (wspNode == null) {
+ NodeStateEditor editor = nodeStore.branch(root);
+ editor.addNode(wspName);
+ nodeStore.merge(editor, editor.getBaseNodeState());
+ }
}
+
+ QueryEngine queryEngine = new QueryEngineImpl(microKernel);
+ return ConnectionImpl.createWorkspaceConnection(sc, wspName, nodeStore, revision,
+ queryEngine);
}
/**