You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by th...@apache.org on 2012/01/25 09:22:28 UTC
svn commit: r1235673 - in
/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem:
NodeImpl.java NodeListLarge.java NodeListSmall.java NodeListTrie.java
Revision.java
Author: thomasm
Date: Wed Jan 25 08:22:27 2012
New Revision: 1235673
URL: http://svn.apache.org/viewvc?rev=1235673&view=rev
Log:
Small child node lists are orderable, large lists are not.
Removed:
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/NodeListLarge.java
Modified:
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/NodeImpl.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/NodeListSmall.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/NodeListTrie.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/Revision.java
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/NodeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/NodeImpl.java?rev=1235673&r1=1235672&r2=1235673&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/NodeImpl.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/NodeImpl.java Wed Jan 25 08:22:27 2012
@@ -623,11 +623,7 @@ public class NodeImpl implements Cache.V
String value = t.readRawValue();
if (key.length() > 0 && key.charAt(0) == ':') {
if (key.equals(CHILDREN)) {
- if (MemoryKernelImpl.SORT_CHILDREN) {
- node.childNodes = NodeListTrie.read(t, map, value);
- } else {
- node.childNodes = NodeListLarge.read(t, map, value);
- }
+ node.childNodes = NodeListTrie.read(t, map, value);
} else if (key.equals(DESCENDANT_COUNT)) {
node.descendantCount = Long.parseLong(value);
descendantCountSet = true;
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/NodeListSmall.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/NodeListSmall.java?rev=1235673&r1=1235672&r2=1235673&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/NodeListSmall.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/NodeListSmall.java Wed Jan 25 08:22:27 2012
@@ -58,51 +58,27 @@ public class NodeListSmall implements No
}
private int find(String name) {
- if (MemoryKernelImpl.SORT_CHILDREN) {
- // copy, to avoid concurrency issues
- int last = lastNameIndexCache;
- if (last < size && names[last].equals(name)) {
- return last;
+ // copy, to avoid concurrency issues
+ int last = lastNameIndexCache;
+ if (last < size && names[sort[last]].equals(name)) {
+ return last;
+ }
+ int min = 0, max = size - 1;
+ while (min <= max) {
+ int test = (min + max) >>> 1;
+ int compare = names[sort[test]].compareTo(name);
+ if (compare == 0) {
+ lastNameIndexCache = test;
+ return test;
+ }
+ if (compare > 0) {
+ max = test - 1;
+ } else if (compare < 0) {
+ min = test + 1;
}
- int min = 0, max = size - 1;
- while (min <= max) {
- int test = (min + max) >>> 1;
- int compare = names[test].compareTo(name);
- if (compare == 0) {
- lastNameIndexCache = test;
- return test;
- }
- if (compare > 0) {
- max = test - 1;
- } else if (compare < 0) {
- min = test + 1;
- }
- }
- // not found: return negative insertion point
- return -(min + 1);
- } else {
- // copy, to avoid concurrency issues
- int last = lastNameIndexCache;
- if (last < size && names[sort[last]].equals(name)) {
- return last;
- }
- int min = 0, max = size - 1;
- while (min <= max) {
- int test = (min + max) >>> 1;
- int compare = names[sort[test]].compareTo(name);
- if (compare == 0) {
- lastNameIndexCache = test;
- return test;
- }
- if (compare > 0) {
- max = test - 1;
- } else if (compare < 0) {
- min = test + 1;
- }
- }
- // not found: return negative insertion point
- return -(min + 1);
}
+ // not found: return negative insertion point
+ return -(min + 1);
}
public NodeId get(String name) {
@@ -110,11 +86,7 @@ public class NodeListSmall implements No
if (index < 0) {
throw ExceptionFactory.get("Node not found: " + name);
}
- if (MemoryKernelImpl.SORT_CHILDREN) {
- return children[index];
- } else {
- return children[sort[index]];
- }
+ return children[sort[index]];
}
public void add(String name, NodeId x) {
@@ -124,14 +96,9 @@ public class NodeListSmall implements No
}
index = -index - 1;
name = StringCache.cache(name);
- if (MemoryKernelImpl.SORT_CHILDREN) {
- names = ArrayUtils.arrayInsert(names, index, name);
- children = ArrayUtils.arrayInsert(children, index, x);
- } else {
- names = ArrayUtils.arrayInsert(names, size, name);
- children = ArrayUtils.arrayInsert(children, size, x);
- sort = ArrayUtils.arrayInsert(sort, index, size);
- }
+ names = ArrayUtils.arrayInsert(names, size, name);
+ children = ArrayUtils.arrayInsert(children, size, x);
+ sort = ArrayUtils.arrayInsert(sort, index, size);
size++;
}
@@ -161,28 +128,20 @@ public class NodeListSmall implements No
if (index < 0) {
throw ExceptionFactory.get("Node not found: " + name);
}
- if (MemoryKernelImpl.SORT_CHILDREN) {
- NodeId result = children[index];
- names = ArrayUtils.arrayRemove(names, index);
- children = ArrayUtils.arrayRemove(children, index);
- size--;
- return result;
- } else {
- int s = sort[index];
- NodeId result = children[s];
- names = ArrayUtils.arrayRemove(names, s);
- children = ArrayUtils.arrayRemove(children, s);
- sort = ArrayUtils.arrayRemove(sort, index);
- if (s != size - 1) {
- for (int i = 0; i < sort.length; i++) {
- if (sort[i] >= s) {
- sort[i]--;
- }
+ int s = sort[index];
+ NodeId result = children[s];
+ names = ArrayUtils.arrayRemove(names, s);
+ children = ArrayUtils.arrayRemove(children, s);
+ sort = ArrayUtils.arrayRemove(sort, index);
+ if (s != size - 1) {
+ for (int i = 0; i < sort.length; i++) {
+ if (sort[i] >= s) {
+ sort[i]--;
}
}
- size--;
- return result;
}
+ size--;
+ return result;
}
public String toString() {
@@ -198,11 +157,7 @@ public class NodeListSmall implements No
public NodeList createClone(NodeMap map, long revId) {
NodeList result = new NodeListSmall(names, children, sort, size);
if (size > map.getMaxMemoryChildren()) {
- if (MemoryKernelImpl.SORT_CHILDREN) {
- return new NodeListTrie(map, result, size, revId);
- } else {
- return new NodeListLarge(map, result, size, revId);
- }
+ return new NodeListTrie(map, result, size, revId);
}
return result;
}
@@ -245,14 +200,9 @@ public class NodeListSmall implements No
if (size == 0) {
return 0;
}
- if (MemoryKernelImpl.SORT_CHILDREN) {
- return Arrays.hashCode(names) ^
- Arrays.hashCode(children);
- } else {
- return Arrays.hashCode(names) ^
- Arrays.hashCode(children) ^
- Arrays.hashCode(sort);
- }
+ return Arrays.hashCode(names) ^
+ Arrays.hashCode(children) ^
+ Arrays.hashCode(sort);
}
public boolean equals(Object other) {
@@ -265,14 +215,9 @@ public class NodeListSmall implements No
if (size == 0) {
return true;
}
- if (MemoryKernelImpl.SORT_CHILDREN) {
- return Arrays.equals(children, o.children) &&
+ return Arrays.equals(sort, o.sort) &&
+ Arrays.equals(children, o.children) &&
Arrays.equals(names, o.names);
- } else {
- return Arrays.equals(sort, o.sort) &&
- Arrays.equals(children, o.children) &&
- Arrays.equals(names, o.names);
- }
}
}
return false;
@@ -281,28 +226,15 @@ public class NodeListSmall implements No
public void updateHash(NodeMap map, OutputStream out) throws IOException {
if (children != null) {
try {
- if (MemoryKernelImpl.SORT_CHILDREN) {
- for (int i = 0, len = names.length; i < len; i++) {
- String n = names[i];
- IOUtils.writeString(out, n);
- NodeId c = children[i];
- byte[] hash = c.getHash();
- if (hash == null) {
- hash = map.getNode(c.getLong()).getHash();
- }
- out.write(hash);
- }
- } else {
- for (int s : sort) {
- String n = names[s];
- IOUtils.writeString(out, n);
- NodeId c = children[s];
- byte[] hash = c.getHash();
- if (hash == null) {
- hash = map.getNode(c.getLong()).getHash();
- }
- out.write(hash);
+ for (int s : sort) {
+ String n = names[s];
+ IOUtils.writeString(out, n);
+ NodeId c = children[s];
+ byte[] hash = c.getHash();
+ if (hash == null) {
+ hash = map.getNode(c.getLong()).getHash();
}
+ out.write(hash);
}
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/NodeListTrie.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/NodeListTrie.java?rev=1235673&r1=1235672&r2=1235673&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/NodeListTrie.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/NodeListTrie.java Wed Jan 25 08:22:27 2012
@@ -70,25 +70,13 @@ public class NodeListTrie implements Nod
}
}
this.prefixLength = len;
- String last = null;
- NodeListSmall partList = new NodeListSmall();
for (long i = 0;; i++) {
String n = list.getName(i);
if (n == null) {
break;
}
- String p = getPrefix(n, len);
- if (last == null || p.equals(last)) {
- partList.add(n, list.get(n));
- last = p;
- } else {
- addChild(children.size(), last, partList);
- partList = new NodeListSmall();
- partList.add(n, list.get(n));
- last = p;
- }
+ add(n, list.get(n));
}
- addChild(children.size(), last, partList);
this.size = size;
}
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/Revision.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/Revision.java?rev=1235673&r1=1235672&r2=1235673&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/Revision.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/mem/Revision.java Wed Jan 25 08:22:27 2012
@@ -124,7 +124,7 @@ public class Revision implements Compara
} else {
commit.setProperty("diff", "[" + diff + "]");
}
- if (msg != null) {
+ if (msg != null && msg.length() > 0) {
commit.setProperty("msg", JsopBuilder.encode(msg));
}
return head.setChild("commit", commit, id);