public final class SerializedNodeKey extends Object
String (stage S0 of
docs/refactor/identifier_identity_display_separation_plan.md).
LineageNodeKeylong ids from one shared counter; the serialized DTOs carry String
ids that are RENUMBERED at output time by the table-merge pass. A walker that runs after
serialization — RoutineSummaryExtractor is the live example — can only see the string
ids, so it cannot use LineageNodeKey, and a single type covering both would invite
keying one domain with the other's ids.
(parent_id, column NAME). That is the same defect
as keying by (parent name, column name) in the analysis model, just one field less
wrong: two projection slots of one parent that publish the same name still collapse. This type
keys on the column's own id, so duplicate published names stay distinct.
Renumbering is harmless here as long as both halves of a comparison come from the SAME serialized document — which is the only claim this key makes. Do NOT use it to compare two documents, two analyzer runs, or a baseline jar against a patched one; for that, compare endpoints and topology, not ids.
| Modifier and Type | Method and Description |
|---|---|
boolean |
equals(Object o) |
String |
getColumnId() |
String |
getParentId() |
int |
hashCode() |
static SerializedNodeKey |
of(String parentId,
String columnId) |
String |
toString() |
public static SerializedNodeKey of(String parentId, String columnId)
parentId - the containing object's serialized id, e.g. targetColumn.getParent_id()columnId - the column's own serialized id, e.g. targetColumn.getId()IllegalArgumentException - if either id is null or empty. Unlike the analysis model,
where any long is a legal id, an absent string id means the serializer never
assigned one — so there is nothing to identify, and accepting it would merge every
such node.public String getParentId()
public String getColumnId()