import org.opendaylight.yangtools.yang.data.api.schema.tree.StoreTreeNode;
/**
- * A very basic data tree node. It has a version (when it was last modified), a subtree version (when any of its
- * children were modified) and some read-only data.
+ * A very basic data tree node. It has a {@link #getVersion()} (when it was last modified),
+ * a {@link #getSubtreeVersion()} (when any of its children were modified) and some read-only data. In terms of
+ * <a href="https://en.wikipedia.org/wiki/Multiversion_concurrency_control#Implementation">MVCC</a>, the former
+ * corresponds to the this node's current Read Timestamp (RTS(P), where P is this node). The latter is the most recent
+ * Read Timestamp in this node's accessible children.
*
* <p>
* Semantic difference between these two is important when dealing with modifications involving parent/child
*/
package org.opendaylight.yangtools.yang.data.tree.impl.node;
+import org.opendaylight.yangtools.concepts.Immutable;
+
/**
- * The concept of a version, either node version, or a subtree version. The
- * only interface contract this class has is that no two versions are the
- * same.
+ * The concept of a version, either node version, or a subtree version. The only interface contract this class has is
+ * that no two {@link Version} are the same.
+ *
+ * <p>
+ * This class relies on Java Virtual machine's guarantee that the identity of an Object is distinct from any other
+ * Object in the Java heap.
+ *
+ * <p>
+ * From data management perspective, this concept serves as JVM-level MVCC
+ * <a href="https://en.wikipedia.org/wiki/Multiversion_concurrency_control#Implementation">timestamp (TS)</a>.
*/
-public final class Version {
+public final class Version implements Immutable {
private Version() {
-
+ // Hidden on purpose
}
/**