fix: resolve properties before direct HTML generation

This commit is contained in:
2026-06-16 19:09:00 +02:00
parent a9d40aaf8c
commit 79ddb307c1
29 changed files with 1876 additions and 211 deletions

View File

@@ -17,7 +17,9 @@ 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 java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -177,15 +179,15 @@ public class AstTransitionParser {
Expression secondArg = resolveArg((Expression) args.get(1), argsMap);
if ("last".equals(methodName)) {
// For 'last', the second argument is an action, not a guard
parseAction(secondArg, t, cu);
parseAction(secondArg, t, cu, context);
} else {
// For 'first' and 'then', the second argument is a guard
parseGuard(secondArg, t, cu);
parseGuard(secondArg, t, cu, context);
}
}
if (args.size() > 2) {
Expression thirdArg = resolveArg((Expression) args.get(2), argsMap);
parseAction(thirdArg, t, cu);
parseAction(thirdArg, t, cu, context);
}
t.setOrder(orderCounter++);
transitions.add(t);
@@ -228,43 +230,96 @@ public class AstTransitionParser {
}
case "guard" -> {
Expression resolved = resolveArg((Expression) args.get(0), argsMap);
parseGuard(resolved, t, cu);
parseGuard(resolved, t, cu, context);
}
case "action" -> {
Expression resolved = resolveArg((Expression) args.get(0), argsMap);
parseAction(resolved, t, cu);
parseAction(resolved, t, cu, context);
}
}
}
return t;
}
private static String extractInternalLogic(Expression expr, CompilationUnit cu) {
private static String extractInternalLogic(Expression expr, CompilationUnit cu, CodebaseContext context) {
if (expr == null) return null;
// 1. Lambda Expressions
if (expr instanceof LambdaExpression le) {
return le.toString();
}
// 2. Anonymous Classes
if (expr instanceof ClassInstanceCreation cic && cic.getAnonymousClassDeclaration() != null) {
return cic.toString();
}
// 3. Method Invocations
if (expr instanceof MethodInvocation mi) {
IMethodBinding binding = mi.resolveMethodBinding();
if (binding != null) {
// Try same file
ASTNode declNode = cu.findDeclaringNode(binding.getKey());
if (declNode instanceof MethodDeclaration md) {
return md.toString();
}
// Try other files via CodebaseContext
ITypeBinding declaringClass = binding.getDeclaringClass();
if (declaringClass != null) {
String fqn = declaringClass.getQualifiedName();
TypeDeclaration td = context.getTypeDeclaration(fqn);
if (td != null) {
for (MethodDeclaration md : td.getMethods()) {
if (md.getName().getIdentifier().equals(binding.getName()) &&
md.parameters().size() == binding.getParameterTypes().length) {
return md.toString();
}
}
}
}
}
}
// 4. Method References
if (expr instanceof MethodReference mr) {
IMethodBinding binding = mr.resolveMethodBinding();
if (binding != null) {
ITypeBinding declaringClass = binding.getDeclaringClass();
if (declaringClass != null) {
String fqn = declaringClass.getQualifiedName();
TypeDeclaration td = context.getTypeDeclaration(fqn);
if (td != null) {
for (MethodDeclaration md : td.getMethods()) {
if (md.getName().getIdentifier().equals(binding.getName()) &&
md.parameters().size() == binding.getParameterTypes().length) {
return md.toString();
}
}
}
}
}
return mr.toString();
}
return null;
}
private static void parseGuard(Object arg, Transition t, CompilationUnit cu) {
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);
t.setGuard(Guard.of(quotedExpr.toStringWithoutQuotes(), isLambdaOrAnonymous(quotedExpr.getExpression()), internalLogic));
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));
}
}
private static void parseAction(Object arg, Transition t, CompilationUnit cu) {
private static void parseAction(Object arg, Transition t, CompilationUnit cu, CodebaseContext context) {
QuotedExpression quotedExpr = QuotedExpression.of(arg);
if (quotedExpr != null) {
String internalLogic = extractInternalLogic(quotedExpr.getExpression(), cu);
t.getActions().add(Action.of(quotedExpr.toStringWithoutQuotes(), isLambdaOrAnonymous(quotedExpr.getExpression()), internalLogic));
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));
}
}

View File

