You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by md...@apache.org on 2011/12/17 00:15:03 UTC
svn commit: r1215335 - in
/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel:
ItemInfos.java RepositoryServiceImpl.java
Author: mduerig
Date: Fri Dec 16 23:15:03 2011
New Revision: 1215335
URL: http://svn.apache.org/viewvc?rev=1215335&view=rev
Log:
Microkernel based Jackrabbit prototype (WIP)
optimize caching to avoid reading first chunk of child nodes twice from Microkernel
Modified:
jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/ItemInfos.java
jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/RepositoryServiceImpl.java
Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/ItemInfos.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/ItemInfos.java?rev=1215335&r1=1215334&r2=1215335&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/ItemInfos.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/ItemInfos.java Fri Dec 16 23:15:03 2011
@@ -60,8 +60,7 @@ public final class ItemInfos {
private ItemInfos() {}
public static Iterator<? extends ItemInfo> buildItemInfos(Path rootPath, final Path targetPath,
- String json, Function1<String, QValue> binaryHandler)
- throws RepositoryException {
+ String json, Function1<String, QValue> binaryHandler) throws RepositoryException {
final List<ItemInfo> itemInfos = new ArrayList<ItemInfo>();
final ItemInfo[] targetInfo = new ItemInfo[1];
@@ -69,7 +68,7 @@ public final class ItemInfos {
Listener listener = new Listener() {
@Override
public void createNodeInfo(NodeInfo nodeInfo) {
- if (nodeInfo.getChildInfos() != null) { // null indicates an empty node. Do not include!
+ if (nodeInfo.getChildInfos() != null) { // xxx hack: null indicates an empty node. Do not include!
if (targetPath.equals(nodeInfo.getPath())) {
targetInfo[0] = nodeInfo;
}
@@ -171,7 +170,7 @@ public final class ItemInfos {
super.object(parser, key, tokenizer);
try {
- nodeInfoBuilder.includeChildInfos(!isEmpty);
+ nodeInfoBuilder.includeChildInfos(!isEmpty); // xxx hack: mark empty node
nodeInfoBuilder = nodeInfoBuilder.build();
isEmpty = false;
}
Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/RepositoryServiceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/RepositoryServiceImpl.java?rev=1215335&r1=1215334&r2=1215335&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/RepositoryServiceImpl.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-spi2microkernel/src/main/java/org/apache/jackrabbit/spi2microkernel/RepositoryServiceImpl.java Fri Dec 16 23:15:03 2011
@@ -400,7 +400,10 @@ public class RepositoryServiceImpl exten
private void nextChunk() {
try {
- String json = microKernel.getNodes(mkPath, rev, 1, pos, CHILD_NODE_CHUNK_SIZE);
+ // First chunk does not need child nodes. These are most probably
+ // in the cache already from a preceding call to getItemInfos
+ int depth = pos == 0 ? 0 : 1;
+ String json = microKernel.getNodes(mkPath, rev, depth, pos, CHILD_NODE_CHUNK_SIZE);
pos += CHILD_NODE_CHUNK_SIZE;
Iterator<? extends ItemInfo> infos = buildItemInfos(path, path, json, readFromDataStore);
NodeInfo info = (NodeInfo) infos.next();