You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by dp...@apache.org on 2012/02/24 17:25:27 UTC
svn commit: r1293323 - in /jackrabbit/sandbox/microkernel/src:
main/java/org/apache/jackrabbit/mk/ main/java/org/apache/jackrabbit/mk/model/
test/java/org/apache/jackrabbit/mk/store/
Author: dpfister
Date: Fri Feb 24 16:25:26 2012
New Revision: 1293323
URL: http://svn.apache.org/viewvc?rev=1293323&view=rev
Log:
Introduce unused revisions clean-up (WIP)
- add new constructors for test-setup
- remove provider in arguments (already available as instance variable)
- add first test
Added:
jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/store/
jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/store/CopyHeadRevisionTest.java (with props)
Modified:
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/MicroKernelImpl.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/Repository.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/AbstractNode.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/Node.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/StoredNode.java
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/MicroKernelImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/MicroKernelImpl.java?rev=1293323&r1=1293322&r2=1293323&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/MicroKernelImpl.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/MicroKernelImpl.java Fri Feb 24 16:25:26 2012
@@ -53,6 +53,15 @@ public class MicroKernelImpl implements
public MicroKernelImpl(String homeDir) throws MicroKernelException {
init(homeDir);
}
+
+ /**
+ * Alternate constructor, used for testing.
+ *
+ * @param rep repository, already initialized
+ */
+ public MicroKernelImpl(Repository rep) {
+ this.rep = rep;
+ }
protected void init(String homeDir) throws MicroKernelException {
try {
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=1293323&r1=1293322&r2=1293323&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 Fri Feb 24 16:25:26 2012
@@ -34,9 +34,8 @@ import org.apache.jackrabbit.mk.util.Pat
*/
public class Repository {
- final String homeDir;
- boolean initialized;
-
+ private final String homeDir;
+ private boolean initialized;
private final DefaultRevisionStore rs;
public Repository(String homeDir) throws Exception {
@@ -47,17 +46,25 @@ public class Repository {
this.homeDir = home.getCanonicalPath();
rs = new DefaultRevisionStore();
-
- initialized = false;
}
-
+
+ /**
+ * Alternate constructor, used for testing.
+ *
+ * @param rs revision store, already initialized
+ */
+ public Repository(DefaultRevisionStore rs) {
+ this.homeDir = null;
+ this.rs = rs;
+
+ initialized = true;
+ }
+
public void init() throws Exception {
if (initialized) {
return;
}
-
- File home = new File(homeDir);
- rs.initialize(home);
+ rs.initialize(new File(homeDir));
initialized = true;
}
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/AbstractNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/AbstractNode.java?rev=1293323&r1=1293322&r2=1293323&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/AbstractNode.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/AbstractNode.java Fri Feb 24 16:25:26 2012
@@ -88,7 +88,7 @@ public abstract class AbstractNode imple
return childEntries.getEntries(offset, count);
}
- public Iterator<ChildNode> getChildNodes(int offset, int count, final RevisionProvider provider)
+ public Iterator<ChildNode> getChildNodes(int offset, int count)
throws Exception {
if (offset < 0 || count < -1) {
throw new IllegalArgumentException();
@@ -117,7 +117,7 @@ public abstract class AbstractNode imple
};
}
- public Node getNode(String relPath, RevisionProvider provider)
+ public Node getNode(String relPath)
throws NotFoundException, Exception {
String[] names = PathUtils.split(relPath);
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/Node.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/Node.java?rev=1293323&r1=1293322&r2=1293323&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/Node.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/Node.java Fri Feb 24 16:25:26 2012
@@ -17,7 +17,6 @@
package org.apache.jackrabbit.mk.model;
import org.apache.jackrabbit.mk.store.Binding;
-import org.apache.jackrabbit.mk.store.RevisionProvider;
import org.apache.jackrabbit.mk.store.NotFoundException;
import java.util.Iterator;
@@ -40,8 +39,8 @@ public interface Node {
*/
Iterator<ChildNodeEntry> getChildNodeEntries(int offset, int count);
- Iterator<ChildNode> getChildNodes(int offset, int count, RevisionProvider provider) throws Exception;
- Node getNode(String relPath, RevisionProvider provider) throws NotFoundException, Exception;
+ Iterator<ChildNode> getChildNodes(int offset, int count) throws Exception;
+ Node getNode(String relPath) throws NotFoundException, Exception;
void diff(Node other, NodeDiffHandler handler);
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/StoredNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/StoredNode.java?rev=1293323&r1=1293322&r2=1293323&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/StoredNode.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/StoredNode.java Fri Feb 24 16:25:26 2012
@@ -83,13 +83,13 @@ public class StoredNode extends Abstract
return new UnmodifiableIterator<String>(super.getChildNodeNames(offset, count));
}
- public Iterator<ChildNode> getChildNodes(int offset, int count, RevisionProvider provider)
+ public Iterator<ChildNode> getChildNodes(int offset, int count)
throws Exception {
- return new UnmodifiableIterator<ChildNode>(super.getChildNodes(offset, count, provider));
+ return new UnmodifiableIterator<ChildNode>(super.getChildNodes(offset, count));
}
- public Node getNode(String relPath, RevisionProvider provider) throws NotFoundException, Exception {
- Node result = super.getNode(relPath, provider);
+ public Node getNode(String relPath) throws NotFoundException, Exception {
+ Node result = super.getNode(relPath);
if (!(result instanceof StoredNode)) {
// todo return a StoredNode instance instead?
}
Added: jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/store/CopyHeadRevisionTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/store/CopyHeadRevisionTest.java?rev=1293323&view=auto
==============================================================================
--- jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/store/CopyHeadRevisionTest.java (added)
+++ jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/store/CopyHeadRevisionTest.java Fri Feb 24 16:25:26 2012
@@ -0,0 +1,85 @@
+/*
+ * 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 java.io.File;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.jackrabbit.mk.MicroKernelImpl;
+import org.apache.jackrabbit.mk.Repository;
+import org.apache.jackrabbit.mk.fs.FileUtils;
+import org.apache.jackrabbit.mk.model.ChildNode;
+import org.apache.jackrabbit.mk.model.MutableCommit;
+import org.apache.jackrabbit.mk.model.Node;
+import org.apache.jackrabbit.mk.model.StoredCommit;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Use-case: start off a new revision store that contains just the head revision
+ * and its nodes.
+ */
+public class CopyHeadRevisionTest {
+
+ @Before
+ public void setup() throws Exception {
+ FileUtils.deleteRecursive("target/mk1", false);
+ FileUtils.deleteRecursive("target/mk2", false);
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ @Test
+ public void testCopyHeadRevisionToNewStore() throws Exception {
+ DefaultRevisionStore rsFrom = new DefaultRevisionStore();
+ rsFrom.initialize(new File("target/mk1"));
+
+ MicroKernelImpl mkFrom = new MicroKernelImpl(new Repository(rsFrom));
+ mkFrom.commit("/", "+\"a\" : { \"c\":{}, \"d\":{} }", mkFrom.getHeadRevision(), null);
+ mkFrom.commit("/", "+\"b\" : {}", mkFrom.getHeadRevision(), null);
+ mkFrom.commit("/b", "+\"e\" : {}", mkFrom.getHeadRevision(), null);
+
+ StoredCommit commitFrom = rsFrom.getHeadCommit();
+
+ DefaultRevisionStore rsTo = new DefaultRevisionStore();
+ rsTo.initialize(new File("target/mk2"));
+
+ MutableCommit commitTo = new MutableCommit();
+ commitTo.setCommitTS(commitFrom.getCommitTS());
+ commitTo.setMsg(commitFrom.getMsg());
+ commitTo.setParentId(commitTo.getParentId());
+ commitTo.setRootNodeId(commitFrom.getRootNodeId());
+ rsTo.putCommit(commitTo);
+
+ MicroKernelImpl mkTo = new MicroKernelImpl(new Repository(rsTo));
+// System.out.println(mkTo.getNodes("/", mkTo.getHeadRevision(), 0, 0, -1));
+ }
+
+ private void traverse(Node node) throws Exception {
+ Map<String,String> props = node.getProperties();
+ Iterator<ChildNode> iter = node.getChildNodes(0, -1);
+ while (iter.hasNext()) {
+ ChildNode c = iter.next();
+// System.out.println(c.getName());
+ traverse(c.getNode());
+ }
+ }
+}
Propchange: jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/store/CopyHeadRevisionTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jackrabbit/sandbox/microkernel/src/test/java/org/apache/jackrabbit/mk/store/CopyHeadRevisionTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev Url