Index: oak-mk/src/main/java/org/apache/jackrabbit/mk/core/Repository.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-mk/src/main/java/org/apache/jackrabbit/mk/core/Repository.java (revision 1324713) +++ oak-mk/src/main/java/org/apache/jackrabbit/mk/core/Repository.java (revision ) @@ -16,9 +16,6 @@ */ package org.apache.jackrabbit.mk.core; -import java.io.Closeable; -import java.io.File; - import org.apache.jackrabbit.mk.blobs.BlobStore; import org.apache.jackrabbit.mk.blobs.FileBlobStore; import org.apache.jackrabbit.mk.blobs.MemoryBlobStore; @@ -34,6 +31,9 @@ import org.apache.jackrabbit.mk.util.IOUtils; import org.apache.jackrabbit.mk.util.PathUtils; +import java.io.Closeable; +import java.io.File; + /** * */ @@ -158,7 +158,7 @@ } public NodeState getNodeState(Id revId, String path) - throws NotFoundException, Exception { + throws Exception { if (!initialized) { throw new IllegalStateException("not initialized"); } else if (!PathUtils.isAbsolute(path)) { @@ -169,8 +169,7 @@ for (String name : PathUtils.split(path)) { node = node.getChildNode(name); if (node == null) { - throw new NotFoundException( - "Path " + path + " not found in revision " + revId); + return null; } } return node; Index: oak-mk/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-mk/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java (revision 1324713) +++ oak-mk/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java (revision ) @@ -199,7 +199,7 @@ * * @param path path denoting root of node tree to be retrieved * @param revisionId revision, if null the current head revision is assumed - * @return node tree in JSON format + * @return node tree in JSON format or {@code null} if the node does not exist * @throws MicroKernelException if an error occurs */ String /* jsonTree */ getNodes(String path, String revisionId) throws MicroKernelException; @@ -237,7 +237,7 @@ * @param filter (optional) filter criteria * (e.g. names of properties to be included, etc); * TODO specify format and semantics - * @return node tree in JSON format + * @return node tree in JSON format of {@code null} if the node does not exist * @throws MicroKernelException if an error occurs */ String /* jsonTree */ getNodes(String path, String revisionId, int depth, long offset, int count, String filter) throws MicroKernelException; Index: oak-mk/src/main/java/org/apache/jackrabbit/mk/core/MicroKernelImpl.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>MacRoman =================================================================== --- oak-mk/src/main/java/org/apache/jackrabbit/mk/core/MicroKernelImpl.java (revision 1324713) +++ oak-mk/src/main/java/org/apache/jackrabbit/mk/core/MicroKernelImpl.java (revision ) @@ -16,12 +16,6 @@ */ package org.apache.jackrabbit.mk.core; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - import org.apache.jackrabbit.mk.api.MicroKernel; import org.apache.jackrabbit.mk.api.MicroKernelException; import org.apache.jackrabbit.mk.json.JsopBuilder; @@ -40,6 +34,12 @@ import org.apache.jackrabbit.mk.util.CommitGate; import org.apache.jackrabbit.mk.util.PathUtils; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + /** * */ @@ -233,16 +233,8 @@ final HashMap addedNodes = new HashMap(); final HashMap removedNodes = new HashMap(); NodeState node1, node2; - try { - node1 = rep.getNodeState(fromRevisionId, path); + node1 = rep.getNodeState(fromRevisionId, path); - } catch (NotFoundException e) { - node1 = null; - } - try { - node2 = rep.getNodeState(toRevisionId, path); + node2 = rep.getNodeState(toRevisionId, path); - } catch (NotFoundException e) { - node2 = null; - } if (node1 == null) { if (node2 != null) { @@ -406,7 +398,13 @@ Id revisionId = revision == null ? getHeadRevisionId() : Id.fromString(revision); try { - return rep.getNodeState(revisionId, path).getChildNodeCount(); + NodeState nodeState = rep.getNodeState(revisionId, path); + if (nodeState == null) { + throw new NotFoundException(path); + } + else { + return nodeState.getChildNodeCount(); + } } catch (Exception e) { throw new MicroKernelException(e); } @@ -427,8 +425,14 @@ try { JsopBuilder buf = new JsopBuilder().object(); - toJson(buf, rep.getNodeState(revisionId, path), depth, (int) offset, count, true); + NodeState nodeState = rep.getNodeState(revisionId, path); + if (nodeState == null) { + return null; + } + else { + toJson(buf, nodeState, depth, (int) offset, count, true); - return buf.endObject().toString(); + return buf.endObject().toString(); + } } catch (Exception e) { throw new MicroKernelException(e); }