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 2012/02/02 18:37:53 UTC
svn commit: r1239741 - in
/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model:
AbstractNode.java ChildNodeEntries.java ChildNodeEntriesInlined.java
ChildNodeEntriesTree.java MutableNode.java
Author: stefan
Date: Thu Feb 2 17:37:53 2012
New Revision: 1239741
URL: http://svn.apache.org/viewvc?rev=1239741&view=rev
Log:
refactoring persistence logic & cleanup
Modified:
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/AbstractNode.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntries.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesInlined.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesTree.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/MutableNode.java
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=1239741&r1=1239740&r2=1239741&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 Thu Feb 2 17:37:53 2012
@@ -52,14 +52,12 @@ public abstract class AbstractNode imple
this.childEntries = (ChildNodeEntries) srcNode.childEntries.clone();
} else {
this.properties = new HashMap<String, String>(other.getProperties());
- this.childEntries = new ChildNodeEntriesInlined();
-/*
if (other.getChildNodeCount() <= ChildNodeEntries.CAPACITY_THRESHOLD) {
this.childEntries = new ChildNodeEntriesInlined();
} else {
this.childEntries = new ChildNodeEntriesTree();
}
-*/
+
for (Iterator<ChildNodeEntry> it = other.getChildNodeEntries(0, -1); it.hasNext(); ) {
ChildNodeEntry cne = it.next();
this.childEntries.add(cne);
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntries.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntries.java?rev=1239741&r1=1239740&r2=1239741&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntries.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntries.java Thu Feb 2 17:37:53 2012
@@ -27,6 +27,8 @@ public interface ChildNodeEntries extend
Object clone();
+ boolean inlined();
+
//-------------------------------------------------------------< read ops >
int getCount();
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesInlined.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesInlined.java?rev=1239741&r1=1239740&r2=1239741&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesInlined.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesInlined.java Thu Feb 2 17:37:53 2012
@@ -60,16 +60,24 @@ public class ChildNodeEntriesInlined imp
return clone;
}
+ @Override
+ public boolean inlined() {
+ return true;
+ }
+
//-------------------------------------------------------------< read ops >
+ @Override
public int getCount() {
return entries.size();
}
+ @Override
public ChildNodeEntry get(String name) {
return entries.get(name);
}
+ @Override
public Iterator<String> getNames(int offset, int count) {
if (offset < 0 || count < -1) {
throw new IllegalArgumentException();
@@ -88,6 +96,7 @@ public class ChildNodeEntriesInlined imp
}
}
+ @Override
public Iterator<ChildNodeEntry> getEntries(int offset, int count) {
if (offset < 0 || count < -1) {
throw new IllegalArgumentException();
@@ -107,14 +116,17 @@ public class ChildNodeEntriesInlined imp
//------------------------------------------------------------< write ops >
+ @Override
public ChildNodeEntry add(ChildNodeEntry entry) {
return entries.put(entry.getName(), entry);
}
+ @Override
public ChildNodeEntry remove(String name) {
return entries.remove(name);
}
+ @Override
public ChildNodeEntry rename(String oldName, String newName) {
if (oldName.equals(newName)) {
return entries.get(oldName);
@@ -137,6 +149,7 @@ public class ChildNodeEntriesInlined imp
return oldCNE;
}
+ @Override
public ChildNodeEntry moveAfter(String name, String sibling) {
ChildNodeEntry target = entries.remove(name);
if (target == null) {
@@ -161,6 +174,7 @@ public class ChildNodeEntriesInlined imp
return target;
}
+ @Override
public ChildNodeEntry moveBefore(String name, String sibling) {
ChildNodeEntry target = entries.remove(name);
if (target == null) {
@@ -187,6 +201,7 @@ public class ChildNodeEntriesInlined imp
//-------------------------------------------------------------< diff ops >
+ @Override
public Iterator<ChildNodeEntry> getAdded(final ChildNodeEntries other) {
if (equals(other)) {
return EMPTY_ITER;
@@ -200,6 +215,7 @@ public class ChildNodeEntriesInlined imp
};
}
+ @Override
public Iterator<ChildNodeEntry> getRemoved(final ChildNodeEntries other) {
if (equals(other)) {
return EMPTY_ITER;
@@ -213,6 +229,7 @@ public class ChildNodeEntriesInlined imp
};
}
+ @Override
public Iterator<ChildNodeEntry> getModified(final ChildNodeEntries other) {
if (equals(other)) {
return EMPTY_ITER;
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesTree.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesTree.java?rev=1239741&r1=1239740&r2=1239741&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesTree.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesTree.java Thu Feb 2 17:37:53 2012
@@ -40,6 +40,11 @@ public class ChildNodeEntriesTree implem
ChildNodeEntriesTree() {
}
+ @Override
+ public boolean inlined() {
+ return false;
+ }
+
//------------------------------------------------------------< overrides >
@Override
@@ -69,10 +74,12 @@ public class ChildNodeEntriesTree implem
//-------------------------------------------------------------< read ops >
+ @Override
public int getCount() {
return count;
}
+ @Override
public ChildNodeEntry get(String name) {
IndexEntry entry = index[keyToIndex(name)];
if (entry == null) {
@@ -87,6 +94,7 @@ public class ChildNodeEntriesTree implem
}
}
+ @Override
public Iterator<String> getNames(int offset, int cnt) {
if (offset < 0 || cnt < -1) {
throw new IllegalArgumentException();
@@ -109,6 +117,7 @@ public class ChildNodeEntriesTree implem
};
}
+ @Override
public Iterator<ChildNodeEntry> getEntries(int offset, int cnt) {
if (offset < 0 || cnt < -1) {
throw new IllegalArgumentException();
@@ -152,6 +161,7 @@ public class ChildNodeEntriesTree implem
//------------------------------------------------------------< write ops >
+ @Override
public ChildNodeEntry add(ChildNodeEntry entry) {
int idx = keyToIndex(entry.getName());
IndexEntry ie = index[idx];
@@ -196,6 +206,7 @@ public class ChildNodeEntriesTree implem
}
}
+ @Override
public ChildNodeEntry remove(String name) {
int idx = keyToIndex(name);
IndexEntry ie = index[idx];
@@ -235,6 +246,7 @@ public class ChildNodeEntriesTree implem
}
}
+ @Override
public ChildNodeEntry rename(String oldName, String newName) {
if (oldName.equals(newName)) {
return get(oldName);
@@ -247,11 +259,13 @@ public class ChildNodeEntriesTree implem
return old;
}
+ @Override
public ChildNodeEntry moveAfter(String name, String sibling) {
// not supported, silently ignore
return get(name);
}
+ @Override
public ChildNodeEntry moveBefore(String name, String sibling) {
// not supported, silently ignore
return get(name);
@@ -259,6 +273,7 @@ public class ChildNodeEntriesTree implem
//-------------------------------------------------------------< diff ops >
+ @Override
public Iterator<ChildNodeEntry> getAdded(final ChildNodeEntries other) {
if (equals(other)) {
return EMPTY_ITER;
@@ -322,6 +337,7 @@ public class ChildNodeEntriesTree implem
}
}
+ @Override
public Iterator<ChildNodeEntry> getRemoved(final ChildNodeEntries other) {
if (equals(other)) {
return EMPTY_ITER;
@@ -385,6 +401,7 @@ public class ChildNodeEntriesTree implem
}
}
+ @Override
public Iterator<ChildNodeEntry> getModified(final ChildNodeEntries other) {
if (equals(other)) {
return EMPTY_ITER;
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/MutableNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/MutableNode.java?rev=1239741&r1=1239740&r2=1239741&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/MutableNode.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/MutableNode.java Thu Feb 2 17:37:53 2012
@@ -16,10 +16,14 @@
*/
package org.apache.jackrabbit.mk.model;
+import org.apache.jackrabbit.mk.store.Binding;
+import org.apache.jackrabbit.mk.store.PersistHook;
+import org.apache.jackrabbit.mk.store.RevisionStore;
+
/**
*
*/
-public class MutableNode extends AbstractNode {
+public class MutableNode extends AbstractNode implements PersistHook {
public MutableNode() {
}
@@ -39,4 +43,23 @@ public class MutableNode extends Abstrac
public ChildNodeEntry rename(String oldName, String newName) {
return childEntries.rename(oldName, newName);
}
+
+ @Override
+ public void serialize(Binding binding) throws Exception {
+ super.serialize(binding);
+ }
+
+ //----------------------------------------------------------< PersistHook >
+
+ @Override
+ public void prePersist(RevisionStore store) throws Exception {
+ if (!childEntries.inlined()) {
+ // todo persist dirty buckets (delegate to ChildNodeEntries instance?)
+ }
+ }
+
+ @Override
+ public void postPersist(RevisionStore store) throws Exception {
+ // there's nothing to do
+ }
}