- Direct Known Subclasses:
- PivotLUSSIDs
public abstract class LUSSIDs
extends Object
The LUSSIDs class maintains the element to LUSSID and LUSSID to element mapping for the elements
of an ASResource. It also privides the ability to return predictable xmi:id values.
An xmi:id is provided for every explicitly referenced, and every potentially externally referenced element,
so that the EMF fall-back to @x/@y.1 style id referemces is never required.
The xmi:id typically comprises a 5 Base64-like letter encoding of the bottom 30 bits of the LUSSID of the element.
Additional Base64 letters are occasionally needed to disambiguate duplicates. Disambiguation favours the externally
referenceable xmi:ids before falling back on hierachical position. Disambiguation is therefore very likley to give
stable results after many forms of model evolution.
The LUSSID (Locally Unique Semantically Sentsitive ID) is the hashcode of the hierarchical path of the element.
The resource location, model name and external URI are ignored avoiding dependence on location and URI.
Elements within ordered non-unique collections use the index as part of their identity. Other collection elements
use a further local LUSSID that captures the name/template bindings/parameter names/collection bounds
so that a LUSSID has substantial tolerance to insignificant reordering of elements. Perfect uniqueness of LUSSIDs
is not necessary, since ambiguous LUSSIDs can be resolved by the xmi:id disambiguation.
- Since:
- 1.4