@@ -1,7 +1,7 @@
package click.kamil.springstatemachineexporter.model;
public record Action(String expression, boolean isLambda, String internalLogic) {
public static Action of(String expression, boolean isLambda, String internalLogic) {
return expression != null ? new Action(expression, isLambda, internalLogic) : null;
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;
}
}

View File

@@ -1,7 +1,7 @@
package click.kamil.springstatemachineexporter.model;
public record Guard(String expression, boolean isLambda, String internalLogic) {
public static Guard of(String expression, boolean isLambda, String internalLogic) {
return expression != null ? new Guard(expression, isLambda, internalLogic) : null;
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;
}
}

View File

@@ -93,7 +93,7 @@ public class ExportService {
context.scan(inputDir);
CodebaseIntelligenceProvider intelligence = new JdtIntelligenceProvider(context, inputDir);
exportAll(context, intelligence, outputDir, selectedFormats, renderChoicesAsDiamonds, flows, machineFilter);
exportAll(context, intelligence, outputDir, selectedFormats, renderChoicesAsDiamonds, flows, machineFilter, activeProfiles != null ? activeProfiles : Collections.emptyList());
}
public void runJsonExporter(Path jsonFile, Path outputDir, List<String> selectedFormats) throws IOException {
@@ -131,7 +131,7 @@ public class ExportService {
result.applyResolution(merged);
}
private void exportAll(CodebaseContext context, CodebaseIntelligenceProvider intelligence, Path outputDir, List<String> selectedFormats, boolean renderChoicesAsDiamonds, List<BusinessFlow> flows, String machineFilter) throws IOException {
private void exportAll(CodebaseContext context, CodebaseIntelligenceProvider intelligence, Path outputDir, List<String> selectedFormats, boolean renderChoicesAsDiamonds, List<BusinessFlow> flows, String machineFilter, List<String> activeProfiles) throws IOException {
Set<String> processedLocations = new HashSet<>();
// 1. Find entry point classes (annotated or extending adapter)
@@ -140,7 +140,7 @@ public class ExportService {
String fqn = context.getFqn(td);
if (machineFilter != null && !fqn.contains(machineFilter)) continue;
if (processedLocations.add(fqn)) {
processEntryPoint(td, outputDir, context, intelligence, selectedFormats, renderChoicesAsDiamonds, flows);
processEntryPoint(td, outputDir, context, intelligence, selectedFormats, renderChoicesAsDiamonds, flows, activeProfiles);
}
}
@@ -154,12 +154,12 @@ public class ExportService {
if (machineFilter != null && !uniqueId.contains(machineFilter)) continue;
if (processedLocations.add(uniqueId)) {
processBeanMethod(m, outputDir, context, intelligence, selectedFormats, renderChoicesAsDiamonds, flows);
processBeanMethod(m, outputDir, context, intelligence, selectedFormats, renderChoicesAsDiamonds, flows, activeProfiles);
}
}
}
private void processEntryPoint(TypeDeclaration td, Path outputDir, CodebaseContext context, CodebaseIntelligenceProvider intelligence, List<String> selectedFormats, boolean renderChoicesAsDiamonds, List<BusinessFlow> flows) throws IOException {
private void processEntryPoint(TypeDeclaration td, Path outputDir, CodebaseContext context, CodebaseIntelligenceProvider intelligence, List<String> selectedFormats, boolean renderChoicesAsDiamonds, List<BusinessFlow> flows, List<String> activeProfiles) throws IOException {
String className = context.getFqn(td);
log.info("Processing state machine config: {}", className);
@@ -189,10 +189,12 @@ public class ExportService {
enrichmentService.enrich(result, context, intelligence);
resolveProperties(result, activeProfiles);
generateOutputs(outputDir, result, selectedFormats);
}
private void processBeanMethod(MethodDeclaration m, Path outputDir, CodebaseContext context, CodebaseIntelligenceProvider intelligence, List<String> selectedFormats, boolean renderChoicesAsDiamonds, List<BusinessFlow> flows) throws IOException {
private void processBeanMethod(MethodDeclaration m, Path outputDir, CodebaseContext context, CodebaseIntelligenceProvider intelligence, List<String> selectedFormats, boolean renderChoicesAsDiamonds, List<BusinessFlow> flows, List<String> activeProfiles) throws IOException {
TypeDeclaration parentClass = (TypeDeclaration) m.getParent();
String parentFqn = context.getFqn(parentClass);
String methodName = m.getName().getIdentifier();
@@ -218,6 +220,8 @@ public class ExportService {
enrichmentService.enrich(result, context, intelligence);
resolveProperties(result, activeProfiles);
generateOutputs(outputDir, result, selectedFormats);
}

View File

@@ -215,6 +215,54 @@ class AstTransitionParserTest {
assertThat(transitions.get(1).getEvent()).isEqualTo("E2");
}
@Test
void shouldExtractInternalLogicForLambda() {
String source = """
public class TestClass {
public void configure(StateMachineTransitionConfigurer<String, String> transitions) throws Exception {
transitions.withExternal()
.source("S1")
.target("S2")
.guard(context -> context.getMessage() != null);
}
}
""";
MethodDeclaration method = createMethodDeclaration(source);
List<Transition> transitions = AstTransitionParser.parseTransitions(method, context);
assertThat(transitions).hasSize(1);
assertThat(transitions.getFirst().getGuard().internalLogic())
.contains("context.getMessage() != null");
}
@Test
void shouldExtractInternalLogicForAnonymousClass() {
String source = """
public class TestClass {
public void configure(StateMachineTransitionConfigurer<String, String> transitions) throws Exception {
transitions
.withExternal()
.source("S1")
.target("S2")
.action(new Action<String, String>() {
@Override
public void execute(StateContext<String, String> context) {
System.out.println("Hello");
}
});
}
}
""";
MethodDeclaration method = createMethodDeclaration(source);
List<Transition> transitions = AstTransitionParser.parseTransitions(method, context);
assertThat(transitions).hasSize(1);
assertThat(transitions.getFirst().getActions().get(0).internalLogic())
.contains("System.out.println(\"Hello\")");
}
private MethodDeclaration createMethodDeclaration(String source) {
ASTParser parser = ASTParser.newParser(AST.getJLSLatest());
parser.setKind(ASTParser.K_COMPILATION_UNIT);

View File

@@ -4,7 +4,9 @@
"entryPoints" : [ ],
"callChains" : [ ],
"properties" : {
"spring.application.name" : "statemachinedemo"
"default" : {
"spring.application.name" : "statemachinedemo"
}
}
},
"name" : "click.kamil.examples.statemachine.complex.ComplexStateMachineConfig",
@@ -234,7 +236,8 @@
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 86
},
"actions" : [ ],
"order" : 0
@@ -252,7 +255,8 @@
"guard" : {
"expression" : "guardVarEquals(\"value2\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 87
},
"actions" : [ ],
"order" : 1
@@ -284,7 +288,8 @@
"guard" : {
"expression" : "guardEventHeaderEquals(\"header1\",\"foo\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 92
},
"actions" : [ ],
"order" : 0
@@ -316,7 +321,8 @@
"guard" : {
"expression" : "guardVarEquals(\"value3\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 97
},
"actions" : [ ],
"order" : 0
@@ -348,7 +354,8 @@
"guard" : {
"expression" : "guardVarEquals(\"reset\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 102
},
"actions" : [ ],
"order" : 0
@@ -380,7 +387,8 @@
"guard" : {
"expression" : "guardEventHeaderEquals(\"header2\",\"bar\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 107
},
"actions" : [ ],
"order" : 0
@@ -412,7 +420,8 @@
"guard" : {
"expression" : "guardVarEquals(\"goTo13\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 112
},
"actions" : [ ],
"order" : 0
@@ -430,7 +439,8 @@
"guard" : {
"expression" : "guardVarEquals(\"goTo14\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 113
},
"actions" : [ ],
"order" : 1
@@ -462,7 +472,8 @@
"guard" : {
"expression" : "guardVarEquals(\"goBack10\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 118
},
"actions" : [ ],
"order" : 0
@@ -494,7 +505,8 @@
"guard" : {
"expression" : "guardVarEquals(\"loop12\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 123
},
"actions" : [ ],
"order" : 0
@@ -526,7 +538,8 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBack\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 128
},
"actions" : [ ],
"order" : 0
@@ -544,7 +557,8 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBackMore\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 129
},
"actions" : [ ],
"order" : 1
@@ -576,7 +590,8 @@
"guard" : {
"expression" : "guardVarEquals(\"forward9\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 134
},
"actions" : [ ],
"order" : 0

View File

@@ -261,7 +261,9 @@
"lineNumber" : 17
}
} ],
"properties" : { }
"properties" : {
"default" : { }
}
},
"name" : "click.kamil.examples.enterprise.config.EnterpriseStateMachineConfig",
"renderChoicesAsDiamonds" : true,
@@ -294,7 +296,8 @@
"guard" : {
"expression" : "(c) -> true",
"isLambda" : true,
"internalLogic" : null
"internalLogic" : "(c) -> true",
"lineNumber" : 41
},
"actions" : [ ],
"order" : 0

