TwinMapper supports YAML, JSON, and BPMN XML as both definition formats and runtime binding targets. The NodeCursor abstraction unifies them all — generated binders have zero direct dependency on any parser library.
Build-time: reads YAML definitions into the meta-model via the TwinMapper-native YAML DSL. Runtime: parses YAML documents into YamlNodeCursor using SnakeYAML with SafeConstructor.
Explore YAML →Build-time: reads JSON definitions into the meta-model. Runtime: parses JSON documents into JsonNodeCursor using Jackson. Zero additional dependency cost in Spring Boot.
Explore JSON →Build-time: reads BPMN XML definitions via JDK StAX into BpmnIntermediateModel, then into the meta-model. Runtime: binds BPMN documents with XXE-safe parsing — zero vendor dependency.
Explore BPMN →NodeCursor is the core runtime abstraction that decouples format parsing from binding logic. Each format module provides its own NodeCursor implementation backed by its native parser (SnakeYAML, Jackson, JDK StAX). Generated binders depend only on NodeCursor.
NodeCursor provides: field existence checks with alias support, required and optional scalar reads with type safety, nested object access, list and map child access, source location tracking, field path tracking for diagnostics, and depth limiting for DoS prevention.
Read the NodeCursor spec →The complete binding pipeline: Format Parser → NodeCursor → Generated Binder → Generated DTO → BindingResult<T>. The result carries the populated DTO or accumulated errors — never throws on binding failure.