Dear Wiki user,
You have subscribed to a wiki page or wiki category on "Jackrabbit Wiki" for change notification.
The "MicroKernelPrototype" page has been changed by ThomasMueller.
http://wiki.apache.org/jackrabbit/MicroKernelPrototype?action=diff&rev1=1&rev2=2
--------------------------------------------------
== MicroKernelPrototype ==
+ {{http://wiki.apache.org/jackrabbit/MicroKernelPrototype?action=AttachFile&do=get&target=drawing.png}}
+
+ The Jackrabbit 3 !MicroKernel prototype consists of the following components:
+
+ * Test Application - use the JCR 2.0 API to talk to Jackrabbit.
+
+ * Package j3 contains the JCR API implementation and core classes.
+
+ * Package j3.mc contains the !MicroKernel implementation.
+
+ * Packages j3.mc.jdbc and j3.mc.mem contains Storage engines implementations
+
+ === Core ===
+
+ * Each !RepositoryImpl has a read-only cache of !NodeData objects. It also references the
!MicroKernel Storage and keeps a list of open !SessionImpl
+
+ * Each !SessionImpl has a weak-reference map of !NodeState objects. It contains a reference
to the !StorageSession.
+
+ * A !NodeImpl object represents a node with a path. The object contains no data, but it
references a parent (for the path) and a !NodeState.
+
+ * A !NodeState is a wrapper for an unmodified or modified !NodeData object. If the data
gets modified, a new !NodeData object is created (read-only !NodeData objects are immutable).
For each shareable node, there is only one !NodeState and one !NodeData object.
+
+ * A !PropertyImpl contains the !NodeImpl reference and the property name. It does not contains
data.
+
+ * For each modification, a Change object is created. This Change is then added to the session,
and applied. A Change can be re-applied afterwards if storing the changes fails. A Change
object is also the base for event logging and observation.
+
+ === Micro Kernel ===
+
+ * There is one Storage object per repository.
+
+ * !NodeData objects contain the actual data in for of Val objects
+
+ * A Val object represents a value and a property type. It is immutable.
+
+ * Each !StorageSession represents a session. A session may or may not have 'state'. For
example, a session in a JDBC storage may references a JDBC connection, but it doesn't have
to.
+
+ * A Bundle object contains the serialized form of one or multiple !NodeData objects.
+
+ * There are currently two Storage / !StorageSession implementations: an in-memory storage,
and a JDBC storage.
+
|