From 8fa6a44e75993f5dadf710184d5ccb82ab4acfec Mon Sep 17 00:00:00 2001 From: Kamil Patryk Kozakowski Date: Sat, 11 Jul 2026 20:29:07 +0200 Subject: [PATCH] Add --inline-accessors CLI flag, layered dispatcher regression goldens, and accessor index docs. Expose accessor index toggling through ExportService and picocli, lock in layered_dispatcher_sample exports as golden fixtures, and document the static analysis pipeline in the README. Co-authored-by: Cursor --- README.md | 13 + .../ast/common/CodebaseContext.java | 19 +- .../command/ExporterCommand.java | 5 +- .../service/ExportService.java | 5 + .../RegressionTest.java | 12 + .../ExportServiceInlineAccessorsTest.java | 106 ++ ...ndardDocumentStateMachineConfiguration.dot | 14 + ...dardDocumentStateMachineConfiguration.json | 1069 ++++++++++++++++ ...dardDocumentStateMachineConfiguration.puml | 34 + ...ocumentStateMachineConfiguration.scxml.xml | 15 + ...StandardOrderStateMachineConfiguration.dot | 14 + ...tandardOrderStateMachineConfiguration.json | 1077 +++++++++++++++++ ...tandardOrderStateMachineConfiguration.puml | 34 + ...rdOrderStateMachineConfiguration.scxml.xml | 15 + 14 files changed, 2430 insertions(+), 2 deletions(-) create mode 100644 state_machine_exporter/src/test/java/click/kamil/springstatemachineexporter/service/ExportServiceInlineAccessorsTest.java create mode 100644 state_machine_exporter/src/test/resources/golden/StandardDocumentStateMachineConfiguration/StandardDocumentStateMachineConfiguration.dot create mode 100644 state_machine_exporter/src/test/resources/golden/StandardDocumentStateMachineConfiguration/StandardDocumentStateMachineConfiguration.json create mode 100644 state_machine_exporter/src/test/resources/golden/StandardDocumentStateMachineConfiguration/StandardDocumentStateMachineConfiguration.puml create mode 100644 state_machine_exporter/src/test/resources/golden/StandardDocumentStateMachineConfiguration/StandardDocumentStateMachineConfiguration.scxml.xml create mode 100644 state_machine_exporter/src/test/resources/golden/StandardOrderStateMachineConfiguration/StandardOrderStateMachineConfiguration.dot create mode 100644 state_machine_exporter/src/test/resources/golden/StandardOrderStateMachineConfiguration/StandardOrderStateMachineConfiguration.json create mode 100644 state_machine_exporter/src/test/resources/golden/StandardOrderStateMachineConfiguration/StandardOrderStateMachineConfiguration.puml create mode 100644 state_machine_exporter/src/test/resources/golden/StandardOrderStateMachineConfiguration/StandardOrderStateMachineConfiguration.scxml.xml diff --git a/README.md b/README.md index 00eeffc..22196e4 100644 --- a/README.md +++ b/README.md @@ -36,3 +36,16 @@ Define sequence of events in `src/main/resources/flows.json`: - `metadata.callChains`: Trace from API call to machine trigger (`sendEvent`). - `transitions.actions[].internalLogic`: Extracted source code/lambdas. - `metadata.properties`: Dictionary of all detected Spring profiles. + +## Static analysis: accessor inlining + +During scan, the exporter builds an **accessor index** of trivial getters, setters, record components, and constant-returning methods. At analysis time, `AccessorResolver` uses this index first (O(1) lookup), then falls back to constructor/field tracing and method-body evaluation. + +This improves resolution of DTO/event chains such as `request.getPayload().getType()` without running Maven or Gradle on the target project. + +```bash +# Enabled by default; disable for debugging or A/B comparison +./gradlew :state_machine_exporter:run --args="-i ./my-project -o ./out --no-inline-accessors" +``` + +Pipeline components live under `analysis/pipeline/` (`AccessorResolver`, `ResolutionBudget`, `MethodInvocationUnwrapper`, `FieldInitializerFinder`, `LibraryUnwrapRegistry`). diff --git a/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/ast/common/CodebaseContext.java b/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/ast/common/CodebaseContext.java index 97cfc72..292fb53 100644 --- a/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/ast/common/CodebaseContext.java +++ b/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/ast/common/CodebaseContext.java @@ -45,6 +45,7 @@ public class CodebaseContext { private Path projectRoot; private final Map cache = new HashMap<>(); private AccessorIndex accessorIndex = AccessorIndex.empty(); + private boolean inlineAccessors = true; public Map getCache() { return cache; @@ -54,6 +55,14 @@ public class CodebaseContext { return accessorIndex; } + public boolean isInlineAccessors() { + return inlineAccessors; + } + + public void setInlineAccessors(boolean inlineAccessors) { + this.inlineAccessors = inlineAccessors; + } + public void setProjectRoot(Path root) { this.projectRoot = root; } @@ -247,7 +256,15 @@ public class CodebaseContext { } } - this.accessorIndex = new AccessorIndexBuilder().build(this); + this.accessorIndex = inlineAccessors + ? new AccessorIndexBuilder().build(this) + : AccessorIndex.empty(); + if (inlineAccessors) { + log.info("Built accessor index: {} trivial accessors across {} types", + accessorIndex.trivialCount(), accessorIndex.typeCount()); + } else { + log.info("Accessor inlining disabled; skipping accessor index build."); + } } private void indexType(TypeDeclaration td, String parentFqn, Path javaFile) { diff --git a/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/command/ExporterCommand.java b/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/command/ExporterCommand.java index 3d923bf..b79403d 100644 --- a/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/command/ExporterCommand.java +++ b/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/command/ExporterCommand.java @@ -60,6 +60,9 @@ public class ExporterCommand implements Callable { @Option(names = {"--include-generated-sources"}, description = "Scan existing Maven target/ and Gradle build/ trees for pre-generated .java sources (MapStruct, annotation processors, etc.). Does not run Maven or Gradle.", negatable = true, defaultValue = "true", fallbackValue = "true") private boolean includeGeneratedSources = true; + @Option(names = {"--inline-accessors"}, description = "Index trivial JavaBean/record accessors at scan time and inline them during call-chain and constant resolution.", negatable = true, defaultValue = "true", fallbackValue = "true") + private boolean inlineAccessors = true; + @Override public Integer call() throws Exception { var out = spec.commandLine().getOut(); @@ -90,7 +93,7 @@ public class ExporterCommand implements Callable { if (jsonFile != null) { exportService.runJsonExporter(jsonFile, outputDir, selectedFormats, profiles, eventFormat, stateFormat); } else { - exportService.runExporter(inputDir, outputDir, selectedFormats, renderChoicesAsDiamonds, profiles, null, null, eventFormat, stateFormat, includeGeneratedSources); + exportService.runExporter(inputDir, outputDir, selectedFormats, renderChoicesAsDiamonds, profiles, null, null, eventFormat, stateFormat, includeGeneratedSources, inlineAccessors); } out.println(CommandLine.Help.Ansi.AUTO.string("%n@|bold,green SUCCESS:|@ All state machines have been exported to " + outputDir.toAbsolutePath())); return 0; diff --git a/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/service/ExportService.java b/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/service/ExportService.java index 9fba0b7..190dd25 100644 --- a/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/service/ExportService.java +++ b/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/service/ExportService.java @@ -75,8 +75,13 @@ public class ExportService { } public void runExporter(Path inputDir, Path outputDir, List selectedFormats, boolean renderChoicesAsDiamonds, List activeProfiles, Path flowsOverride, String machineFilter, click.kamil.springstatemachineexporter.exporter.EnumFormat eventFormat, click.kamil.springstatemachineexporter.exporter.EnumFormat stateFormat, boolean includeGeneratedSources) throws IOException { + runExporter(inputDir, outputDir, selectedFormats, renderChoicesAsDiamonds, activeProfiles, flowsOverride, machineFilter, eventFormat, stateFormat, includeGeneratedSources, true); + } + + public void runExporter(Path inputDir, Path outputDir, List selectedFormats, boolean renderChoicesAsDiamonds, List activeProfiles, Path flowsOverride, String machineFilter, click.kamil.springstatemachineexporter.exporter.EnumFormat eventFormat, click.kamil.springstatemachineexporter.exporter.EnumFormat stateFormat, boolean includeGeneratedSources, boolean inlineAccessors) throws IOException { CodebaseContext context = new CodebaseContext(); context.setActiveProfiles(activeProfiles); + context.setInlineAccessors(inlineAccessors); click.kamil.springstatemachineexporter.analysis.resolver.SiblingDependencyResolver siblingResolver = new click.kamil.springstatemachineexporter.analysis.resolver.SiblingDependencyResolver(); diff --git a/state_machine_exporter/src/test/java/click/kamil/springstatemachineexporter/RegressionTest.java b/state_machine_exporter/src/test/java/click/kamil/springstatemachineexporter/RegressionTest.java index de1373b..83b1dcc 100644 --- a/state_machine_exporter/src/test/java/click/kamil/springstatemachineexporter/RegressionTest.java +++ b/state_machine_exporter/src/test/java/click/kamil/springstatemachineexporter/RegressionTest.java @@ -155,6 +155,18 @@ public class RegressionTest { root.resolve("state_machines/polymorphic_events_sample"), Path.of("src/test/resources/golden/PolymorphicStateMachineConfiguration"), "PolymorphicStateMachineConfiguration" + ), + new TestScenario( + "Layered Dispatcher (Order)", + root.resolve("state_machines/layered_dispatcher_sample"), + Path.of("src/test/resources/golden/StandardOrderStateMachineConfiguration"), + "StandardOrderStateMachineConfiguration" + ), + new TestScenario( + "Layered Dispatcher (Document)", + root.resolve("state_machines/layered_dispatcher_sample"), + Path.of("src/test/resources/golden/StandardDocumentStateMachineConfiguration"), + "StandardDocumentStateMachineConfiguration" ) ); } diff --git a/state_machine_exporter/src/test/java/click/kamil/springstatemachineexporter/service/ExportServiceInlineAccessorsTest.java b/state_machine_exporter/src/test/java/click/kamil/springstatemachineexporter/service/ExportServiceInlineAccessorsTest.java new file mode 100644 index 0000000..4545c75 --- /dev/null +++ b/state_machine_exporter/src/test/java/click/kamil/springstatemachineexporter/service/ExportServiceInlineAccessorsTest.java @@ -0,0 +1,106 @@ +package click.kamil.springstatemachineexporter.service; + +import click.kamil.springstatemachineexporter.exporter.JsonExporter; +import click.kamil.springstatemachineexporter.ast.common.CodebaseContext; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +class ExportServiceInlineAccessorsTest { + + @Test + void shouldSkipAccessorIndexWhenInlineAccessorsDisabled(@TempDir Path tempDir) throws IOException { + Path sourceRoot = tempDir.resolve("project"); + writeJava(sourceRoot, "com/example/Payload.java", """ + package com.example; + public class Payload { + private String event = "PAY"; + public String getEvent() { return event; } + } + """); + writeJava(sourceRoot, "com/example/Config.java", """ + package com.example; + import org.springframework.context.annotation.Configuration; + import org.springframework.statemachine.config.EnableStateMachine; + import org.springframework.statemachine.config.StateMachineConfigurerAdapter; + import org.springframework.statemachine.config.builders.StateMachineStateConfigurer; + import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer; + + @Configuration + @EnableStateMachine + public class Config extends StateMachineConfigurerAdapter { + @Override + public void configure(StateMachineStateConfigurer states) throws Exception { + states.withStates().initial("NEW").state("PAID"); + } + @Override + public void configure(StateMachineTransitionConfigurer transitions) throws Exception { + transitions.withExternal().source("NEW").target("PAID").event("PAY"); + } + } + """); + + CodebaseContext enabledContext = scanContext(sourceRoot, true); + assertThat(enabledContext.getAccessorIndex().trivialCount()).isGreaterThan(0); + + CodebaseContext disabledContext = scanContext(sourceRoot, false); + assertThat(disabledContext.getAccessorIndex().trivialCount()).isZero(); + } + + @Test + void shouldExportWithInlineAccessorsFlag(@TempDir Path inputDir, @TempDir Path outputDir) throws IOException { + writeJava(inputDir, "com/example/SimpleConfig.java", """ + package com.example; + import org.springframework.context.annotation.Configuration; + import org.springframework.statemachine.config.EnableStateMachine; + import org.springframework.statemachine.config.StateMachineConfigurerAdapter; + import org.springframework.statemachine.config.builders.StateMachineStateConfigurer; + import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer; + + @Configuration + @EnableStateMachine + public class SimpleConfig extends StateMachineConfigurerAdapter { + @Override + public void configure(StateMachineStateConfigurer states) throws Exception { + states.withStates().initial("A").state("B"); + } + @Override + public void configure(StateMachineTransitionConfigurer transitions) throws Exception { + transitions.withExternal().source("A").target("B").event("GO"); + } + } + """); + + ExportService exportService = new ExportService(List.of(new JsonExporter())); + exportService.runExporter(inputDir, outputDir, List.of("json"), true, List.of(), null, null, + click.kamil.springstatemachineexporter.exporter.EnumFormat.fn, + click.kamil.springstatemachineexporter.exporter.EnumFormat.fn, + true, + false); + + try (var stream = Files.list(outputDir)) { + assertThat(stream.filter(Files::isDirectory).count()).isGreaterThan(0); + } + } + + private static CodebaseContext scanContext(Path sourceRoot, boolean inlineAccessors) throws IOException { + CodebaseContext context = new CodebaseContext(); + context.setResolveBindings(true); + context.setSourcepath(List.of(sourceRoot.toAbsolutePath().toString())); + context.setInlineAccessors(inlineAccessors); + context.scan(sourceRoot); + return context; + } + + private static void writeJava(Path root, String relativePath, String source) throws IOException { + Path file = root.resolve(relativePath); + Files.createDirectories(file.getParent()); + Files.writeString(file, source); + } +} diff --git a/state_machine_exporter/src/test/resources/golden/StandardDocumentStateMachineConfiguration/StandardDocumentStateMachineConfiguration.dot b/state_machine_exporter/src/test/resources/golden/StandardDocumentStateMachineConfiguration/StandardDocumentStateMachineConfiguration.dot new file mode 100644 index 0000000..1f327b1 --- /dev/null +++ b/state_machine_exporter/src/test/resources/golden/StandardDocumentStateMachineConfiguration/StandardDocumentStateMachineConfiguration.dot @@ -0,0 +1,14 @@ +digraph statemachine { + rankdir=LR; + node [shape=rounded, style=filled, fillcolor=white, fontname="Arial"]; + edge [fontname="Arial", fontsize=10]; + + _start [shape=circle, label="", fillcolor=black, width=0.1]; + _start -> DRAFT; + REJECTED [fillcolor=lightgray]; + APPROVED [fillcolor=lightgray]; + DRAFT -> SUBMITTED [label="DocumentTransitionEvent.SUBMIT", style="solid", color="black"]; + SUBMITTED -> APPROVED [label="DocumentTransitionEvent.APPROVE", style="solid", color="black"]; + SUBMITTED -> REJECTED [label="DocumentTransitionEvent.REJECT", style="solid", color="black"]; +} + diff --git a/state_machine_exporter/src/test/resources/golden/StandardDocumentStateMachineConfiguration/StandardDocumentStateMachineConfiguration.json b/state_machine_exporter/src/test/resources/golden/StandardDocumentStateMachineConfiguration/StandardDocumentStateMachineConfiguration.json new file mode 100644 index 0000000..85c4dae --- /dev/null +++ b/state_machine_exporter/src/test/resources/golden/StandardDocumentStateMachineConfiguration/StandardDocumentStateMachineConfiguration.json @@ -0,0 +1,1069 @@ +{ + "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 + }, { + "event" : "event", + "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher", + "methodName" : "sendDocumentEvent", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java", + "sourceModule" : null, + "stateMachineId" : null, + "sourceState" : null, + "lineNumber" : 81, + "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/documents/submit", + "className" : "click.kamil.examples.statemachine.layered.web.DocumentController", + "methodName" : "submit", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/DocumentController.java", + "metadata" : { + "path" : "/api/documents/submit", + "verb" : "POST" + }, + "parameters" : [ ] + }, { + "type" : "REST", + "name" : "POST /api/documents/approve", + "className" : "click.kamil.examples.statemachine.layered.web.DocumentController", + "methodName" : "approve", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/DocumentController.java", + "metadata" : { + "path" : "/api/documents/approve", + "verb" : "POST" + }, + "parameters" : [ ] + }, { + "type" : "REST", + "name" : "POST /api/documents/reject", + "className" : "click.kamil.examples.statemachine.layered.web.DocumentController", + "methodName" : "reject", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/DocumentController.java", + "metadata" : { + "path" : "/api/documents/reject", + "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/{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" : "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" : null, + "lineNumber" : 75, + "polymorphicEvents" : [ "OrderTransitionEvent.PAY" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : null + }, { + "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" : "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" : null, + "lineNumber" : 75, + "polymorphicEvents" : [ "OrderTransitionEvent.SHIP" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : null + }, { + "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" : "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" : null, + "lineNumber" : 75, + "polymorphicEvents" : [ "OrderTransitionEvent.CANCEL" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : null + }, { + "entryPoint" : { + "type" : "REST", + "name" : "POST /api/documents/submit", + "className" : "click.kamil.examples.statemachine.layered.web.DocumentController", + "methodName" : "submit", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/DocumentController.java", + "metadata" : { + "path" : "/api/documents/submit", + "verb" : "POST" + }, + "parameters" : [ ] + }, + "methodChain" : [ "click.kamil.examples.statemachine.layered.web.DocumentController.submit", "click.kamil.examples.statemachine.layered.web.CommandGateway.submitDocument", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.documentSubmit", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendDocumentEvent" ], + "triggerPoint" : { + "event" : "DocumentTransitionEvent.SUBMIT", + "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher", + "methodName" : "sendDocumentEvent", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java", + "sourceModule" : null, + "stateMachineId" : null, + "sourceState" : null, + "lineNumber" : 81, + "polymorphicEvents" : [ "DocumentTransitionEvent.SUBMIT" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : [ { + "sourceState" : "DocumentState.DRAFT", + "targetState" : "DocumentState.SUBMITTED", + "event" : "DocumentTransitionEvent.SUBMIT" + } ] + }, { + "entryPoint" : { + "type" : "REST", + "name" : "POST /api/documents/approve", + "className" : "click.kamil.examples.statemachine.layered.web.DocumentController", + "methodName" : "approve", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/DocumentController.java", + "metadata" : { + "path" : "/api/documents/approve", + "verb" : "POST" + }, + "parameters" : [ ] + }, + "methodChain" : [ "click.kamil.examples.statemachine.layered.web.DocumentController.approve", "click.kamil.examples.statemachine.layered.web.CommandGateway.approveDocument", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.documentApprove", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendDocumentEvent" ], + "triggerPoint" : { + "event" : "DocumentTransitionEvent.APPROVE", + "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher", + "methodName" : "sendDocumentEvent", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java", + "sourceModule" : null, + "stateMachineId" : null, + "sourceState" : null, + "lineNumber" : 81, + "polymorphicEvents" : [ "DocumentTransitionEvent.APPROVE" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : [ { + "sourceState" : "DocumentState.SUBMITTED", + "targetState" : "DocumentState.APPROVED", + "event" : "DocumentTransitionEvent.APPROVE" + } ] + }, { + "entryPoint" : { + "type" : "REST", + "name" : "POST /api/documents/reject", + "className" : "click.kamil.examples.statemachine.layered.web.DocumentController", + "methodName" : "reject", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/DocumentController.java", + "metadata" : { + "path" : "/api/documents/reject", + "verb" : "POST" + }, + "parameters" : [ ] + }, + "methodChain" : [ "click.kamil.examples.statemachine.layered.web.DocumentController.reject", "click.kamil.examples.statemachine.layered.web.CommandGateway.rejectDocument", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.documentReject", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendDocumentEvent" ], + "triggerPoint" : { + "event" : "DocumentTransitionEvent.REJECT", + "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher", + "methodName" : "sendDocumentEvent", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java", + "sourceModule" : null, + "stateMachineId" : null, + "sourceState" : null, + "lineNumber" : 81, + "polymorphicEvents" : [ "DocumentTransitionEvent.REJECT" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : [ { + "sourceState" : "DocumentState.SUBMITTED", + "targetState" : "DocumentState.REJECTED", + "event" : "DocumentTransitionEvent.REJECT" + } ] + }, { + "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" : "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" : null, + "lineNumber" : 75, + "polymorphicEvents" : [ "OrderTransitionEvent.PAY" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : null + }, { + "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.orderShip", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendOrderEvent" ], + "triggerPoint" : { + "event" : "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" : null, + "lineNumber" : 75, + "polymorphicEvents" : [ "OrderTransitionEvent.SHIP" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : null + }, { + "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.orderCancel", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendOrderEvent" ], + "triggerPoint" : { + "event" : "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" : null, + "lineNumber" : 75, + "polymorphicEvents" : [ "OrderTransitionEvent.CANCEL" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : null + }, { + "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.documentSubmit", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendDocumentEvent" ], + "triggerPoint" : { + "event" : "DocumentTransitionEvent.SUBMIT", + "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher", + "methodName" : "sendDocumentEvent", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java", + "sourceModule" : null, + "stateMachineId" : null, + "sourceState" : null, + "lineNumber" : 81, + "polymorphicEvents" : [ "DocumentTransitionEvent.SUBMIT" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : [ { + "sourceState" : "DocumentState.DRAFT", + "targetState" : "DocumentState.SUBMITTED", + "event" : "DocumentTransitionEvent.SUBMIT" + } ] + }, { + "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.documentApprove", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendDocumentEvent" ], + "triggerPoint" : { + "event" : "DocumentTransitionEvent.APPROVE", + "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher", + "methodName" : "sendDocumentEvent", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java", + "sourceModule" : null, + "stateMachineId" : null, + "sourceState" : null, + "lineNumber" : 81, + "polymorphicEvents" : [ "DocumentTransitionEvent.APPROVE" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : [ { + "sourceState" : "DocumentState.SUBMITTED", + "targetState" : "DocumentState.APPROVED", + "event" : "DocumentTransitionEvent.APPROVE" + } ] + }, { + "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.documentReject", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendDocumentEvent" ], + "triggerPoint" : { + "event" : "DocumentTransitionEvent.REJECT", + "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher", + "methodName" : "sendDocumentEvent", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java", + "sourceModule" : null, + "stateMachineId" : null, + "sourceState" : null, + "lineNumber" : 81, + "polymorphicEvents" : [ "DocumentTransitionEvent.REJECT" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : [ { + "sourceState" : "DocumentState.SUBMITTED", + "targetState" : "DocumentState.REJECTED", + "event" : "DocumentTransitionEvent.REJECT" + } ] + }, { + "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.orderPay", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendOrderEvent" ], + "triggerPoint" : { + "event" : "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" : null, + "lineNumber" : 75, + "polymorphicEvents" : [ "OrderTransitionEvent.PAY" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : null + }, { + "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" : "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" : null, + "lineNumber" : 75, + "polymorphicEvents" : [ "OrderTransitionEvent.SHIP" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : null + }, { + "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.orderCancel", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendOrderEvent" ], + "triggerPoint" : { + "event" : "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" : null, + "lineNumber" : 75, + "polymorphicEvents" : [ "OrderTransitionEvent.CANCEL" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : null + }, { + "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.documentSubmit", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendDocumentEvent" ], + "triggerPoint" : { + "event" : "DocumentTransitionEvent.SUBMIT", + "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher", + "methodName" : "sendDocumentEvent", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java", + "sourceModule" : null, + "stateMachineId" : null, + "sourceState" : null, + "lineNumber" : 81, + "polymorphicEvents" : [ "DocumentTransitionEvent.SUBMIT" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : [ { + "sourceState" : "DocumentState.DRAFT", + "targetState" : "DocumentState.SUBMITTED", + "event" : "DocumentTransitionEvent.SUBMIT" + } ] + }, { + "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.documentApprove", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendDocumentEvent" ], + "triggerPoint" : { + "event" : "DocumentTransitionEvent.APPROVE", + "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher", + "methodName" : "sendDocumentEvent", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java", + "sourceModule" : null, + "stateMachineId" : null, + "sourceState" : null, + "lineNumber" : 81, + "polymorphicEvents" : [ "DocumentTransitionEvent.APPROVE" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : [ { + "sourceState" : "DocumentState.SUBMITTED", + "targetState" : "DocumentState.APPROVED", + "event" : "DocumentTransitionEvent.APPROVE" + } ] + }, { + "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.documentReject", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendDocumentEvent" ], + "triggerPoint" : { + "event" : "DocumentTransitionEvent.REJECT", + "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher", + "methodName" : "sendDocumentEvent", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java", + "sourceModule" : null, + "stateMachineId" : null, + "sourceState" : null, + "lineNumber" : 81, + "polymorphicEvents" : [ "DocumentTransitionEvent.REJECT" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : [ { + "sourceState" : "DocumentState.SUBMITTED", + "targetState" : "DocumentState.REJECTED", + "event" : "DocumentTransitionEvent.REJECT" + } ] + }, { + "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" : "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" : null, + "lineNumber" : 75, + "polymorphicEvents" : [ "OrderTransitionEvent.PAY" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : null + }, { + "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" : "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" : null, + "lineNumber" : 75, + "polymorphicEvents" : [ "OrderTransitionEvent.SHIP" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : null + }, { + "entryPoint" : { + "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" ] + } ] + }, + "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" : "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" : null, + "lineNumber" : 75, + "polymorphicEvents" : [ "OrderTransitionEvent.PAY" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : null + }, { + "entryPoint" : { + "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" ] + } ] + }, + "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" : "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" : null, + "lineNumber" : 75, + "polymorphicEvents" : [ "OrderTransitionEvent.SHIP" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : null + }, { + "entryPoint" : { + "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" ] + } ] + }, + "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" : "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" : null, + "lineNumber" : 75, + "polymorphicEvents" : [ "OrderTransitionEvent.CANCEL" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : null + }, { + "entryPoint" : { + "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" ] + } ] + }, + "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.documentSubmit", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendDocumentEvent" ], + "triggerPoint" : { + "event" : "DocumentTransitionEvent.SUBMIT", + "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher", + "methodName" : "sendDocumentEvent", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java", + "sourceModule" : null, + "stateMachineId" : null, + "sourceState" : null, + "lineNumber" : 81, + "polymorphicEvents" : [ "DocumentTransitionEvent.SUBMIT" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : [ { + "sourceState" : "DocumentState.DRAFT", + "targetState" : "DocumentState.SUBMITTED", + "event" : "DocumentTransitionEvent.SUBMIT" + } ] + }, { + "entryPoint" : { + "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" ] + } ] + }, + "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.documentApprove", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendDocumentEvent" ], + "triggerPoint" : { + "event" : "DocumentTransitionEvent.APPROVE", + "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher", + "methodName" : "sendDocumentEvent", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java", + "sourceModule" : null, + "stateMachineId" : null, + "sourceState" : null, + "lineNumber" : 81, + "polymorphicEvents" : [ "DocumentTransitionEvent.APPROVE" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : [ { + "sourceState" : "DocumentState.SUBMITTED", + "targetState" : "DocumentState.APPROVED", + "event" : "DocumentTransitionEvent.APPROVE" + } ] + }, { + "entryPoint" : { + "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" ] + } ] + }, + "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.documentReject", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendDocumentEvent" ], + "triggerPoint" : { + "event" : "DocumentTransitionEvent.REJECT", + "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher", + "methodName" : "sendDocumentEvent", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java", + "sourceModule" : null, + "stateMachineId" : null, + "sourceState" : null, + "lineNumber" : 81, + "polymorphicEvents" : [ "DocumentTransitionEvent.REJECT" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : [ { + "sourceState" : "DocumentState.SUBMITTED", + "targetState" : "DocumentState.REJECTED", + "event" : "DocumentTransitionEvent.REJECT" + } ] + } ], + "properties" : { + "default" : { } + } + }, + "name" : "click.kamil.examples.statemachine.layered.document.config.StandardDocumentStateMachineConfiguration", + "renderChoicesAsDiamonds" : true, + "startStates" : [ "DocumentState.DRAFT" ], + "transitions" : [ { + "type" : "EXTERNAL", + "sourceStates" : [ { + "rawName" : "DocumentState.DRAFT", + "fullIdentifier" : "DocumentState.DRAFT" + } ], + "targetStates" : [ { + "rawName" : "DocumentState.SUBMITTED", + "fullIdentifier" : "DocumentState.SUBMITTED" + } ], + "event" : { + "rawName" : "DocumentTransitionEvent.SUBMIT", + "fullIdentifier" : "DocumentTransitionEvent.SUBMIT" + }, + "guards" : [ ], + "actions" : [ ], + "order" : null + }, { + "type" : "EXTERNAL", + "sourceStates" : [ { + "rawName" : "DocumentState.SUBMITTED", + "fullIdentifier" : "DocumentState.SUBMITTED" + } ], + "targetStates" : [ { + "rawName" : "DocumentState.APPROVED", + "fullIdentifier" : "DocumentState.APPROVED" + } ], + "event" : { + "rawName" : "DocumentTransitionEvent.APPROVE", + "fullIdentifier" : "DocumentTransitionEvent.APPROVE" + }, + "guards" : [ ], + "actions" : [ ], + "order" : null + }, { + "type" : "EXTERNAL", + "sourceStates" : [ { + "rawName" : "DocumentState.SUBMITTED", + "fullIdentifier" : "DocumentState.SUBMITTED" + } ], + "targetStates" : [ { + "rawName" : "DocumentState.REJECTED", + "fullIdentifier" : "DocumentState.REJECTED" + } ], + "event" : { + "rawName" : "DocumentTransitionEvent.REJECT", + "fullIdentifier" : "DocumentTransitionEvent.REJECT" + }, + "guards" : [ ], + "actions" : [ ], + "order" : null + } ], + "endStates" : [ "DocumentState.REJECTED", "DocumentState.APPROVED" ] +} diff --git a/state_machine_exporter/src/test/resources/golden/StandardDocumentStateMachineConfiguration/StandardDocumentStateMachineConfiguration.puml b/state_machine_exporter/src/test/resources/golden/StandardDocumentStateMachineConfiguration/StandardDocumentStateMachineConfiguration.puml new file mode 100644 index 0000000..b5b833a --- /dev/null +++ b/state_machine_exporter/src/test/resources/golden/StandardDocumentStateMachineConfiguration/StandardDocumentStateMachineConfiguration.puml @@ -0,0 +1,34 @@ +@startuml +!pragma layout smetana +set separator none +hide empty description +hide stereotype +skinparam state { + BackgroundColor white + BorderColor #94a3b8 + BorderThickness 1 + FontName Inter + FontSize 9 + FontStyle bold + RoundCorner 20 + Padding 1 +} +skinparam shadowing false +skinparam ArrowFontName JetBrains Mono +skinparam ArrowFontSize 8 +skinparam ArrowColor #cbd5e1 +skinparam ArrowThickness 1 +skinparam dpi 110 +skinparam svgLinkTarget _self + +[*] --> DocumentState.DRAFT + + +DocumentState.DRAFT -[#1E90FF,bold]-> DocumentState.SUBMITTED <> : DocumentTransitionEvent.SUBMIT +DocumentState.SUBMITTED -[#1E90FF,bold]-> DocumentState.APPROVED <> : DocumentTransitionEvent.APPROVE +DocumentState.SUBMITTED -[#1E90FF,bold]-> DocumentState.REJECTED <> : DocumentTransitionEvent.REJECT + +DocumentState.REJECTED --> [*] +DocumentState.APPROVED --> [*] +@enduml + diff --git a/state_machine_exporter/src/test/resources/golden/StandardDocumentStateMachineConfiguration/StandardDocumentStateMachineConfiguration.scxml.xml b/state_machine_exporter/src/test/resources/golden/StandardDocumentStateMachineConfiguration/StandardDocumentStateMachineConfiguration.scxml.xml new file mode 100644 index 0000000..8be6741 --- /dev/null +++ b/state_machine_exporter/src/test/resources/golden/StandardDocumentStateMachineConfiguration/StandardDocumentStateMachineConfiguration.scxml.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/state_machine_exporter/src/test/resources/golden/StandardOrderStateMachineConfiguration/StandardOrderStateMachineConfiguration.dot b/state_machine_exporter/src/test/resources/golden/StandardOrderStateMachineConfiguration/StandardOrderStateMachineConfiguration.dot new file mode 100644 index 0000000..a0b6a9e --- /dev/null +++ b/state_machine_exporter/src/test/resources/golden/StandardOrderStateMachineConfiguration/StandardOrderStateMachineConfiguration.dot @@ -0,0 +1,14 @@ +digraph statemachine { + rankdir=LR; + node [shape=rounded, style=filled, fillcolor=white, fontname="Arial"]; + edge [fontname="Arial", fontsize=10]; + + _start [shape=circle, label="", fillcolor=black, width=0.1]; + _start -> NEW; + SHIPPED [fillcolor=lightgray]; + CANCELLED [fillcolor=lightgray]; + NEW -> PAID [label="OrderTransitionEvent.PAY", style="solid", color="black"]; + PAID -> SHIPPED [label="OrderTransitionEvent.SHIP", style="solid", color="black"]; + PAID -> CANCELLED [label="OrderTransitionEvent.CANCEL", style="solid", color="black"]; +} + diff --git a/state_machine_exporter/src/test/resources/golden/StandardOrderStateMachineConfiguration/StandardOrderStateMachineConfiguration.json b/state_machine_exporter/src/test/resources/golden/StandardOrderStateMachineConfiguration/StandardOrderStateMachineConfiguration.json new file mode 100644 index 0000000..537da37 --- /dev/null +++ b/state_machine_exporter/src/test/resources/golden/StandardOrderStateMachineConfiguration/StandardOrderStateMachineConfiguration.json @@ -0,0 +1,1077 @@ +{ + "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 + }, { + "event" : "event", + "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher", + "methodName" : "sendDocumentEvent", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java", + "sourceModule" : null, + "stateMachineId" : null, + "sourceState" : null, + "lineNumber" : 81, + "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/documents/submit", + "className" : "click.kamil.examples.statemachine.layered.web.DocumentController", + "methodName" : "submit", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/DocumentController.java", + "metadata" : { + "path" : "/api/documents/submit", + "verb" : "POST" + }, + "parameters" : [ ] + }, { + "type" : "REST", + "name" : "POST /api/documents/approve", + "className" : "click.kamil.examples.statemachine.layered.web.DocumentController", + "methodName" : "approve", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/DocumentController.java", + "metadata" : { + "path" : "/api/documents/approve", + "verb" : "POST" + }, + "parameters" : [ ] + }, { + "type" : "REST", + "name" : "POST /api/documents/reject", + "className" : "click.kamil.examples.statemachine.layered.web.DocumentController", + "methodName" : "reject", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/DocumentController.java", + "metadata" : { + "path" : "/api/documents/reject", + "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/{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" : "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" : null, + "lineNumber" : 75, + "polymorphicEvents" : [ "OrderTransitionEvent.PAY" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : [ { + "sourceState" : "OrderState.NEW", + "targetState" : "OrderState.PAID", + "event" : "OrderTransitionEvent.PAY" + } ] + }, { + "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" : "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" : null, + "lineNumber" : 75, + "polymorphicEvents" : [ "OrderTransitionEvent.SHIP" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : [ { + "sourceState" : "OrderState.PAID", + "targetState" : "OrderState.SHIPPED", + "event" : "OrderTransitionEvent.SHIP" + } ] + }, { + "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" : "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" : null, + "lineNumber" : 75, + "polymorphicEvents" : [ "OrderTransitionEvent.CANCEL" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : [ { + "sourceState" : "OrderState.PAID", + "targetState" : "OrderState.CANCELLED", + "event" : "OrderTransitionEvent.CANCEL" + } ] + }, { + "entryPoint" : { + "type" : "REST", + "name" : "POST /api/documents/submit", + "className" : "click.kamil.examples.statemachine.layered.web.DocumentController", + "methodName" : "submit", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/DocumentController.java", + "metadata" : { + "path" : "/api/documents/submit", + "verb" : "POST" + }, + "parameters" : [ ] + }, + "methodChain" : [ "click.kamil.examples.statemachine.layered.web.DocumentController.submit", "click.kamil.examples.statemachine.layered.web.CommandGateway.submitDocument", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.documentSubmit", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendDocumentEvent" ], + "triggerPoint" : { + "event" : "DocumentTransitionEvent.SUBMIT", + "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher", + "methodName" : "sendDocumentEvent", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java", + "sourceModule" : null, + "stateMachineId" : null, + "sourceState" : null, + "lineNumber" : 81, + "polymorphicEvents" : [ "DocumentTransitionEvent.SUBMIT" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : null + }, { + "entryPoint" : { + "type" : "REST", + "name" : "POST /api/documents/approve", + "className" : "click.kamil.examples.statemachine.layered.web.DocumentController", + "methodName" : "approve", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/DocumentController.java", + "metadata" : { + "path" : "/api/documents/approve", + "verb" : "POST" + }, + "parameters" : [ ] + }, + "methodChain" : [ "click.kamil.examples.statemachine.layered.web.DocumentController.approve", "click.kamil.examples.statemachine.layered.web.CommandGateway.approveDocument", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.documentApprove", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendDocumentEvent" ], + "triggerPoint" : { + "event" : "DocumentTransitionEvent.APPROVE", + "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher", + "methodName" : "sendDocumentEvent", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java", + "sourceModule" : null, + "stateMachineId" : null, + "sourceState" : null, + "lineNumber" : 81, + "polymorphicEvents" : [ "DocumentTransitionEvent.APPROVE" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : null + }, { + "entryPoint" : { + "type" : "REST", + "name" : "POST /api/documents/reject", + "className" : "click.kamil.examples.statemachine.layered.web.DocumentController", + "methodName" : "reject", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/web/DocumentController.java", + "metadata" : { + "path" : "/api/documents/reject", + "verb" : "POST" + }, + "parameters" : [ ] + }, + "methodChain" : [ "click.kamil.examples.statemachine.layered.web.DocumentController.reject", "click.kamil.examples.statemachine.layered.web.CommandGateway.rejectDocument", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.documentReject", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendDocumentEvent" ], + "triggerPoint" : { + "event" : "DocumentTransitionEvent.REJECT", + "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher", + "methodName" : "sendDocumentEvent", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java", + "sourceModule" : null, + "stateMachineId" : null, + "sourceState" : null, + "lineNumber" : 81, + "polymorphicEvents" : [ "DocumentTransitionEvent.REJECT" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : null + }, { + "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" : "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" : null, + "lineNumber" : 75, + "polymorphicEvents" : [ "OrderTransitionEvent.PAY" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : [ { + "sourceState" : "OrderState.NEW", + "targetState" : "OrderState.PAID", + "event" : "OrderTransitionEvent.PAY" + } ] + }, { + "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.orderShip", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendOrderEvent" ], + "triggerPoint" : { + "event" : "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" : null, + "lineNumber" : 75, + "polymorphicEvents" : [ "OrderTransitionEvent.SHIP" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : [ { + "sourceState" : "OrderState.PAID", + "targetState" : "OrderState.SHIPPED", + "event" : "OrderTransitionEvent.SHIP" + } ] + }, { + "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.orderCancel", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendOrderEvent" ], + "triggerPoint" : { + "event" : "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" : null, + "lineNumber" : 75, + "polymorphicEvents" : [ "OrderTransitionEvent.CANCEL" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : [ { + "sourceState" : "OrderState.PAID", + "targetState" : "OrderState.CANCELLED", + "event" : "OrderTransitionEvent.CANCEL" + } ] + }, { + "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.documentSubmit", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendDocumentEvent" ], + "triggerPoint" : { + "event" : "DocumentTransitionEvent.SUBMIT", + "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher", + "methodName" : "sendDocumentEvent", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java", + "sourceModule" : null, + "stateMachineId" : null, + "sourceState" : null, + "lineNumber" : 81, + "polymorphicEvents" : [ "DocumentTransitionEvent.SUBMIT" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : null + }, { + "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.documentApprove", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendDocumentEvent" ], + "triggerPoint" : { + "event" : "DocumentTransitionEvent.APPROVE", + "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher", + "methodName" : "sendDocumentEvent", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java", + "sourceModule" : null, + "stateMachineId" : null, + "sourceState" : null, + "lineNumber" : 81, + "polymorphicEvents" : [ "DocumentTransitionEvent.APPROVE" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : null + }, { + "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.documentReject", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendDocumentEvent" ], + "triggerPoint" : { + "event" : "DocumentTransitionEvent.REJECT", + "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher", + "methodName" : "sendDocumentEvent", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java", + "sourceModule" : null, + "stateMachineId" : null, + "sourceState" : null, + "lineNumber" : 81, + "polymorphicEvents" : [ "DocumentTransitionEvent.REJECT" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : null + }, { + "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.orderPay", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendOrderEvent" ], + "triggerPoint" : { + "event" : "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" : null, + "lineNumber" : 75, + "polymorphicEvents" : [ "OrderTransitionEvent.PAY" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : [ { + "sourceState" : "OrderState.NEW", + "targetState" : "OrderState.PAID", + "event" : "OrderTransitionEvent.PAY" + } ] + }, { + "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" : "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" : null, + "lineNumber" : 75, + "polymorphicEvents" : [ "OrderTransitionEvent.SHIP" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : [ { + "sourceState" : "OrderState.PAID", + "targetState" : "OrderState.SHIPPED", + "event" : "OrderTransitionEvent.SHIP" + } ] + }, { + "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.orderCancel", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendOrderEvent" ], + "triggerPoint" : { + "event" : "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" : null, + "lineNumber" : 75, + "polymorphicEvents" : [ "OrderTransitionEvent.CANCEL" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : [ { + "sourceState" : "OrderState.PAID", + "targetState" : "OrderState.CANCELLED", + "event" : "OrderTransitionEvent.CANCEL" + } ] + }, { + "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.documentSubmit", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendDocumentEvent" ], + "triggerPoint" : { + "event" : "DocumentTransitionEvent.SUBMIT", + "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher", + "methodName" : "sendDocumentEvent", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java", + "sourceModule" : null, + "stateMachineId" : null, + "sourceState" : null, + "lineNumber" : 81, + "polymorphicEvents" : [ "DocumentTransitionEvent.SUBMIT" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : null + }, { + "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.documentApprove", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendDocumentEvent" ], + "triggerPoint" : { + "event" : "DocumentTransitionEvent.APPROVE", + "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher", + "methodName" : "sendDocumentEvent", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java", + "sourceModule" : null, + "stateMachineId" : null, + "sourceState" : null, + "lineNumber" : 81, + "polymorphicEvents" : [ "DocumentTransitionEvent.APPROVE" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : null + }, { + "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.documentReject", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendDocumentEvent" ], + "triggerPoint" : { + "event" : "DocumentTransitionEvent.REJECT", + "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher", + "methodName" : "sendDocumentEvent", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java", + "sourceModule" : null, + "stateMachineId" : null, + "sourceState" : null, + "lineNumber" : 81, + "polymorphicEvents" : [ "DocumentTransitionEvent.REJECT" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : null + }, { + "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" : "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" : null, + "lineNumber" : 75, + "polymorphicEvents" : [ "OrderTransitionEvent.PAY" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : [ { + "sourceState" : "OrderState.NEW", + "targetState" : "OrderState.PAID", + "event" : "OrderTransitionEvent.PAY" + } ] + }, { + "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" : "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" : null, + "lineNumber" : 75, + "polymorphicEvents" : [ "OrderTransitionEvent.SHIP" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : [ { + "sourceState" : "OrderState.PAID", + "targetState" : "OrderState.SHIPPED", + "event" : "OrderTransitionEvent.SHIP" + } ] + }, { + "entryPoint" : { + "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" ] + } ] + }, + "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" : "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" : null, + "lineNumber" : 75, + "polymorphicEvents" : [ "OrderTransitionEvent.PAY" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : [ { + "sourceState" : "OrderState.NEW", + "targetState" : "OrderState.PAID", + "event" : "OrderTransitionEvent.PAY" + } ] + }, { + "entryPoint" : { + "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" ] + } ] + }, + "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" : "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" : null, + "lineNumber" : 75, + "polymorphicEvents" : [ "OrderTransitionEvent.SHIP" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : [ { + "sourceState" : "OrderState.PAID", + "targetState" : "OrderState.SHIPPED", + "event" : "OrderTransitionEvent.SHIP" + } ] + }, { + "entryPoint" : { + "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" ] + } ] + }, + "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" : "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" : null, + "lineNumber" : 75, + "polymorphicEvents" : [ "OrderTransitionEvent.CANCEL" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : [ { + "sourceState" : "OrderState.PAID", + "targetState" : "OrderState.CANCELLED", + "event" : "OrderTransitionEvent.CANCEL" + } ] + }, { + "entryPoint" : { + "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" ] + } ] + }, + "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.documentSubmit", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendDocumentEvent" ], + "triggerPoint" : { + "event" : "DocumentTransitionEvent.SUBMIT", + "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher", + "methodName" : "sendDocumentEvent", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java", + "sourceModule" : null, + "stateMachineId" : null, + "sourceState" : null, + "lineNumber" : 81, + "polymorphicEvents" : [ "DocumentTransitionEvent.SUBMIT" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : null + }, { + "entryPoint" : { + "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" ] + } ] + }, + "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.documentApprove", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendDocumentEvent" ], + "triggerPoint" : { + "event" : "DocumentTransitionEvent.APPROVE", + "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher", + "methodName" : "sendDocumentEvent", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java", + "sourceModule" : null, + "stateMachineId" : null, + "sourceState" : null, + "lineNumber" : 81, + "polymorphicEvents" : [ "DocumentTransitionEvent.APPROVE" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : null + }, { + "entryPoint" : { + "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" ] + } ] + }, + "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.documentReject", "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher.sendDocumentEvent" ], + "triggerPoint" : { + "event" : "DocumentTransitionEvent.REJECT", + "className" : "click.kamil.examples.statemachine.layered.dispatch.CentralEventDispatcher", + "methodName" : "sendDocumentEvent", + "sourceFile" : "src/main/java/click/kamil/examples/statemachine/layered/dispatch/CentralEventDispatcher.java", + "sourceModule" : null, + "stateMachineId" : null, + "sourceState" : null, + "lineNumber" : 81, + "polymorphicEvents" : [ "DocumentTransitionEvent.REJECT" ], + "external" : false, + "constraint" : null, + "ambiguous" : false + }, + "contextMachineId" : null, + "matchedTransitions" : null + } ], + "properties" : { + "default" : { } + } + }, + "name" : "click.kamil.examples.statemachine.layered.order.config.StandardOrderStateMachineConfiguration", + "renderChoicesAsDiamonds" : true, + "startStates" : [ "OrderState.NEW" ], + "transitions" : [ { + "type" : "EXTERNAL", + "sourceStates" : [ { + "rawName" : "OrderState.NEW", + "fullIdentifier" : "OrderState.NEW" + } ], + "targetStates" : [ { + "rawName" : "OrderState.PAID", + "fullIdentifier" : "OrderState.PAID" + } ], + "event" : { + "rawName" : "OrderTransitionEvent.PAY", + "fullIdentifier" : "OrderTransitionEvent.PAY" + }, + "guards" : [ ], + "actions" : [ ], + "order" : null + }, { + "type" : "EXTERNAL", + "sourceStates" : [ { + "rawName" : "OrderState.PAID", + "fullIdentifier" : "OrderState.PAID" + } ], + "targetStates" : [ { + "rawName" : "OrderState.SHIPPED", + "fullIdentifier" : "OrderState.SHIPPED" + } ], + "event" : { + "rawName" : "OrderTransitionEvent.SHIP", + "fullIdentifier" : "OrderTransitionEvent.SHIP" + }, + "guards" : [ ], + "actions" : [ ], + "order" : null + }, { + "type" : "EXTERNAL", + "sourceStates" : [ { + "rawName" : "OrderState.PAID", + "fullIdentifier" : "OrderState.PAID" + } ], + "targetStates" : [ { + "rawName" : "OrderState.CANCELLED", + "fullIdentifier" : "OrderState.CANCELLED" + } ], + "event" : { + "rawName" : "OrderTransitionEvent.CANCEL", + "fullIdentifier" : "OrderTransitionEvent.CANCEL" + }, + "guards" : [ ], + "actions" : [ ], + "order" : null + } ], + "endStates" : [ "OrderState.SHIPPED", "OrderState.CANCELLED" ] +} diff --git a/state_machine_exporter/src/test/resources/golden/StandardOrderStateMachineConfiguration/StandardOrderStateMachineConfiguration.puml b/state_machine_exporter/src/test/resources/golden/StandardOrderStateMachineConfiguration/StandardOrderStateMachineConfiguration.puml new file mode 100644 index 0000000..772b5eb --- /dev/null +++ b/state_machine_exporter/src/test/resources/golden/StandardOrderStateMachineConfiguration/StandardOrderStateMachineConfiguration.puml @@ -0,0 +1,34 @@ +@startuml +!pragma layout smetana +set separator none +hide empty description +hide stereotype +skinparam state { + BackgroundColor white + BorderColor #94a3b8 + BorderThickness 1 + FontName Inter + FontSize 9 + FontStyle bold + RoundCorner 20 + Padding 1 +} +skinparam shadowing false +skinparam ArrowFontName JetBrains Mono +skinparam ArrowFontSize 8 +skinparam ArrowColor #cbd5e1 +skinparam ArrowThickness 1 +skinparam dpi 110 +skinparam svgLinkTarget _self + +[*] --> OrderState.NEW + + +OrderState.NEW -[#1E90FF,bold]-> OrderState.PAID <> : OrderTransitionEvent.PAY +OrderState.PAID -[#1E90FF,bold]-> OrderState.SHIPPED <> : OrderTransitionEvent.SHIP +OrderState.PAID -[#1E90FF,bold]-> OrderState.CANCELLED <> : OrderTransitionEvent.CANCEL + +OrderState.SHIPPED --> [*] +OrderState.CANCELLED --> [*] +@enduml + diff --git a/state_machine_exporter/src/test/resources/golden/StandardOrderStateMachineConfiguration/StandardOrderStateMachineConfiguration.scxml.xml b/state_machine_exporter/src/test/resources/golden/StandardOrderStateMachineConfiguration/StandardOrderStateMachineConfiguration.scxml.xml new file mode 100644 index 0000000..71ef772 --- /dev/null +++ b/state_machine_exporter/src/test/resources/golden/StandardOrderStateMachineConfiguration/StandardOrderStateMachineConfiguration.scxml.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + +