etdl-target-java 0.0.2

ETDL Java target: generates idiomatic Java (orchestration + handler interfaces + a minimal read-only runtime) from the same validated ETDL IR the Rust target consumes. Pure Rust — building this crate never requires a JDK; only running the generated Java output does.
Documentation
etdl: "1.0.0"
info:
  title: "Inline AsyncAPI-equivalent message definitions"
  version: "1.0.0"
  domain: "FulfillmentContext"
  description: "Minimal fixture exercising Message References resolved against inline components.messages (spec Section 5.3.4/5.4.1) rather than an asyncapi_imports document, plus a bare Channel Reference (spec Section 5.3.5) — both only valid because this document declares no asyncapi_imports at all."

components:
  messages:
    OrderPlaced:
      name: OrderPlaced
      payload:
        type: object
        required: [orderId, qty]
        properties:
          orderId:
            type: string
          qty:
            type: integer

eventTrees:
  InlineMessageCheck:
    initiatingEvent:
      id: InlineOrderTrigger
      message: "#/components/messages/OrderPlaced"
      next: QtyBarrier

    nodes:
      QtyBarrier:
        type: barrier
        description: "Type-checks `message.payload.qty` against the inline schema's `integer` property."
        branches:
          - outcome: HAS_QTY
            condition: "message.payload.qty > 0"
            probability: 0.5
            next: SendConsequence
          - outcome: OTHER
            condition: "default"
            probability: 0.5
            next: SendConsequence

      SendConsequence:
        type: consequence
        operation: send
        channel: "orders-events"
        message: "#/components/messages/OrderPlaced"