View File

@@ -274,7 +274,12 @@
}
} ],
"properties" : {
"app.states.initial" : "INIT_STATE"
"default" : {
"app.states.initial" : "INIT_STATE"
},
"prod" : {
"app.states.initial" : "PROD_INITIAL"
}
}
},
"name" : "click.kamil.examples.statemachine.extended.config.ExtendedStateMachineConfig",

View File

@@ -274,7 +274,12 @@
}
} ],
"properties" : {
"app.states.initial" : "PROD_INITIAL"
"default" : {
"app.states.initial" : "INIT_STATE"
},
"prod" : {
"app.states.initial" : "PROD_INITIAL"
}
}
},
"name" : "click.kamil.examples.statemachine.extended.config.ExtendedStateMachineConfig",

View File

@@ -4,7 +4,9 @@
"entryPoints" : [ ],
"callChains" : [ ],
"properties" : {
"spring.application.name" : "statemachinedemo"
"default" : {
"spring.application.name" : "statemachinedemo"
}
}
},
"name" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.F1StateMachineConfiguration",
@@ -318,7 +320,8 @@
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 120
},
"actions" : [ ],
"order" : 0
@@ -350,7 +353,8 @@
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 126
},
"actions" : [ ],
"order" : 0
@@ -368,7 +372,8 @@
"guard" : {
"expression" : "guardVarEquals(\"value2\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 127
},
"actions" : [ ],
"order" : 1
@@ -400,7 +405,8 @@
"guard" : {
"expression" : "guardEventHeaderEquals(\"header1\",\"foo\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 132
},
"actions" : [ ],
"order" : 0
@@ -432,7 +438,8 @@
"guard" : {
"expression" : "guardVarEquals(\"value3\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 137
},
"actions" : [ ],
"order" : 0
@@ -464,7 +471,8 @@
"guard" : {
"expression" : "guardVarEquals(\"reset\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 142
},
"actions" : [ ],
"order" : 0
@@ -496,7 +504,8 @@
"guard" : {
"expression" : "guardEventHeaderEquals(\"header2\",\"bar\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 147
},
"actions" : [ ],
"order" : 0
@@ -528,7 +537,8 @@
"guard" : {
"expression" : "guardVarEquals(\"goTo13\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 152
},
"actions" : [ ],
"order" : 0
@@ -546,7 +556,8 @@
"guard" : {
"expression" : "guardVarEquals(\"goTo14\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 153
},
"actions" : [ ],
"order" : 1
@@ -578,7 +589,8 @@
"guard" : {
"expression" : "guardVarEquals(\"goBack10\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 158
},
"actions" : [ ],
"order" : 0
@@ -610,7 +622,8 @@
"guard" : {
"expression" : "guardVarEquals(\"loop12\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 163
},
"actions" : [ ],
"order" : 0
@@ -642,7 +655,8 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBack\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 168
},
"actions" : [ ],
"order" : 0
@@ -660,7 +674,8 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBackMore\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 169
},
"actions" : [ ],
"order" : 1
@@ -692,7 +707,8 @@
"guard" : {
"expression" : "guardVarEquals(\"forward9\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 174
},
"actions" : [ ],
"order" : 0
@@ -738,7 +754,8 @@
"guard" : {
"expression" : "guardEventHeaderEquals(\"header1\",\"foo\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 31
},
"actions" : [ ],
"order" : 0

