{
  "name" : "click.kamil.examples.statemachine.layered.order.config.StandardOrderStateMachineConfiguration",
  "states" : [ {
    "rawName" : "OrderState.CANCELLED",
    "fullIdentifier" : "click.kamil.examples.statemachine.layered.order.OrderState.CANCELLED"
  }, {
    "rawName" : "OrderState.PAID",
    "fullIdentifier" : "click.kamil.examples.statemachine.layered.order.OrderState.PAID"
  }, {
    "rawName" : "OrderState.SHIPPED",
    "fullIdentifier" : "click.kamil.examples.statemachine.layered.order.OrderState.SHIPPED"
  }, {
    "rawName" : "OrderState.NEW",
    "fullIdentifier" : "click.kamil.examples.statemachine.layered.order.OrderState.NEW"
  } ],
  "transitions" : [ {
    "type" : "EXTERNAL",
    "sourceStates" : [ {
      "rawName" : "OrderState.NEW",
      "fullIdentifier" : "click.kamil.examples.statemachine.layered.order.OrderState.NEW"
    } ],
    "targetStates" : [ {
      "rawName" : "OrderState.PAID",
      "fullIdentifier" : "click.kamil.examples.statemachine.layered.order.OrderState.PAID"
    } ],
    "event" : {
      "rawName" : "OrderTransitionEvent.PAY",
      "fullIdentifier" : "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.PAY"
    },
    "guards" : [ ],
    "actions" : [ ],
    "order" : null
  }, {
    "type" : "EXTERNAL",
    "sourceStates" : [ {
      "rawName" : "OrderState.PAID",
      "fullIdentifier" : "click.kamil.examples.statemachine.layered.order.OrderState.PAID"
    } ],
    "targetStates" : [ {
      "rawName" : "OrderState.SHIPPED",
      "fullIdentifier" : "click.kamil.examples.statemachine.layered.order.OrderState.SHIPPED"
    } ],
    "event" : {
      "rawName" : "OrderTransitionEvent.SHIP",
      "fullIdentifier" : "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.SHIP"
    },
    "guards" : [ ],
    "actions" : [ ],
    "order" : null
  }, {
    "type" : "EXTERNAL",
    "sourceStates" : [ {
      "rawName" : "OrderState.PAID",
      "fullIdentifier" : "click.kamil.examples.statemachine.layered.order.OrderState.PAID"
    } ],
    "targetStates" : [ {
      "rawName" : "OrderState.CANCELLED",
      "fullIdentifier" : "click.kamil.examples.statemachine.layered.order.OrderState.CANCELLED"
    } ],
    "event" : {
      "rawName" : "OrderTransitionEvent.CANCEL",
      "fullIdentifier" : "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.CANCEL"
    },
    "guards" : [ ],
    "actions" : [ ],
    "order" : null
  } ],
  "startStates" : [ "click.kamil.examples.statemachine.layered.order.OrderState.NEW" ],
  "endStates" : [ "click.kamil.examples.statemachine.layered.order.OrderState.SHIPPED", "click.kamil.examples.statemachine.layered.order.OrderState.CANCELLED" ],
  "renderChoicesAsDiamonds" : true,
  "flows" : [ ],
  "stateTypeFqn" : "click.kamil.examples.statemachine.layered.order.OrderState",
  "eventTypeFqn" : "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent",
  "metadata" : {
    "triggers" : [ {
      "event" : "event",
      "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher",
      "methodName" : "sendOrderEvent",
      "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java",
      "sourceModule" : null,
      "stateMachineId" : null,
      "sourceState" : null,
      "lineNumber" : 75,
      "polymorphicEvents" : null,
      "external" : false,
      "constraint" : null,
      "ambiguous" : false
    } ],
    "entryPoints" : [ {
      "type" : "REST",
      "name" : "POST /api/orders/pay",
      "className" : "click.kamil.examples.statemachine.layered.web.OrderController",
      "methodName" : "pay",
      "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/OrderController.java",
      "metadata" : {
        "path" : "/api/orders/pay",
        "verb" : "POST"
      },
      "parameters" : [ ]
    }, {
      "type" : "REST",
      "name" : "POST /api/orders/ship",
      "className" : "click.kamil.examples.statemachine.layered.web.OrderController",
      "methodName" : "ship",
      "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/OrderController.java",
      "metadata" : {
        "path" : "/api/orders/ship",
        "verb" : "POST"
      },
      "parameters" : [ ]
    }, {
      "type" : "REST",
      "name" : "POST /api/orders/cancel",
      "className" : "click.kamil.examples.statemachine.layered.web.OrderController",
      "methodName" : "cancel",
      "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/OrderController.java",
      "metadata" : {
        "path" : "/api/orders/cancel",
        "verb" : "POST"
      },
      "parameters" : [ ]
    }, {
      "type" : "REST",
      "name" : "POST /api/string-dispatch/orders/pay",
      "className" : "click.kamil.examples.statemachine.layered.web.StringDispatchController",
      "methodName" : "payWithStringKey",
      "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/StringDispatchController.java",
      "metadata" : {
        "path" : "/api/string-dispatch/orders/pay",
        "verb" : "POST"
      },
      "parameters" : [ ]
    }, {
      "type" : "REST",
      "name" : "POST /api/string-dispatch/orders/ship",
      "className" : "click.kamil.examples.statemachine.layered.web.StringDispatchController",
      "methodName" : "shipWithStringKey",
      "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/StringDispatchController.java",
      "metadata" : {
        "path" : "/api/string-dispatch/orders/ship",
        "verb" : "POST"
      },
      "parameters" : [ ]
    }, {
      "type" : "REST",
      "name" : "POST /api/orders/rich/pay",
      "className" : "click.kamil.examples.statemachine.layered.web.RichOrderController",
      "methodName" : "payViaRichEvent",
      "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/RichOrderController.java",
      "metadata" : {
        "path" : "/api/orders/rich/pay",
        "verb" : "POST"
      },
      "parameters" : [ ]
    }, {
      "type" : "REST",
      "name" : "POST /api/orders/rich/ship",
      "className" : "click.kamil.examples.statemachine.layered.web.RichOrderController",
      "methodName" : "shipViaRichEvent",
      "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/RichOrderController.java",
      "metadata" : {
        "path" : "/api/orders/rich/ship",
        "verb" : "POST"
      },
      "parameters" : [ ]
    }, {
      "type" : "REST",
      "name" : "POST /api/commands/order.pay",
      "className" : "click.kamil.examples.statemachine.layered.web.GenericCommandController",
      "methodName" : "execute",
      "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/GenericCommandController.java",
      "metadata" : {
        "path" : "/api/commands/order.pay",
        "verb" : "POST"
      },
      "parameters" : [ {
        "name" : "commandKey",
        "type" : "String",
        "annotations" : [ "PathVariable" ]
      } ]
    }, {
      "type" : "REST",
      "name" : "POST /api/commands/order.ship",
      "className" : "click.kamil.examples.statemachine.layered.web.GenericCommandController",
      "methodName" : "execute",
      "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/GenericCommandController.java",
      "metadata" : {
        "path" : "/api/commands/order.ship",
        "verb" : "POST"
      },
      "parameters" : [ {
        "name" : "commandKey",
        "type" : "String",
        "annotations" : [ "PathVariable" ]
      } ]
    }, {
      "type" : "REST",
      "name" : "POST /api/commands/order.cancel",
      "className" : "click.kamil.examples.statemachine.layered.web.GenericCommandController",
      "methodName" : "execute",
      "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/GenericCommandController.java",
      "metadata" : {
        "path" : "/api/commands/order.cancel",
        "verb" : "POST"
      },
      "parameters" : [ {
        "name" : "commandKey",
        "type" : "String",
        "annotations" : [ "PathVariable" ]
      } ]
    }, {
      "type" : "REST",
      "name" : "POST /api/commands/{commandKey}",
      "className" : "click.kamil.examples.statemachine.layered.web.GenericCommandController",
      "methodName" : "execute",
      "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/GenericCommandController.java",
      "metadata" : {
        "path" : "/api/commands/{commandKey}",
        "verb" : "POST"
      },
      "parameters" : [ {
        "name" : "commandKey",
        "type" : "String",
        "annotations" : [ "PathVariable" ]
      } ]
    } ],
    "callChains" : [ {
      "entryPoint" : {
        "type" : "REST",
        "name" : "POST /api/orders/pay",
        "className" : "click.kamil.examples.statemachine.layered.web.OrderController",
        "methodName" : "pay",
        "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/OrderController.java",
        "metadata" : {
          "path" : "/api/orders/pay",
          "verb" : "POST"
        },
        "parameters" : [ ]
      },
      "methodChain" : [ "click.kamil.examples.statemachine.layered.web.OrderController.pay", "click.kamil.examples.statemachine.layered.web.CommandGateway.payOrder", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.orderPay", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendOrderEvent" ],
      "triggerPoint" : {
        "event" : "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.PAY",
        "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher",
        "methodName" : "sendOrderEvent",
        "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java",
        "sourceModule" : null,
        "stateMachineId" : null,
        "sourceState" : "click.kamil.examples.statemachine.layered.order.OrderState.NEW",
        "lineNumber" : 75,
        "polymorphicEvents" : [ "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.PAY" ],
        "external" : false,
        "constraint" : null,
        "ambiguous" : false
      },
      "contextMachineId" : null,
      "matchedTransitions" : [ {
        "sourceState" : "click.kamil.examples.statemachine.layered.order.OrderState.NEW",
        "targetState" : "click.kamil.examples.statemachine.layered.order.OrderState.PAID",
        "event" : "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.PAY"
      } ],
      "linkResolution" : "RESOLVED"
    }, {
      "entryPoint" : {
        "type" : "REST",
        "name" : "POST /api/orders/ship",
        "className" : "click.kamil.examples.statemachine.layered.web.OrderController",
        "methodName" : "ship",
        "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/OrderController.java",
        "metadata" : {
          "path" : "/api/orders/ship",
          "verb" : "POST"
        },
        "parameters" : [ ]
      },
      "methodChain" : [ "click.kamil.examples.statemachine.layered.web.OrderController.ship", "click.kamil.examples.statemachine.layered.web.CommandGateway.shipOrder", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.orderShip", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendOrderEvent" ],
      "triggerPoint" : {
        "event" : "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.SHIP",
        "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher",
        "methodName" : "sendOrderEvent",
        "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java",
        "sourceModule" : null,
        "stateMachineId" : null,
        "sourceState" : "click.kamil.examples.statemachine.layered.order.OrderState.PAID",
        "lineNumber" : 75,
        "polymorphicEvents" : [ "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.SHIP" ],
        "external" : false,
        "constraint" : null,
        "ambiguous" : false
      },
      "contextMachineId" : null,
      "matchedTransitions" : [ {
        "sourceState" : "click.kamil.examples.statemachine.layered.order.OrderState.PAID",
        "targetState" : "click.kamil.examples.statemachine.layered.order.OrderState.SHIPPED",
        "event" : "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.SHIP"
      } ],
      "linkResolution" : "RESOLVED"
    }, {
      "entryPoint" : {
        "type" : "REST",
        "name" : "POST /api/orders/cancel",
        "className" : "click.kamil.examples.statemachine.layered.web.OrderController",
        "methodName" : "cancel",
        "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/OrderController.java",
        "metadata" : {
          "path" : "/api/orders/cancel",
          "verb" : "POST"
        },
        "parameters" : [ ]
      },
      "methodChain" : [ "click.kamil.examples.statemachine.layered.web.OrderController.cancel", "click.kamil.examples.statemachine.layered.web.CommandGateway.cancelOrder", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.orderCancel", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendOrderEvent" ],
      "triggerPoint" : {
        "event" : "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.CANCEL",
        "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher",
        "methodName" : "sendOrderEvent",
        "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java",
        "sourceModule" : null,
        "stateMachineId" : null,
        "sourceState" : "click.kamil.examples.statemachine.layered.order.OrderState.PAID",
        "lineNumber" : 75,
        "polymorphicEvents" : [ "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.CANCEL" ],
        "external" : false,
        "constraint" : null,
        "ambiguous" : false
      },
      "contextMachineId" : null,
      "matchedTransitions" : [ {
        "sourceState" : "click.kamil.examples.statemachine.layered.order.OrderState.PAID",
        "targetState" : "click.kamil.examples.statemachine.layered.order.OrderState.CANCELLED",
        "event" : "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.CANCEL"
      } ],
      "linkResolution" : "RESOLVED"
    }, {
      "entryPoint" : {
        "type" : "REST",
        "name" : "POST /api/string-dispatch/orders/pay",
        "className" : "click.kamil.examples.statemachine.layered.web.StringDispatchController",
        "methodName" : "payWithStringKey",
        "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/StringDispatchController.java",
        "metadata" : {
          "path" : "/api/string-dispatch/orders/pay",
          "verb" : "POST"
        },
        "parameters" : [ ]
      },
      "methodChain" : [ "click.kamil.examples.statemachine.layered.web.StringDispatchController.payWithStringKey", "click.kamil.examples.statemachine.layered.web.CommandGateway.executeViaMapper", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.dispatch", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.orderPay", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendOrderEvent" ],
      "triggerPoint" : {
        "event" : "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.PAY",
        "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher",
        "methodName" : "sendOrderEvent",
        "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java",
        "sourceModule" : null,
        "stateMachineId" : null,
        "sourceState" : "click.kamil.examples.statemachine.layered.order.OrderState.NEW",
        "lineNumber" : 75,
        "polymorphicEvents" : [ "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.PAY" ],
        "external" : false,
        "constraint" : "command == ORDER_PAY",
        "ambiguous" : false
      },
      "contextMachineId" : null,
      "matchedTransitions" : [ {
        "sourceState" : "click.kamil.examples.statemachine.layered.order.OrderState.NEW",
        "targetState" : "click.kamil.examples.statemachine.layered.order.OrderState.PAID",
        "event" : "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.PAY"
      } ],
      "linkResolution" : "RESOLVED"
    }, {
      "entryPoint" : {
        "type" : "REST",
        "name" : "POST /api/string-dispatch/orders/ship",
        "className" : "click.kamil.examples.statemachine.layered.web.StringDispatchController",
        "methodName" : "shipWithStringKey",
        "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/StringDispatchController.java",
        "metadata" : {
          "path" : "/api/string-dispatch/orders/ship",
          "verb" : "POST"
        },
        "parameters" : [ ]
      },
      "methodChain" : [ "click.kamil.examples.statemachine.layered.web.StringDispatchController.shipWithStringKey", "click.kamil.examples.statemachine.layered.web.CommandGateway.executeViaMapper", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.dispatch", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.orderShip", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendOrderEvent" ],
      "triggerPoint" : {
        "event" : "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.SHIP",
        "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher",
        "methodName" : "sendOrderEvent",
        "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java",
        "sourceModule" : null,
        "stateMachineId" : null,
        "sourceState" : "click.kamil.examples.statemachine.layered.order.OrderState.PAID",
        "lineNumber" : 75,
        "polymorphicEvents" : [ "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.SHIP" ],
        "external" : false,
        "constraint" : "command == ORDER_SHIP",
        "ambiguous" : false
      },
      "contextMachineId" : null,
      "matchedTransitions" : [ {
        "sourceState" : "click.kamil.examples.statemachine.layered.order.OrderState.PAID",
        "targetState" : "click.kamil.examples.statemachine.layered.order.OrderState.SHIPPED",
        "event" : "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.SHIP"
      } ],
      "linkResolution" : "RESOLVED"
    }, {
      "entryPoint" : {
        "type" : "REST",
        "name" : "POST /api/orders/rich/pay",
        "className" : "click.kamil.examples.statemachine.layered.web.RichOrderController",
        "methodName" : "payViaRichEvent",
        "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/RichOrderController.java",
        "metadata" : {
          "path" : "/api/orders/rich/pay",
          "verb" : "POST"
        },
        "parameters" : [ ]
      },
      "methodChain" : [ "click.kamil.examples.statemachine.layered.web.RichOrderController.payViaRichEvent", "click.kamil.examples.statemachine.layered.web.CommandGateway.payOrderViaRichEvent", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.orderPayViaRichEvent", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendOrderEvent" ],
      "triggerPoint" : {
        "event" : "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.PAY",
        "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher",
        "methodName" : "sendOrderEvent",
        "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java",
        "sourceModule" : null,
        "stateMachineId" : null,
        "sourceState" : "click.kamil.examples.statemachine.layered.order.OrderState.NEW",
        "lineNumber" : 75,
        "polymorphicEvents" : [ "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.PAY" ],
        "external" : false,
        "constraint" : null,
        "ambiguous" : false
      },
      "contextMachineId" : null,
      "matchedTransitions" : [ {
        "sourceState" : "click.kamil.examples.statemachine.layered.order.OrderState.NEW",
        "targetState" : "click.kamil.examples.statemachine.layered.order.OrderState.PAID",
        "event" : "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.PAY"
      } ],
      "linkResolution" : "RESOLVED"
    }, {
      "entryPoint" : {
        "type" : "REST",
        "name" : "POST /api/orders/rich/ship",
        "className" : "click.kamil.examples.statemachine.layered.web.RichOrderController",
        "methodName" : "shipViaRichEvent",
        "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/RichOrderController.java",
        "metadata" : {
          "path" : "/api/orders/rich/ship",
          "verb" : "POST"
        },
        "parameters" : [ ]
      },
      "methodChain" : [ "click.kamil.examples.statemachine.layered.web.RichOrderController.shipViaRichEvent", "click.kamil.examples.statemachine.layered.web.CommandGateway.shipOrderViaRichEvent", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.orderShipViaRichEvent", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendOrderEvent" ],
      "triggerPoint" : {
        "event" : "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.SHIP",
        "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher",
        "methodName" : "sendOrderEvent",
        "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java",
        "sourceModule" : null,
        "stateMachineId" : null,
        "sourceState" : "click.kamil.examples.statemachine.layered.order.OrderState.PAID",
        "lineNumber" : 75,
        "polymorphicEvents" : [ "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.SHIP" ],
        "external" : false,
        "constraint" : null,
        "ambiguous" : false
      },
      "contextMachineId" : null,
      "matchedTransitions" : [ {
        "sourceState" : "click.kamil.examples.statemachine.layered.order.OrderState.PAID",
        "targetState" : "click.kamil.examples.statemachine.layered.order.OrderState.SHIPPED",
        "event" : "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.SHIP"
      } ],
      "linkResolution" : "RESOLVED"
    }, {
      "entryPoint" : {
        "type" : "REST",
        "name" : "POST /api/commands/order.pay",
        "className" : "click.kamil.examples.statemachine.layered.web.GenericCommandController",
        "methodName" : "execute",
        "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/GenericCommandController.java",
        "metadata" : {
          "path" : "/api/commands/order.pay",
          "verb" : "POST"
        },
        "parameters" : [ {
          "name" : "commandKey",
          "type" : "String",
          "annotations" : [ "PathVariable" ]
        } ]
      },
      "methodChain" : [ "click.kamil.examples.statemachine.layered.web.GenericCommandController.execute", "click.kamil.examples.statemachine.layered.web.CommandGateway.executeViaMapper", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.dispatch", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.orderPay", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendOrderEvent" ],
      "triggerPoint" : {
        "event" : "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.PAY",
        "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher",
        "methodName" : "sendOrderEvent",
        "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java",
        "sourceModule" : null,
        "stateMachineId" : null,
        "sourceState" : "click.kamil.examples.statemachine.layered.order.OrderState.NEW",
        "lineNumber" : 75,
        "polymorphicEvents" : [ "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.PAY" ],
        "external" : false,
        "constraint" : "\"order.pay\".equalsIgnoreCase(commandKey) && command == ORDER_PAY",
        "ambiguous" : false
      },
      "contextMachineId" : null,
      "matchedTransitions" : [ {
        "sourceState" : "click.kamil.examples.statemachine.layered.order.OrderState.NEW",
        "targetState" : "click.kamil.examples.statemachine.layered.order.OrderState.PAID",
        "event" : "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.PAY"
      } ],
      "linkResolution" : "RESOLVED"
    }, {
      "entryPoint" : {
        "type" : "REST",
        "name" : "POST /api/commands/order.ship",
        "className" : "click.kamil.examples.statemachine.layered.web.GenericCommandController",
        "methodName" : "execute",
        "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/GenericCommandController.java",
        "metadata" : {
          "path" : "/api/commands/order.ship",
          "verb" : "POST"
        },
        "parameters" : [ {
          "name" : "commandKey",
          "type" : "String",
          "annotations" : [ "PathVariable" ]
        } ]
      },
      "methodChain" : [ "click.kamil.examples.statemachine.layered.web.GenericCommandController.execute", "click.kamil.examples.statemachine.layered.web.CommandGateway.executeViaMapper", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.dispatch", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.orderShip", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendOrderEvent" ],
      "triggerPoint" : {
        "event" : "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.SHIP",
        "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher",
        "methodName" : "sendOrderEvent",
        "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java",
        "sourceModule" : null,
        "stateMachineId" : null,
        "sourceState" : "click.kamil.examples.statemachine.layered.order.OrderState.PAID",
        "lineNumber" : 75,
        "polymorphicEvents" : [ "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.SHIP" ],
        "external" : false,
        "constraint" : "\"order.ship\".equalsIgnoreCase(commandKey) && command == ORDER_SHIP",
        "ambiguous" : false
      },
      "contextMachineId" : null,
      "matchedTransitions" : [ {
        "sourceState" : "click.kamil.examples.statemachine.layered.order.OrderState.PAID",
        "targetState" : "click.kamil.examples.statemachine.layered.order.OrderState.SHIPPED",
        "event" : "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.SHIP"
      } ],
      "linkResolution" : "RESOLVED"
    }, {
      "entryPoint" : {
        "type" : "REST",
        "name" : "POST /api/commands/order.cancel",
        "className" : "click.kamil.examples.statemachine.layered.web.GenericCommandController",
        "methodName" : "execute",
        "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/GenericCommandController.java",
        "metadata" : {
          "path" : "/api/commands/order.cancel",
          "verb" : "POST"
        },
        "parameters" : [ {
          "name" : "commandKey",
          "type" : "String",
          "annotations" : [ "PathVariable" ]
        } ]
      },
      "methodChain" : [ "click.kamil.examples.statemachine.layered.web.GenericCommandController.execute", "click.kamil.examples.statemachine.layered.web.CommandGateway.executeViaMapper", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.dispatch", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.orderCancel", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendOrderEvent" ],
      "triggerPoint" : {
        "event" : "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.CANCEL",
        "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher",
        "methodName" : "sendOrderEvent",
        "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java",
        "sourceModule" : null,
        "stateMachineId" : null,
        "sourceState" : "click.kamil.examples.statemachine.layered.order.OrderState.PAID",
        "lineNumber" : 75,
        "polymorphicEvents" : [ "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.CANCEL" ],
        "external" : false,
        "constraint" : "\"order.cancel\".equalsIgnoreCase(commandKey) && command == ORDER_CANCEL",
        "ambiguous" : false
      },
      "contextMachineId" : null,
      "matchedTransitions" : [ {
        "sourceState" : "click.kamil.examples.statemachine.layered.order.OrderState.PAID",
        "targetState" : "click.kamil.examples.statemachine.layered.order.OrderState.CANCELLED",
        "event" : "click.kamil.examples.statemachine.layered.order.OrderTransitionEvent.CANCEL"
      } ],
      "linkResolution" : "RESOLVED"
    } ],
    "properties" : {
      "default" : { }
    }
  }
}
