You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by st...@apache.org on 2011/11/24 18:10:49 UTC
svn commit: r1205934 - in
/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk:
Repository.java store/InMemPersistenceManager.java
Author: stefan
Date: Thu Nov 24 17:10:48 2011
New Revision: 1205934
URL: http://svn.apache.org/viewvc?rev=1205934&view=rev
Log:
simple InMemPersistenceManager for testing purposes
Added:
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/InMemPersistenceManager.java
Modified:
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/Repository.java
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/Repository.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/Repository.java?rev=1205934&r1=1205933&r2=1205934&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/Repository.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/Repository.java Thu Nov 24 17:10:48 2011
@@ -26,6 +26,7 @@ import org.apache.jackrabbit.mk.store.Ab
import org.apache.jackrabbit.mk.store.BDbPersistenceManager;
import org.apache.jackrabbit.mk.store.FSPersistenceManager;
import org.apache.jackrabbit.mk.store.H2PersistenceManager;
+import org.apache.jackrabbit.mk.store.InMemPersistenceManager;
import org.apache.jackrabbit.mk.store.MongoPersistenceManager;
import org.apache.jackrabbit.mk.store.NotFoundException;
import org.apache.jackrabbit.mk.store.RevisionStore;
@@ -48,8 +49,9 @@ public class Repository {
}
this.homeDir = home.getCanonicalPath();
- //pm = new MongoPersistenceManager();
pm = new H2PersistenceManager();
+ //pm = new InMemPersistenceManager();
+ //pm = new MongoPersistenceManager();
//pm = new BDbPersistenceManager();
//pm = new FSPersistenceManager();
Added: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/InMemPersistenceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/InMemPersistenceManager.java?rev=1205934&view=auto
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/InMemPersistenceManager.java (added)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/InMemPersistenceManager.java Thu Nov 24 17:10:48 2011
@@ -0,0 +1,124 @@
+/*
+ * 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.mk.store;
+
+import org.apache.jackrabbit.mk.blobs.BlobStore;
+import org.apache.jackrabbit.mk.blobs.MemoryBlobStore;
+import org.apache.jackrabbit.mk.model.Commit;
+import org.apache.jackrabbit.mk.model.Node;
+import org.apache.jackrabbit.mk.model.StoredCommit;
+import org.apache.jackrabbit.mk.model.StoredNode;
+import org.apache.jackrabbit.mk.store.util.Serializer;
+import org.apache.jackrabbit.mk.util.StringUtils;
+
+import java.io.File;
+import java.io.InputStream;
+import java.security.MessageDigest;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ *
+ */
+public class InMemPersistenceManager extends AbstractPersistenceManager {
+
+
+ private final Map<String, StoredNode> nodes = Collections.synchronizedMap(new HashMap<String, StoredNode>());
+ private final Map<String, StoredCommit> commits = Collections.synchronizedMap(new HashMap<String, StoredCommit>());
+ private final BlobStore blobs = new MemoryBlobStore();
+
+ private String head;
+
+ @Override
+ protected void doInitialize(File homeDir) throws Exception {
+ head = null;
+ }
+
+ @Override
+ protected void doClose() {
+ }
+
+ @Override
+ protected String readHead() throws Exception {
+ return head;
+ }
+
+ @Override
+ protected void writeHead(String id) throws Exception {
+ head = id;
+ }
+
+ @Override
+ protected StoredNode readNode(String id) throws NotFoundException, Exception {
+ StoredNode node = nodes.get(id);
+ if (node != null) {
+ return node;
+ } else {
+ throw new NotFoundException(id);
+ }
+ }
+
+ @Override
+ protected String writeNode(Node node) throws Exception {
+ byte[] bytes = Serializer.toBytes(node);
+ String id = StringUtils.convertBytesToHex(MessageDigest.getInstance("SHA-1").digest(bytes));
+
+ if (!nodes.containsKey(id)) {
+ nodes.put(id, Serializer.fromBytes(id, bytes, Node.class));
+ }
+
+ return id;
+ }
+
+ @Override
+ protected StoredCommit readCommit(String id) throws NotFoundException, Exception {
+ StoredCommit commit = commits.get(id);
+ if (commit != null) {
+ return commit;
+ } else {
+ throw new NotFoundException(id);
+ }
+ }
+
+ @Override
+ protected String writeCommit(Commit commit) throws Exception {
+ byte[] bytes = Serializer.toBytes(commit);
+ String id = StringUtils.convertBytesToHex(MessageDigest.getInstance("SHA-1").digest(bytes));
+
+ if (!commits.containsKey(id)) {
+ commits.put(id, Serializer.fromBytes(id, bytes, Commit.class));
+ }
+
+ return id;
+ }
+
+ @Override
+ protected String writeBlob(InputStream in) throws Exception {
+ return blobs.writeBlob(in);
+ }
+
+ @Override
+ protected int readBlob(String blobId, long pos, byte[] buff, int off, int length) throws NotFoundException, Exception {
+ return blobs.readBlob(blobId, pos, buff, off, length);
+ }
+
+ @Override
+ protected long blobLength(String blobId) throws NotFoundException, Exception {
+ return blobs.getBlobLength(blobId);
+ }
+}