View File

@@ -4,7 +4,9 @@
"entryPoints" : [ ],
"callChains" : [ ],
"properties" : {
"spring.application.name" : "statemachinedemo"
"default" : {
"spring.application.name" : "statemachinedemo"
}
}
},
"name" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.F2StateMachineConfiguration",
@@ -318,7 +320,8 @@
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 120
},
"actions" : [ ],
"order" : 0
@@ -350,7 +353,8 @@
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 126
},
"actions" : [ ],
"order" : 0
@@ -368,7 +372,8 @@
"guard" : {
"expression" : "guardVarEquals(\"value2\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 127
},
"actions" : [ ],
"order" : 1
@@ -400,7 +405,8 @@
"guard" : {
"expression" : "guardEventHeaderEquals(\"header1\",\"foo\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 132
},
"actions" : [ ],
"order" : 0
@@ -432,7 +438,8 @@
"guard" : {
"expression" : "guardVarEquals(\"value3\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 137
},
"actions" : [ ],
"order" : 0
@@ -464,7 +471,8 @@
"guard" : {
"expression" : "guardVarEquals(\"reset\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 142
},
"actions" : [ ],
"order" : 0
@@ -496,7 +504,8 @@
"guard" : {
"expression" : "guardEventHeaderEquals(\"header2\",\"bar\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 147
},
"actions" : [ ],
"order" : 0
@@ -528,7 +537,8 @@
"guard" : {
"expression" : "guardVarEquals(\"goTo13\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 152
},
"actions" : [ ],
"order" : 0
@@ -546,7 +556,8 @@
"guard" : {
"expression" : "guardVarEquals(\"goTo14\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 153
},
"actions" : [ ],
"order" : 1
@@ -578,7 +589,8 @@
"guard" : {
"expression" : "guardVarEquals(\"goBack10\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 158
},
"actions" : [ ],
"order" : 0
@@ -610,7 +622,8 @@
"guard" : {
"expression" : "guardVarEquals(\"loop12\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 163
},
"actions" : [ ],
"order" : 0
@@ -642,7 +655,8 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBack\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 168
},
"actions" : [ ],
"order" : 0
@@ -660,7 +674,8 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBackMore\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 169
},
"actions" : [ ],
"order" : 1
@@ -692,7 +707,8 @@
"guard" : {
"expression" : "guardVarEquals(\"forward9\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 174
},
"actions" : [ ],
"order" : 0
@@ -738,7 +754,8 @@
"guard" : {
"expression" : "guardEventHeaderEquals(\"header1\",\"foo\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 33
},
"actions" : [ ],
"order" : 0

View File

@@ -4,7 +4,9 @@
"entryPoints" : [ ],
"callChains" : [ ],
"properties" : {
"spring.application.name" : "statemachinedemo"
"default" : {
"spring.application.name" : "statemachinedemo"
}
}
},
"name" : "click.kamil.examples.statemachine.forkjoin.ForkJoinStateMachineConfig",

View File

@@ -4,7 +4,9 @@
"entryPoints" : [ ],
"callChains" : [ ],
"properties" : {
"spring.application.name" : "statemachinedemo"
"default" : {
"spring.application.name" : "statemachinedemo"
}
}
},
"name" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.G1StateMachineConfiguration",
@@ -234,7 +236,8 @@
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 98
},
"actions" : [ ],
"order" : 0
@@ -266,7 +269,8 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBack\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 104
},
"actions" : [ ],
"order" : 0
@@ -284,7 +288,8 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBackMore\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 105
},
"actions" : [ ],
"order" : 1
@@ -316,7 +321,8 @@
"guard" : {
"expression" : "guardVarEquals(\"forward9\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 110
},
"actions" : [ ],
"order" : 0

View File

@@ -4,7 +4,9 @@
"entryPoints" : [ ],
"callChains" : [ ],
"properties" : {
"spring.application.name" : "statemachinedemo"
"default" : {
"spring.application.name" : "statemachinedemo"
}
}
},
"name" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate3.G2StateMachineConfiguration",
@@ -234,7 +236,8 @@
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 98
},
"actions" : [ ],
"order" : 0
@@ -266,7 +269,8 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBack\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 104
},
"actions" : [ ],
"order" : 0
@@ -284,7 +288,8 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBackMore\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 105
},
"actions" : [ ],
"order" : 1
@@ -316,7 +321,8 @@
"guard" : {
"expression" : "guardVarEquals(\"forward9\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 110
},
"actions" : [ ],
"order" : 0

View File

@@ -41,7 +41,9 @@
"lineNumber" : 15
}
} ],
"properties" : { }
"properties" : {
"default" : { }
}
},
"name" : "click.kamil.examples.statemachine.inheritance.config.InheritanceStateMachineConfig",
"renderChoicesAsDiamonds" : true,

View File

@@ -4,7 +4,9 @@
"entryPoints" : [ ],
"callChains" : [ ],
"properties" : {
"spring.application.name" : "statemachinedemo"
"default" : {
"spring.application.name" : "statemachinedemo"
}
}
},
"name" : "click.kamil.examples.statemachine.enumstate.KamilEnumStateMachineConfiguration",
@@ -52,7 +54,8 @@
"guard" : {
"expression" : "new Guard<OrderStates,OrderEvents>(){\n @Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){\n return false;\n }\n}\n",
"isLambda" : true,
"internalLogic" : null
"internalLogic" : "new Guard<OrderStates,OrderEvents>(){\n @Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){\n return false;\n }\n}\n",
"lineNumber" : 29
},
"actions" : [ ],
"order" : null
@@ -109,7 +112,8 @@
"guard" : {
"expression" : "new Guard<OrderStates,OrderEvents>(){\n @Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){\n return true;\n }\n}\n",
"isLambda" : true,
"internalLogic" : null
"internalLogic" : "new Guard<OrderStates,OrderEvents>(){\n @Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){\n return true;\n }\n}\n",
"lineNumber" : 46
},
"actions" : [ ],
"order" : 0
@@ -127,7 +131,8 @@
"guard" : {
"expression" : "guard1",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 52
},
"actions" : [ ],
"order" : 1
@@ -145,7 +150,8 @@
"guard" : {
"expression" : "new Guard<OrderStates,OrderEvents>(){\n @Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){\n return false;\n }\n}\n",
"isLambda" : true,
"internalLogic" : null
"internalLogic" : "new Guard<OrderStates,OrderEvents>(){\n @Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){\n return false;\n }\n}\n",
"lineNumber" : 53
},
"actions" : [ ],
"order" : 2
@@ -203,11 +209,13 @@
"actions" : [ {
"expression" : "new Action<OrderStates,OrderEvents>(){\n @Override public void execute( StateContext<OrderStates,OrderEvents> context){\n }\n}\n",
"isLambda" : true,
"internalLogic" : null
"internalLogic" : "new Action<OrderStates,OrderEvents>(){\n @Override public void execute( StateContext<OrderStates,OrderEvents> context){\n }\n}\n",
"lineNumber" : 63
}, {
"expression" : "action2",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 67
} ],
"order" : null
} ],

View File

@@ -4,7 +4,9 @@
"entryPoints" : [ ],
"callChains" : [ ],
"properties" : {
"spring.application.name" : "statemachinedemo"
"default" : {
"spring.application.name" : "statemachinedemo"
}
}
},
"name" : "click.kamil.examples.statemachine.inheritancestate.OneStateMachineConfiguration",
@@ -248,7 +250,8 @@
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 91
},
"actions" : [ ],
"order" : 0
@@ -280,7 +283,8 @@
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 97
},
"actions" : [ ],
"order" : 0
@@ -298,7 +302,8 @@
"guard" : {
"expression" : "guardVarEquals(\"value2\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 98
},
"actions" : [ ],
"order" : 1
@@ -330,7 +335,8 @@
"guard" : {
"expression" : "guardEventHeaderEquals(\"header1\",\"foo\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 103
},
"actions" : [ ],
"order" : 0
@@ -362,7 +368,8 @@
"guard" : {
"expression" : "guardVarEquals(\"value3\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 108
},
"actions" : [ ],
"order" : 0
@@ -394,7 +401,8 @@
"guard" : {
"expression" : "guardVarEquals(\"reset\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 113
},
"actions" : [ ],
"order" : 0
@@ -426,7 +434,8 @@
"guard" : {
"expression" : "guardEventHeaderEquals(\"header2\",\"bar\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 118
},
"actions" : [ ],
"order" : 0
@@ -458,7 +467,8 @@
"guard" : {
"expression" : "guardVarEquals(\"goTo13\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 123
},
"actions" : [ ],
"order" : 0
@@ -476,7 +486,8 @@
"guard" : {
"expression" : "guardVarEquals(\"goTo14\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 124
},
"actions" : [ ],
"order" : 1
@@ -508,7 +519,8 @@
"guard" : {
"expression" : "guardVarEquals(\"goBack10\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 129
},
"actions" : [ ],
"order" : 0
@@ -540,7 +552,8 @@
"guard" : {
"expression" : "guardVarEquals(\"loop12\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 134
},
"actions" : [ ],
"order" : 0
@@ -572,7 +585,8 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBack\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 139
},
"actions" : [ ],
"order" : 0
@@ -590,7 +604,8 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBackMore\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 140
},
"actions" : [ ],
"order" : 1
@@ -622,7 +637,8 @@
"guard" : {
"expression" : "guardVarEquals(\"forward9\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 145
},
"actions" : [ ],
"order" : 0

