### Eclipse Workspace Patch 1.0
#P oak-mk
Index: src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java
===================================================================
--- src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java (revision 1344175)
+++ src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java (working copy)
@@ -19,7 +19,7 @@
import java.io.InputStream;
/**
- * The MicroKernel design goals/principles:
+ * The MicroKernel Design Goals and Principles:
*
* - manage huge trees of nodes and properties efficiently
* - MVCC-based concurrency control
@@ -32,8 +32,9 @@
*
- integrated API for efficiently storing/retrieving large binaries
* - human-readable data serialization (JSON)
*
- *
+ *
* The MicroKernel Data Model:
+ *
*
* - simple JSON-inspired data model: just nodes and properties
* - a node consists of an unordered set of name -> item mappings. each
@@ -43,7 +44,27 @@
*
- supported property types: string, number, boolean, array
* - a property value is stored and used as an opaque, unparsed character sequence
*
+ *
+ * The Retention Policy for Revisions:
+ *
* TODO specify retention policy for old revisions, i.e. minimal guaranteed retention period (OAK-114)
+ *
+ *
+ * The Retention Policy for Binaries:
+ *
+ *
+ * The MicroKernel implementation is free to remove binaries if both of the
+ * following conditions are met:
+ *
+ *
+ * - If the binary is not references as a property value of the
+ * format ":blobId:<blobId>" where <blobId> is the id returned by
+ * {@link write(InputStream in)}. This includes simple property values such as
+ * {"bin": ":blobId:1234"} as well as array property values such as
+ * {"array": [":blobId:1234", ":blobId:5678"]}.
+ * - If the binary was stored before the last retained revision (this is to
+ * keep temporary binaries, and binaries that are not yet referenced).
+ *
*/
public interface MicroKernel {