Skip to content

Java Location object query types

This document fixes the Java public types returned by the object location operations on ZLinkLocationRuntimeQuery. They are for operational inspection only, not for messaging targets or placement conditions.

public enum ZLinkLocationObjectState {
    CREATING, READY, UNAVAILABLE
}

public enum ZLinkPlacementObjectKind {
    ACTOR, USER_SPOT, INSTANCE_SPOT
}

public record ZLinkLocationObjectEntry(
    String globalId,
    long objectGeneration,
    String meshName,
    systems.zlink.contracts.core.RoutingId nodeRid,
    ZLinkLocationObjectState state,
    String stableType) {}

public record ZLinkLocationObjectFilter(
    ZLinkPlacementObjectKind objectKind,
    String stableType,
    String meshName) {}

objectKind is required; stableType and meshName are optional. objectGeneration is positive, and globalId and an entry's stableType are non-blank. A filter's stableType, when specified, is non-blank. The query does not provide an unbounded list. Page size is 1..1000, the encoded page is at most 4 MiB, and the continuation token is an opaque value issued by the query.

Direct lookup by Actor ID and Spot ID each queries one current object location. Missing returns an empty Optional; Creating returns a CREATING entry; Ready returns a READY entry; and an unavailable current owner after commit returns an UNAVAILABLE entry. findSpotLocation(...) treats User Spot and Instance Spot under the same Spot-ID lookup contract. A Store query failure fails the whole operation with ZLinkFrameworkErrorKind.UNAVAILABLE and does not return a partial page.