View File

@@ -4,7 +4,9 @@
"entryPoints" : [ ],
"callChains" : [ ],
"properties" : {
"spring.application.name" : "statemachinedemo"
"default" : {
"spring.application.name" : "statemachinedemo"
}
}
},
"name" : "click.kamil.examples.statemachine.simple.SimpleEnumStateMachineConfiguration",
@@ -52,7 +54,8 @@
"guard" : {
"expression" : "new Guard<OrderStates,OrderEvents>(){\n @Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){\n return false;\n }\n}\n",
"isLambda" : true,
"internalLogic" : null
"internalLogic" : "new Guard<OrderStates,OrderEvents>(){\n @Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){\n return false;\n }\n}\n",
"lineNumber" : 29
},
"actions" : [ ],
"order" : null
@@ -95,7 +98,8 @@
"guard" : {
"expression" : "new Guard<OrderStates,OrderEvents>(){\n @Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){\n return false;\n }\n}\n",
"isLambda" : true,
"internalLogic" : null
"internalLogic" : "new Guard<OrderStates,OrderEvents>(){\n @Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){\n return false;\n }\n}\n",
"lineNumber" : 46
},
"actions" : [ ],
"order" : 0
@@ -127,7 +131,8 @@
"guard" : {
"expression" : "new Guard<OrderStates,OrderEvents>(){\n @Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){\n return true;\n }\n}\n",
"isLambda" : true,
"internalLogic" : null
"internalLogic" : "new Guard<OrderStates,OrderEvents>(){\n @Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){\n return true;\n }\n}\n",
"lineNumber" : 55
},
"actions" : [ ],
"order" : 0
@@ -145,7 +150,8 @@
"guard" : {
"expression" : "guard1",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 61
},
"actions" : [ ],
"order" : 1
@@ -163,7 +169,8 @@
"guard" : {
"expression" : "new Guard<OrderStates,OrderEvents>(){\n @Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){\n return false;\n }\n}\n",
"isLambda" : true,
"internalLogic" : null
"internalLogic" : "new Guard<OrderStates,OrderEvents>(){\n @Override public boolean evaluate( StateContext<OrderStates,OrderEvents> context){\n return false;\n }\n}\n",
"lineNumber" : 62
},
"actions" : [ ],
"order" : 2
@@ -221,11 +228,13 @@
"actions" : [ {
"expression" : "new Action<OrderStates,OrderEvents>(){\n @Override public void execute( StateContext<OrderStates,OrderEvents> context){\n ;\n }\n}\n",
"isLambda" : true,
"internalLogic" : null
"internalLogic" : "new Action<OrderStates,OrderEvents>(){\n @Override public void execute( StateContext<OrderStates,OrderEvents> context){\n ;\n }\n}\n",
"lineNumber" : 72
}, {
"expression" : "action2",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 77
} ],
"order" : null
} ],

View File

