${c.entryPoint.name}
+
Trigger: ${c.triggerPoint.methodName}${triggerInfo}
${renderParameters(c.entryPoint.parameters)}
${c.methodChain.map((m, i) => `
${i+1} ${m}
`).join('')}
diff --git a/out_multi/click.kamil.multi.core.OrderStateMachineConfig/click.kamil.multi.core.OrderStateMachineConfig.json b/out_multi/click.kamil.multi.core.OrderStateMachineConfig/click.kamil.multi.core.OrderStateMachineConfig.json
index b0c7a90..0f80575 100644
--- a/out_multi/click.kamil.multi.core.OrderStateMachineConfig/click.kamil.multi.core.OrderStateMachineConfig.json
+++ b/out_multi/click.kamil.multi.core.OrderStateMachineConfig/click.kamil.multi.core.OrderStateMachineConfig.json
@@ -4,6 +4,7 @@
"event" : "SUBMIT",
"className" : "click.kamil.multi.core.OrderController",
"methodName" : "submitOrder",
+ "sourceFile" : "core-module/src/main/java/click/kamil/multi/core/OrderController.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 18
@@ -13,6 +14,7 @@
"name" : "POST /orders/submit",
"className" : "click.kamil.multi.core.OrderController",
"methodName" : "submitOrder",
+ "sourceFile" : "core-module/src/main/java/click/kamil/multi/core/OrderController.java",
"metadata" : {
"path" : "/orders/submit",
"verb" : "POST"
@@ -27,6 +29,7 @@
"name" : "POST /orders/submit",
"className" : "click.kamil.multi.api.OrderApi",
"methodName" : "submitOrder",
+ "sourceFile" : "api-module/src/main/java/click/kamil/multi/api/OrderApi.java",
"metadata" : {
"path" : "/orders/submit",
"verb" : "POST"
@@ -43,6 +46,7 @@
"name" : "POST /orders/submit",
"className" : "click.kamil.multi.core.OrderController",
"methodName" : "submitOrder",
+ "sourceFile" : "core-module/src/main/java/click/kamil/multi/core/OrderController.java",
"metadata" : {
"path" : "/orders/submit",
"verb" : "POST"
@@ -58,6 +62,7 @@
"event" : "SUBMIT",
"className" : "click.kamil.multi.core.OrderController",
"methodName" : "submitOrder",
+ "sourceFile" : "core-module/src/main/java/click/kamil/multi/core/OrderController.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 18
@@ -86,7 +91,9 @@
"expression" : "processAction()",
"isLambda" : false,
"internalLogic" : "@Override default void execute(StateContext
context){\n System.out.println(\"Processing order: \" + context.getMessageHeader(\"orderId\"));\n}\n",
- "lineNumber" : 31
+ "lineNumber" : 31,
+ "className" : "click.kamil.multi.core.OrderStateMachineConfig",
+ "sourceFile" : "core-module/src/main/java/click/kamil/multi/core/OrderStateMachineConfig.java"
} ],
"order" : null
}, {
diff --git a/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/analysis/model/AnalysisResult.java b/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/analysis/model/AnalysisResult.java
index 6b53df2..adf84b1 100644
--- a/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/analysis/model/AnalysisResult.java
+++ b/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/analysis/model/AnalysisResult.java
@@ -87,9 +87,11 @@ public class AnalysisResult {
ep.setName(resolver.resolveValue(ep.getName(), properties));
}
if (ep.getMetadata() != null) {
+ Map resolvedMeta = new java.util.HashMap<>();
for (var entry : ep.getMetadata().entrySet()) {
- entry.setValue(resolver.resolveValue(entry.getValue(), properties));
+ resolvedMeta.put(entry.getKey(), resolver.resolveValue(entry.getValue(), properties));
}
+ ep.setMetadata(resolvedMeta);
}
}
}
diff --git a/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/analysis/model/EntryPoint.java b/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/analysis/model/EntryPoint.java
index c6d11ce..3ace30e 100644
--- a/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/analysis/model/EntryPoint.java
+++ b/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/analysis/model/EntryPoint.java
@@ -29,6 +29,7 @@ public class EntryPoint {
private String name; // e.g., "POST /orders" or "Kafka Topic: orders"
private final String className;
private final String methodName;
+ private final String sourceFile;
private Map metadata; // e.g., path, topic, exchange
@Builder.Default
private final List parameters = java.util.Collections.emptyList();
diff --git a/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/analysis/model/TriggerPoint.java b/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/analysis/model/TriggerPoint.java
index 44d4cab..07bb330 100644
--- a/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/analysis/model/TriggerPoint.java
+++ b/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/analysis/model/TriggerPoint.java
@@ -15,6 +15,7 @@ public class TriggerPoint {
private String event;
private final String className;
private final String methodName;
+ private final String sourceFile;
private final String sourceModule;
private final String stateMachineId; // Optional: to link to a specific SM instance
private final int lineNumber;
diff --git a/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/analysis/resolver/SiblingDependencyResolver.java b/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/analysis/resolver/SiblingDependencyResolver.java
index f0a7d59..c55f30d 100644
--- a/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/analysis/resolver/SiblingDependencyResolver.java
+++ b/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/analysis/resolver/SiblingDependencyResolver.java
@@ -82,40 +82,49 @@ public class SiblingDependencyResolver {
Set siblings = new HashSet<>();
Path pom = projectDir.resolve("pom.xml");
if (Files.exists(pom)) {
+ log.info("Found pom.xml at {}", pom);
String content = Files.readString(pom);
- Matcher matcher = MAVEN_DEPENDENCY.matcher(content);
+
Set targetArtifacts = new HashSet<>();
- while (matcher.find()) {
- targetArtifacts.add(matcher.group(2)); // Just tracking artifactId for simplicity
+ Matcher matcher = Pattern.compile("(.*?) ").matcher(content);
+ // We want artifacts from the section
+ int depsStart = content.indexOf("");
+ int depsEnd = content.indexOf(" ");
+ if (depsStart != -1 && depsEnd > depsStart) {
+ String depsContent = content.substring(depsStart, depsEnd);
+ Matcher depMatcher = Pattern.compile("(.*?) ").matcher(depsContent);
+ while (depMatcher.find()) {
+ targetArtifacts.add(depMatcher.group(1));
+ }
}
+ log.info("Found maven target artifacts: {}", targetArtifacts);
if (!targetArtifacts.isEmpty()) {
Path rootDir = findMavenRoot(projectDir);
+ log.info("Resolved Maven root to: {}", rootDir);
if (rootDir != null) {
- // Find all pom.xml files in the workspace (excluding node_modules, build, etc.)
try (Stream paths = Files.walk(rootDir)) {
- paths.filter(p -> p.getFileName().toString().equals("pom.xml")
- && !p.toString().contains("/target/")
- && !p.toString().contains("/node_modules/"))
- .forEach(p -> {
- try {
- String pContent = Files.readString(p);
- Matcher artMatcher = Pattern.compile("(.*?) ").matcher(pContent);
- if (artMatcher.find()) {
- String artifactId = artMatcher.group(1);
- if (targetArtifacts.contains(artifactId)) {
- Path siblingDir = p.getParent();
- // Don't add ourselves
- if (!siblingDir.equals(projectDir)) {
- log.info("Discovered local Maven sibling dependency: {}", siblingDir);
- siblings.add(siblingDir);
- }
- }
+ List allPoms = paths.filter(p -> p.getFileName().toString().equals("pom.xml"))
+ .filter(p -> !p.toString().contains("/target/"))
+ .collect(Collectors.toList());
+ log.info("Scanned {} total pom.xml files under {}", allPoms.size(), rootDir);
+
+ for (Path p : allPoms) {
+ try {
+ String pContent = Files.readString(p);
+ String artifactId = extractOwnArtifactId(pContent);
+ log.info("Checking artifactId {} in {}", artifactId, p);
+ if (artifactId != null && targetArtifacts.contains(artifactId)) {
+ Path siblingDir = p.getParent();
+ if (!siblingDir.equals(projectDir)) {
+ log.info("Discovered local Maven sibling dependency: {}", siblingDir);
+ siblings.add(siblingDir);
}
- } catch (IOException e) {
- // ignore
}
- });
+ } catch (IOException e) {
+ // ignore
+ }
+ }
}
}
}
@@ -123,6 +132,21 @@ public class SiblingDependencyResolver {
return siblings;
}
+ private String extractOwnArtifactId(String pomContent) {
+ // Strip block if it exists
+ String content = pomContent;
+ int parentEnd = pomContent.indexOf(" ");
+ if (parentEnd != -1) {
+ content = pomContent.substring(parentEnd);
+ }
+
+ Matcher matcher = Pattern.compile("(.*?) ").matcher(content);
+ if (matcher.find()) {
+ return matcher.group(1);
+ }
+ return null;
+ }
+
private Path findMavenRoot(Path start) {
Path current = start.toAbsolutePath();
Path lastPomDir = null;
diff --git a/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/analysis/service/GenericEventDetector.java b/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/analysis/service/GenericEventDetector.java
index 6226f94..ada4a22 100644
--- a/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/analysis/service/GenericEventDetector.java
+++ b/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/analysis/service/GenericEventDetector.java
@@ -125,6 +125,7 @@ public class GenericEventDetector {
.event(eventValue)
.className(context.getFqn(type))
.methodName(method != null ? method.getName().getIdentifier() : "initializer")
+ .sourceFile(context.getRelativePath(context.getFqn(type)))
.lineNumber(cu.getLineNumber(node.getStartPosition()))
.build();
}
diff --git a/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/analysis/service/SpringMvcDetector.java b/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/analysis/service/SpringMvcDetector.java
index 0e53b8c..696aea9 100644
--- a/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/analysis/service/SpringMvcDetector.java
+++ b/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/analysis/service/SpringMvcDetector.java
@@ -26,12 +26,52 @@ public class SpringMvcDetector {
if (isRestController(node)) {
processController(node, entryPoints);
}
+ // Support WebFlux RouterFunction beans
+ processRouterFunctions(node, entryPoints);
return super.visit(node);
}
});
return entryPoints;
}
+ private void processRouterFunctions(TypeDeclaration td, List entryPoints) {
+ for (MethodDeclaration method : td.getMethods()) {
+ if (isBeanMethod(method) && method.getReturnType2() != null && method.getReturnType2().toString().contains("RouterFunction")) {
+ method.accept(new ASTVisitor() {
+ @Override
+ public boolean visit(MethodInvocation call) {
+ String name = call.getName().getIdentifier();
+ String verb = getHttpVerb(name);
+ if (verb != null && !call.arguments().isEmpty()) {
+ Expression pathArg = (Expression) call.arguments().get(0);
+ String path = constantResolver.resolve(pathArg, context);
+ if (path == null) path = pathArg.toString().replaceAll("\"", "");
+
+ entryPoints.add(EntryPoint.builder()
+ .type(EntryPoint.Type.REST)
+ .name(verb + " " + path)
+ .className(context.getFqn(td))
+ .methodName(method.getName().getIdentifier())
+ .sourceFile(context.getRelativePath(context.getFqn(td)))
+ .metadata(Map.of("path", path, "verb", verb, "style", "WebFlux Functional"))
+ .build());
+ }
+ return super.visit(call);
+ }
+ });
+ }
+ }
+ }
+
+ private boolean isBeanMethod(MethodDeclaration method) {
+ for (Object mod : method.modifiers()) {
+ if (mod instanceof Annotation ann && ann.getTypeName().getFullyQualifiedName().endsWith("Bean")) {
+ return true;
+ }
+ }
+ return false;
+ }
+
private boolean isRestController(TypeDeclaration node) {
for (Object modifier : node.modifiers()) {
if (modifier instanceof Annotation annotation) {
@@ -123,6 +163,7 @@ public class SpringMvcDetector {
.name(verb + " " + fullPath)
.className(context.getFqn(controller))
.methodName(method.getName().getIdentifier())
+ .sourceFile(context.getRelativePath(context.getFqn(controller)))
.metadata(metadata)
.parameters(parameters)
.build();
diff --git a/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/ast/app/AstTransitionParser.java b/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/ast/app/AstTransitionParser.java
index 5d21fa8..5abc8f4 100644
--- a/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/ast/app/AstTransitionParser.java
+++ b/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/ast/app/AstTransitionParser.java
@@ -7,19 +7,7 @@ import click.kamil.springstatemachineexporter.model.State;
import click.kamil.springstatemachineexporter.model.Transition;
import click.kamil.springstatemachineexporter.model.TransitionType;
import click.kamil.springstatemachineexporter.ast.common.CodebaseContext;
-import org.eclipse.jdt.core.dom.ASTVisitor;
-import org.eclipse.jdt.core.dom.ClassInstanceCreation;
-import org.eclipse.jdt.core.dom.CompilationUnit;
-import org.eclipse.jdt.core.dom.Expression;
-import org.eclipse.jdt.core.dom.IMethodBinding;
-import org.eclipse.jdt.core.dom.ASTNode;
-import org.eclipse.jdt.core.dom.LambdaExpression;
-import org.eclipse.jdt.core.dom.MethodDeclaration;
-import org.eclipse.jdt.core.dom.MethodInvocation;
-import org.eclipse.jdt.core.dom.SimpleName;
-import org.eclipse.jdt.core.dom.ITypeBinding;
-import org.eclipse.jdt.core.dom.MethodReference;
-import org.eclipse.jdt.core.dom.TypeDeclaration;
+import org.eclipse.jdt.core.dom.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -290,11 +278,30 @@ public class AstTransitionParser {
for (MethodDeclaration md : td.getMethods()) {
if (md.getName().getIdentifier().equals(binding.getName()) &&
md.parameters().size() == binding.getParameterTypes().length) {
+
+ // Special case: if it's a getter/factory for Action/Guard, look into the return statement
+ if (md.getBody() != null) {
+ if (md.getBody().statements().size() == 1) {
+ Object stmt = md.getBody().statements().get(0);
+ if (stmt instanceof org.eclipse.jdt.core.dom.ReturnStatement rs) {
+ Expression retExpr = rs.getExpression();
+ if (isLambdaOrAnonymous(retExpr)) {
+ return retExpr.toString();
+ }
+ }
+ }
+ }
return md.toString();
}
}
}
}
+ } else {
+ // FALLBACK: Manual resolution by name if binding failed
+ TypeDeclaration currentClass = findEnclosingType(mi);
+ if (currentClass != null) {
+ return resolveMethodManually(mi.getName().getIdentifier(), currentClass, context);
+ }
}
}
@@ -322,12 +329,55 @@ public class AstTransitionParser {
return null;
}
+ private static String resolveMethodManually(String methodName, TypeDeclaration td, CodebaseContext context) {
+ // Search in this class
+ for (MethodDeclaration md : td.getMethods()) {
+ if (md.getName().getIdentifier().equals(methodName)) {
+ // Found it. Apply the return-statement-extraction logic here too
+ if (md.getBody() != null && md.getBody().statements().size() == 1) {
+ Object stmt = md.getBody().statements().get(0);
+ if (stmt instanceof org.eclipse.jdt.core.dom.ReturnStatement rs) {
+ Expression retExpr = rs.getExpression();
+ if (isLambdaOrAnonymous(retExpr)) {
+ return retExpr.toString();
+ }
+ }
+ }
+ return md.toString();
+ }
+ }
+
+ // Search in superclass
+ if (td.getSuperclassType() != null) {
+ String superName = td.getSuperclassType().toString();
+ // Try to resolve simple name to FQN if possible, or just search by simple name
+ TypeDeclaration superTd = context.getTypeDeclaration(superName);
+ if (superTd != null) {
+ return resolveMethodManually(methodName, superTd, context);
+ }
+ }
+
+ return null;
+ }
+
+ private static TypeDeclaration findEnclosingType(ASTNode node) {
+ ASTNode current = node;
+ while (current != null) {
+ if (current instanceof TypeDeclaration td) return td;
+ current = current.getParent();
+ }
+ return null;
+ }
+
private static void parseGuard(Object arg, Transition t, CompilationUnit cu, CodebaseContext context) {
QuotedExpression quotedExpr = QuotedExpression.of(arg);
if (quotedExpr != null) {
String internalLogic = extractInternalLogic(quotedExpr.getExpression(), cu, context);
int lineNumber = cu.getLineNumber(quotedExpr.getExpression().getStartPosition());
- t.setGuard(Guard.of(quotedExpr.toStringWithoutQuotes(), isLambdaOrAnonymous(quotedExpr.getExpression()), internalLogic, lineNumber));
+ TypeDeclaration td = findEnclosingType(quotedExpr.getExpression());
+ String fqn = td != null ? context.getFqn(td) : null;
+ String sourceFile = fqn != null ? context.getRelativePath(fqn) : null;
+ t.setGuard(Guard.of(quotedExpr.toStringWithoutQuotes(), isLambdaOrAnonymous(quotedExpr.getExpression()), internalLogic, lineNumber, fqn, sourceFile));
}
}
@@ -336,7 +386,10 @@ public class AstTransitionParser {
if (quotedExpr != null) {
String internalLogic = extractInternalLogic(quotedExpr.getExpression(), cu, context);
int lineNumber = cu.getLineNumber(quotedExpr.getExpression().getStartPosition());
- t.getActions().add(Action.of(quotedExpr.toStringWithoutQuotes(), isLambdaOrAnonymous(quotedExpr.getExpression()), internalLogic, lineNumber));
+ TypeDeclaration td = findEnclosingType(quotedExpr.getExpression());
+ String fqn = td != null ? context.getFqn(td) : null;
+ String sourceFile = fqn != null ? context.getRelativePath(fqn) : null;
+ t.getActions().add(Action.of(quotedExpr.toStringWithoutQuotes(), isLambdaOrAnonymous(quotedExpr.getExpression()), internalLogic, lineNumber, fqn, sourceFile));
}
}
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 cf01481..0f728e9 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
@@ -19,7 +19,9 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import lombok.extern.slf4j.Slf4j;
+@Slf4j
public class CodebaseContext {
private final Map classes = new HashMap<>();
private final Map classPaths = new HashMap<>();
@@ -30,6 +32,23 @@ public class CodebaseContext {
private Map> allProperties = new HashMap<>();
private List libraryHints = new ArrayList<>();
private final ObjectMapper objectMapper = new ObjectMapper();
+ private Path projectRoot;
+
+ public void setProjectRoot(Path root) {
+ this.projectRoot = root;
+ }
+
+ public String getRelativePath(Path fullPath) {
+ if (projectRoot != null && fullPath.isAbsolute() && fullPath.startsWith(projectRoot)) {
+ return projectRoot.relativize(fullPath).toString();
+ }
+ return fullPath.getFileName().toString();
+ }
+
+ public String getRelativePath(String fqn) {
+ Path path = classPaths.get(fqn);
+ return path != null ? getRelativePath(path) : null;
+ }
public void loadLibraryHints(Path hintsFile) throws IOException {
if (Files.exists(hintsFile)) {
@@ -83,9 +102,10 @@ public class CodebaseContext {
activeIgnore.addAll(customIgnorePatterns);
List javaFiles = FileUtils.findFilesWithExtension(rootDirs, ".java", activeIgnore);
+ log.info("CodebaseContext found {} java files across {} root directories", javaFiles.size(), rootDirs.size());
for (Path javaFile : javaFiles) {
String source = Files.readString(javaFile);
- CompilationUnit cu = parse(source, javaFile.getFileName().toString());
+ CompilationUnit cu = parse(source, javaFile.toAbsolutePath().toString());
allCus.add(cu);
String packageName = cu.getPackage() != null ? cu.getPackage().getName().getFullyQualifiedName() : "";
@@ -97,9 +117,9 @@ public class CodebaseContext {
}
}
- private void indexType(TypeDeclaration td, String packageName, Path javaFile) {
+ private void indexType(TypeDeclaration td, String parentFqn, Path javaFile) {
String simpleName = td.getName().getIdentifier();
- String fqn = packageName.isEmpty() ? simpleName : packageName + "." + simpleName;
+ String fqn = parentFqn.isEmpty() ? simpleName : parentFqn + "." + simpleName;
classes.put(fqn, (CompilationUnit) td.getRoot());
classPaths.put(fqn, javaFile);
@@ -118,6 +138,13 @@ public class CodebaseContext {
String itfName = itf.toString();
interfaceToImpls.computeIfAbsent(itfName, k -> new ArrayList<>()).add(fqn);
}
+
+ // Recursively index nested types
+ for (Object type : td.getTypes()) {
+ if (type instanceof TypeDeclaration nestedTd) {
+ indexType(nestedTd, fqn, javaFile);
+ }
+ }
}
public List getImplementations(String interfaceName) {
@@ -320,25 +347,38 @@ public class CodebaseContext {
}
public String getFqn(TypeDeclaration td) {
+ StringBuilder sb = new StringBuilder(td.getName().getIdentifier());
+ ASTNode current = td.getParent();
+ while (current instanceof TypeDeclaration parent) {
+ sb.insert(0, parent.getName().getIdentifier() + ".");
+ current = parent.getParent();
+ }
+
CompilationUnit cu = (CompilationUnit) td.getRoot();
String packageName = cu.getPackage() != null ? cu.getPackage().getName().getFullyQualifiedName() : "";
- String simpleName = td.getName().getIdentifier();
- return packageName.isEmpty() ? simpleName : packageName + "." + simpleName;
+ String fqn = sb.toString();
+ return packageName.isEmpty() ? fqn : packageName + "." + fqn;
}
private TypeDeclaration findTypeInCu(CompilationUnit cu, String fqn) {
- String packageName = cu.getPackage() != null ? cu.getPackage().getName().getFullyQualifiedName() : "";
for (Object type : cu.types()) {
if (type instanceof TypeDeclaration td) {
- String simpleName = td.getName().getIdentifier();
- String typeFqn = packageName.isEmpty() ? simpleName : packageName + "." + simpleName;
- if (typeFqn.equals(fqn))
- return td;
+ TypeDeclaration found = findNestedType(td, fqn);
+ if (found != null) return found;
}
}
return null;
}
+ private TypeDeclaration findNestedType(TypeDeclaration td, String targetFqn) {
+ if (getFqn(td).equals(targetFqn)) return td;
+ for (TypeDeclaration nested : td.getTypes()) {
+ TypeDeclaration found = findNestedType(nested, targetFqn);
+ if (found != null) return found;
+ }
+ return null;
+ }
+
public Path getPath(String className) {
return classPaths.get(className);
}
diff --git a/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/model/Action.java b/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/model/Action.java
index 268dd03..10d25fd 100644
--- a/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/model/Action.java
+++ b/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/model/Action.java
@@ -1,7 +1,7 @@
package click.kamil.springstatemachineexporter.model;
-public record Action(String expression, boolean isLambda, String internalLogic, Integer lineNumber) {
- public static Action of(String expression, boolean isLambda, String internalLogic, Integer lineNumber) {
- return expression != null ? new Action(expression, isLambda, internalLogic, lineNumber) : null;
+public record Action(String expression, boolean isLambda, String internalLogic, Integer lineNumber, String className, String sourceFile) {
+ public static Action of(String expression, boolean isLambda, String internalLogic, Integer lineNumber, String className, String sourceFile) {
+ return expression != null ? new Action(expression, isLambda, internalLogic, lineNumber, className, sourceFile) : null;
}
}
diff --git a/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/model/Guard.java b/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/model/Guard.java
index b320568..203219e 100644
--- a/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/model/Guard.java
+++ b/state_machine_exporter/src/main/java/click/kamil/springstatemachineexporter/model/Guard.java
@@ -1,7 +1,7 @@
package click.kamil.springstatemachineexporter.model;
-public record Guard(String expression, boolean isLambda, String internalLogic, Integer lineNumber) {
- public static Guard of(String expression, boolean isLambda, String internalLogic, Integer lineNumber) {
- return expression != null ? new Guard(expression, isLambda, internalLogic, lineNumber) : null;
+public record Guard(String expression, boolean isLambda, String internalLogic, Integer lineNumber, String className, String sourceFile) {
+ public static Guard of(String expression, boolean isLambda, String internalLogic, Integer lineNumber, String className, String sourceFile) {
+ return expression != null ? new Guard(expression, isLambda, internalLogic, lineNumber, className, sourceFile) : null;
}
}
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 cb7422d..1a4057b 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
@@ -68,10 +68,23 @@ public class ExportService {
allPaths.add(inputDir);
allPaths.addAll(siblingResolver.resolveSiblings(inputDir));
- context.setSourcepath(allPaths.stream()
+ // Find project root (common ancestor)
+ Path projectRoot = inputDir.toAbsolutePath();
+ for (Path p : allPaths) {
+ Path ap = p.toAbsolutePath();
+ while (projectRoot != null && !ap.startsWith(projectRoot)) {
+ projectRoot = projectRoot.getParent();
+ }
+ }
+ context.setProjectRoot(projectRoot);
+ log.info("Project root resolved to: {}", projectRoot);
+
+ List sourcepaths = allPaths.stream()
.map(p -> p.resolve("src/main/java").toString())
.filter(p -> Files.exists(Path.of(p)))
- .collect(Collectors.toList()));
+ .collect(Collectors.toList());
+ log.info("Setting JDT sourcepath: {}", sourcepaths);
+ context.setSourcepath(sourcepaths);
context.setResolveBindings(true);
Path hintsFile = inputDir.resolve("hints.json");
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 d37af92..c7aa9a3 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
@@ -131,6 +131,12 @@ public class RegressionTest {
root.resolve("state_machines/multi_module_sample/core-module"),
Path.of("src/test/resources/golden/OrderStateMachineConfig"),
"OrderStateMachineConfig"
+ ),
+ new TestScenario(
+ "Maven Multi-Module Sample",
+ root.resolve("state_machines/maven_multi_module/core-module"),
+ Path.of("src/test/resources/golden/MavenOrderStateMachine"),
+ "MavenOrderStateMachine"
)
);
}
diff --git a/state_machine_exporter/src/test/resources/golden/ComplexStateMachineConfig/ComplexStateMachineConfig.json b/state_machine_exporter/src/test/resources/golden/ComplexStateMachineConfig/ComplexStateMachineConfig.json
index 6df9980..01ea4ae 100644
--- a/state_machine_exporter/src/test/resources/golden/ComplexStateMachineConfig/ComplexStateMachineConfig.json
+++ b/state_machine_exporter/src/test/resources/golden/ComplexStateMachineConfig/ComplexStateMachineConfig.json
@@ -236,8 +236,10 @@
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 86
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 86,
+ "className" : "click.kamil.examples.statemachine.complex.ComplexStateMachineConfig",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/complex/ComplexStateMachineConfig.java"
},
"actions" : [ ],
"order" : 0
@@ -255,8 +257,10 @@
"guard" : {
"expression" : "guardVarEquals(\"value2\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 87
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 87,
+ "className" : "click.kamil.examples.statemachine.complex.ComplexStateMachineConfig",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/complex/ComplexStateMachineConfig.java"
},
"actions" : [ ],
"order" : 1
@@ -288,8 +292,10 @@
"guard" : {
"expression" : "guardEventHeaderEquals(\"header1\",\"foo\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 92
+ "internalLogic" : "context -> {\n Object header=context.getMessageHeader(headerName);\n return expected.equals(header);\n}\n",
+ "lineNumber" : 92,
+ "className" : "click.kamil.examples.statemachine.complex.ComplexStateMachineConfig",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/complex/ComplexStateMachineConfig.java"
},
"actions" : [ ],
"order" : 0
@@ -321,8 +327,10 @@
"guard" : {
"expression" : "guardVarEquals(\"value3\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 97
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 97,
+ "className" : "click.kamil.examples.statemachine.complex.ComplexStateMachineConfig",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/complex/ComplexStateMachineConfig.java"
},
"actions" : [ ],
"order" : 0
@@ -354,8 +362,10 @@
"guard" : {
"expression" : "guardVarEquals(\"reset\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 102
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 102,
+ "className" : "click.kamil.examples.statemachine.complex.ComplexStateMachineConfig",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/complex/ComplexStateMachineConfig.java"
},
"actions" : [ ],
"order" : 0
@@ -387,8 +397,10 @@
"guard" : {
"expression" : "guardEventHeaderEquals(\"header2\",\"bar\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 107
+ "internalLogic" : "context -> {\n Object header=context.getMessageHeader(headerName);\n return expected.equals(header);\n}\n",
+ "lineNumber" : 107,
+ "className" : "click.kamil.examples.statemachine.complex.ComplexStateMachineConfig",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/complex/ComplexStateMachineConfig.java"
},
"actions" : [ ],
"order" : 0
@@ -420,8 +432,10 @@
"guard" : {
"expression" : "guardVarEquals(\"goTo13\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 112
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 112,
+ "className" : "click.kamil.examples.statemachine.complex.ComplexStateMachineConfig",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/complex/ComplexStateMachineConfig.java"
},
"actions" : [ ],
"order" : 0
@@ -439,8 +453,10 @@
"guard" : {
"expression" : "guardVarEquals(\"goTo14\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 113
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 113,
+ "className" : "click.kamil.examples.statemachine.complex.ComplexStateMachineConfig",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/complex/ComplexStateMachineConfig.java"
},
"actions" : [ ],
"order" : 1
@@ -472,8 +488,10 @@
"guard" : {
"expression" : "guardVarEquals(\"goBack10\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 118
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 118,
+ "className" : "click.kamil.examples.statemachine.complex.ComplexStateMachineConfig",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/complex/ComplexStateMachineConfig.java"
},
"actions" : [ ],
"order" : 0
@@ -505,8 +523,10 @@
"guard" : {
"expression" : "guardVarEquals(\"loop12\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 123
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 123,
+ "className" : "click.kamil.examples.statemachine.complex.ComplexStateMachineConfig",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/complex/ComplexStateMachineConfig.java"
},
"actions" : [ ],
"order" : 0
@@ -538,8 +558,10 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBack\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 128
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 128,
+ "className" : "click.kamil.examples.statemachine.complex.ComplexStateMachineConfig",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/complex/ComplexStateMachineConfig.java"
},
"actions" : [ ],
"order" : 0
@@ -557,8 +579,10 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBackMore\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 129
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 129,
+ "className" : "click.kamil.examples.statemachine.complex.ComplexStateMachineConfig",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/complex/ComplexStateMachineConfig.java"
},
"actions" : [ ],
"order" : 1
@@ -590,8 +614,10 @@
"guard" : {
"expression" : "guardVarEquals(\"forward9\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 134
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 134,
+ "className" : "click.kamil.examples.statemachine.complex.ComplexStateMachineConfig",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/complex/ComplexStateMachineConfig.java"
},
"actions" : [ ],
"order" : 0
diff --git a/state_machine_exporter/src/test/resources/golden/EnterpriseStateMachineConfig/EnterpriseStateMachineConfig.json b/state_machine_exporter/src/test/resources/golden/EnterpriseStateMachineConfig/EnterpriseStateMachineConfig.json
index 0f23217..f09a790 100644
--- a/state_machine_exporter/src/test/resources/golden/EnterpriseStateMachineConfig/EnterpriseStateMachineConfig.json
+++ b/state_machine_exporter/src/test/resources/golden/EnterpriseStateMachineConfig/EnterpriseStateMachineConfig.json
@@ -4,6 +4,7 @@
"event" : "AUDIT_EVENT",
"className" : "click.kamil.examples.enterprise.api.SecurityInterceptor",
"methodName" : "preHandle",
+ "sourceFile" : "src/main/java/click/kamil/examples/enterprise/api/SecurityInterceptor.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 17
@@ -11,6 +12,7 @@
"event" : "PLACE_ORDER",
"className" : "click.kamil.examples.enterprise.service.OrderServiceImpl",
"methodName" : "place",
+ "sourceFile" : "src/main/java/click/kamil/examples/enterprise/service/OrderServiceImpl.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 16
@@ -18,6 +20,7 @@
"event" : "CANCEL_ORDER",
"className" : "click.kamil.examples.enterprise.service.OrderServiceImpl",
"methodName" : "cancel",
+ "sourceFile" : "src/main/java/click/kamil/examples/enterprise/service/OrderServiceImpl.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 21
@@ -25,6 +28,7 @@
"event" : "PAY_ORDER",
"className" : "click.kamil.examples.enterprise.service.ReactivePaymentService",
"methodName" : "processPayment",
+ "sourceFile" : "src/main/java/click/kamil/examples/enterprise/service/ReactivePaymentService.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 18
@@ -32,6 +36,7 @@
"event" : "SHIP_ORDER",
"className" : "click.kamil.examples.enterprise.messaging.ShippingJmsListener",
"methodName" : "onShippingReady",
+ "sourceFile" : "src/main/java/click/kamil/examples/enterprise/messaging/ShippingJmsListener.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 17
@@ -39,6 +44,7 @@
"event" : "RETURN_ORDER",
"className" : "click.kamil.examples.enterprise.messaging.ReturnsRabbitListener",
"methodName" : "onReturn",
+ "sourceFile" : "src/main/java/click/kamil/examples/enterprise/messaging/ReturnsRabbitListener.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 17
@@ -48,6 +54,7 @@
"name" : "POST /api/enterprise/orders/place",
"className" : "click.kamil.examples.enterprise.api.OrderApi",
"methodName" : "placeOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/enterprise/api/OrderApi.java",
"metadata" : {
"path" : "/api/enterprise/orders/place",
"verb" : "POST"
@@ -58,6 +65,7 @@
"name" : "POST /api/enterprise/orders/{id}/cancel",
"className" : "click.kamil.examples.enterprise.api.OrderApi",
"methodName" : "cancelOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/enterprise/api/OrderApi.java",
"metadata" : {
"path" : "/api/enterprise/orders/{id}/cancel",
"verb" : "POST"
@@ -72,6 +80,7 @@
"name" : "POST /api/enterprise/orders/place",
"className" : "click.kamil.examples.enterprise.api.OrderController",
"methodName" : "placeOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/enterprise/api/OrderController.java",
"metadata" : {
"path" : "/api/enterprise/orders/place",
"verb" : "POST"
@@ -82,6 +91,7 @@
"name" : "POST /api/enterprise/orders/{id}/cancel",
"className" : "click.kamil.examples.enterprise.api.OrderController",
"methodName" : "cancelOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/enterprise/api/OrderController.java",
"metadata" : {
"path" : "/api/enterprise/orders/{id}/cancel",
"verb" : "POST"
@@ -96,6 +106,7 @@
"name" : "INTERCEPTOR: SecurityInterceptor.preHandle",
"className" : "click.kamil.examples.enterprise.api.SecurityInterceptor",
"methodName" : "preHandle",
+ "sourceFile" : null,
"metadata" : {
"interceptorType" : "Spring MVC Interceptor"
},
@@ -105,6 +116,7 @@
"name" : "POST /api/enterprise/payments",
"className" : "click.kamil.examples.enterprise.api.ReactivePaymentController",
"methodName" : "pay",
+ "sourceFile" : "src/main/java/click/kamil/examples/enterprise/api/ReactivePaymentController.java",
"metadata" : {
"path" : "/api/enterprise/payments",
"verb" : "POST"
@@ -119,6 +131,7 @@
"name" : "JMS: shipping.queue",
"className" : "click.kamil.examples.enterprise.messaging.ShippingJmsListener",
"methodName" : "onShippingReady",
+ "sourceFile" : null,
"metadata" : {
"protocol" : "JMS",
"destination" : "shipping.queue"
@@ -133,6 +146,7 @@
"name" : "RABBIT: returns.queue",
"className" : "click.kamil.examples.enterprise.messaging.ReturnsRabbitListener",
"methodName" : "onReturn",
+ "sourceFile" : null,
"metadata" : {
"protocol" : "RABBIT",
"destination" : "returns.queue"
@@ -149,6 +163,7 @@
"name" : "POST /api/enterprise/orders/place",
"className" : "click.kamil.examples.enterprise.api.OrderController",
"methodName" : "placeOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/enterprise/api/OrderController.java",
"metadata" : {
"path" : "/api/enterprise/orders/place",
"verb" : "POST"
@@ -160,6 +175,7 @@
"event" : "PLACE_ORDER",
"className" : "click.kamil.examples.enterprise.service.OrderServiceImpl",
"methodName" : "place",
+ "sourceFile" : "src/main/java/click/kamil/examples/enterprise/service/OrderServiceImpl.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 16
@@ -170,6 +186,7 @@
"name" : "POST /api/enterprise/orders/{id}/cancel",
"className" : "click.kamil.examples.enterprise.api.OrderController",
"methodName" : "cancelOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/enterprise/api/OrderController.java",
"metadata" : {
"path" : "/api/enterprise/orders/{id}/cancel",
"verb" : "POST"
@@ -185,6 +202,7 @@
"event" : "CANCEL_ORDER",
"className" : "click.kamil.examples.enterprise.service.OrderServiceImpl",
"methodName" : "cancel",
+ "sourceFile" : "src/main/java/click/kamil/examples/enterprise/service/OrderServiceImpl.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 21
@@ -195,6 +213,7 @@
"name" : "INTERCEPTOR: SecurityInterceptor.preHandle",
"className" : "click.kamil.examples.enterprise.api.SecurityInterceptor",
"methodName" : "preHandle",
+ "sourceFile" : null,
"metadata" : {
"interceptorType" : "Spring MVC Interceptor"
},
@@ -205,6 +224,7 @@
"event" : "AUDIT_EVENT",
"className" : "click.kamil.examples.enterprise.api.SecurityInterceptor",
"methodName" : "preHandle",
+ "sourceFile" : "src/main/java/click/kamil/examples/enterprise/api/SecurityInterceptor.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 17
@@ -215,6 +235,7 @@
"name" : "POST /api/enterprise/payments",
"className" : "click.kamil.examples.enterprise.api.ReactivePaymentController",
"methodName" : "pay",
+ "sourceFile" : "src/main/java/click/kamil/examples/enterprise/api/ReactivePaymentController.java",
"metadata" : {
"path" : "/api/enterprise/payments",
"verb" : "POST"
@@ -230,6 +251,7 @@
"event" : "PAY_ORDER",
"className" : "click.kamil.examples.enterprise.service.ReactivePaymentService",
"methodName" : "processPayment",
+ "sourceFile" : "src/main/java/click/kamil/examples/enterprise/service/ReactivePaymentService.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 18
@@ -240,6 +262,7 @@
"name" : "JMS: shipping.queue",
"className" : "click.kamil.examples.enterprise.messaging.ShippingJmsListener",
"methodName" : "onShippingReady",
+ "sourceFile" : null,
"metadata" : {
"protocol" : "JMS",
"destination" : "shipping.queue"
@@ -255,6 +278,7 @@
"event" : "SHIP_ORDER",
"className" : "click.kamil.examples.enterprise.messaging.ShippingJmsListener",
"methodName" : "onShippingReady",
+ "sourceFile" : "src/main/java/click/kamil/examples/enterprise/messaging/ShippingJmsListener.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 17
@@ -265,6 +289,7 @@
"name" : "RABBIT: returns.queue",
"className" : "click.kamil.examples.enterprise.messaging.ReturnsRabbitListener",
"methodName" : "onReturn",
+ "sourceFile" : null,
"metadata" : {
"protocol" : "RABBIT",
"destination" : "returns.queue"
@@ -280,6 +305,7 @@
"event" : "RETURN_ORDER",
"className" : "click.kamil.examples.enterprise.messaging.ReturnsRabbitListener",
"methodName" : "onReturn",
+ "sourceFile" : "src/main/java/click/kamil/examples/enterprise/messaging/ReturnsRabbitListener.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 17
@@ -321,7 +347,9 @@
"expression" : "(c) -> true",
"isLambda" : true,
"internalLogic" : "(c) -> true",
- "lineNumber" : 41
+ "lineNumber" : 41,
+ "className" : "click.kamil.examples.enterprise.config.EnterpriseStateMachineConfig",
+ "sourceFile" : "src/main/java/click/kamil/examples/enterprise/config/EnterpriseStateMachineConfig.java"
},
"actions" : [ ],
"order" : 0
diff --git a/state_machine_exporter/src/test/resources/golden/ExtendedStateMachineConfig/ExtendedStateMachineConfig.json b/state_machine_exporter/src/test/resources/golden/ExtendedStateMachineConfig/ExtendedStateMachineConfig.json
index f8256fb..17d570c 100644
--- a/state_machine_exporter/src/test/resources/golden/ExtendedStateMachineConfig/ExtendedStateMachineConfig.json
+++ b/state_machine_exporter/src/test/resources/golden/ExtendedStateMachineConfig/ExtendedStateMachineConfig.json
@@ -4,6 +4,7 @@
"event" : "FINISH",
"className" : "click.kamil.examples.statemachine.extended.web.OrderController",
"methodName" : "finishOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/OrderController.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 34
@@ -11,6 +12,7 @@
"event" : "AUDIT_EVENT",
"className" : "click.kamil.examples.statemachine.extended.web.AuditInterceptor",
"methodName" : "preHandle",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/AuditInterceptor.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 16
@@ -18,6 +20,7 @@
"event" : "EXTERNAL_TRIGGER",
"className" : "click.kamil.examples.statemachine.extended.service.OrderService",
"methodName" : "processSubmit",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/OrderService.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 19
@@ -25,6 +28,7 @@
"event" : "SUBMIT_EVENT",
"className" : "click.kamil.examples.statemachine.extended.service.OrderService",
"methodName" : "processSubmit",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/OrderService.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 20
@@ -32,6 +36,7 @@
"event" : "CANCEL_EVENT",
"className" : "click.kamil.examples.statemachine.extended.service.OrderService",
"methodName" : "processCancel",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/OrderService.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 25
@@ -39,6 +44,7 @@
"event" : "[LIFECYCLE:RESTORE]",
"className" : "click.kamil.examples.statemachine.extended.service.OrderService",
"methodName" : "resumeOrder",
+ "sourceFile" : null,
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 29
@@ -46,6 +52,7 @@
"event" : "REACTIVE_EVENT",
"className" : "click.kamil.examples.statemachine.extended.service.ReactiveOrderService",
"methodName" : "processReactive",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/ReactiveOrderService.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 18
@@ -55,6 +62,7 @@
"name" : "POST /api/orders/submit",
"className" : "click.kamil.examples.statemachine.extended.web.OrderController",
"methodName" : "submitOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/OrderController.java",
"metadata" : {
"path" : "/api/orders/submit",
"verb" : "POST"
@@ -65,6 +73,7 @@
"name" : "POST /api/orders/cancel",
"className" : "click.kamil.examples.statemachine.extended.web.OrderController",
"methodName" : "cancelOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/OrderController.java",
"metadata" : {
"path" : "/api/orders/cancel",
"verb" : "POST"
@@ -75,6 +84,7 @@
"name" : "POST /api/orders/finish",
"className" : "click.kamil.examples.statemachine.extended.web.OrderController",
"methodName" : "finishOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/OrderController.java",
"metadata" : {
"path" : "/api/orders/finish",
"verb" : "POST"
@@ -85,6 +95,7 @@
"name" : "POST /api/orders/resume",
"className" : "click.kamil.examples.statemachine.extended.web.OrderController",
"methodName" : "resumeOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/OrderController.java",
"metadata" : {
"path" : "/api/orders/resume",
"verb" : "POST"
@@ -99,6 +110,7 @@
"name" : "POST /api/orders/reactive",
"className" : "click.kamil.examples.statemachine.extended.web.OrderController",
"methodName" : "reactiveOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/OrderController.java",
"metadata" : {
"path" : "/api/orders/reactive",
"verb" : "POST"
@@ -113,6 +125,7 @@
"name" : "INTERCEPTOR: AuditInterceptor.preHandle",
"className" : "click.kamil.examples.statemachine.extended.web.AuditInterceptor",
"methodName" : "preHandle",
+ "sourceFile" : null,
"metadata" : {
"interceptorType" : "Spring MVC Interceptor"
},
@@ -124,6 +137,7 @@
"name" : "POST /api/orders/submit",
"className" : "click.kamil.examples.statemachine.extended.web.OrderController",
"methodName" : "submitOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/OrderController.java",
"metadata" : {
"path" : "/api/orders/submit",
"verb" : "POST"
@@ -135,6 +149,7 @@
"event" : "EXTERNAL_TRIGGER",
"className" : "click.kamil.examples.statemachine.extended.service.OrderService",
"methodName" : "processSubmit",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/OrderService.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 19
@@ -145,6 +160,7 @@
"name" : "POST /api/orders/submit",
"className" : "click.kamil.examples.statemachine.extended.web.OrderController",
"methodName" : "submitOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/OrderController.java",
"metadata" : {
"path" : "/api/orders/submit",
"verb" : "POST"
@@ -156,6 +172,7 @@
"event" : "SUBMIT_EVENT",
"className" : "click.kamil.examples.statemachine.extended.service.OrderService",
"methodName" : "processSubmit",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/OrderService.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 20
@@ -166,6 +183,7 @@
"name" : "POST /api/orders/cancel",
"className" : "click.kamil.examples.statemachine.extended.web.OrderController",
"methodName" : "cancelOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/OrderController.java",
"metadata" : {
"path" : "/api/orders/cancel",
"verb" : "POST"
@@ -177,6 +195,7 @@
"event" : "CANCEL_EVENT",
"className" : "click.kamil.examples.statemachine.extended.service.OrderService",
"methodName" : "processCancel",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/OrderService.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 25
@@ -187,6 +206,7 @@
"name" : "POST /api/orders/finish",
"className" : "click.kamil.examples.statemachine.extended.web.OrderController",
"methodName" : "finishOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/OrderController.java",
"metadata" : {
"path" : "/api/orders/finish",
"verb" : "POST"
@@ -198,6 +218,7 @@
"event" : "FINISH",
"className" : "click.kamil.examples.statemachine.extended.web.OrderController",
"methodName" : "finishOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/OrderController.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 34
@@ -208,6 +229,7 @@
"name" : "POST /api/orders/resume",
"className" : "click.kamil.examples.statemachine.extended.web.OrderController",
"methodName" : "resumeOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/OrderController.java",
"metadata" : {
"path" : "/api/orders/resume",
"verb" : "POST"
@@ -223,6 +245,7 @@
"event" : "[LIFECYCLE:RESTORE]",
"className" : "click.kamil.examples.statemachine.extended.service.OrderService",
"methodName" : "resumeOrder",
+ "sourceFile" : null,
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 29
@@ -233,6 +256,7 @@
"name" : "POST /api/orders/reactive",
"className" : "click.kamil.examples.statemachine.extended.web.OrderController",
"methodName" : "reactiveOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/OrderController.java",
"metadata" : {
"path" : "/api/orders/reactive",
"verb" : "POST"
@@ -248,6 +272,7 @@
"event" : "REACTIVE_EVENT",
"className" : "click.kamil.examples.statemachine.extended.service.ReactiveOrderService",
"methodName" : "processReactive",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/ReactiveOrderService.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 18
@@ -258,6 +283,7 @@
"name" : "INTERCEPTOR: AuditInterceptor.preHandle",
"className" : "click.kamil.examples.statemachine.extended.web.AuditInterceptor",
"methodName" : "preHandle",
+ "sourceFile" : null,
"metadata" : {
"interceptorType" : "Spring MVC Interceptor"
},
@@ -268,6 +294,7 @@
"event" : "AUDIT_EVENT",
"className" : "click.kamil.examples.statemachine.extended.web.AuditInterceptor",
"methodName" : "preHandle",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/AuditInterceptor.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 16
diff --git a/state_machine_exporter/src/test/resources/golden/ExtendedStateMachineConfig_PROD/ExtendedStateMachineConfig.json b/state_machine_exporter/src/test/resources/golden/ExtendedStateMachineConfig_PROD/ExtendedStateMachineConfig.json
index 8bd17fb..dba5225 100644
--- a/state_machine_exporter/src/test/resources/golden/ExtendedStateMachineConfig_PROD/ExtendedStateMachineConfig.json
+++ b/state_machine_exporter/src/test/resources/golden/ExtendedStateMachineConfig_PROD/ExtendedStateMachineConfig.json
@@ -4,6 +4,7 @@
"event" : "FINISH",
"className" : "click.kamil.examples.statemachine.extended.web.OrderController",
"methodName" : "finishOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/OrderController.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 34
@@ -11,6 +12,7 @@
"event" : "AUDIT_EVENT",
"className" : "click.kamil.examples.statemachine.extended.web.AuditInterceptor",
"methodName" : "preHandle",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/AuditInterceptor.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 16
@@ -18,6 +20,7 @@
"event" : "EXTERNAL_TRIGGER",
"className" : "click.kamil.examples.statemachine.extended.service.OrderService",
"methodName" : "processSubmit",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/OrderService.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 19
@@ -25,6 +28,7 @@
"event" : "SUBMIT_EVENT",
"className" : "click.kamil.examples.statemachine.extended.service.OrderService",
"methodName" : "processSubmit",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/OrderService.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 20
@@ -32,6 +36,7 @@
"event" : "CANCEL_EVENT",
"className" : "click.kamil.examples.statemachine.extended.service.OrderService",
"methodName" : "processCancel",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/OrderService.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 25
@@ -39,6 +44,7 @@
"event" : "[LIFECYCLE:RESTORE]",
"className" : "click.kamil.examples.statemachine.extended.service.OrderService",
"methodName" : "resumeOrder",
+ "sourceFile" : null,
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 29
@@ -46,6 +52,7 @@
"event" : "REACTIVE_EVENT",
"className" : "click.kamil.examples.statemachine.extended.service.ReactiveOrderService",
"methodName" : "processReactive",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/ReactiveOrderService.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 18
@@ -55,6 +62,7 @@
"name" : "POST /api/orders/submit",
"className" : "click.kamil.examples.statemachine.extended.web.OrderController",
"methodName" : "submitOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/OrderController.java",
"metadata" : {
"path" : "/api/orders/submit",
"verb" : "POST"
@@ -65,6 +73,7 @@
"name" : "POST /api/orders/cancel",
"className" : "click.kamil.examples.statemachine.extended.web.OrderController",
"methodName" : "cancelOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/OrderController.java",
"metadata" : {
"path" : "/api/orders/cancel",
"verb" : "POST"
@@ -75,6 +84,7 @@
"name" : "POST /api/orders/finish",
"className" : "click.kamil.examples.statemachine.extended.web.OrderController",
"methodName" : "finishOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/OrderController.java",
"metadata" : {
"path" : "/api/orders/finish",
"verb" : "POST"
@@ -85,6 +95,7 @@
"name" : "POST /api/orders/resume",
"className" : "click.kamil.examples.statemachine.extended.web.OrderController",
"methodName" : "resumeOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/OrderController.java",
"metadata" : {
"path" : "/api/orders/resume",
"verb" : "POST"
@@ -99,6 +110,7 @@
"name" : "POST /api/orders/reactive",
"className" : "click.kamil.examples.statemachine.extended.web.OrderController",
"methodName" : "reactiveOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/OrderController.java",
"metadata" : {
"path" : "/api/orders/reactive",
"verb" : "POST"
@@ -113,6 +125,7 @@
"name" : "INTERCEPTOR: AuditInterceptor.preHandle",
"className" : "click.kamil.examples.statemachine.extended.web.AuditInterceptor",
"methodName" : "preHandle",
+ "sourceFile" : null,
"metadata" : {
"interceptorType" : "Spring MVC Interceptor"
},
@@ -124,6 +137,7 @@
"name" : "POST /api/orders/submit",
"className" : "click.kamil.examples.statemachine.extended.web.OrderController",
"methodName" : "submitOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/OrderController.java",
"metadata" : {
"path" : "/api/orders/submit",
"verb" : "POST"
@@ -135,6 +149,7 @@
"event" : "EXTERNAL_TRIGGER",
"className" : "click.kamil.examples.statemachine.extended.service.OrderService",
"methodName" : "processSubmit",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/OrderService.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 19
@@ -145,6 +160,7 @@
"name" : "POST /api/orders/submit",
"className" : "click.kamil.examples.statemachine.extended.web.OrderController",
"methodName" : "submitOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/OrderController.java",
"metadata" : {
"path" : "/api/orders/submit",
"verb" : "POST"
@@ -156,6 +172,7 @@
"event" : "SUBMIT_EVENT",
"className" : "click.kamil.examples.statemachine.extended.service.OrderService",
"methodName" : "processSubmit",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/OrderService.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 20
@@ -166,6 +183,7 @@
"name" : "POST /api/orders/cancel",
"className" : "click.kamil.examples.statemachine.extended.web.OrderController",
"methodName" : "cancelOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/OrderController.java",
"metadata" : {
"path" : "/api/orders/cancel",
"verb" : "POST"
@@ -177,6 +195,7 @@
"event" : "CANCEL_EVENT",
"className" : "click.kamil.examples.statemachine.extended.service.OrderService",
"methodName" : "processCancel",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/OrderService.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 25
@@ -187,6 +206,7 @@
"name" : "POST /api/orders/finish",
"className" : "click.kamil.examples.statemachine.extended.web.OrderController",
"methodName" : "finishOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/OrderController.java",
"metadata" : {
"path" : "/api/orders/finish",
"verb" : "POST"
@@ -198,6 +218,7 @@
"event" : "FINISH",
"className" : "click.kamil.examples.statemachine.extended.web.OrderController",
"methodName" : "finishOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/OrderController.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 34
@@ -208,6 +229,7 @@
"name" : "POST /api/orders/resume",
"className" : "click.kamil.examples.statemachine.extended.web.OrderController",
"methodName" : "resumeOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/OrderController.java",
"metadata" : {
"path" : "/api/orders/resume",
"verb" : "POST"
@@ -223,6 +245,7 @@
"event" : "[LIFECYCLE:RESTORE]",
"className" : "click.kamil.examples.statemachine.extended.service.OrderService",
"methodName" : "resumeOrder",
+ "sourceFile" : null,
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 29
@@ -233,6 +256,7 @@
"name" : "POST /api/orders/reactive",
"className" : "click.kamil.examples.statemachine.extended.web.OrderController",
"methodName" : "reactiveOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/OrderController.java",
"metadata" : {
"path" : "/api/orders/reactive",
"verb" : "POST"
@@ -248,6 +272,7 @@
"event" : "REACTIVE_EVENT",
"className" : "click.kamil.examples.statemachine.extended.service.ReactiveOrderService",
"methodName" : "processReactive",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/ReactiveOrderService.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 18
@@ -258,6 +283,7 @@
"name" : "INTERCEPTOR: AuditInterceptor.preHandle",
"className" : "click.kamil.examples.statemachine.extended.web.AuditInterceptor",
"methodName" : "preHandle",
+ "sourceFile" : null,
"metadata" : {
"interceptorType" : "Spring MVC Interceptor"
},
@@ -268,6 +294,7 @@
"event" : "AUDIT_EVENT",
"className" : "click.kamil.examples.statemachine.extended.web.AuditInterceptor",
"methodName" : "preHandle",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/AuditInterceptor.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 16
diff --git a/state_machine_exporter/src/test/resources/golden/F1StateMachineConfiguration/F1StateMachineConfiguration.json b/state_machine_exporter/src/test/resources/golden/F1StateMachineConfiguration/F1StateMachineConfiguration.json
index 33ee7a7..8530325 100644
--- a/state_machine_exporter/src/test/resources/golden/F1StateMachineConfiguration/F1StateMachineConfiguration.json
+++ b/state_machine_exporter/src/test/resources/golden/F1StateMachineConfiguration/F1StateMachineConfiguration.json
@@ -320,8 +320,10 @@
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 120
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 120,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractFStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractFStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -353,8 +355,10 @@
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 126
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 126,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractFStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractFStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -372,8 +376,10 @@
"guard" : {
"expression" : "guardVarEquals(\"value2\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 127
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 127,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractFStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractFStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 1
@@ -405,8 +411,10 @@
"guard" : {
"expression" : "guardEventHeaderEquals(\"header1\",\"foo\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 132
+ "internalLogic" : "context -> {\n Object header=context.getMessageHeader(headerName);\n return expected.equals(header);\n}\n",
+ "lineNumber" : 132,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractFStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractFStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -438,8 +446,10 @@
"guard" : {
"expression" : "guardVarEquals(\"value3\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 137
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 137,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractFStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractFStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -471,8 +481,10 @@
"guard" : {
"expression" : "guardVarEquals(\"reset\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 142
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 142,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractFStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractFStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -504,8 +516,10 @@
"guard" : {
"expression" : "guardEventHeaderEquals(\"header2\",\"bar\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 147
+ "internalLogic" : "context -> {\n Object header=context.getMessageHeader(headerName);\n return expected.equals(header);\n}\n",
+ "lineNumber" : 147,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractFStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractFStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -537,8 +551,10 @@
"guard" : {
"expression" : "guardVarEquals(\"goTo13\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 152
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 152,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractFStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractFStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -556,8 +572,10 @@
"guard" : {
"expression" : "guardVarEquals(\"goTo14\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 153
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 153,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractFStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractFStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 1
@@ -589,8 +607,10 @@
"guard" : {
"expression" : "guardVarEquals(\"goBack10\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 158
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 158,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractFStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractFStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -622,8 +642,10 @@
"guard" : {
"expression" : "guardVarEquals(\"loop12\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 163
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 163,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractFStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractFStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -655,8 +677,10 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBack\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 168
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 168,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractFStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractFStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -674,8 +698,10 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBackMore\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 169
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 169,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractFStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractFStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 1
@@ -707,8 +733,10 @@
"guard" : {
"expression" : "guardVarEquals(\"forward9\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 174
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 174,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractFStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractFStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -754,8 +782,10 @@
"guard" : {
"expression" : "guardEventHeaderEquals(\"header1\",\"foo\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 31
+ "internalLogic" : "context -> {\n Object header=context.getMessageHeader(headerName);\n return expected.equals(header);\n}\n",
+ "lineNumber" : 31,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.F1StateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/F1StateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
diff --git a/state_machine_exporter/src/test/resources/golden/F2StateMachineConfiguration/F2StateMachineConfiguration.json b/state_machine_exporter/src/test/resources/golden/F2StateMachineConfiguration/F2StateMachineConfiguration.json
index f775981..a64eb0e 100644
--- a/state_machine_exporter/src/test/resources/golden/F2StateMachineConfiguration/F2StateMachineConfiguration.json
+++ b/state_machine_exporter/src/test/resources/golden/F2StateMachineConfiguration/F2StateMachineConfiguration.json
@@ -320,8 +320,10 @@
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 120
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 120,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractFStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractFStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -353,8 +355,10 @@
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 126
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 126,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractFStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractFStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -372,8 +376,10 @@
"guard" : {
"expression" : "guardVarEquals(\"value2\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 127
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 127,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractFStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractFStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 1
@@ -405,8 +411,10 @@
"guard" : {
"expression" : "guardEventHeaderEquals(\"header1\",\"foo\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 132
+ "internalLogic" : "context -> {\n Object header=context.getMessageHeader(headerName);\n return expected.equals(header);\n}\n",
+ "lineNumber" : 132,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractFStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractFStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -438,8 +446,10 @@
"guard" : {
"expression" : "guardVarEquals(\"value3\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 137
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 137,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractFStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractFStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -471,8 +481,10 @@
"guard" : {
"expression" : "guardVarEquals(\"reset\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 142
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 142,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractFStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractFStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -504,8 +516,10 @@
"guard" : {
"expression" : "guardEventHeaderEquals(\"header2\",\"bar\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 147
+ "internalLogic" : "context -> {\n Object header=context.getMessageHeader(headerName);\n return expected.equals(header);\n}\n",
+ "lineNumber" : 147,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractFStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractFStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -537,8 +551,10 @@
"guard" : {
"expression" : "guardVarEquals(\"goTo13\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 152
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 152,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractFStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractFStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -556,8 +572,10 @@
"guard" : {
"expression" : "guardVarEquals(\"goTo14\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 153
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 153,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractFStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractFStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 1
@@ -589,8 +607,10 @@
"guard" : {
"expression" : "guardVarEquals(\"goBack10\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 158
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 158,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractFStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractFStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -622,8 +642,10 @@
"guard" : {
"expression" : "guardVarEquals(\"loop12\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 163
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 163,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractFStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractFStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -655,8 +677,10 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBack\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 168
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 168,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractFStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractFStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -674,8 +698,10 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBackMore\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 169
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 169,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractFStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractFStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 1
@@ -707,8 +733,10 @@
"guard" : {
"expression" : "guardVarEquals(\"forward9\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 174
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 174,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractFStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractFStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -754,8 +782,10 @@
"guard" : {
"expression" : "guardEventHeaderEquals(\"header1\",\"foo\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 33
+ "internalLogic" : "context -> {\n Object header=context.getMessageHeader(headerName);\n return expected.equals(header);\n}\n",
+ "lineNumber" : 33,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.F2StateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/F2StateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
diff --git a/state_machine_exporter/src/test/resources/golden/G1StateMachineConfiguration/G1StateMachineConfiguration.json b/state_machine_exporter/src/test/resources/golden/G1StateMachineConfiguration/G1StateMachineConfiguration.json
index b0908f1..2f7531f 100644
--- a/state_machine_exporter/src/test/resources/golden/G1StateMachineConfiguration/G1StateMachineConfiguration.json
+++ b/state_machine_exporter/src/test/resources/golden/G1StateMachineConfiguration/G1StateMachineConfiguration.json
@@ -236,8 +236,10 @@
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 98
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 98,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractGStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractGStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -269,8 +271,10 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBack\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 104
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 104,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractGStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractGStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -288,8 +292,10 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBackMore\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 105
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 105,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractGStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractGStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 1
@@ -321,8 +327,10 @@
"guard" : {
"expression" : "guardVarEquals(\"forward9\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 110
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 110,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractGStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractGStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
diff --git a/state_machine_exporter/src/test/resources/golden/G2StateMachineConfiguration/G2StateMachineConfiguration.json b/state_machine_exporter/src/test/resources/golden/G2StateMachineConfiguration/G2StateMachineConfiguration.json
index 19f11ae..2e40a9c 100644
--- a/state_machine_exporter/src/test/resources/golden/G2StateMachineConfiguration/G2StateMachineConfiguration.json
+++ b/state_machine_exporter/src/test/resources/golden/G2StateMachineConfiguration/G2StateMachineConfiguration.json
@@ -236,8 +236,10 @@
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 98
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 98,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractGStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractGStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -269,8 +271,10 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBack\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 104
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 104,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractGStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractGStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -288,8 +292,10 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBackMore\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 105
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 105,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractGStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractGStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 1
@@ -321,8 +327,10 @@
"guard" : {
"expression" : "guardVarEquals(\"forward9\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 110
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 110,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.AbstractGStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate3/AbstractGStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
diff --git a/state_machine_exporter/src/test/resources/golden/InheritanceStateMachineConfig/InheritanceStateMachineConfig.json b/state_machine_exporter/src/test/resources/golden/InheritanceStateMachineConfig/InheritanceStateMachineConfig.json
index 118d5b0..0a6645b 100644
--- a/state_machine_exporter/src/test/resources/golden/InheritanceStateMachineConfig/InheritanceStateMachineConfig.json
+++ b/state_machine_exporter/src/test/resources/golden/InheritanceStateMachineConfig/InheritanceStateMachineConfig.json
@@ -4,6 +4,7 @@
"event" : "INHERITED_SUBMIT",
"className" : "click.kamil.examples.statemachine.inheritance.service.ProcessingServiceImpl",
"methodName" : "doProcess",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritance/service/ProcessingServiceImpl.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 15
@@ -13,6 +14,7 @@
"name" : "POST /api/v2/orders/submit",
"className" : "click.kamil.examples.statemachine.inheritance.api.OrderApi",
"methodName" : "submitOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritance/api/OrderApi.java",
"metadata" : {
"path" : "/api/v2/orders/submit",
"verb" : "POST"
@@ -23,6 +25,7 @@
"name" : "POST /api/v2/orders/submit",
"className" : "click.kamil.examples.statemachine.inheritance.api.OrderControllerImpl",
"methodName" : "submitOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritance/api/OrderControllerImpl.java",
"metadata" : {
"path" : "/api/v2/orders/submit",
"verb" : "POST"
@@ -35,6 +38,7 @@
"name" : "POST /api/v2/orders/submit",
"className" : "click.kamil.examples.statemachine.inheritance.api.OrderControllerImpl",
"methodName" : "submitOrder",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritance/api/OrderControllerImpl.java",
"metadata" : {
"path" : "/api/v2/orders/submit",
"verb" : "POST"
@@ -46,6 +50,7 @@
"event" : "INHERITED_SUBMIT",
"className" : "click.kamil.examples.statemachine.inheritance.service.ProcessingServiceImpl",
"methodName" : "doProcess",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritance/service/ProcessingServiceImpl.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 15
diff --git a/state_machine_exporter/src/test/resources/golden/KamilEnumStateMachineConfiguration/KamilEnumStateMachineConfiguration.json b/state_machine_exporter/src/test/resources/golden/KamilEnumStateMachineConfiguration/KamilEnumStateMachineConfiguration.json
index 028df4c..cdb2781 100644
--- a/state_machine_exporter/src/test/resources/golden/KamilEnumStateMachineConfiguration/KamilEnumStateMachineConfiguration.json
+++ b/state_machine_exporter/src/test/resources/golden/KamilEnumStateMachineConfiguration/KamilEnumStateMachineConfiguration.json
@@ -55,7 +55,9 @@
"expression" : "new Guard(){\n @Override public boolean evaluate( StateContext context){\n return false;\n }\n}\n",
"isLambda" : true,
"internalLogic" : "new Guard(){\n @Override public boolean evaluate( StateContext context){\n return false;\n }\n}\n",
- "lineNumber" : 29
+ "lineNumber" : 29,
+ "className" : "click.kamil.examples.statemachine.enumstate.KamilEnumStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/enumstate/KamilEnumStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : null
@@ -113,7 +115,9 @@
"expression" : "new Guard(){\n @Override public boolean evaluate( StateContext context){\n return true;\n }\n}\n",
"isLambda" : true,
"internalLogic" : "new Guard(){\n @Override public boolean evaluate( StateContext context){\n return true;\n }\n}\n",
- "lineNumber" : 46
+ "lineNumber" : 46,
+ "className" : "click.kamil.examples.statemachine.enumstate.KamilEnumStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/enumstate/KamilEnumStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -132,7 +136,9 @@
"expression" : "guard1",
"isLambda" : false,
"internalLogic" : null,
- "lineNumber" : 52
+ "lineNumber" : 52,
+ "className" : "click.kamil.examples.statemachine.enumstate.KamilEnumStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/enumstate/KamilEnumStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 1
@@ -151,7 +157,9 @@
"expression" : "new Guard(){\n @Override public boolean evaluate( StateContext context){\n return false;\n }\n}\n",
"isLambda" : true,
"internalLogic" : "new Guard(){\n @Override public boolean evaluate( StateContext context){\n return false;\n }\n}\n",
- "lineNumber" : 53
+ "lineNumber" : 53,
+ "className" : "click.kamil.examples.statemachine.enumstate.KamilEnumStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/enumstate/KamilEnumStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 2
@@ -210,12 +218,16 @@
"expression" : "new Action(){\n @Override public void execute( StateContext context){\n }\n}\n",
"isLambda" : true,
"internalLogic" : "new Action(){\n @Override public void execute( StateContext context){\n }\n}\n",
- "lineNumber" : 63
+ "lineNumber" : 63,
+ "className" : "click.kamil.examples.statemachine.enumstate.KamilEnumStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/enumstate/KamilEnumStateMachineConfiguration.java"
}, {
"expression" : "action2",
"isLambda" : false,
"internalLogic" : null,
- "lineNumber" : 67
+ "lineNumber" : 67,
+ "className" : "click.kamil.examples.statemachine.enumstate.KamilEnumStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/enumstate/KamilEnumStateMachineConfiguration.java"
} ],
"order" : null
} ],
diff --git a/state_machine_exporter/src/test/resources/golden/MavenOrderStateMachine/MavenOrderStateMachine.dot b/state_machine_exporter/src/test/resources/golden/MavenOrderStateMachine/MavenOrderStateMachine.dot
new file mode 100644
index 0000000..7d2484a
--- /dev/null
+++ b/state_machine_exporter/src/test/resources/golden/MavenOrderStateMachine/MavenOrderStateMachine.dot
@@ -0,0 +1,12 @@
+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 -> INIT;
+ DONE [fillcolor=lightgray];
+ INIT -> BUSY [label="SUBMIT / loggingAction()", style="solid", color="black"];
+ BUSY -> DONE [label="ORDER_EVENT", style="solid", color="black"];
+}
+
diff --git a/state_machine_exporter/src/test/resources/golden/MavenOrderStateMachine/MavenOrderStateMachine.json b/state_machine_exporter/src/test/resources/golden/MavenOrderStateMachine/MavenOrderStateMachine.json
new file mode 100644
index 0000000..37d159a
--- /dev/null
+++ b/state_machine_exporter/src/test/resources/golden/MavenOrderStateMachine/MavenOrderStateMachine.json
@@ -0,0 +1,150 @@
+{
+ "metadata" : {
+ "triggers" : [ {
+ "event" : "SUBMIT",
+ "className" : "click.kamil.maven.core.MavenOrderStateMachine.OrderController",
+ "methodName" : "submitOrder",
+ "sourceFile" : "core-module/src/main/java/click/kamil/maven/core/MavenOrderStateMachine.java",
+ "sourceModule" : null,
+ "stateMachineId" : null,
+ "lineNumber" : 40
+ }, {
+ "event" : "ORDER_EVENT",
+ "className" : "click.kamil.maven.core.MavenOrderStateMachine.OrderService",
+ "methodName" : "onMessage",
+ "sourceFile" : "core-module/src/main/java/click/kamil/maven/core/MavenOrderStateMachine.java",
+ "sourceModule" : null,
+ "stateMachineId" : null,
+ "lineNumber" : 52
+ } ],
+ "entryPoints" : [ {
+ "type" : "REST",
+ "name" : "POST /maven/orders/submit",
+ "className" : "click.kamil.maven.core.MavenOrderStateMachine.OrderController",
+ "methodName" : "submitOrder",
+ "sourceFile" : "core-module/src/main/java/click/kamil/maven/core/MavenOrderStateMachine.java",
+ "metadata" : {
+ "path" : "/maven/orders/submit",
+ "verb" : "POST"
+ },
+ "parameters" : [ {
+ "name" : "orderId",
+ "type" : "String",
+ "annotations" : [ "RequestBody" ]
+ } ]
+ }, {
+ "type" : "REST",
+ "name" : "POST /reactive/order",
+ "className" : "click.kamil.maven.api.ReactiveOrderApi",
+ "methodName" : "orderRoutes",
+ "sourceFile" : "api-module/src/main/java/click/kamil/maven/api/ReactiveOrderApi.java",
+ "metadata" : {
+ "path" : "/reactive/order",
+ "verb" : "POST",
+ "style" : "WebFlux Functional"
+ },
+ "parameters" : [ ]
+ }, {
+ "type" : "REST",
+ "name" : "POST /maven/orders/submit",
+ "className" : "click.kamil.maven.api.MavenOrderApi",
+ "methodName" : "submitOrder",
+ "sourceFile" : "api-module/src/main/java/click/kamil/maven/api/MavenOrderApi.java",
+ "metadata" : {
+ "path" : "/maven/orders/submit",
+ "verb" : "POST"
+ },
+ "parameters" : [ {
+ "name" : "orderId",
+ "type" : "String",
+ "annotations" : [ "RequestBody" ]
+ } ]
+ }, {
+ "type" : "JMS",
+ "name" : "JMS: order.queue",
+ "className" : "click.kamil.maven.api.JmsOrderListener",
+ "methodName" : "onMessage",
+ "sourceFile" : null,
+ "metadata" : {
+ "protocol" : "JMS",
+ "destination" : "order.queue"
+ },
+ "parameters" : [ {
+ "name" : "message",
+ "type" : "String",
+ "annotations" : [ ]
+ } ]
+ } ],
+ "callChains" : [ {
+ "entryPoint" : {
+ "type" : "REST",
+ "name" : "POST /maven/orders/submit",
+ "className" : "click.kamil.maven.core.MavenOrderStateMachine.OrderController",
+ "methodName" : "submitOrder",
+ "sourceFile" : "core-module/src/main/java/click/kamil/maven/core/MavenOrderStateMachine.java",
+ "metadata" : {
+ "path" : "/maven/orders/submit",
+ "verb" : "POST"
+ },
+ "parameters" : [ {
+ "name" : "orderId",
+ "type" : "String",
+ "annotations" : [ "RequestBody" ]
+ } ]
+ },
+ "methodChain" : [ "click.kamil.maven.core.MavenOrderStateMachine.OrderController.submitOrder" ],
+ "triggerPoint" : {
+ "event" : "SUBMIT",
+ "className" : "click.kamil.maven.core.MavenOrderStateMachine.OrderController",
+ "methodName" : "submitOrder",
+ "sourceFile" : "core-module/src/main/java/click/kamil/maven/core/MavenOrderStateMachine.java",
+ "sourceModule" : null,
+ "stateMachineId" : null,
+ "lineNumber" : 40
+ }
+ } ],
+ "properties" : {
+ "default" : { }
+ }
+ },
+ "name" : "click.kamil.maven.core.MavenOrderStateMachine",
+ "renderChoicesAsDiamonds" : true,
+ "startStates" : [ "INIT" ],
+ "transitions" : [ {
+ "type" : "EXTERNAL",
+ "sourceStates" : [ {
+ "rawName" : "\"INIT\"",
+ "fullIdentifier" : "INIT"
+ } ],
+ "targetStates" : [ {
+ "rawName" : "\"BUSY\"",
+ "fullIdentifier" : "BUSY"
+ } ],
+ "event" : "SUBMIT",
+ "guard" : null,
+ "actions" : [ {
+ "expression" : "loggingAction()",
+ "isLambda" : false,
+ "internalLogic" : "context -> {\n System.out.println(\"LOG: State transition in progress...\");\n}\n",
+ "lineNumber" : 25,
+ "className" : "click.kamil.maven.core.MavenOrderStateMachine",
+ "sourceFile" : "core-module/src/main/java/click/kamil/maven/core/MavenOrderStateMachine.java"
+ } ],
+ "order" : null
+ }, {
+ "type" : "EXTERNAL",
+ "sourceStates" : [ {
+ "rawName" : "\"BUSY\"",
+ "fullIdentifier" : "BUSY"
+ } ],
+ "targetStates" : [ {
+ "rawName" : "\"DONE\"",
+ "fullIdentifier" : "DONE"
+ } ],
+ "event" : "ORDER_EVENT",
+ "guard" : null,
+ "actions" : [ ],
+ "order" : null
+ } ],
+ "endStates" : [ "DONE" ]
+}
diff --git a/state_machine_exporter/src/test/resources/golden/MavenOrderStateMachine/MavenOrderStateMachine.puml b/state_machine_exporter/src/test/resources/golden/MavenOrderStateMachine/MavenOrderStateMachine.puml
new file mode 100644
index 0000000..cee713a
--- /dev/null
+++ b/state_machine_exporter/src/test/resources/golden/MavenOrderStateMachine/MavenOrderStateMachine.puml
@@ -0,0 +1,32 @@
+@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
+
+[*] --> INIT
+
+
+INIT -[#1E90FF,bold]-> BUSY <> <> : SUBMIT / loggingAction()
+BUSY -[#1E90FF,bold]-> DONE <> <> : ORDER_EVENT
+
+DONE --> [*]
+@enduml
+
diff --git a/state_machine_exporter/src/test/resources/golden/MavenOrderStateMachine/MavenOrderStateMachine.scxml.xml b/state_machine_exporter/src/test/resources/golden/MavenOrderStateMachine/MavenOrderStateMachine.scxml.xml
new file mode 100644
index 0000000..e09c93e
--- /dev/null
+++ b/state_machine_exporter/src/test/resources/golden/MavenOrderStateMachine/MavenOrderStateMachine.scxml.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/state_machine_exporter/src/test/resources/golden/MavenOrderStateMachine/click.kamil.maven.core.MavenOrderStateMachine.html b/state_machine_exporter/src/test/resources/golden/MavenOrderStateMachine/click.kamil.maven.core.MavenOrderStateMachine.html
new file mode 100644
index 0000000..8ac4b01
--- /dev/null
+++ b/state_machine_exporter/src/test/resources/golden/MavenOrderStateMachine/click.kamil.maven.core.MavenOrderStateMachine.html
@@ -0,0 +1,679 @@
+
+
+
+
+
+ State Machine Explorer - click.kamil.maven.core.MavenOrderStateMachine
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/state_machine_exporter/src/test/resources/golden/MavenOrderStateMachine/click.kamil.maven.core.MavenOrderStateMachine.json b/state_machine_exporter/src/test/resources/golden/MavenOrderStateMachine/click.kamil.maven.core.MavenOrderStateMachine.json
new file mode 100644
index 0000000..9556b89
--- /dev/null
+++ b/state_machine_exporter/src/test/resources/golden/MavenOrderStateMachine/click.kamil.maven.core.MavenOrderStateMachine.json
@@ -0,0 +1,66 @@
+{
+ "metadata" : {
+ "triggers" : [ {
+ "event" : "ORDER_EVENT",
+ "className" : "click.kamil.maven.core.OrderService",
+ "methodName" : "onMessage",
+ "sourceModule" : null,
+ "stateMachineId" : null,
+ "lineNumber" : 34
+ } ],
+ "entryPoints" : [ {
+ "type" : "REST",
+ "name" : "POST /reactive/order",
+ "className" : "click.kamil.maven.api.ReactiveOrderApi",
+ "methodName" : "orderRoutes",
+ "metadata" : {
+ "path" : "/reactive/order",
+ "verb" : "POST",
+ "style" : "WebFlux Functional"
+ },
+ "parameters" : [ ]
+ }, {
+ "type" : "JMS",
+ "name" : "JMS: order.queue",
+ "className" : "click.kamil.maven.api.JmsOrderListener",
+ "methodName" : "onMessage",
+ "metadata" : {
+ "protocol" : "JMS",
+ "destination" : "order.queue"
+ },
+ "parameters" : [ {
+ "name" : "message",
+ "type" : "String",
+ "annotations" : [ ]
+ } ]
+ } ],
+ "callChains" : [ ],
+ "properties" : {
+ "default" : { }
+ }
+ },
+ "name" : "click.kamil.maven.core.MavenOrderStateMachine",
+ "renderChoicesAsDiamonds" : true,
+ "startStates" : [ "INIT" ],
+ "transitions" : [ {
+ "type" : "EXTERNAL",
+ "sourceStates" : [ {
+ "rawName" : "\"INIT\"",
+ "fullIdentifier" : "INIT"
+ } ],
+ "targetStates" : [ {
+ "rawName" : "\"BUSY\"",
+ "fullIdentifier" : "BUSY"
+ } ],
+ "event" : "ORDER_EVENT",
+ "guard" : null,
+ "actions" : [ {
+ "expression" : "loggingAction()",
+ "isLambda" : false,
+ "internalLogic" : "context -> {\n System.out.println(\"LOG: State transition in progress...\");\n}\n",
+ "lineNumber" : 23
+ } ],
+ "order" : null
+ } ],
+ "endStates" : [ "DONE" ]
+}
diff --git a/state_machine_exporter/src/test/resources/golden/MavenOrderStateMachine/click.kamil.maven.core.MavenOrderStateMachine.puml b/state_machine_exporter/src/test/resources/golden/MavenOrderStateMachine/click.kamil.maven.core.MavenOrderStateMachine.puml
new file mode 100644
index 0000000..98f60a8
--- /dev/null
+++ b/state_machine_exporter/src/test/resources/golden/MavenOrderStateMachine/click.kamil.maven.core.MavenOrderStateMachine.puml
@@ -0,0 +1,31 @@
+@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
+
+[*] --> INIT
+
+
+INIT -[#1E90FF,bold]-> BUSY <> <> : ORDER_EVENT / loggingAction()
+
+DONE --> [*]
+@enduml
+
diff --git a/state_machine_exporter/src/test/resources/golden/OneStateMachineConfiguration/OneStateMachineConfiguration.json b/state_machine_exporter/src/test/resources/golden/OneStateMachineConfiguration/OneStateMachineConfiguration.json
index f90416f..3e698ae 100644
--- a/state_machine_exporter/src/test/resources/golden/OneStateMachineConfiguration/OneStateMachineConfiguration.json
+++ b/state_machine_exporter/src/test/resources/golden/OneStateMachineConfiguration/OneStateMachineConfiguration.json
@@ -250,8 +250,10 @@
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 91
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 91,
+ "className" : "click.kamil.examples.statemachine.inheritancestate.AbstractOneStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritancestate/AbstractOneStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -283,8 +285,10 @@
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 97
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 97,
+ "className" : "click.kamil.examples.statemachine.inheritancestate.AbstractOneStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritancestate/AbstractOneStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -302,8 +306,10 @@
"guard" : {
"expression" : "guardVarEquals(\"value2\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 98
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 98,
+ "className" : "click.kamil.examples.statemachine.inheritancestate.AbstractOneStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritancestate/AbstractOneStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 1
@@ -335,8 +341,10 @@
"guard" : {
"expression" : "guardEventHeaderEquals(\"header1\",\"foo\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 103
+ "internalLogic" : "context -> {\n Object header=context.getMessageHeader(headerName);\n return expected.equals(header);\n}\n",
+ "lineNumber" : 103,
+ "className" : "click.kamil.examples.statemachine.inheritancestate.AbstractOneStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritancestate/AbstractOneStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -368,8 +376,10 @@
"guard" : {
"expression" : "guardVarEquals(\"value3\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 108
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 108,
+ "className" : "click.kamil.examples.statemachine.inheritancestate.AbstractOneStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritancestate/AbstractOneStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -401,8 +411,10 @@
"guard" : {
"expression" : "guardVarEquals(\"reset\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 113
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 113,
+ "className" : "click.kamil.examples.statemachine.inheritancestate.AbstractOneStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritancestate/AbstractOneStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -434,8 +446,10 @@
"guard" : {
"expression" : "guardEventHeaderEquals(\"header2\",\"bar\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 118
+ "internalLogic" : "context -> {\n Object header=context.getMessageHeader(headerName);\n return expected.equals(header);\n}\n",
+ "lineNumber" : 118,
+ "className" : "click.kamil.examples.statemachine.inheritancestate.AbstractOneStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritancestate/AbstractOneStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -467,8 +481,10 @@
"guard" : {
"expression" : "guardVarEquals(\"goTo13\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 123
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 123,
+ "className" : "click.kamil.examples.statemachine.inheritancestate.AbstractOneStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritancestate/AbstractOneStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -486,8 +502,10 @@
"guard" : {
"expression" : "guardVarEquals(\"goTo14\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 124
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 124,
+ "className" : "click.kamil.examples.statemachine.inheritancestate.AbstractOneStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritancestate/AbstractOneStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 1
@@ -519,8 +537,10 @@
"guard" : {
"expression" : "guardVarEquals(\"goBack10\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 129
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 129,
+ "className" : "click.kamil.examples.statemachine.inheritancestate.AbstractOneStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritancestate/AbstractOneStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -552,8 +572,10 @@
"guard" : {
"expression" : "guardVarEquals(\"loop12\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 134
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 134,
+ "className" : "click.kamil.examples.statemachine.inheritancestate.AbstractOneStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritancestate/AbstractOneStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -585,8 +607,10 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBack\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 139
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 139,
+ "className" : "click.kamil.examples.statemachine.inheritancestate.AbstractOneStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritancestate/AbstractOneStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -604,8 +628,10 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBackMore\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 140
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 140,
+ "className" : "click.kamil.examples.statemachine.inheritancestate.AbstractOneStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritancestate/AbstractOneStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 1
@@ -637,8 +663,10 @@
"guard" : {
"expression" : "guardVarEquals(\"forward9\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 145
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 145,
+ "className" : "click.kamil.examples.statemachine.inheritancestate.AbstractOneStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritancestate/AbstractOneStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
diff --git a/state_machine_exporter/src/test/resources/golden/OrderStateMachineConfig/OrderStateMachineConfig.json b/state_machine_exporter/src/test/resources/golden/OrderStateMachineConfig/OrderStateMachineConfig.json
index b0c7a90..0f80575 100644
--- a/state_machine_exporter/src/test/resources/golden/OrderStateMachineConfig/OrderStateMachineConfig.json
+++ b/state_machine_exporter/src/test/resources/golden/OrderStateMachineConfig/OrderStateMachineConfig.json
@@ -4,6 +4,7 @@
"event" : "SUBMIT",
"className" : "click.kamil.multi.core.OrderController",
"methodName" : "submitOrder",
+ "sourceFile" : "core-module/src/main/java/click/kamil/multi/core/OrderController.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 18
@@ -13,6 +14,7 @@
"name" : "POST /orders/submit",
"className" : "click.kamil.multi.core.OrderController",
"methodName" : "submitOrder",
+ "sourceFile" : "core-module/src/main/java/click/kamil/multi/core/OrderController.java",
"metadata" : {
"path" : "/orders/submit",
"verb" : "POST"
@@ -27,6 +29,7 @@
"name" : "POST /orders/submit",
"className" : "click.kamil.multi.api.OrderApi",
"methodName" : "submitOrder",
+ "sourceFile" : "api-module/src/main/java/click/kamil/multi/api/OrderApi.java",
"metadata" : {
"path" : "/orders/submit",
"verb" : "POST"
@@ -43,6 +46,7 @@
"name" : "POST /orders/submit",
"className" : "click.kamil.multi.core.OrderController",
"methodName" : "submitOrder",
+ "sourceFile" : "core-module/src/main/java/click/kamil/multi/core/OrderController.java",
"metadata" : {
"path" : "/orders/submit",
"verb" : "POST"
@@ -58,6 +62,7 @@
"event" : "SUBMIT",
"className" : "click.kamil.multi.core.OrderController",
"methodName" : "submitOrder",
+ "sourceFile" : "core-module/src/main/java/click/kamil/multi/core/OrderController.java",
"sourceModule" : null,
"stateMachineId" : null,
"lineNumber" : 18
@@ -86,7 +91,9 @@
"expression" : "processAction()",
"isLambda" : false,
"internalLogic" : "@Override default void execute(StateContext context){\n System.out.println(\"Processing order: \" + context.getMessageHeader(\"orderId\"));\n}\n",
- "lineNumber" : 31
+ "lineNumber" : 31,
+ "className" : "click.kamil.multi.core.OrderStateMachineConfig",
+ "sourceFile" : "core-module/src/main/java/click/kamil/multi/core/OrderStateMachineConfig.java"
} ],
"order" : null
}, {
diff --git a/state_machine_exporter/src/test/resources/golden/SimpleEnumStateMachineConfiguration/SimpleEnumStateMachineConfiguration.json b/state_machine_exporter/src/test/resources/golden/SimpleEnumStateMachineConfiguration/SimpleEnumStateMachineConfiguration.json
index f219ea5..080440d 100644
--- a/state_machine_exporter/src/test/resources/golden/SimpleEnumStateMachineConfiguration/SimpleEnumStateMachineConfiguration.json
+++ b/state_machine_exporter/src/test/resources/golden/SimpleEnumStateMachineConfiguration/SimpleEnumStateMachineConfiguration.json
@@ -55,7 +55,9 @@
"expression" : "new Guard(){\n @Override public boolean evaluate( StateContext context){\n return false;\n }\n}\n",
"isLambda" : true,
"internalLogic" : "new Guard(){\n @Override public boolean evaluate( StateContext context){\n return false;\n }\n}\n",
- "lineNumber" : 29
+ "lineNumber" : 29,
+ "className" : "click.kamil.examples.statemachine.simple.SimpleEnumStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/simple/SimpleEnumStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : null
@@ -99,7 +101,9 @@
"expression" : "new Guard(){\n @Override public boolean evaluate( StateContext context){\n return false;\n }\n}\n",
"isLambda" : true,
"internalLogic" : "new Guard(){\n @Override public boolean evaluate( StateContext context){\n return false;\n }\n}\n",
- "lineNumber" : 46
+ "lineNumber" : 46,
+ "className" : "click.kamil.examples.statemachine.simple.SimpleEnumStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/simple/SimpleEnumStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -132,7 +136,9 @@
"expression" : "new Guard(){\n @Override public boolean evaluate( StateContext context){\n return true;\n }\n}\n",
"isLambda" : true,
"internalLogic" : "new Guard(){\n @Override public boolean evaluate( StateContext context){\n return true;\n }\n}\n",
- "lineNumber" : 55
+ "lineNumber" : 55,
+ "className" : "click.kamil.examples.statemachine.simple.SimpleEnumStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/simple/SimpleEnumStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -151,7 +157,9 @@
"expression" : "guard1",
"isLambda" : false,
"internalLogic" : null,
- "lineNumber" : 61
+ "lineNumber" : 61,
+ "className" : "click.kamil.examples.statemachine.simple.SimpleEnumStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/simple/SimpleEnumStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 1
@@ -170,7 +178,9 @@
"expression" : "new Guard(){\n @Override public boolean evaluate( StateContext context){\n return false;\n }\n}\n",
"isLambda" : true,
"internalLogic" : "new Guard(){\n @Override public boolean evaluate( StateContext context){\n return false;\n }\n}\n",
- "lineNumber" : 62
+ "lineNumber" : 62,
+ "className" : "click.kamil.examples.statemachine.simple.SimpleEnumStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/simple/SimpleEnumStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 2
@@ -229,12 +239,16 @@
"expression" : "new Action(){\n @Override public void execute( StateContext context){\n ;\n }\n}\n",
"isLambda" : true,
"internalLogic" : "new Action(){\n @Override public void execute( StateContext context){\n ;\n }\n}\n",
- "lineNumber" : 72
+ "lineNumber" : 72,
+ "className" : "click.kamil.examples.statemachine.simple.SimpleEnumStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/simple/SimpleEnumStateMachineConfiguration.java"
}, {
"expression" : "action2",
"isLambda" : false,
"internalLogic" : null,
- "lineNumber" : 77
+ "lineNumber" : 77,
+ "className" : "click.kamil.examples.statemachine.simple.SimpleEnumStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/simple/SimpleEnumStateMachineConfiguration.java"
} ],
"order" : null
} ],
diff --git a/state_machine_exporter/src/test/resources/golden/ThreeStateMachineConfiguration/ThreeStateMachineConfiguration.json b/state_machine_exporter/src/test/resources/golden/ThreeStateMachineConfiguration/ThreeStateMachineConfiguration.json
index 8f57552..43684f7 100644
--- a/state_machine_exporter/src/test/resources/golden/ThreeStateMachineConfiguration/ThreeStateMachineConfiguration.json
+++ b/state_machine_exporter/src/test/resources/golden/ThreeStateMachineConfiguration/ThreeStateMachineConfiguration.json
@@ -320,8 +320,10 @@
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 120
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 120,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate2.AbstractThreeStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate2/AbstractThreeStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -353,8 +355,10 @@
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 126
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 126,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate2.AbstractThreeStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate2/AbstractThreeStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -372,8 +376,10 @@
"guard" : {
"expression" : "guardVarEquals(\"value2\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 127
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 127,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate2.AbstractThreeStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate2/AbstractThreeStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 1
@@ -405,8 +411,10 @@
"guard" : {
"expression" : "guardEventHeaderEquals(\"header1\",\"foo\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 132
+ "internalLogic" : "context -> {\n Object header=context.getMessageHeader(headerName);\n return expected.equals(header);\n}\n",
+ "lineNumber" : 132,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate2.AbstractThreeStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate2/AbstractThreeStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -438,8 +446,10 @@
"guard" : {
"expression" : "guardVarEquals(\"value3\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 137
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 137,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate2.AbstractThreeStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate2/AbstractThreeStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -471,8 +481,10 @@
"guard" : {
"expression" : "guardVarEquals(\"reset\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 142
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 142,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate2.AbstractThreeStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate2/AbstractThreeStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -504,8 +516,10 @@
"guard" : {
"expression" : "guardEventHeaderEquals(\"header2\",\"bar\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 147
+ "internalLogic" : "context -> {\n Object header=context.getMessageHeader(headerName);\n return expected.equals(header);\n}\n",
+ "lineNumber" : 147,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate2.AbstractThreeStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate2/AbstractThreeStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -537,8 +551,10 @@
"guard" : {
"expression" : "guardVarEquals(\"goTo13\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 152
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 152,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate2.AbstractThreeStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate2/AbstractThreeStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -556,8 +572,10 @@
"guard" : {
"expression" : "guardVarEquals(\"goTo14\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 153
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 153,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate2.AbstractThreeStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate2/AbstractThreeStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 1
@@ -589,8 +607,10 @@
"guard" : {
"expression" : "guardVarEquals(\"goBack10\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 158
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 158,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate2.AbstractThreeStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate2/AbstractThreeStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -622,8 +642,10 @@
"guard" : {
"expression" : "guardVarEquals(\"loop12\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 163
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 163,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate2.AbstractThreeStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate2/AbstractThreeStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -655,8 +677,10 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBack\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 168
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 168,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate2.AbstractThreeStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate2/AbstractThreeStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -674,8 +698,10 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBackMore\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 169
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 169,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate2.AbstractThreeStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate2/AbstractThreeStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 1
@@ -707,8 +733,10 @@
"guard" : {
"expression" : "guardVarEquals(\"forward9\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 174
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 174,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate2.AbstractThreeStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate2/AbstractThreeStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -754,8 +782,10 @@
"guard" : {
"expression" : "guardEventHeaderEquals(\"header1\",\"foo\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 31
+ "internalLogic" : "context -> {\n Object header=context.getMessageHeader(headerName);\n return expected.equals(header);\n}\n",
+ "lineNumber" : 31,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate2.ThreeStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate2/ThreeStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
diff --git a/state_machine_exporter/src/test/resources/golden/TwoStateMachineExtraFunctionsConfiguration/TwoStateMachineConfiguration.json b/state_machine_exporter/src/test/resources/golden/TwoStateMachineExtraFunctionsConfiguration/TwoStateMachineConfiguration.json
index 71a6830..4c9915e 100644
--- a/state_machine_exporter/src/test/resources/golden/TwoStateMachineExtraFunctionsConfiguration/TwoStateMachineConfiguration.json
+++ b/state_machine_exporter/src/test/resources/golden/TwoStateMachineExtraFunctionsConfiguration/TwoStateMachineConfiguration.json
@@ -320,8 +320,10 @@
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 120
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 120,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate.AbstractTwoStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate/AbstractTwoStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -353,8 +355,10 @@
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 126
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 126,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate.AbstractTwoStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate/AbstractTwoStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -372,8 +376,10 @@
"guard" : {
"expression" : "guardVarEquals(\"value2\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 127
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 127,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate.AbstractTwoStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate/AbstractTwoStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 1
@@ -405,8 +411,10 @@
"guard" : {
"expression" : "guardEventHeaderEquals(\"header1\",\"foo\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 132
+ "internalLogic" : "context -> {\n Object header=context.getMessageHeader(headerName);\n return expected.equals(header);\n}\n",
+ "lineNumber" : 132,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate.AbstractTwoStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate/AbstractTwoStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -438,8 +446,10 @@
"guard" : {
"expression" : "guardVarEquals(\"value3\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 137
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 137,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate.AbstractTwoStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate/AbstractTwoStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -471,8 +481,10 @@
"guard" : {
"expression" : "guardVarEquals(\"reset\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 142
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 142,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate.AbstractTwoStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate/AbstractTwoStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -504,8 +516,10 @@
"guard" : {
"expression" : "guardEventHeaderEquals(\"header2\",\"bar\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 147
+ "internalLogic" : "context -> {\n Object header=context.getMessageHeader(headerName);\n return expected.equals(header);\n}\n",
+ "lineNumber" : 147,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate.AbstractTwoStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate/AbstractTwoStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -537,8 +551,10 @@
"guard" : {
"expression" : "guardVarEquals(\"goTo13\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 152
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 152,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate.AbstractTwoStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate/AbstractTwoStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -556,8 +572,10 @@
"guard" : {
"expression" : "guardVarEquals(\"goTo14\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 153
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 153,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate.AbstractTwoStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate/AbstractTwoStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 1
@@ -589,8 +607,10 @@
"guard" : {
"expression" : "guardVarEquals(\"goBack10\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 158
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 158,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate.AbstractTwoStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate/AbstractTwoStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -622,8 +642,10 @@
"guard" : {
"expression" : "guardVarEquals(\"loop12\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 163
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 163,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate.AbstractTwoStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate/AbstractTwoStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -655,8 +677,10 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBack\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 168
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 168,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate.AbstractTwoStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate/AbstractTwoStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
@@ -674,8 +698,10 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBackMore\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 169
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 169,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate.AbstractTwoStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate/AbstractTwoStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 1
@@ -707,8 +733,10 @@
"guard" : {
"expression" : "guardVarEquals(\"forward9\")",
"isLambda" : false,
- "internalLogic" : null,
- "lineNumber" : 174
+ "internalLogic" : "context -> {\n Object var=context.getExtendedState().getVariables().get(\"var\");\n return expected.equals(var);\n}\n",
+ "lineNumber" : 174,
+ "className" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate.AbstractTwoStateMachineConfiguration",
+ "sourceFile" : "src/main/java/click/kamil/examples/statemachine/inheritanceextrafunctionsstate/AbstractTwoStateMachineConfiguration.java"
},
"actions" : [ ],
"order" : 0
diff --git a/state_machine_exporter_html/src/main/resources/html/template.html b/state_machine_exporter_html/src/main/resources/html/template.html
index 1770b43..270c073 100644
--- a/state_machine_exporter_html/src/main/resources/html/template.html
+++ b/state_machine_exporter_html/src/main/resources/html/template.html
@@ -357,10 +357,12 @@
const card = document.createElement('div');
card.className = 'ep-card';
+ const sourceHint = ep.sourceFile ? `${ep.sourceFile}
` : '';
card.innerHTML = `
${ep.type}
${ep.name}
${ep.className}.${ep.methodName}
+ ${sourceHint}
`;
card.onmouseenter = () => highlightEntryPoint(ep);
card.onmouseleave = clearHighlights;
@@ -541,7 +543,7 @@
`;
if (trans && trans.guard) {
- const lineInfo = trans.guard.lineNumber ? `
(Line: ${trans.guard.lineNumber}) ` : '';
+ const lineInfo = trans.guard.lineNumber ? `
(${trans.guard.sourceFile || 'Source'}:${trans.guard.lineNumber}) ` : '';
html += `
Guard${lineInfo}
${trans.guard.expression}
`;
if (trans.guard.internalLogic) {
@@ -553,7 +555,7 @@
if (trans && trans.actions && trans.actions.length > 0) {
html += `
Actions
`;
trans.actions.forEach(action => {
- const lineInfo = action.lineNumber ? `
(Line: ${action.lineNumber}) ` : '';
+ const lineInfo = action.lineNumber ? `
(${action.sourceFile || 'Source'}:${action.lineNumber}) ` : '';
html += `
Action${lineInfo}
${action.expression}
`;
if (action.internalLogic) {
@@ -566,8 +568,10 @@
if (chains && chains.length > 0) {
html += `
Triggered by
`;
chains.forEach(c => {
+ const triggerInfo = c.triggerPoint.sourceFile ? `
(${c.triggerPoint.sourceFile}:${c.triggerPoint.lineNumber}) ` : '';
html += `
${c.entryPoint.name}
+
Trigger: ${c.triggerPoint.methodName}${triggerInfo}
${renderParameters(c.entryPoint.parameters)}
${c.methodChain.map((m, i) => `
${i+1} ${m}
`).join('')}
diff --git a/state_machines/maven_multi_module/.gitignore b/state_machines/maven_multi_module/.gitignore
new file mode 100644
index 0000000..667aaef
--- /dev/null
+++ b/state_machines/maven_multi_module/.gitignore
@@ -0,0 +1,33 @@
+HELP.md
+target/
+.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
diff --git a/state_machines/maven_multi_module/.mvn/wrapper/maven-wrapper.properties b/state_machines/maven_multi_module/.mvn/wrapper/maven-wrapper.properties
new file mode 100644
index 0000000..ffcab66
--- /dev/null
+++ b/state_machines/maven_multi_module/.mvn/wrapper/maven-wrapper.properties
@@ -0,0 +1,3 @@
+wrapperVersion=3.3.4
+distributionType=only-script
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip
diff --git a/state_machines/maven_multi_module/api-module/.gitignore b/state_machines/maven_multi_module/api-module/.gitignore
new file mode 100644
index 0000000..667aaef
--- /dev/null
+++ b/state_machines/maven_multi_module/api-module/.gitignore
@@ -0,0 +1,33 @@
+HELP.md
+target/
+.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
diff --git a/state_machines/maven_multi_module/api-module/pom.xml b/state_machines/maven_multi_module/api-module/pom.xml
new file mode 100644
index 0000000..4e9bfc0
--- /dev/null
+++ b/state_machines/maven_multi_module/api-module/pom.xml
@@ -0,0 +1,22 @@
+
+
+ 4.0.0
+
+ click.kamil.maven
+ maven-multi-module
+ 1.0.0
+
+ api-module
+
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+
+
+ org.springframework.boot
+ spring-boot-starter-activemq
+
+
+
diff --git a/state_machines/maven_multi_module/api-module/src/main/java/click/kamil/maven/api/JmsOrderListener.java b/state_machines/maven_multi_module/api-module/src/main/java/click/kamil/maven/api/JmsOrderListener.java
new file mode 100644
index 0000000..20d8749
--- /dev/null
+++ b/state_machines/maven_multi_module/api-module/src/main/java/click/kamil/maven/api/JmsOrderListener.java
@@ -0,0 +1,9 @@
+package click.kamil.maven.api;
+
+import org.springframework.jms.annotation.JmsListener;
+
+public interface JmsOrderListener {
+
+ @JmsListener(destination = "order.queue")
+ void onMessage(String message);
+}
diff --git a/state_machines/maven_multi_module/api-module/src/main/java/click/kamil/maven/api/MavenOrderApi.java b/state_machines/maven_multi_module/api-module/src/main/java/click/kamil/maven/api/MavenOrderApi.java
new file mode 100644
index 0000000..ab16590
--- /dev/null
+++ b/state_machines/maven_multi_module/api-module/src/main/java/click/kamil/maven/api/MavenOrderApi.java
@@ -0,0 +1,12 @@
+package click.kamil.maven.api;
+
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+@RequestMapping("/maven/orders")
+public interface MavenOrderApi {
+
+ @PostMapping("/submit")
+ void submitOrder(@RequestBody String orderId);
+}
diff --git a/state_machines/maven_multi_module/api-module/src/main/java/click/kamil/maven/api/ReactiveOrderApi.java b/state_machines/maven_multi_module/api-module/src/main/java/click/kamil/maven/api/ReactiveOrderApi.java
new file mode 100644
index 0000000..d6cbae6
--- /dev/null
+++ b/state_machines/maven_multi_module/api-module/src/main/java/click/kamil/maven/api/ReactiveOrderApi.java
@@ -0,0 +1,16 @@
+package click.kamil.maven.api;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.reactive.function.server.RouterFunction;
+import org.springframework.web.reactive.function.server.ServerResponse;
+import static org.springframework.web.reactive.function.server.RouterFunctions.route;
+
+@Configuration
+public class ReactiveOrderApi {
+
+ @Bean
+ public RouterFunction
orderRoutes() {
+ return route().POST("/reactive/order", request -> ServerResponse.ok().build()).build();
+ }
+}
diff --git a/state_machines/maven_multi_module/base-module/.gitignore b/state_machines/maven_multi_module/base-module/.gitignore
new file mode 100644
index 0000000..667aaef
--- /dev/null
+++ b/state_machines/maven_multi_module/base-module/.gitignore
@@ -0,0 +1,33 @@
+HELP.md
+target/
+.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
diff --git a/state_machines/maven_multi_module/base-module/pom.xml b/state_machines/maven_multi_module/base-module/pom.xml
new file mode 100644
index 0000000..635c6e3
--- /dev/null
+++ b/state_machines/maven_multi_module/base-module/pom.xml
@@ -0,0 +1,19 @@
+
+
+ 4.0.0
+
+ click.kamil.maven
+ maven-multi-module
+ 1.0.0
+
+ base-module
+
+
+ org.springframework.statemachine
+ spring-statemachine-core
+ 3.2.0
+
+
+
diff --git a/state_machines/maven_multi_module/base-module/src/main/java/click/kamil/maven/base/AbstractMavenStateMachine.java b/state_machines/maven_multi_module/base-module/src/main/java/click/kamil/maven/base/AbstractMavenStateMachine.java
new file mode 100644
index 0000000..1ed1075
--- /dev/null
+++ b/state_machines/maven_multi_module/base-module/src/main/java/click/kamil/maven/base/AbstractMavenStateMachine.java
@@ -0,0 +1,24 @@
+package click.kamil.maven.base;
+
+import org.springframework.statemachine.StateContext;
+import org.springframework.statemachine.action.Action;
+import org.springframework.statemachine.config.StateMachineConfigurerAdapter;
+import org.springframework.statemachine.config.builders.StateMachineStateConfigurer;
+
+public abstract class AbstractMavenStateMachine extends StateMachineConfigurerAdapter {
+
+ @Override
+ public void configure(StateMachineStateConfigurer states) throws Exception {
+ states
+ .withStates()
+ .initial("INIT")
+ .state("BUSY")
+ .end("DONE");
+ }
+
+ protected Action loggingAction() {
+ return context -> {
+ System.out.println("LOG: State transition in progress...");
+ };
+ }
+}
diff --git a/state_machines/maven_multi_module/core-module/.gitignore b/state_machines/maven_multi_module/core-module/.gitignore
new file mode 100644
index 0000000..667aaef
--- /dev/null
+++ b/state_machines/maven_multi_module/core-module/.gitignore
@@ -0,0 +1,33 @@
+HELP.md
+target/
+.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
diff --git a/state_machines/maven_multi_module/core-module/pom.xml b/state_machines/maven_multi_module/core-module/pom.xml
new file mode 100644
index 0000000..c9e2e73
--- /dev/null
+++ b/state_machines/maven_multi_module/core-module/pom.xml
@@ -0,0 +1,38 @@
+
+
+ 4.0.0
+
+ click.kamil.maven
+ maven-multi-module
+ 1.0.0
+
+ core-module
+
+
+ click.kamil.maven
+ base-module
+ 1.0.0
+
+
+ click.kamil.maven
+ api-module
+ 1.0.0
+
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+
+
+ org.springframework.statemachine
+ spring-statemachine-core
+ 3.2.0
+
+
+ org.projectlombok
+ lombok
+ provided
+
+
+
diff --git a/state_machines/maven_multi_module/core-module/src/main/java/click/kamil/maven/core/MavenOrderStateMachine.java b/state_machines/maven_multi_module/core-module/src/main/java/click/kamil/maven/core/MavenOrderStateMachine.java
new file mode 100644
index 0000000..9205d4b
--- /dev/null
+++ b/state_machines/maven_multi_module/core-module/src/main/java/click/kamil/maven/core/MavenOrderStateMachine.java
@@ -0,0 +1,55 @@
+package click.kamil.maven.core;
+
+import click.kamil.maven.api.JmsOrderListener;
+import click.kamil.maven.api.MavenOrderApi;
+import click.kamil.maven.base.AbstractMavenStateMachine;
+import lombok.RequiredArgsConstructor;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.statemachine.StateMachine;
+import org.springframework.statemachine.config.EnableStateMachineFactory;
+import org.springframework.statemachine.config.StateMachineFactory;
+import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer;
+import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.RestController;
+
+@Configuration
+@EnableStateMachineFactory
+public class MavenOrderStateMachine extends AbstractMavenStateMachine {
+
+ @Override
+ public void configure(StateMachineTransitionConfigurer transitions) throws Exception {
+ transitions
+ .withExternal()
+ .source("INIT").target("BUSY")
+ .event("SUBMIT")
+ .action(loggingAction())
+ .and()
+ .withExternal()
+ .source("BUSY").target("DONE")
+ .event("ORDER_EVENT");
+ }
+
+ @RestController
+ @RequiredArgsConstructor
+ public static class OrderController implements MavenOrderApi {
+ private final StateMachineFactory factory;
+
+ @Override
+ public void submitOrder(String orderId) {
+ StateMachine sm = factory.getStateMachine(orderId);
+ sm.sendEvent("SUBMIT");
+ }
+ }
+
+ @Service
+ @RequiredArgsConstructor
+ public static class OrderService implements JmsOrderListener {
+ private final StateMachineFactory factory;
+
+ @Override
+ public void onMessage(String message) {
+ StateMachine sm = factory.getStateMachine();
+ sm.sendEvent("ORDER_EVENT");
+ }
+ }
+}
diff --git a/state_machines/maven_multi_module/mvnw b/state_machines/maven_multi_module/mvnw
new file mode 100755
index 0000000..bd8896b
--- /dev/null
+++ b/state_machines/maven_multi_module/mvnw
@@ -0,0 +1,295 @@
+#!/bin/sh
+# ----------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# ----------------------------------------------------------------------------
+
+# ----------------------------------------------------------------------------
+# Apache Maven Wrapper startup batch script, version 3.3.4
+#
+# Optional ENV vars
+# -----------------
+# JAVA_HOME - location of a JDK home dir, required when download maven via java source
+# MVNW_REPOURL - repo url base for downloading maven distribution
+# MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
+# MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output
+# ----------------------------------------------------------------------------
+
+set -euf
+[ "${MVNW_VERBOSE-}" != debug ] || set -x
+
+# OS specific support.
+native_path() { printf %s\\n "$1"; }
+case "$(uname)" in
+CYGWIN* | MINGW*)
+ [ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")"
+ native_path() { cygpath --path --windows "$1"; }
+ ;;
+esac
+
+# set JAVACMD and JAVACCMD
+set_java_home() {
+ # For Cygwin and MinGW, ensure paths are in Unix format before anything is touched
+ if [ -n "${JAVA_HOME-}" ]; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ]; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ JAVACCMD="$JAVA_HOME/jre/sh/javac"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ JAVACCMD="$JAVA_HOME/bin/javac"
+
+ if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then
+ echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2
+ echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2
+ return 1
+ fi
+ fi
+ else
+ JAVACMD="$(
+ 'set' +e
+ 'unset' -f command 2>/dev/null
+ 'command' -v java
+ )" || :
+ JAVACCMD="$(
+ 'set' +e
+ 'unset' -f command 2>/dev/null
+ 'command' -v javac
+ )" || :
+
+ if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then
+ echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2
+ return 1
+ fi
+ fi
+}
+
+# hash string like Java String::hashCode
+hash_string() {
+ str="${1:-}" h=0
+ while [ -n "$str" ]; do
+ char="${str%"${str#?}"}"
+ h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296))
+ str="${str#?}"
+ done
+ printf %x\\n $h
+}
+
+verbose() { :; }
+[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; }
+
+die() {
+ printf %s\\n "$1" >&2
+ exit 1
+}
+
+trim() {
+ # MWRAPPER-139:
+ # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds.
+ # Needed for removing poorly interpreted newline sequences when running in more
+ # exotic environments such as mingw bash on Windows.
+ printf "%s" "${1}" | tr -d '[:space:]'
+}
+
+scriptDir="$(dirname "$0")"
+scriptName="$(basename "$0")"
+
+# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties
+while IFS="=" read -r key value; do
+ case "${key-}" in
+ distributionUrl) distributionUrl=$(trim "${value-}") ;;
+ distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;;
+ esac
+done <"$scriptDir/.mvn/wrapper/maven-wrapper.properties"
+[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties"
+
+case "${distributionUrl##*/}" in
+maven-mvnd-*bin.*)
+ MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/
+ case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in
+ *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;;
+ :Darwin*x86_64) distributionPlatform=darwin-amd64 ;;
+ :Darwin*arm64) distributionPlatform=darwin-aarch64 ;;
+ :Linux*x86_64*) distributionPlatform=linux-amd64 ;;
+ *)
+ echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2
+ distributionPlatform=linux-amd64
+ ;;
+ esac
+ distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip"
+ ;;
+maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;;
+*) MVN_CMD="mvn${scriptName#mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;;
+esac
+
+# apply MVNW_REPOURL and calculate MAVEN_HOME
+# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/
+[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}"
+distributionUrlName="${distributionUrl##*/}"
+distributionUrlNameMain="${distributionUrlName%.*}"
+distributionUrlNameMain="${distributionUrlNameMain%-bin}"
+MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}"
+MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")"
+
+exec_maven() {
+ unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || :
+ exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD"
+}
+
+if [ -d "$MAVEN_HOME" ]; then
+ verbose "found existing MAVEN_HOME at $MAVEN_HOME"
+ exec_maven "$@"
+fi
+
+case "${distributionUrl-}" in
+*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;;
+*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;;
+esac
+
+# prepare tmp dir
+if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then
+ clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; }
+ trap clean HUP INT TERM EXIT
+else
+ die "cannot create temp dir"
+fi
+
+mkdir -p -- "${MAVEN_HOME%/*}"
+
+# Download and Install Apache Maven
+verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
+verbose "Downloading from: $distributionUrl"
+verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"
+
+# select .zip or .tar.gz
+if ! command -v unzip >/dev/null; then
+ distributionUrl="${distributionUrl%.zip}.tar.gz"
+ distributionUrlName="${distributionUrl##*/}"
+fi
+
+# verbose opt
+__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR=''
+[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v
+
+# normalize http auth
+case "${MVNW_PASSWORD:+has-password}" in
+'') MVNW_USERNAME='' MVNW_PASSWORD='' ;;
+has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;;
+esac
+
+if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then
+ verbose "Found wget ... using wget"
+ wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl"
+elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then
+ verbose "Found curl ... using curl"
+ curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl"
+elif set_java_home; then
+ verbose "Falling back to use Java to download"
+ javaSource="$TMP_DOWNLOAD_DIR/Downloader.java"
+ targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName"
+ cat >"$javaSource" <<-END
+ public class Downloader extends java.net.Authenticator
+ {
+ protected java.net.PasswordAuthentication getPasswordAuthentication()
+ {
+ return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() );
+ }
+ public static void main( String[] args ) throws Exception
+ {
+ setDefault( new Downloader() );
+ java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() );
+ }
+ }
+ END
+ # For Cygwin/MinGW, switch paths to Windows format before running javac and java
+ verbose " - Compiling Downloader.java ..."
+ "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java"
+ verbose " - Running Downloader.java ..."
+ "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")"
+fi
+
+# If specified, validate the SHA-256 sum of the Maven distribution zip file
+if [ -n "${distributionSha256Sum-}" ]; then
+ distributionSha256Result=false
+ if [ "$MVN_CMD" = mvnd.sh ]; then
+ echo "Checksum validation is not supported for maven-mvnd." >&2
+ echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
+ exit 1
+ elif command -v sha256sum >/dev/null; then
+ if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c - >/dev/null 2>&1; then
+ distributionSha256Result=true
+ fi
+ elif command -v shasum >/dev/null; then
+ if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then
+ distributionSha256Result=true
+ fi
+ else
+ echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2
+ echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
+ exit 1
+ fi
+ if [ $distributionSha256Result = false ]; then
+ echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2
+ echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2
+ exit 1
+ fi
+fi
+
+# unzip and move
+if command -v unzip >/dev/null; then
+ unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip"
+else
+ tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar"
+fi
+
+# Find the actual extracted directory name (handles snapshots where filename != directory name)
+actualDistributionDir=""
+
+# First try the expected directory name (for regular distributions)
+if [ -d "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" ]; then
+ if [ -f "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/bin/$MVN_CMD" ]; then
+ actualDistributionDir="$distributionUrlNameMain"
+ fi
+fi
+
+# If not found, search for any directory with the Maven executable (for snapshots)
+if [ -z "$actualDistributionDir" ]; then
+ # enable globbing to iterate over items
+ set +f
+ for dir in "$TMP_DOWNLOAD_DIR"/*; do
+ if [ -d "$dir" ]; then
+ if [ -f "$dir/bin/$MVN_CMD" ]; then
+ actualDistributionDir="$(basename "$dir")"
+ break
+ fi
+ fi
+ done
+ set -f
+fi
+
+if [ -z "$actualDistributionDir" ]; then
+ verbose "Contents of $TMP_DOWNLOAD_DIR:"
+ verbose "$(ls -la "$TMP_DOWNLOAD_DIR")"
+ die "Could not find Maven distribution directory in extracted archive"
+fi
+
+verbose "Found extracted Maven distribution directory: $actualDistributionDir"
+printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$actualDistributionDir/mvnw.url"
+mv -- "$TMP_DOWNLOAD_DIR/$actualDistributionDir" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME"
+
+clean || :
+exec_maven "$@"
diff --git a/state_machines/maven_multi_module/mvnw.cmd b/state_machines/maven_multi_module/mvnw.cmd
new file mode 100644
index 0000000..92450f9
--- /dev/null
+++ b/state_machines/maven_multi_module/mvnw.cmd
@@ -0,0 +1,189 @@
+<# : batch portion
+@REM ----------------------------------------------------------------------------
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+@REM ----------------------------------------------------------------------------
+
+@REM ----------------------------------------------------------------------------
+@REM Apache Maven Wrapper startup batch script, version 3.3.4
+@REM
+@REM Optional ENV vars
+@REM MVNW_REPOURL - repo url base for downloading maven distribution
+@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
+@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output
+@REM ----------------------------------------------------------------------------
+
+@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0)
+@SET __MVNW_CMD__=
+@SET __MVNW_ERROR__=
+@SET __MVNW_PSMODULEP_SAVE=%PSModulePath%
+@SET PSModulePath=
+@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @(
+ IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B)
+)
+@SET PSModulePath=%__MVNW_PSMODULEP_SAVE%
+@SET __MVNW_PSMODULEP_SAVE=
+@SET __MVNW_ARG0_NAME__=
+@SET MVNW_USERNAME=
+@SET MVNW_PASSWORD=
+@IF NOT "%__MVNW_CMD__%"=="" ("%__MVNW_CMD__%" %*)
+@echo Cannot start maven from wrapper >&2 && exit /b 1
+@GOTO :EOF
+: end batch / begin powershell #>
+
+$ErrorActionPreference = "Stop"
+if ($env:MVNW_VERBOSE -eq "true") {
+ $VerbosePreference = "Continue"
+}
+
+# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties
+$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl
+if (!$distributionUrl) {
+ Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties"
+}
+
+switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) {
+ "maven-mvnd-*" {
+ $USE_MVND = $true
+ $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip"
+ $MVN_CMD = "mvnd.cmd"
+ break
+ }
+ default {
+ $USE_MVND = $false
+ $MVN_CMD = $script -replace '^mvnw','mvn'
+ break
+ }
+}
+
+# apply MVNW_REPOURL and calculate MAVEN_HOME
+# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/
+if ($env:MVNW_REPOURL) {
+ $MVNW_REPO_PATTERN = if ($USE_MVND -eq $False) { "/org/apache/maven/" } else { "/maven/mvnd/" }
+ $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace "^.*$MVNW_REPO_PATTERN",'')"
+}
+$distributionUrlName = $distributionUrl -replace '^.*/',''
+$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$',''
+
+$MAVEN_M2_PATH = "$HOME/.m2"
+if ($env:MAVEN_USER_HOME) {
+ $MAVEN_M2_PATH = "$env:MAVEN_USER_HOME"
+}
+
+if (-not (Test-Path -Path $MAVEN_M2_PATH)) {
+ New-Item -Path $MAVEN_M2_PATH -ItemType Directory | Out-Null
+}
+
+$MAVEN_WRAPPER_DISTS = $null
+if ((Get-Item $MAVEN_M2_PATH).Target[0] -eq $null) {
+ $MAVEN_WRAPPER_DISTS = "$MAVEN_M2_PATH/wrapper/dists"
+} else {
+ $MAVEN_WRAPPER_DISTS = (Get-Item $MAVEN_M2_PATH).Target[0] + "/wrapper/dists"
+}
+
+$MAVEN_HOME_PARENT = "$MAVEN_WRAPPER_DISTS/$distributionUrlNameMain"
+$MAVEN_HOME_NAME = ([System.Security.Cryptography.SHA256]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join ''
+$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME"
+
+if (Test-Path -Path "$MAVEN_HOME" -PathType Container) {
+ Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME"
+ Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"
+ exit $?
+}
+
+if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) {
+ Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl"
+}
+
+# prepare tmp dir
+$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile
+$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir"
+$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null
+trap {
+ if ($TMP_DOWNLOAD_DIR.Exists) {
+ try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
+ catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
+ }
+}
+
+New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null
+
+# Download and Install Apache Maven
+Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
+Write-Verbose "Downloading from: $distributionUrl"
+Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"
+
+$webclient = New-Object System.Net.WebClient
+if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) {
+ $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD)
+}
+[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
+$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null
+
+# If specified, validate the SHA-256 sum of the Maven distribution zip file
+$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum
+if ($distributionSha256Sum) {
+ if ($USE_MVND) {
+ Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties."
+ }
+ Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash
+ if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) {
+ Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property."
+ }
+}
+
+# unzip and move
+Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null
+
+# Find the actual extracted directory name (handles snapshots where filename != directory name)
+$actualDistributionDir = ""
+
+# First try the expected directory name (for regular distributions)
+$expectedPath = Join-Path "$TMP_DOWNLOAD_DIR" "$distributionUrlNameMain"
+$expectedMvnPath = Join-Path "$expectedPath" "bin/$MVN_CMD"
+if ((Test-Path -Path $expectedPath -PathType Container) -and (Test-Path -Path $expectedMvnPath -PathType Leaf)) {
+ $actualDistributionDir = $distributionUrlNameMain
+}
+
+# If not found, search for any directory with the Maven executable (for snapshots)
+if (!$actualDistributionDir) {
+ Get-ChildItem -Path "$TMP_DOWNLOAD_DIR" -Directory | ForEach-Object {
+ $testPath = Join-Path $_.FullName "bin/$MVN_CMD"
+ if (Test-Path -Path $testPath -PathType Leaf) {
+ $actualDistributionDir = $_.Name
+ }
+ }
+}
+
+if (!$actualDistributionDir) {
+ Write-Error "Could not find Maven distribution directory in extracted archive"
+}
+
+Write-Verbose "Found extracted Maven distribution directory: $actualDistributionDir"
+Rename-Item -Path "$TMP_DOWNLOAD_DIR/$actualDistributionDir" -NewName $MAVEN_HOME_NAME | Out-Null
+try {
+ Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null
+} catch {
+ if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) {
+ Write-Error "fail to move MAVEN_HOME"
+ }
+} finally {
+ try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
+ catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
+}
+
+Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"
diff --git a/state_machines/maven_multi_module/pom.xml b/state_machines/maven_multi_module/pom.xml
new file mode 100644
index 0000000..222e35d
--- /dev/null
+++ b/state_machines/maven_multi_module/pom.xml
@@ -0,0 +1,59 @@
+
+
+ 4.0.0
+
+ click.kamil.maven
+ maven-multi-module
+ 1.0.0
+ pom
+
+
+ base-module
+ api-module
+ core-module
+
+
+
+ 21
+ 21
+ 3.2.0
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-dependencies
+ ${spring-boot.version}
+ pom
+ import
+
+
+ org.projectlombok
+ lombok
+ 1.18.30
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.11.0
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.30
+
+
+
+
+
+
+
diff --git a/state_machines/multi_module_sample/api-module/build.gradle b/state_machines/multi_module_sample/api-module/build.gradle
index 026c579..fa52a54 100644
--- a/state_machines/multi_module_sample/api-module/build.gradle
+++ b/state_machines/multi_module_sample/api-module/build.gradle
@@ -7,6 +7,8 @@ repositories {
}
dependencies {
+ compileOnly 'org.projectlombok:lombok:1.18.30'
+ annotationProcessor 'org.projectlombok:lombok:1.18.30'
implementation 'org.springframework.boot:spring-boot-starter-web:3.2.0'
implementation 'org.springframework.statemachine:spring-statemachine-core:3.2.0'
}
diff --git a/state_machines/multi_module_sample/core-module/build.gradle b/state_machines/multi_module_sample/core-module/build.gradle
index bb5d661..7abd916 100644
--- a/state_machines/multi_module_sample/core-module/build.gradle
+++ b/state_machines/multi_module_sample/core-module/build.gradle
@@ -7,6 +7,8 @@ repositories {
}
dependencies {
+ compileOnly 'org.projectlombok:lombok:1.18.30'
+ annotationProcessor 'org.projectlombok:lombok:1.18.30'
implementation project(':state_machines:multi_module_sample:api-module')
implementation 'org.springframework.boot:spring-boot-starter-web:3.2.0'
implementation 'org.springframework.statemachine:spring-statemachine-core:3.2.0'