Class DefaultCDOMerger.PerFeature.ManyValued

All Implemented Interfaces:
CDOMerger, CDOMergerBaseAware
Direct Known Subclasses:
DefaultCDOMerger.PerFeature.ManyValuedOld
Enclosing class:
DefaultCDOMerger.PerFeature

public static class DefaultCDOMerger.PerFeature.ManyValued extends DefaultCDOMerger.PerFeature
Per-feature merger whose many-valued path performs a semantic three-way list merge.

Incoming numeric CDO histories are decoded independently against result-base occurrence identities plus each side's own causal base visibility. ADD creates a side-local occurrence, SET creates a replacement in the addressed lineage, MOVE preserves occurrence identity and creates a historical placement landmark, and REMOVE/CLEAR/UNSET address the occurrences visible at that point in the causal history. Historical positions and their partial order remain available after an occurrence moves or disappears.

Numeric indexes are intentionally confined to decoding and final delta encoding. Normalization, dimension-wise presence/content/placement merging, uniqueness resolution, and deterministic linearization reason about stable occurrences and ordering constraints. A fresh engine contains all mutable state for each invocation, so merger instances remain safely reusable under DefaultCDOMerger.merge(CDOChangeSet, CDOChangeSet) synchronization. Semantic variability is intentionally confined to five independent policy domains: occurrence conflicts, topological ordering ambiguity, uniqueness/duplicate resolution, CLEAR semantics, and UNSET semantics. Policies choose only alternatives validated by the semantic engine; they cannot mutate decoded histories or weaken hard identity, ordering, uniqueness, set-state, or determinism invariants.

Author:
Eike Stepper