@@ -4,7 +4,9 @@
"entryPoints" : [ ],
"callChains" : [ ],
"properties" : {
"spring.application.name" : "statemachinedemo"
"default" : {
"spring.application.name" : "statemachinedemo"
}
}
},
"name" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate2.ThreeStateMachineConfiguration",
@@ -318,7 +320,8 @@
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 120
},
"actions" : [ ],
"order" : 0
@@ -350,7 +353,8 @@
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 126
},
"actions" : [ ],
"order" : 0
@@ -368,7 +372,8 @@
"guard" : {
"expression" : "guardVarEquals(\"value2\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 127
},
"actions" : [ ],
"order" : 1
@@ -400,7 +405,8 @@
"guard" : {
"expression" : "guardEventHeaderEquals(\"header1\",\"foo\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 132
},
"actions" : [ ],
"order" : 0
@@ -432,7 +438,8 @@
"guard" : {
"expression" : "guardVarEquals(\"value3\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 137
},
"actions" : [ ],
"order" : 0
@@ -464,7 +471,8 @@
"guard" : {
"expression" : "guardVarEquals(\"reset\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 142
},
"actions" : [ ],
"order" : 0
@@ -496,7 +504,8 @@
"guard" : {
"expression" : "guardEventHeaderEquals(\"header2\",\"bar\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 147
},
"actions" : [ ],
"order" : 0
@@ -528,7 +537,8 @@
"guard" : {
"expression" : "guardVarEquals(\"goTo13\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 152
},
"actions" : [ ],
"order" : 0
@@ -546,7 +556,8 @@
"guard" : {
"expression" : "guardVarEquals(\"goTo14\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 153
},
"actions" : [ ],
"order" : 1
@@ -578,7 +589,8 @@
"guard" : {
"expression" : "guardVarEquals(\"goBack10\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 158
},
"actions" : [ ],
"order" : 0
@@ -610,7 +622,8 @@
"guard" : {
"expression" : "guardVarEquals(\"loop12\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 163
},
"actions" : [ ],
"order" : 0
@@ -642,7 +655,8 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBack\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 168
},
"actions" : [ ],
"order" : 0
@@ -660,7 +674,8 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBackMore\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 169
},
"actions" : [ ],
"order" : 1
@@ -692,7 +707,8 @@
"guard" : {
"expression" : "guardVarEquals(\"forward9\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 174
},
"actions" : [ ],
"order" : 0
@@ -738,7 +754,8 @@
"guard" : {
"expression" : "guardEventHeaderEquals(\"header1\",\"foo\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 31
},
"actions" : [ ],
"order" : 0

View File

@@ -4,7 +4,9 @@
"entryPoints" : [ ],
"callChains" : [ ],
"properties" : {
"spring.application.name" : "statemachinedemo"
"default" : {
"spring.application.name" : "statemachinedemo"
}
}
},
"name" : "click.kamil.examples.statemachine.inheritanceextrafunctionsstate.TwoStateMachineConfiguration",
@@ -318,7 +320,8 @@
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 120
},
"actions" : [ ],
"order" : 0
@@ -350,7 +353,8 @@
"guard" : {
"expression" : "guardVarEquals(\"value1\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 126
},
"actions" : [ ],
"order" : 0
@@ -368,7 +372,8 @@
"guard" : {
"expression" : "guardVarEquals(\"value2\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 127
},
"actions" : [ ],
"order" : 1
@@ -400,7 +405,8 @@
"guard" : {
"expression" : "guardEventHeaderEquals(\"header1\",\"foo\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 132
},
"actions" : [ ],
"order" : 0
@@ -432,7 +438,8 @@
"guard" : {
"expression" : "guardVarEquals(\"value3\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 137
},
"actions" : [ ],
"order" : 0
@@ -464,7 +471,8 @@
"guard" : {
"expression" : "guardVarEquals(\"reset\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 142
},
"actions" : [ ],
"order" : 0
@@ -496,7 +504,8 @@
"guard" : {
"expression" : "guardEventHeaderEquals(\"header2\",\"bar\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 147
},
"actions" : [ ],
"order" : 0
@@ -528,7 +537,8 @@
"guard" : {
"expression" : "guardVarEquals(\"goTo13\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 152
},
"actions" : [ ],
"order" : 0
@@ -546,7 +556,8 @@
"guard" : {
"expression" : "guardVarEquals(\"goTo14\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 153
},
"actions" : [ ],
"order" : 1
@@ -578,7 +589,8 @@
"guard" : {
"expression" : "guardVarEquals(\"goBack10\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 158
},
"actions" : [ ],
"order" : 0
@@ -610,7 +622,8 @@
"guard" : {
"expression" : "guardVarEquals(\"loop12\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 163
},
"actions" : [ ],
"order" : 0
@@ -642,7 +655,8 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBack\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 168
},
"actions" : [ ],
"order" : 0
@@ -660,7 +674,8 @@
"guard" : {
"expression" : "guardVarEquals(\"stepBackMore\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 169
},
"actions" : [ ],
"order" : 1
@@ -692,7 +707,8 @@
"guard" : {
"expression" : "guardVarEquals(\"forward9\")",
"isLambda" : false,
"internalLogic" : null
"internalLogic" : null,
"lineNumber" : 174
},
"actions" : [ ],
"order" : 0