This package contains support classes for implementing a composite persistence at the NodeStore level.
- Transparency of the composition setup. Neither the NodeStores nor the code using a composite NodeStore should be aware of the specific implementation being used.
- Persistence-agnosticity. The composition support should be applicable to any conformant NodeStore implementation.
- Negligible performance impact. Composition should not add a significat performance overhead.
The main entry point is the
which wraps one or more NodeStore instances. Also of interest are the
These classes maintain internal mappings of the 'native' objects. For instance, if the composite NodeStore holds two MemoryNodeStore instances, then a call to NodeStore.getRoot() will return a composite NodeState backed by two MemoryNodeState instances. Similarly, a call to NodeState.builder() will return a composite NodeBuilder backed by two MemoryNodeState instances.
Using this approach allows us to always keep related NodeStore, NodeState and NodeBuilder instances isolated from other instances.
1. Brute-force support for oak:mount nodes.
Mount.getPathFragmentName() method defines
a name pattern that can be used by mounted stores to contribute to a patch which is not
owned by them. For instance, a mount named apps which owns
can own another subtree anywhere in the repository given that a node named
The current implementation naively queries all stores whenever the child node list is prepared.
This is obviously correct but may be slow.
Interface Summary Interface Description CompositeNodeStoreMonitor CompositeNodeStoreStatsMBean
Class Summary Class Description CompositeCheckpointMBean CompositeNodeStore CompositeNodeStore.Builder CompositeNodeStoreService CompositeNodeStoreStats CrossMountReferenceValidator CrossMountReferenceValidatorProvider
Validatorwhich detects references crossing the mount boundaries
InitialContentMigrator ModifiedPathDiff MountedNodeStore MountInfoProviderService NodeMap<T> PrivateStoreValidatorProvider
Validatorwhich detects change commits to the read only mounts.
StringCacheThis class caches the path strings used in the CompositeNodeState to avoid keeping too many strings in the memory.