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/03/02 18:32:49 UTC
svn commit: r1296336 - in
/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk:
api/ client/ server/ simple/ store/ wrapper/
Author: stefan
Date: Fri Mar 2 17:32:49 2012
New Revision: 1296336
URL: http://svn.apache.org/viewvc?rev=1296336&view=rev
Log:
readded convenience method mk.getChildNodeCount()
Modified:
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/client/Client.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/MicroKernelServlet.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/simple/SimpleKernelImpl.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/IdFactory.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/wrapper/IndexWrapper.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/wrapper/LogWrapper.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/wrapper/SecurityWrapper.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/wrapper/VirtualRepositoryWrapper.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/wrapper/WrapperBase.java
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java?rev=1296336&r1=1296335&r2=1296336&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java Fri Mar 2 17:32:49 2012
@@ -93,7 +93,6 @@ public interface MicroKernel {
* if < 0, no limit will be applied.
* @return a chronological list of revisions in JSON format.
* @throws MicroKernelException if an error occurs
- * @todo provide a per revision size hint? (TBD)
*/
String /* jsonArray */ getRevisions(long since, int maxEntries)
throws MicroKernelException;
@@ -123,7 +122,7 @@ public interface MicroKernel {
* </pre>
*
* @param fromRevisionId first revision to be returned in journal
- * @param toRevisionId last revision to be returned in journal
+ * @param toRevisionId last revision to be returned in journal, if null the current head revision is assumed
* @return a chronological list of revisions in JSON format
* @throws MicroKernelException if an error occurs
*/
@@ -133,15 +132,17 @@ public interface MicroKernel {
/**
* Returns the JSON diff representation of the changes between the specified
* revisions. The changes will be consolidated if the specified range
- * covers intermediary revisions.
+ * covers intermediary revisions. The revisions need not be in a specified
+ * chronological order.
+ *
* <p/>
* Format:
* <pre>
* [ { "id" : "<revisionId>", "ts" : "<revisionTimestamp>", "msg" : "<commitMessage>", "changes" : "<JSON diff>" }, ... ]
* </pre>
*
- * @param fromRevisionId
- * @param toRevisionId
+ * @param fromRevisionId a revision
+ * @param toRevisionId another revision, if null the current head revision is assumed
* @param path consider only changes that affected the specified subtree at <code>path</code>;
* if null the default "/" is assumed
* @return JSON diff representation of the changes
@@ -157,13 +158,28 @@ public interface MicroKernel {
* Determines whether the specified node exists.
*
* @param path path denoting node
- * @param revisionId revision
+ * @param revisionId revision, if null the current head revision is assumed
* @return <code>true</code> if the specified node exists, otherwise <code>false</code>
* @throws MicroKernelException if an error occurs
*/
boolean nodeExists(String path, String revisionId) throws MicroKernelException;
/**
+ * Returns the number of child nodes of the specified node.
+ * <p/>
+ * This is a convenience method since this information could gathered by
+ * calling <code>getNodes(path, revisionId, 0, 0, 0)</code> and evaluating
+ * the <code>:childNodeCount</code> property.
+ *
+ *
+ * @param path path denoting node
+ * @param revisionId revision, if null the current head revision is assumed
+ * @return the number of child nodes
+ * @throws MicroKernelException if an error occurs
+ */
+ long getChildNodeCount(String path, String revisionId) throws MicroKernelException;
+
+ /**
* Returns the node tree rooted at the specified parent node with depth 1.
* Depth 1 means all properties of the node are returned, including the list
* of child nodes and their properties (including
@@ -198,7 +214,7 @@ public interface MicroKernel {
* <code>getNodes(path, revisionId, 1, 0, -1)</code>
*
* @param path path denoting root of node tree to be retrieved
- * @param revisionId revision
+ * @param revisionId revision, if null the current head revision is assumed
* @return node tree in JSON format
* @throws MicroKernelException if an error occurs
*/
@@ -227,7 +243,7 @@ public interface MicroKernel {
* Offset and count only affect the returned child node list of this node.
*
* @param path path denoting root of node tree to be retrieved
- * @param revisionId revision
+ * @param revisionId revision, if null the current head revision is assumed
* @param depth maximum depth of returned tree
* @param offset start position in child node list (0 to start at the
* beginning)
@@ -253,7 +269,7 @@ public interface MicroKernel {
*
* @param path path denoting target node
* @param jsonDiff changes to be applied in JSON diff format.
- * @param revisionId revision the changes are based on
+ * @param revisionId revision the changes are based on, if null the current head revision is assumed
* @param message commit message
* @return id of newly created revision
* @throws MicroKernelException if an error occurs
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/client/Client.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/client/Client.java?rev=1296336&r1=1296335&r2=1296336&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/client/Client.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/client/Client.java Fri Mar 2 17:32:49 2012
@@ -216,6 +216,23 @@ public class Client implements MicroKern
}
}
+ public synchronized long getChildNodeCount(String path, String revisionId)
+ throws MicroKernelException {
+
+ Request request = null;
+
+ try {
+ request = createRequest("getChildNodeCount");
+ request.addParameter("path", path);
+ request.addParameter("revision_id", revisionId);
+ return request.getLong();
+ } catch (IOException e) {
+ throw toMicroKernelException(e);
+ } finally {
+ IOUtils.closeQuietly(request);
+ }
+ }
+
public synchronized String getNodes(String path, String revisionId)
throws MicroKernelException {
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/MicroKernelServlet.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/MicroKernelServlet.java?rev=1296336&r1=1296335&r2=1296336&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/MicroKernelServlet.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/server/MicroKernelServlet.java Fri Mar 2 17:32:49 2012
@@ -79,6 +79,7 @@ class MicroKernelServlet {
COMMANDS.put("getJournal", new GetJournal());
COMMANDS.put("diff", new Diff());
COMMANDS.put("nodeExists", new NodeExists());
+ COMMANDS.put("getChildNodeCount", new GetChildNodeCount());
COMMANDS.put("getNodes", new GetNodes());
COMMANDS.put("commit", new Commit());
COMMANDS.put("getLength", new GetLength());
@@ -190,6 +191,21 @@ class MicroKernelServlet {
}
}
+ static class GetChildNodeCount implements Command {
+
+ public void execute(MicroKernel mk, Request request, Response response)
+ throws IOException, MicroKernelException {
+
+ String headRevision = mk.getHeadRevision();
+
+ String path = request.getParameter("path", "/");
+ String revisionId = request.getParameter("revision_id", headRevision);
+
+ response.setContentType("text/plain");
+ response.write(Long.toString(mk.getChildNodeCount(path, revisionId)));
+ }
+ }
+
static class GetNodes implements Command {
public void execute(MicroKernel mk, Request request, Response response)
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/simple/SimpleKernelImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/simple/SimpleKernelImpl.java?rev=1296336&r1=1296335&r2=1296336&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/simple/SimpleKernelImpl.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/simple/SimpleKernelImpl.java Fri Mar 2 17:32:49 2012
@@ -568,6 +568,13 @@ public class SimpleKernelImpl extends Wr
return getRevisionDataRoot(revisionId).exists(path.substring(1));
}
+ public long getChildNodeCount(String path, String revisionId) {
+ if (!PathUtils.isAbsolute(path)) {
+ throw ExceptionFactory.get("Not an absolute path: " + path);
+ }
+ return getRevisionDataRoot(revisionId).getNode(path).getChildNodeCount();
+ }
+
public long getLength(String blobId) {
return ds.getBlobLength(blobId);
}
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/IdFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/IdFactory.java?rev=1296336&r1=1296335&r2=1296336&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/IdFactory.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/store/IdFactory.java Fri Mar 2 17:32:49 2012
@@ -111,5 +111,5 @@ public abstract class IdFactory {
return longToBytes(clock.time());
}
};
- };
+ }
}
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/wrapper/IndexWrapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/wrapper/IndexWrapper.java?rev=1296336&r1=1296335&r2=1296336&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/wrapper/IndexWrapper.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/wrapper/IndexWrapper.java Fri Mar 2 17:32:49 2012
@@ -72,6 +72,10 @@ public class IndexWrapper extends Wrappe
return mk.nodeExists(path, revisionId);
}
+ public long getChildNodeCount(String path, String revisionId) {
+ return mk.getChildNodeCount(path, revisionId);
+ }
+
public int read(String blobId, long pos, byte[] buff, int off, int length) {
return mk.read(blobId, pos, buff, off, length);
}
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/wrapper/LogWrapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/wrapper/LogWrapper.java?rev=1296336&r1=1296335&r2=1296336&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/wrapper/LogWrapper.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/wrapper/LogWrapper.java Fri Mar 2 17:32:49 2012
@@ -165,6 +165,18 @@ public class LogWrapper implements Micro
}
}
+ public long getChildNodeCount(String path, String revisionId) {
+ try {
+ logMethod("getChildNodeCount", path, revisionId);
+ long result = mk.getChildNodeCount(path, revisionId);
+ logResult(Long.toString(result));
+ return result;
+ } catch (Exception e) {
+ logException(e);
+ throw convert(e);
+ }
+ }
+
public int read(String blobId, long pos, byte[] buff, int off, int length) {
try {
logMethod("read", blobId, pos, buff, off, length);
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/wrapper/SecurityWrapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/wrapper/SecurityWrapper.java?rev=1296336&r1=1296335&r2=1296336&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/wrapper/SecurityWrapper.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/wrapper/SecurityWrapper.java Fri Mar 2 17:32:49 2012
@@ -330,6 +330,14 @@ public class SecurityWrapper extends Wra
return mk.nodeExists(path, revisionId);
}
+ public long getChildNodeCount(String path, String revisionId) {
+ rightsRevision = getHeadRevision();
+ if (!checkRights(path, false)) {
+ throw ExceptionFactory.get("Node not found: " + path);
+ }
+ return mk.getChildNodeCount(path, revisionId);
+ }
+
public int read(String blobId, long pos, byte[] buff, int off, int length) {
return mk.read(blobId, pos, buff, off, length);
}
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/wrapper/VirtualRepositoryWrapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/wrapper/VirtualRepositoryWrapper.java?rev=1296336&r1=1296335&r2=1296336&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/wrapper/VirtualRepositoryWrapper.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/wrapper/VirtualRepositoryWrapper.java Fri Mar 2 17:32:49 2012
@@ -313,6 +313,16 @@ public class VirtualRepositoryWrapper ex
return mk.nodeExists(path, rev);
}
+ public long getChildNodeCount(String path, String revisionId) {
+ String mount = getMount(path);
+ if (mount == null) {
+ throw ExceptionFactory.get("Not mapped: " + path);
+ }
+ String rev = getRevision(mount, revisionId);
+ MicroKernel mk = mounts.get(mount);
+ return mk.getChildNodeCount(path, rev);
+ }
+
public int read(String blobId, long pos, byte[] buff, int off, int length) {
return mk.read(blobId, pos, buff, off, length);
}
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/wrapper/WrapperBase.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/wrapper/WrapperBase.java?rev=1296336&r1=1296335&r2=1296336&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/wrapper/WrapperBase.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/wrapper/WrapperBase.java Fri Mar 2 17:32:49 2012
@@ -120,6 +120,10 @@ public abstract class WrapperBase implem
return wrapped.nodeExists(path, revisionId);
}
+ public long getChildNodeCount(String path, String revisionId) {
+ return wrapped.getChildNodeCount(path, revisionId);
+ }
+
public int read(String blobId, long pos, byte[] buff, int off, int length) {
return wrapped.read(blobId, pos, buff, off, length);
}