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 2011/03/11 16:38:34 UTC

svn commit: r1080610 - /jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/MicroKernel.java

Author: stefan
Date: Fri Mar 11 15:38:33 2011
New Revision: 1080610

URL: http://svn.apache.org/viewvc?rev=1080610&view=rev
Log:
drafting a MicroKernel api (WIP)

Modified:
    jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/MicroKernel.java

Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/MicroKernel.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/MicroKernel.java?rev=1080610&r1=1080609&r2=1080610&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/MicroKernel.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/MicroKernel.java Fri Mar 11 15:38:33 2011
@@ -16,12 +16,16 @@
  */
 package org.apache.jackrabbit.mk;
 
+import java.io.InputStream;
+
 /**
  * TBD:
  *
  * - workspaces are just top-level nodes (e.g. /default. /system)
  *   => no need for inter-workspace operations, simplified versioning implementation
  *
+ * - should the rmk support (polling) observation? are getHistory/diff good enough?
+ *
  * - nodeId is unique per repository and system-generated (e.g. sha1 or similar)
  *   is the concept of a nodeId really required? if yes, how should the nodeId
  *   be exposed? as a system-generated synthetic property? should every node
@@ -33,12 +37,19 @@ package org.apache.jackrabbit.mk;
  *
  * - json representation of properties:
  *   objects? or name/value pairs (type information needs to be encoded somehow)
+ *   what about multi-valued properties?
  *
  * - should the rmk provide native support for shareable nodes?
  *
- * - should child nodes and properties share the same namespace?
+ * - should child nodes and properties share the same namespace? how should this
+ *   be represented in json?
+ *
+ * - does the order of child nodes matter? if yes, how should they be represented
+ *   json (a json object is an unordered set of name/value pairs.
  *
- * - should the rmk support (polling) observation? are getHistory/diff sufficient?
+ * - do we need to specify a 'reorder' op in jsop? perhaps based on 'move'?
+ *
+ * - how should an incomplete list of child nodes be represented in json?
  */
 public interface MicroKernel {
 
@@ -75,9 +86,20 @@ public interface MicroKernel {
     long getChildNodeCount(String idOrPath, String revisionId) throws MicroKernelException;
 
     /**
+     * WRITE ops
+     */
+    /* @todo JSOP diff format doesn't specify a 'copy' op */
+    /* @todo JSOP format doesn't provide property type information */
+    String /* revisionId */ commit(String idOrPath, String jsonDiff) throws MicroKernelException;
+
+    /**
      * DataStore READ/WRITE ops
      */
+    // @todo encode length in id?
     long getLength(String dsId) throws MicroKernelException;
+    InputStream read(String dsId) throws MicroKernelException;
+    String /* dsId */ write(InputStream in) throws MicroKernelException;
+
     int /* count */ read(String dsId, byte[] buf, int off, int size) throws MicroKernelException;
     // alternative a:
     String /* dsId */ write(byte[] data, int size) throws MicroKernelException;
@@ -86,13 +108,4 @@ public interface MicroKernel {
     // alternative b:
     // tmp: isTemporary, timeToLive=3600s, if tmp=false -> returned dsId is a hash of the content
     String /* dsId */ append(String dsBaseId, byte[] data, int size, boolean tmp) throws MicroKernelException;
-
-
-    /**
-     * WRITE ops
-     */
-    /* @todo JSOP diff format doesn't specify a 'copy' op */
-    /* @todo JSOP format doesn't provide property type information */
-    String /* revisionId */ commit(String idOrPath, String jsonDiff) throws MicroKernelException;
 }
-