Compare commits
3 Commits
b45513c5fb
...
c35c75efa3
| Author | SHA1 | Date | |
|---|---|---|---|
| c35c75efa3 | |||
| bd55a66985 | |||
| 0ac70bd3c6 |
@@ -445,6 +445,32 @@ public class ConstantResolver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private String resolveManual(SimpleName sn, CodebaseContext context, Set<String> visited) {
|
private String resolveManual(SimpleName sn, CodebaseContext context, Set<String> visited) {
|
||||||
|
MethodDeclaration enclosingMethod = findEnclosingMethod(sn);
|
||||||
|
if (enclosingMethod != null) {
|
||||||
|
for (Object paramObj : enclosingMethod.parameters()) {
|
||||||
|
if (paramObj instanceof SingleVariableDeclaration svd) {
|
||||||
|
if (svd.getName().getIdentifier().equals(sn.getIdentifier())) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (enclosingMethod.getBody() != null) {
|
||||||
|
boolean[] isLocal = {false};
|
||||||
|
enclosingMethod.getBody().accept(new ASTVisitor() {
|
||||||
|
@Override
|
||||||
|
public boolean visit(VariableDeclarationFragment node) {
|
||||||
|
if (node.getName().getIdentifier().equals(sn.getIdentifier())) {
|
||||||
|
isLocal[0] = true;
|
||||||
|
}
|
||||||
|
return super.visit(node);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (isLocal[0]) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TypeDeclaration td = findEnclosingType(sn);
|
TypeDeclaration td = findEnclosingType(sn);
|
||||||
if (td != null) {
|
if (td != null) {
|
||||||
String fqn = context.getFqn(td);
|
String fqn = context.getFqn(td);
|
||||||
|
|||||||
@@ -120,6 +120,30 @@ import java.util.*;
|
|||||||
if (paramIndex < edge.getArguments().size()) {
|
if (paramIndex < edge.getArguments().size()) {
|
||||||
String arg = edge.getArguments().get(paramIndex);
|
String arg = edge.getArguments().get(paramIndex);
|
||||||
if (arg != null) {
|
if (arg != null) {
|
||||||
|
String receiver = edge.getReceiver();
|
||||||
|
String actualReceiver = null;
|
||||||
|
if ("this".equals(arg) || arg.startsWith("this.") || "super".equals(arg) || arg.startsWith("super.")) {
|
||||||
|
if (i - 1 > 0) {
|
||||||
|
String prevCaller = path.get(i - 2);
|
||||||
|
List<CallEdge> prevEdges = callGraph.get(prevCaller);
|
||||||
|
if (prevEdges != null) {
|
||||||
|
for (CallEdge prevEdge : prevEdges) {
|
||||||
|
if (prevEdge.getTargetMethod().equals(caller) || isHeuristicMatch(prevEdge.getTargetMethod(), caller)) {
|
||||||
|
actualReceiver = prevEdge.getReceiver();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (actualReceiver == null) {
|
||||||
|
actualReceiver = "this";
|
||||||
|
}
|
||||||
|
if ("this".equals(arg) || arg.startsWith("this.")) {
|
||||||
|
arg = arg.replaceFirst("^this", actualReceiver);
|
||||||
|
} else if ("super".equals(arg) || arg.startsWith("super.")) {
|
||||||
|
arg = arg.replaceFirst("^super", actualReceiver);
|
||||||
|
}
|
||||||
|
}
|
||||||
// If the argument passed has a method call, extract it
|
// If the argument passed has a method call, extract it
|
||||||
String[] extractedArg = extractMethodSuffix(arg, methodSuffix);
|
String[] extractedArg = extractMethodSuffix(arg, methodSuffix);
|
||||||
arg = extractedArg[0];
|
arg = extractedArg[0];
|
||||||
@@ -166,6 +190,25 @@ import java.util.*;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean hasGetterOnReceiver = methodSuffix.startsWith(".get") && currentParamName != null
|
||||||
|
&& !currentParamName.contains(".") && !currentParamName.contains("(") && !currentParamName.contains("new ");
|
||||||
|
if (hasGetterOnReceiver) {
|
||||||
|
List<String> getterEvents = evaluateGetterOnReceiver(resolvedValue, methodSuffix, entryMethod, path, callGraph);
|
||||||
|
if (getterEvents != null && !getterEvents.isEmpty()) {
|
||||||
|
return TriggerPoint.builder()
|
||||||
|
.event(tp.getEvent())
|
||||||
|
.className(tp.getClassName())
|
||||||
|
.methodName(tp.getMethodName())
|
||||||
|
.sourceFile(tp.getSourceFile())
|
||||||
|
.sourceModule(tp.getSourceModule())
|
||||||
|
.stateMachineId(tp.getStateMachineId())
|
||||||
|
.sourceState(tp.getSourceState())
|
||||||
|
.lineNumber(tp.getLineNumber())
|
||||||
|
.polymorphicEvents(getterEvents)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
String tracedVar = traceLocalVariable(entryMethod, currentParamName);
|
String tracedVar = traceLocalVariable(entryMethod, currentParamName);
|
||||||
if (tracedVar != null && !tracedVar.equals(currentParamName)) {
|
if (tracedVar != null && !tracedVar.equals(currentParamName)) {
|
||||||
String[] extractedFinalTraced = extractMethodSuffix(tracedVar, methodSuffix);
|
String[] extractedFinalTraced = extractMethodSuffix(tracedVar, methodSuffix);
|
||||||
@@ -326,9 +369,11 @@ import java.util.*;
|
|||||||
|
|
||||||
if (varName != null && declaredType == null) {
|
if (varName != null && declaredType == null) {
|
||||||
if (!varName.isEmpty() && !"this".equals(varName) && !"super".equals(varName)) {
|
if (!varName.isEmpty() && !"this".equals(varName) && !"super".equals(varName)) {
|
||||||
TypeDeclaration currentTd = context.getTypeDeclaration(tp.getClassName());
|
String entryClassName = entryMethod.substring(0, entryMethod.lastIndexOf('.'));
|
||||||
|
String entryMethodName = entryMethod.substring(entryMethod.lastIndexOf('.') + 1);
|
||||||
|
TypeDeclaration currentTd = context.getTypeDeclaration(entryClassName);
|
||||||
if (currentTd != null) {
|
if (currentTd != null) {
|
||||||
MethodDeclaration currentMd = context.findMethodDeclaration(currentTd, tp.getMethodName(), true);
|
MethodDeclaration currentMd = context.findMethodDeclaration(currentTd, entryMethodName, true);
|
||||||
if (currentMd != null) {
|
if (currentMd != null) {
|
||||||
final String[] extractedFinalTraced = {null, null};
|
final String[] extractedFinalTraced = {null, null};
|
||||||
final String targetVar = varName;
|
final String targetVar = varName;
|
||||||
@@ -561,24 +606,93 @@ import java.util.*;
|
|||||||
|
|
||||||
protected boolean isTypeCompatible(String actualType, String expectedType) {
|
protected boolean isTypeCompatible(String actualType, String expectedType) {
|
||||||
if (actualType == null || expectedType == null) return true;
|
if (actualType == null || expectedType == null) return true;
|
||||||
|
if (expectedType.length() == 1 && Character.isUpperCase(expectedType.charAt(0))) return true;
|
||||||
|
if (actualType.length() == 1 && Character.isUpperCase(actualType.charAt(0))) return true;
|
||||||
|
|
||||||
|
// Save original expectedType to check generic type arguments
|
||||||
|
String originalExpectedType = expectedType;
|
||||||
|
|
||||||
|
// Unwrap collections
|
||||||
|
if (actualType.contains("<")) {
|
||||||
|
String rawType = actualType.substring(0, actualType.indexOf('<'));
|
||||||
|
if (rawType.equals("List") || rawType.equals("Set") || rawType.equals("Collection") || rawType.equals("Iterable") || rawType.endsWith("List") || rawType.endsWith("Set") || rawType.endsWith("Collection")) {
|
||||||
|
int start = actualType.indexOf('<');
|
||||||
|
int end = actualType.lastIndexOf('>');
|
||||||
|
if (start >= 0 && end > start) {
|
||||||
|
actualType = actualType.substring(start + 1, end);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (expectedType.contains("<")) {
|
||||||
|
String rawType = expectedType.substring(0, expectedType.indexOf('<'));
|
||||||
|
if (rawType.equals("List") || rawType.equals("Set") || rawType.equals("Collection") || rawType.equals("Iterable") || rawType.endsWith("List") || rawType.endsWith("Set") || rawType.endsWith("Collection")) {
|
||||||
|
int start = expectedType.indexOf('<');
|
||||||
|
int end = expectedType.lastIndexOf('>');
|
||||||
|
if (start >= 0 && end > start) {
|
||||||
|
expectedType = expectedType.substring(start + 1, end);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Strip any remaining generic arguments from raw types
|
||||||
|
if (actualType.contains("<")) {
|
||||||
|
actualType = actualType.substring(0, actualType.indexOf('<'));
|
||||||
|
}
|
||||||
|
if (expectedType.contains("<")) {
|
||||||
|
expectedType = expectedType.substring(0, expectedType.indexOf('<'));
|
||||||
|
}
|
||||||
|
|
||||||
if (actualType.equals(expectedType)) return true;
|
if (actualType.equals(expectedType)) return true;
|
||||||
if (actualType.endsWith("." + expectedType) || expectedType.endsWith("." + actualType)) return true;
|
if (actualType.endsWith("." + expectedType) || expectedType.endsWith("." + actualType)) return true;
|
||||||
|
|
||||||
TypeDeclaration td = context.getTypeDeclaration(actualType);
|
AbstractTypeDeclaration td = context.getAbstractTypeDeclaration(actualType);
|
||||||
if (td != null) {
|
if (td != null) {
|
||||||
String superFqn = context.getSuperclassFqn(td);
|
if (td instanceof TypeDeclaration typeDecl) {
|
||||||
while (superFqn != null) {
|
String superFqn = context.getSuperclassFqn(typeDecl);
|
||||||
if (superFqn.equals(expectedType) || superFqn.endsWith("." + expectedType)) return true;
|
while (superFqn != null) {
|
||||||
TypeDeclaration superTd = context.getTypeDeclaration(superFqn);
|
if (superFqn.contains("<")) {
|
||||||
superFqn = superTd != null ? context.getSuperclassFqn(superTd) : null;
|
superFqn = superFqn.substring(0, superFqn.indexOf('<'));
|
||||||
|
}
|
||||||
|
if (superFqn.equals(expectedType) || superFqn.endsWith("." + expectedType) || expectedType.endsWith("." + superFqn)) return true;
|
||||||
|
TypeDeclaration superTd = context.getTypeDeclaration(superFqn);
|
||||||
|
superFqn = superTd != null ? context.getSuperclassFqn(superTd) : null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
for (Object interfaceType : td.superInterfaceTypes()) {
|
List interfaces = java.util.Collections.emptyList();
|
||||||
if (interfaceType.toString().equals(expectedType) || interfaceType.toString().endsWith("." + expectedType)) return true;
|
if (td instanceof TypeDeclaration typeDecl) {
|
||||||
|
interfaces = typeDecl.superInterfaceTypes();
|
||||||
|
} else if (td instanceof EnumDeclaration enumDecl) {
|
||||||
|
interfaces = enumDecl.superInterfaceTypes();
|
||||||
|
} else if (td instanceof RecordDeclaration recordDecl) {
|
||||||
|
interfaces = recordDecl.superInterfaceTypes();
|
||||||
|
}
|
||||||
|
for (Object interfaceType : interfaces) {
|
||||||
|
String itStr = interfaceType.toString();
|
||||||
|
if (itStr.contains("<")) {
|
||||||
|
itStr = itStr.substring(0, itStr.indexOf('<'));
|
||||||
|
}
|
||||||
|
if (itStr.equals(expectedType) || itStr.endsWith("." + expectedType) || expectedType.endsWith("." + itStr)) return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fallback: Check if the actualType matches any of the generic type arguments of expectedType
|
||||||
|
if (originalExpectedType.contains("<")) {
|
||||||
|
int start = originalExpectedType.indexOf('<');
|
||||||
|
int end = originalExpectedType.lastIndexOf('>');
|
||||||
|
if (start >= 0 && end > start) {
|
||||||
|
String sub = originalExpectedType.substring(start + 1, end);
|
||||||
|
for (String part : sub.split(",")) {
|
||||||
|
String typeArg = part.trim();
|
||||||
|
if (isTypeCompatible(actualType, typeArg)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public String getVariableDeclaredType(String methodFqn, String cleanFieldName) {
|
public String getVariableDeclaredType(String methodFqn, String cleanFieldName) {
|
||||||
if (methodFqn == null) return null;
|
if (methodFqn == null) return null;
|
||||||
int lastDot = methodFqn.lastIndexOf('.');
|
int lastDot = methodFqn.lastIndexOf('.');
|
||||||
@@ -1944,13 +2058,58 @@ import java.util.*;
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isFullyQualifiedMethod(String methodFqn) {
|
||||||
|
if (methodFqn == null || !methodFqn.contains(".")) return false;
|
||||||
|
int lastDot = methodFqn.lastIndexOf('.');
|
||||||
|
String classPart = methodFqn.substring(0, lastDot);
|
||||||
|
if (classPart.contains(".")) return true;
|
||||||
|
if (!classPart.isEmpty() && Character.isUpperCase(classPart.charAt(0))) return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
protected boolean isHeuristicMatch(String neighbor, String target) {
|
protected boolean isHeuristicMatch(String neighbor, String target) {
|
||||||
if (neighbor == null || target == null) return false;
|
if (neighbor == null || target == null) return false;
|
||||||
if (neighbor.equals(target)) return true;
|
if (neighbor.equals(target)) return true;
|
||||||
|
|
||||||
// If both have packages/classes, they must match more strictly
|
// If both have packages/classes, they must match more strictly
|
||||||
if (neighbor.contains(".") && target.contains(".")) {
|
if (isFullyQualifiedMethod(neighbor) && isFullyQualifiedMethod(target)) {
|
||||||
return neighbor.endsWith(target) || target.endsWith(neighbor);
|
int lastDotNeighbor = neighbor.lastIndexOf('.');
|
||||||
|
int lastDotTarget = target.lastIndexOf('.');
|
||||||
|
if (lastDotNeighbor < 0 || lastDotTarget < 0) return false;
|
||||||
|
|
||||||
|
String methodNeighbor = neighbor.substring(lastDotNeighbor + 1);
|
||||||
|
String methodTarget = target.substring(lastDotTarget + 1);
|
||||||
|
|
||||||
|
if (!methodNeighbor.equals(methodTarget)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
String classNeighbor = neighbor.substring(0, lastDotNeighbor);
|
||||||
|
String classTarget = target.substring(0, lastDotTarget);
|
||||||
|
|
||||||
|
if (classNeighbor.equals(classTarget)) return true;
|
||||||
|
|
||||||
|
String simpleClassNeighbor = classNeighbor.contains(".") ? classNeighbor.substring(classNeighbor.lastIndexOf('.') + 1) : classNeighbor;
|
||||||
|
String simpleClassTarget = classTarget.contains(".") ? classTarget.substring(classTarget.lastIndexOf('.') + 1) : classTarget;
|
||||||
|
|
||||||
|
if (simpleClassNeighbor.equals(simpleClassTarget)) return true;
|
||||||
|
if (simpleClassNeighbor.contains(simpleClassTarget) || simpleClassTarget.contains(simpleClassNeighbor)) return true;
|
||||||
|
|
||||||
|
// Check context implementations
|
||||||
|
List<String> impls = context.getImplementations(classTarget);
|
||||||
|
if (impls != null) {
|
||||||
|
for (String impl : impls) {
|
||||||
|
if (impl.equals(classNeighbor) || impl.endsWith("." + classNeighbor)) return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
List<String> implsN = context.getImplementations(classNeighbor);
|
||||||
|
if (implsN != null) {
|
||||||
|
for (String impl : implsN) {
|
||||||
|
if (impl.equals(classTarget) || impl.endsWith("." + classTarget)) return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fallback for simple names (only if one side is unqualified)
|
// Fallback for simple names (only if one side is unqualified)
|
||||||
@@ -1979,10 +2138,20 @@ import java.util.*;
|
|||||||
List<Expression> results = new ArrayList<>();
|
List<Expression> results = new ArrayList<>();
|
||||||
if (expr instanceof SimpleName sn) {
|
if (expr instanceof SimpleName sn) {
|
||||||
String varName = sn.getIdentifier();
|
String varName = sn.getIdentifier();
|
||||||
if (!visitedVariables.add(varName)) {
|
String methodKey = "";
|
||||||
|
MethodDeclaration enclosingMethod = findEnclosingMethod(expr);
|
||||||
|
if (enclosingMethod != null) {
|
||||||
|
TypeDeclaration enclosingType = findEnclosingType(enclosingMethod);
|
||||||
|
if (enclosingType != null) {
|
||||||
|
methodKey = context.getFqn(enclosingType) + "." + enclosingMethod.getName().getIdentifier() + "#" + varName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (methodKey.isEmpty()) {
|
||||||
|
methodKey = varName;
|
||||||
|
}
|
||||||
|
if (!visitedVariables.add(methodKey)) {
|
||||||
return results; // Break infinite loop
|
return results; // Break infinite loop
|
||||||
}
|
}
|
||||||
MethodDeclaration enclosingMethod = findEnclosingMethod(expr);
|
|
||||||
if (enclosingMethod != null) {
|
if (enclosingMethod != null) {
|
||||||
enclosingMethod.accept(new ASTVisitor() {
|
enclosingMethod.accept(new ASTVisitor() {
|
||||||
@Override
|
@Override
|
||||||
@@ -2001,7 +2170,7 @@ import java.util.*;
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
if (!results.isEmpty()) {
|
if (!results.isEmpty()) {
|
||||||
visitedVariables.remove(varName);
|
visitedVariables.remove(methodKey);
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2041,14 +2210,14 @@ import java.util.*;
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
if (!callerExprs.isEmpty()) {
|
if (!callerExprs.isEmpty()) {
|
||||||
visitedVariables.remove(varName);
|
visitedVariables.remove(methodKey);
|
||||||
return callerExprs;
|
return callerExprs;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
visitedVariables.remove(varName);
|
visitedVariables.remove(methodKey);
|
||||||
}
|
}
|
||||||
results.add(expr);
|
results.add(expr);
|
||||||
return results;
|
return results;
|
||||||
@@ -2297,4 +2466,125 @@ import java.util.*;
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected List<String> evaluateGetterOnReceiver(String resolvedValue, String methodSuffix, String entryMethod, List<String> path, Map<String, List<CallEdge>> callGraph) {
|
||||||
|
org.eclipse.jdt.core.dom.ASTParser exprParser = org.eclipse.jdt.core.dom.ASTParser.newParser(org.eclipse.jdt.core.dom.AST.JLS17);
|
||||||
|
exprParser.setKind(org.eclipse.jdt.core.dom.ASTParser.K_EXPRESSION);
|
||||||
|
exprParser.setSource(resolvedValue.toCharArray());
|
||||||
|
org.eclipse.jdt.core.dom.ASTNode exprNode = exprParser.createAST(null);
|
||||||
|
|
||||||
|
if (exprNode instanceof org.eclipse.jdt.core.dom.MethodInvocation mi) {
|
||||||
|
String getterName = mi.getName().getIdentifier();
|
||||||
|
org.eclipse.jdt.core.dom.Expression receiver = mi.getExpression();
|
||||||
|
String receiverName = null;
|
||||||
|
String receiverType = null;
|
||||||
|
|
||||||
|
if (receiver instanceof org.eclipse.jdt.core.dom.SimpleName sn) {
|
||||||
|
receiverName = sn.getIdentifier();
|
||||||
|
receiverType = getVariableDeclaredType(entryMethod, receiverName);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (receiverType == null && path.size() > 1) {
|
||||||
|
String callerMethod = path.get(1);
|
||||||
|
receiverType = getVariableDeclaredType(callerMethod, receiverName);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (receiverType != null) {
|
||||||
|
String simpleReceiverType = receiverType;
|
||||||
|
if (receiverType.contains("<")) {
|
||||||
|
String rawType = receiverType.substring(0, receiverType.indexOf('<'));
|
||||||
|
if (rawType.equals("List") || rawType.equals("Set") || rawType.equals("Collection") || rawType.equals("Iterable") || context.getTypeDeclaration(rawType) == null) {
|
||||||
|
int start = receiverType.indexOf('<');
|
||||||
|
int end = receiverType.lastIndexOf('>');
|
||||||
|
if (start >= 0 && end > start) {
|
||||||
|
simpleReceiverType = receiverType.substring(start + 1, end);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
simpleReceiverType = rawType;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
TypeDeclaration td = context.getTypeDeclaration(simpleReceiverType);
|
||||||
|
if (td != null) {
|
||||||
|
Map<String, String> fieldValues = new HashMap<>();
|
||||||
|
String varName = receiverName;
|
||||||
|
org.eclipse.jdt.core.dom.Expression initExpr = findVariableInitializer(entryMethod, varName);
|
||||||
|
if (initExpr instanceof org.eclipse.jdt.core.dom.MethodInvocation initMi) {
|
||||||
|
initExpr = unwrapMethodInvocation(initMi, 0);
|
||||||
|
}
|
||||||
|
if (!(initExpr instanceof org.eclipse.jdt.core.dom.ClassInstanceCreation cic)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
MethodDeclaration getter = null;
|
||||||
|
if (cic.getAnonymousClassDeclaration() != null) {
|
||||||
|
for (Object declObj : cic.getAnonymousClassDeclaration().bodyDeclarations()) {
|
||||||
|
if (declObj instanceof MethodDeclaration md && md.getName().getIdentifier().equals(getterName)) {
|
||||||
|
getter = md;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (getter == null) {
|
||||||
|
getter = context.findMethodDeclaration(td, getterName, true);
|
||||||
|
}
|
||||||
|
if (getter != null && getter.getBody() != null) {
|
||||||
|
fieldValues.putAll(buildFieldValuesFromCIC(td, cic, context, this::evaluateMethodCallInConstructor));
|
||||||
|
int lastDot = entryMethod.lastIndexOf('.');
|
||||||
|
if (lastDot > 0) {
|
||||||
|
String className = entryMethod.substring(0, lastDot);
|
||||||
|
String methodName = entryMethod.substring(lastDot + 1);
|
||||||
|
TypeDeclaration entryTd = context.getTypeDeclaration(className);
|
||||||
|
if (entryTd != null) {
|
||||||
|
MethodDeclaration entryMd = context.findMethodDeclaration(entryTd, methodName, false);
|
||||||
|
if (entryMd != null && entryMd.getBody() != null) {
|
||||||
|
// Skip trackSetterCallsBetween since getter call is not in entry method
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
String result = constantResolver.evaluateMethodBodyWithLocals(getter, fieldValues, context, new HashSet<>());
|
||||||
|
if (result != null) {
|
||||||
|
String returnType = getter.getReturnType2() != null ? getter.getReturnType2().toString() : null;
|
||||||
|
if (returnType != null && !result.contains(".")) {
|
||||||
|
int lastDotRet = returnType.lastIndexOf('.');
|
||||||
|
String simpleReturnType = lastDotRet > 0 ? returnType.substring(lastDotRet + 1) : returnType;
|
||||||
|
if (!simpleReturnType.equals("String") && !simpleReturnType.equals("Integer") && !simpleReturnType.equals("Long") && !simpleReturnType.equals("Boolean")) {
|
||||||
|
result = simpleReturnType + "." + result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Collections.singletonList(result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected org.eclipse.jdt.core.dom.Expression findVariableInitializer(String methodFqn, String varName) {
|
||||||
|
int lastDot = methodFqn.lastIndexOf('.');
|
||||||
|
if (lastDot < 0) return null;
|
||||||
|
String className = methodFqn.substring(0, lastDot);
|
||||||
|
String methodName = methodFqn.substring(lastDot + 1);
|
||||||
|
|
||||||
|
TypeDeclaration td = context.getTypeDeclaration(className);
|
||||||
|
if (td == null) return null;
|
||||||
|
|
||||||
|
MethodDeclaration md = context.findMethodDeclaration(td, methodName, false);
|
||||||
|
if (md == null || md.getBody() == null) return null;
|
||||||
|
|
||||||
|
final org.eclipse.jdt.core.dom.Expression[] initExpr = {null};
|
||||||
|
md.getBody().accept(new org.eclipse.jdt.core.dom.ASTVisitor() {
|
||||||
|
@Override
|
||||||
|
public boolean visit(org.eclipse.jdt.core.dom.VariableDeclarationStatement node) {
|
||||||
|
for (Object fragObj : node.fragments()) {
|
||||||
|
org.eclipse.jdt.core.dom.VariableDeclarationFragment frag = (org.eclipse.jdt.core.dom.VariableDeclarationFragment) fragObj;
|
||||||
|
if (frag.getName().getIdentifier().equals(varName) && frag.getInitializer() != null) {
|
||||||
|
initExpr[0] = frag.getInitializer();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return super.visit(node);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return initExpr[0];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -540,313 +540,4 @@ public class HeuristicCallGraphEngine extends AbstractCallGraphEngine {
|
|||||||
});
|
});
|
||||||
return foundReceiver[0];
|
return foundReceiver[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected TriggerPoint resolveTriggerPointParameters(TriggerPoint tp, List<String> path, Map<String, List<CallEdge>> callGraph) {
|
|
||||||
if (path.size() < 2) return tp;
|
|
||||||
|
|
||||||
String event = tp.getEvent();
|
|
||||||
if (event == null || event.isEmpty() || event.contains("\"")) return tp;
|
|
||||||
|
|
||||||
String currentParamName = event;
|
|
||||||
String resolvedValue = event;
|
|
||||||
String methodSuffix = "";
|
|
||||||
boolean didThisSuperSubstitution = false;
|
|
||||||
|
|
||||||
String[] extractedEntry = extractMethodSuffix(currentParamName, methodSuffix);
|
|
||||||
currentParamName = extractedEntry[0];
|
|
||||||
methodSuffix = extractedEntry[1];
|
|
||||||
|
|
||||||
for (int i = path.size() - 1; i > 0; i--) {
|
|
||||||
String target = path.get(i);
|
|
||||||
String caller = path.get(i - 1);
|
|
||||||
int paramIndex = getParameterIndex(target, currentParamName);
|
|
||||||
if (paramIndex < 0) {
|
|
||||||
java.util.Map<String, String> parameterValues = buildParameterValuesMap(caller, target, callGraph, path, i);
|
|
||||||
String tracedVar = traceLocalVariable(target, currentParamName, parameterValues);
|
|
||||||
if (tracedVar != null && !tracedVar.equals(currentParamName)) {
|
|
||||||
String[] extractedTraced = extractMethodSuffix(tracedVar, methodSuffix);
|
|
||||||
tracedVar = extractedTraced[0];
|
|
||||||
methodSuffix = extractedTraced[1];
|
|
||||||
currentParamName = tracedVar;
|
|
||||||
resolvedValue = tracedVar + methodSuffix;
|
|
||||||
paramIndex = getParameterIndex(target, currentParamName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (paramIndex < 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
List<CallEdge> edges = callGraph.get(caller);
|
|
||||||
boolean found = false;
|
|
||||||
if (edges != null) {
|
|
||||||
for (CallEdge edge : edges) {
|
|
||||||
if (edge.getTargetMethod().equals(target) || isHeuristicMatch(edge.getTargetMethod(), target)) {
|
|
||||||
String expectedType = getParameterType(target, paramIndex);
|
|
||||||
if (expectedType != null && paramIndex < edge.getArguments().size()) {
|
|
||||||
String argValue = edge.getArguments().get(paramIndex);
|
|
||||||
String actualType = null;
|
|
||||||
if (argValue.contains(".") && !argValue.contains("(")) {
|
|
||||||
String prefix = argValue.substring(0, argValue.lastIndexOf('.'));
|
|
||||||
if (!prefix.equals("this") && !prefix.equals("super")) {
|
|
||||||
actualType = prefix;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (actualType == null && !argValue.contains(".")) {
|
|
||||||
actualType = getVariableDeclaredType(caller, argValue);
|
|
||||||
}
|
|
||||||
if (actualType != null && !isTypeCompatible(actualType, expectedType)) {
|
|
||||||
log.debug("Call rejected due to type mismatch: {} calling {} with type {} instead of expected {}", caller, edge.getTargetMethod(), actualType, expectedType);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (paramIndex < edge.getArguments().size()) {
|
|
||||||
String arg = edge.getArguments().get(paramIndex);
|
|
||||||
if (arg != null) {
|
|
||||||
String receiver = edge.getReceiver();
|
|
||||||
if (receiver != null && !receiver.isEmpty() && ("this".equals(arg) || arg.startsWith("this.") || "super".equals(arg) || arg.startsWith("super."))) {
|
|
||||||
String actualReceiver = receiver;
|
|
||||||
boolean needPrevReceiver = "this".equals(arg) || arg.startsWith("this.");
|
|
||||||
if (needPrevReceiver && !"this".equals(receiver) && !"super".equals(receiver)) {
|
|
||||||
if (i - 1 > 0) {
|
|
||||||
String prevCaller = path.get(i - 2);
|
|
||||||
List<CallEdge> prevEdges = callGraph.get(prevCaller);
|
|
||||||
if (prevEdges != null) {
|
|
||||||
for (CallEdge prevEdge : prevEdges) {
|
|
||||||
if (prevEdge.getTargetMethod().equals(caller) || isHeuristicMatch(prevEdge.getTargetMethod(), caller)) {
|
|
||||||
actualReceiver = prevEdge.getReceiver();
|
|
||||||
System.out.println("DEBUG TRACE: found prev edge, actualReceiver=" + actualReceiver);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if ("this".equals(receiver) || "super".equals(receiver)) {
|
|
||||||
if (i - 1 > 0) {
|
|
||||||
String prevCaller = path.get(i - 2);
|
|
||||||
List<CallEdge> prevEdges = callGraph.get(prevCaller);
|
|
||||||
if (prevEdges != null) {
|
|
||||||
for (CallEdge prevEdge : prevEdges) {
|
|
||||||
if (prevEdge.getTargetMethod().equals(caller) || isHeuristicMatch(prevEdge.getTargetMethod(), caller)) {
|
|
||||||
actualReceiver = prevEdge.getReceiver();
|
|
||||||
System.out.println("DEBUG TRACE: found prev edge, actualReceiver=" + actualReceiver);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (actualReceiver != null && !actualReceiver.isEmpty()) {
|
|
||||||
if ("this".equals(arg) || arg.startsWith("this.")) {
|
|
||||||
arg = arg.replaceFirst("^this", actualReceiver);
|
|
||||||
didThisSuperSubstitution = true;
|
|
||||||
} else if ("super".equals(arg) || arg.startsWith("super.")) {
|
|
||||||
arg = arg.replaceFirst("^super", actualReceiver);
|
|
||||||
didThisSuperSubstitution = true;
|
|
||||||
}
|
|
||||||
System.out.println("DEBUG TRACE: after substitution arg=" + arg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
String[] extractedArg = extractMethodSuffix(arg, methodSuffix);
|
|
||||||
arg = extractedArg[0];
|
|
||||||
methodSuffix = extractedArg[1];
|
|
||||||
currentParamName = arg;
|
|
||||||
resolvedValue = arg + methodSuffix;
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!found) break;
|
|
||||||
}
|
|
||||||
|
|
||||||
String entryMethod = path.get(0);
|
|
||||||
int entryParamIndex = getParameterIndex(entryMethod, currentParamName);
|
|
||||||
|
|
||||||
if (resolvedValue != null && resolvedValue.contains(".") && !resolvedValue.contains("(") && !resolvedValue.contains(" ")) {
|
|
||||||
TriggerPoint modifiedTp = TriggerPoint.builder()
|
|
||||||
.event(resolvedValue)
|
|
||||||
.className(tp.getClassName())
|
|
||||||
.methodName(tp.getMethodName())
|
|
||||||
.sourceFile(tp.getSourceFile())
|
|
||||||
.sourceModule(tp.getSourceModule())
|
|
||||||
.stateMachineId(tp.getStateMachineId())
|
|
||||||
.sourceState(tp.getSourceState())
|
|
||||||
.lineNumber(tp.getLineNumber())
|
|
||||||
.build();
|
|
||||||
return super.resolveTriggerPointParameters(modifiedTp, path, callGraph);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (entryParamIndex < 0) {
|
|
||||||
if (methodSuffix.startsWith(".get") || methodSuffix.equals(".type") || methodSuffix.equals(".event") || methodSuffix.equals(".type()") || methodSuffix.equals(".event()")) {
|
|
||||||
String localMethodName = methodSuffix.substring(1).replace("()", "");
|
|
||||||
org.eclipse.jdt.core.dom.Expression localSetterExpr = traceLocalSetter(entryMethod, currentParamName, localMethodName);
|
|
||||||
if (localSetterExpr != null) {
|
|
||||||
List<String> setterEvents = new ArrayList<>();
|
|
||||||
List<org.eclipse.jdt.core.dom.Expression> tracedSetters = traceVariableAll(localSetterExpr);
|
|
||||||
for (org.eclipse.jdt.core.dom.Expression tracedSetter : tracedSetters) {
|
|
||||||
extractConstantsFromExpression(tracedSetter, setterEvents);
|
|
||||||
}
|
|
||||||
if (!setterEvents.isEmpty()) {
|
|
||||||
return TriggerPoint.builder()
|
|
||||||
.event(tp.getEvent())
|
|
||||||
.className(tp.getClassName())
|
|
||||||
.methodName(tp.getMethodName())
|
|
||||||
.sourceFile(tp.getSourceFile())
|
|
||||||
.sourceModule(tp.getSourceModule())
|
|
||||||
.stateMachineId(tp.getStateMachineId())
|
|
||||||
.sourceState(tp.getSourceState())
|
|
||||||
.lineNumber(tp.getLineNumber())
|
|
||||||
.polymorphicEvents(setterEvents)
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
boolean hasGetterOnReceiver = methodSuffix.startsWith(".get") && currentParamName != null
|
|
||||||
&& !currentParamName.contains(".") && !currentParamName.contains("(") && !currentParamName.contains("new ");
|
|
||||||
if (!hasGetterOnReceiver) {
|
|
||||||
String tracedVar = traceLocalVariable(entryMethod, currentParamName);
|
|
||||||
if (tracedVar != null && !tracedVar.equals(currentParamName)) {
|
|
||||||
String[] extractedFinalTraced = extractMethodSuffix(tracedVar, methodSuffix);
|
|
||||||
tracedVar = extractedFinalTraced[0];
|
|
||||||
methodSuffix = extractedFinalTraced[1];
|
|
||||||
currentParamName = tracedVar;
|
|
||||||
resolvedValue = tracedVar + methodSuffix;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
String finalResolvedValue = resolvedValue;
|
|
||||||
boolean hasGetterOnReceiver = methodSuffix.startsWith(".get") && currentParamName != null
|
|
||||||
&& !currentParamName.contains(".") && !currentParamName.contains("(") && !currentParamName.contains("new ");
|
|
||||||
if (hasGetterOnReceiver && didThisSuperSubstitution) {
|
|
||||||
List<String> getterEvents = evaluateGetterOnReceiver(finalResolvedValue, methodSuffix, entryMethod, path, callGraph);
|
|
||||||
if (getterEvents != null && !getterEvents.isEmpty()) {
|
|
||||||
return TriggerPoint.builder()
|
|
||||||
.event(tp.getEvent())
|
|
||||||
.className(tp.getClassName())
|
|
||||||
.methodName(tp.getMethodName())
|
|
||||||
.sourceFile(tp.getSourceFile())
|
|
||||||
.sourceModule(tp.getSourceModule())
|
|
||||||
.stateMachineId(tp.getStateMachineId())
|
|
||||||
.sourceState(tp.getSourceState())
|
|
||||||
.lineNumber(tp.getLineNumber())
|
|
||||||
.polymorphicEvents(getterEvents)
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
// If we couldn't evaluate the getter, fall back to super with modified trigger point
|
|
||||||
TriggerPoint modifiedTp = TriggerPoint.builder()
|
|
||||||
.event(resolvedValue)
|
|
||||||
.className(tp.getClassName())
|
|
||||||
.methodName(tp.getMethodName())
|
|
||||||
.sourceFile(tp.getSourceFile())
|
|
||||||
.sourceModule(tp.getSourceModule())
|
|
||||||
.stateMachineId(tp.getStateMachineId())
|
|
||||||
.sourceState(tp.getSourceState())
|
|
||||||
.lineNumber(tp.getLineNumber())
|
|
||||||
.build();
|
|
||||||
return super.resolveTriggerPointParameters(modifiedTp, path, callGraph);
|
|
||||||
}
|
|
||||||
|
|
||||||
return super.resolveTriggerPointParameters(tp, path, callGraph);
|
|
||||||
}
|
|
||||||
|
|
||||||
private List<String> evaluateGetterOnReceiver(String resolvedValue, String methodSuffix, String entryMethod, List<String> path, Map<String, List<CallEdge>> callGraph) {
|
|
||||||
org.eclipse.jdt.core.dom.ASTParser exprParser = org.eclipse.jdt.core.dom.ASTParser.newParser(org.eclipse.jdt.core.dom.AST.JLS17);
|
|
||||||
exprParser.setKind(org.eclipse.jdt.core.dom.ASTParser.K_EXPRESSION);
|
|
||||||
exprParser.setSource(resolvedValue.toCharArray());
|
|
||||||
org.eclipse.jdt.core.dom.ASTNode exprNode = exprParser.createAST(null);
|
|
||||||
|
|
||||||
if (exprNode instanceof org.eclipse.jdt.core.dom.MethodInvocation mi) {
|
|
||||||
String getterName = mi.getName().getIdentifier();
|
|
||||||
org.eclipse.jdt.core.dom.Expression receiver = mi.getExpression();
|
|
||||||
String receiverName = null;
|
|
||||||
String receiverType = null;
|
|
||||||
|
|
||||||
if (receiver instanceof org.eclipse.jdt.core.dom.SimpleName sn) {
|
|
||||||
receiverName = sn.getIdentifier();
|
|
||||||
receiverType = getVariableDeclaredType(entryMethod, receiverName);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (receiverType == null && path.size() > 1) {
|
|
||||||
String callerMethod = path.get(1);
|
|
||||||
receiverType = getVariableDeclaredType(callerMethod, receiverName);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (receiverType != null) {
|
|
||||||
String simpleReceiverType = receiverType;
|
|
||||||
if (receiverType.contains("<")) {
|
|
||||||
simpleReceiverType = receiverType.substring(0, receiverType.indexOf('<'));
|
|
||||||
}
|
|
||||||
TypeDeclaration td = context.getTypeDeclaration(simpleReceiverType);
|
|
||||||
if (td != null) {
|
|
||||||
MethodDeclaration getter = context.findMethodDeclaration(td, getterName, true);
|
|
||||||
if (getter != null && getter.getBody() != null) {
|
|
||||||
Map<String, String> fieldValues = new HashMap<>();
|
|
||||||
String varName = receiverName;
|
|
||||||
org.eclipse.jdt.core.dom.Expression initExpr = findVariableInitializer(entryMethod, varName);
|
|
||||||
if (initExpr instanceof org.eclipse.jdt.core.dom.ClassInstanceCreation cic) {
|
|
||||||
fieldValues.putAll(buildFieldValuesFromCIC(td, cic, context, this::evaluateMethodCallInConstructor));
|
|
||||||
int lastDot = entryMethod.lastIndexOf('.');
|
|
||||||
if (lastDot > 0) {
|
|
||||||
String className = entryMethod.substring(0, lastDot);
|
|
||||||
String methodName = entryMethod.substring(lastDot + 1);
|
|
||||||
TypeDeclaration entryTd = context.getTypeDeclaration(className);
|
|
||||||
if (entryTd != null) {
|
|
||||||
MethodDeclaration entryMd = context.findMethodDeclaration(entryTd, methodName, false);
|
|
||||||
if (entryMd != null && entryMd.getBody() != null) {
|
|
||||||
// Skip trackSetterCallsBetween since getter call is not in entry method
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
String result = constantResolver.evaluateMethodBodyWithLocals(getter, fieldValues, context, new HashSet<>());
|
|
||||||
if (result != null) {
|
|
||||||
String returnType = getter.getReturnType2() != null ? getter.getReturnType2().toString() : null;
|
|
||||||
if (returnType != null && !result.contains(".")) {
|
|
||||||
int lastDot = returnType.lastIndexOf('.');
|
|
||||||
String simpleReturnType = lastDot > 0 ? returnType.substring(lastDot + 1) : returnType;
|
|
||||||
result = simpleReturnType + "." + result;
|
|
||||||
}
|
|
||||||
return Collections.singletonList(result);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private org.eclipse.jdt.core.dom.Expression findVariableInitializer(String methodFqn, String varName) {
|
|
||||||
int lastDot = methodFqn.lastIndexOf('.');
|
|
||||||
if (lastDot < 0) return null;
|
|
||||||
String className = methodFqn.substring(0, lastDot);
|
|
||||||
String methodName = methodFqn.substring(lastDot + 1);
|
|
||||||
|
|
||||||
TypeDeclaration td = context.getTypeDeclaration(className);
|
|
||||||
if (td == null) return null;
|
|
||||||
|
|
||||||
MethodDeclaration md = context.findMethodDeclaration(td, methodName, false);
|
|
||||||
if (md == null || md.getBody() == null) return null;
|
|
||||||
|
|
||||||
final org.eclipse.jdt.core.dom.Expression[] initExpr = {null};
|
|
||||||
md.getBody().accept(new org.eclipse.jdt.core.dom.ASTVisitor() {
|
|
||||||
@Override
|
|
||||||
public boolean visit(org.eclipse.jdt.core.dom.VariableDeclarationStatement node) {
|
|
||||||
for (Object fragObj : node.fragments()) {
|
|
||||||
org.eclipse.jdt.core.dom.VariableDeclarationFragment frag = (org.eclipse.jdt.core.dom.VariableDeclarationFragment) fragObj;
|
|
||||||
if (frag.getName().getIdentifier().equals(varName) && frag.getInitializer() != null) {
|
|
||||||
initExpr[0] = frag.getInitializer();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return super.visit(node);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return initExpr[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -572,15 +572,103 @@ public class CodebaseContext {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getFqn(TypeDeclaration td) {
|
public AbstractTypeDeclaration getAbstractTypeDeclaration(String name) {
|
||||||
StringBuilder sb = new StringBuilder(td.getName().getIdentifier());
|
// Try exact FQN match first
|
||||||
ASTNode current = td.getParent();
|
CompilationUnit cu = classes.get(name);
|
||||||
while (current instanceof TypeDeclaration parent) {
|
if (cu != null)
|
||||||
|
return findAbstractTypeInCu(cu, name);
|
||||||
|
|
||||||
|
// If it's a simple name, check if it's ambiguous
|
||||||
|
if (ambiguousSimpleNames.contains(name)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If not ambiguous, return the one we found during scan
|
||||||
|
String fqn = simpleNameToFqn.get(name);
|
||||||
|
if (fqn != null) {
|
||||||
|
cu = classes.get(fqn);
|
||||||
|
if (cu != null)
|
||||||
|
return findAbstractTypeInCu(cu, fqn);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public AbstractTypeDeclaration getAbstractTypeDeclaration(String name, CompilationUnit contextCu) {
|
||||||
|
if (name == null || name.isEmpty())
|
||||||
|
return null;
|
||||||
|
|
||||||
|
// 1. Check if it's already an FQN
|
||||||
|
if (classes.containsKey(name))
|
||||||
|
return getAbstractTypeDeclaration(name);
|
||||||
|
|
||||||
|
// 2. Check imports in contextCu
|
||||||
|
if (contextCu != null) {
|
||||||
|
for (Object impObj : contextCu.imports()) {
|
||||||
|
ImportDeclaration imp = (ImportDeclaration) impObj;
|
||||||
|
String impName = imp.getName().getFullyQualifiedName();
|
||||||
|
if (!imp.isStatic() && !imp.isOnDemand()) {
|
||||||
|
if (impName.endsWith("." + name))
|
||||||
|
return getAbstractTypeDeclaration(impName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. Check same package
|
||||||
|
String packageName = contextCu.getPackage() != null ? contextCu.getPackage().getName().getFullyQualifiedName() : "";
|
||||||
|
String localFqn = packageName.isEmpty() ? name : packageName + "." + name;
|
||||||
|
if (classes.containsKey(localFqn))
|
||||||
|
return getAbstractTypeDeclaration(localFqn);
|
||||||
|
|
||||||
|
// 4. Check on-demand imports (star imports)
|
||||||
|
for (Object impObj : contextCu.imports()) {
|
||||||
|
ImportDeclaration imp = (ImportDeclaration) impObj;
|
||||||
|
if (imp.isOnDemand()) {
|
||||||
|
String starFqn = imp.getName().getFullyQualifiedName() + "." + name;
|
||||||
|
if (classes.containsKey(starFqn))
|
||||||
|
return getAbstractTypeDeclaration(starFqn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 5. Fallback to java.lang (common)
|
||||||
|
String langFqn = "java.lang." + name;
|
||||||
|
if (classes.containsKey(langFqn))
|
||||||
|
return getAbstractTypeDeclaration(langFqn);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 6. Last resort: global simple name match
|
||||||
|
return getAbstractTypeDeclaration(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
private AbstractTypeDeclaration findAbstractTypeInCu(CompilationUnit cu, String fqn) {
|
||||||
|
for (Object type : cu.types()) {
|
||||||
|
if (type instanceof AbstractTypeDeclaration atd) {
|
||||||
|
AbstractTypeDeclaration found = findNestedAbstractType(atd, fqn);
|
||||||
|
if (found != null) return found;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private AbstractTypeDeclaration findNestedAbstractType(AbstractTypeDeclaration atd, String targetFqn) {
|
||||||
|
if (getFqn(atd).equals(targetFqn)) return atd;
|
||||||
|
if (atd instanceof TypeDeclaration td) {
|
||||||
|
for (TypeDeclaration nested : td.getTypes()) {
|
||||||
|
AbstractTypeDeclaration found = findNestedAbstractType(nested, targetFqn);
|
||||||
|
if (found != null) return found;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFqn(AbstractTypeDeclaration atd) {
|
||||||
|
StringBuilder sb = new StringBuilder(atd.getName().getIdentifier());
|
||||||
|
ASTNode current = atd.getParent();
|
||||||
|
while (current instanceof AbstractTypeDeclaration parent) {
|
||||||
sb.insert(0, parent.getName().getIdentifier() + ".");
|
sb.insert(0, parent.getName().getIdentifier() + ".");
|
||||||
current = parent.getParent();
|
current = parent.getParent();
|
||||||
}
|
}
|
||||||
|
|
||||||
CompilationUnit cu = (CompilationUnit) td.getRoot();
|
CompilationUnit cu = (CompilationUnit) atd.getRoot();
|
||||||
String packageName = cu.getPackage() != null ? cu.getPackage().getName().getFullyQualifiedName() : "";
|
String packageName = cu.getPackage() != null ? cu.getPackage().getName().getFullyQualifiedName() : "";
|
||||||
String fqn = sb.toString();
|
String fqn = sb.toString();
|
||||||
return packageName.isEmpty() ? fqn : packageName + "." + fqn;
|
return packageName.isEmpty() ? fqn : packageName + "." + fqn;
|
||||||
|
|||||||
@@ -533,114 +533,6 @@
|
|||||||
"targetState" : "START",
|
"targetState" : "START",
|
||||||
"event" : "AUDIT_EVENT"
|
"event" : "AUDIT_EVENT"
|
||||||
} ]
|
} ]
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "GET /test-setter",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.SetterInjectionController",
|
|
||||||
"methodName" : "testSetter",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/SetterInjectionController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/test-setter",
|
|
||||||
"verb" : "GET"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.SetterInjectionController.testSetter", "click.kamil.examples.statemachine.extended.service.FallbackQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "FALLBACK_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.FallbackQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/FallbackQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "FALLBACK_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "GET /test-setter",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.SetterInjectionController",
|
|
||||||
"methodName" : "testSetter",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/SetterInjectionController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/test-setter",
|
|
||||||
"verb" : "GET"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.SetterInjectionController.testSetter", "click.kamil.examples.statemachine.extended.service.ProfiledQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "PROFILED_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.ProfiledQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/ProfiledQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 19,
|
|
||||||
"polymorphicEvents" : [ "PROFILED_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "GET /test-setter",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.SetterInjectionController",
|
|
||||||
"methodName" : "testSetter",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/SetterInjectionController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/test-setter",
|
|
||||||
"verb" : "GET"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.SetterInjectionController.testSetter", "click.kamil.examples.statemachine.extended.service.PrimaryQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "PRIMARY_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.PrimaryQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/PrimaryQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 19,
|
|
||||||
"polymorphicEvents" : [ "PRIMARY_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "GET /test-setter",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.SetterInjectionController",
|
|
||||||
"methodName" : "testSetter",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/SetterInjectionController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/test-setter",
|
|
||||||
"verb" : "GET"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.SetterInjectionController.testSetter", "click.kamil.examples.statemachine.extended.service.QualifierQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "QUALIFIER_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.QualifierQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/QualifierQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "QUALIFIER_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
}, {
|
||||||
"entryPoint" : {
|
"entryPoint" : {
|
||||||
"type" : "REST",
|
"type" : "REST",
|
||||||
@@ -668,60 +560,6 @@
|
|||||||
},
|
},
|
||||||
"contextMachineId" : null,
|
"contextMachineId" : null,
|
||||||
"matchedTransitions" : null
|
"matchedTransitions" : null
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/primary",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testPrimary",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/primary",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testPrimary", "click.kamil.examples.statemachine.extended.service.FallbackQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "FALLBACK_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.FallbackQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/FallbackQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "FALLBACK_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/primary",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testPrimary",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/primary",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testPrimary", "click.kamil.examples.statemachine.extended.service.ProfiledQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "PROFILED_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.ProfiledQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/ProfiledQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 19,
|
|
||||||
"polymorphicEvents" : [ "PROFILED_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
}, {
|
||||||
"entryPoint" : {
|
"entryPoint" : {
|
||||||
"type" : "REST",
|
"type" : "REST",
|
||||||
@@ -749,168 +587,6 @@
|
|||||||
},
|
},
|
||||||
"contextMachineId" : null,
|
"contextMachineId" : null,
|
||||||
"matchedTransitions" : null
|
"matchedTransitions" : null
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/primary",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testPrimary",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/primary",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testPrimary", "click.kamil.examples.statemachine.extended.service.QualifierQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "QUALIFIER_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.QualifierQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/QualifierQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "QUALIFIER_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/primary",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testPrimary",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/primary",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testPrimary", "click.kamil.examples.statemachine.extended.service.NamedQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "NAMED_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.NamedQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/NamedQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "NAMED_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/named",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testNamed",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/named",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testNamed", "click.kamil.examples.statemachine.extended.service.FallbackQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "FALLBACK_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.FallbackQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/FallbackQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "FALLBACK_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/named",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testNamed",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/named",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testNamed", "click.kamil.examples.statemachine.extended.service.ProfiledQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "PROFILED_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.ProfiledQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/ProfiledQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 19,
|
|
||||||
"polymorphicEvents" : [ "PROFILED_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/named",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testNamed",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/named",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testNamed", "click.kamil.examples.statemachine.extended.service.PrimaryQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "PRIMARY_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.PrimaryQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/PrimaryQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 19,
|
|
||||||
"polymorphicEvents" : [ "PRIMARY_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/named",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testNamed",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/named",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testNamed", "click.kamil.examples.statemachine.extended.service.QualifierQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "QUALIFIER_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.QualifierQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/QualifierQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "QUALIFIER_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
}, {
|
||||||
"entryPoint" : {
|
"entryPoint" : {
|
||||||
"type" : "REST",
|
"type" : "REST",
|
||||||
@@ -938,87 +614,6 @@
|
|||||||
},
|
},
|
||||||
"contextMachineId" : null,
|
"contextMachineId" : null,
|
||||||
"matchedTransitions" : null
|
"matchedTransitions" : null
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/qualifier",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testQualifier",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/qualifier",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testQualifier", "click.kamil.examples.statemachine.extended.service.FallbackQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "FALLBACK_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.FallbackQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/FallbackQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "FALLBACK_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/qualifier",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testQualifier",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/qualifier",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testQualifier", "click.kamil.examples.statemachine.extended.service.ProfiledQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "PROFILED_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.ProfiledQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/ProfiledQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 19,
|
|
||||||
"polymorphicEvents" : [ "PROFILED_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/qualifier",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testQualifier",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/qualifier",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testQualifier", "click.kamil.examples.statemachine.extended.service.PrimaryQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "PRIMARY_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.PrimaryQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/PrimaryQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 19,
|
|
||||||
"polymorphicEvents" : [ "PRIMARY_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
}, {
|
||||||
"entryPoint" : {
|
"entryPoint" : {
|
||||||
"type" : "REST",
|
"type" : "REST",
|
||||||
@@ -1046,87 +641,6 @@
|
|||||||
},
|
},
|
||||||
"contextMachineId" : null,
|
"contextMachineId" : null,
|
||||||
"matchedTransitions" : null
|
"matchedTransitions" : null
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/qualifier",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testQualifier",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/qualifier",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testQualifier", "click.kamil.examples.statemachine.extended.service.NamedQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "NAMED_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.NamedQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/NamedQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "NAMED_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/fallback",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testFallback",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/fallback",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testFallback", "click.kamil.examples.statemachine.extended.service.FallbackQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "FALLBACK_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.FallbackQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/FallbackQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "FALLBACK_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/fallback",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testFallback",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/fallback",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testFallback", "click.kamil.examples.statemachine.extended.service.ProfiledQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "PROFILED_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.ProfiledQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/ProfiledQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 19,
|
|
||||||
"polymorphicEvents" : [ "PROFILED_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
}, {
|
||||||
"entryPoint" : {
|
"entryPoint" : {
|
||||||
"type" : "REST",
|
"type" : "REST",
|
||||||
@@ -1154,141 +668,6 @@
|
|||||||
},
|
},
|
||||||
"contextMachineId" : null,
|
"contextMachineId" : null,
|
||||||
"matchedTransitions" : null
|
"matchedTransitions" : null
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/fallback",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testFallback",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/fallback",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testFallback", "click.kamil.examples.statemachine.extended.service.QualifierQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "QUALIFIER_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.QualifierQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/QualifierQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "QUALIFIER_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/fallback",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testFallback",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/fallback",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testFallback", "click.kamil.examples.statemachine.extended.service.NamedQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "NAMED_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.NamedQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/NamedQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "NAMED_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "GET /test-concrete",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.ConcreteReturnTypeController",
|
|
||||||
"methodName" : "testConcrete",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/ConcreteReturnTypeController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/test-concrete",
|
|
||||||
"verb" : "GET"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.ConcreteReturnTypeController.testConcrete", "click.kamil.examples.statemachine.extended.service.FallbackQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "FALLBACK_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.FallbackQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/FallbackQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "FALLBACK_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "GET /test-concrete",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.ConcreteReturnTypeController",
|
|
||||||
"methodName" : "testConcrete",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/ConcreteReturnTypeController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/test-concrete",
|
|
||||||
"verb" : "GET"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.ConcreteReturnTypeController.testConcrete", "click.kamil.examples.statemachine.extended.service.ProfiledQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "PROFILED_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.ProfiledQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/ProfiledQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 19,
|
|
||||||
"polymorphicEvents" : [ "PROFILED_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "GET /test-concrete",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.ConcreteReturnTypeController",
|
|
||||||
"methodName" : "testConcrete",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/ConcreteReturnTypeController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/test-concrete",
|
|
||||||
"verb" : "GET"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.ConcreteReturnTypeController.testConcrete", "click.kamil.examples.statemachine.extended.service.PrimaryQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "PRIMARY_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.PrimaryQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/PrimaryQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 19,
|
|
||||||
"polymorphicEvents" : [ "PRIMARY_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
}, {
|
||||||
"entryPoint" : {
|
"entryPoint" : {
|
||||||
"type" : "REST",
|
"type" : "REST",
|
||||||
@@ -1316,141 +695,6 @@
|
|||||||
},
|
},
|
||||||
"contextMachineId" : null,
|
"contextMachineId" : null,
|
||||||
"matchedTransitions" : null
|
"matchedTransitions" : null
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "GET /test-concrete",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.ConcreteReturnTypeController",
|
|
||||||
"methodName" : "testConcrete",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/ConcreteReturnTypeController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/test-concrete",
|
|
||||||
"verb" : "GET"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.ConcreteReturnTypeController.testConcrete", "click.kamil.examples.statemachine.extended.service.NamedQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "NAMED_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.NamedQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/NamedQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "NAMED_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "GET /test-field",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.FieldInjectionController",
|
|
||||||
"methodName" : "testField",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/FieldInjectionController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/test-field",
|
|
||||||
"verb" : "GET"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.FieldInjectionController.testField", "click.kamil.examples.statemachine.extended.service.FallbackQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "FALLBACK_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.FallbackQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/FallbackQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "FALLBACK_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "GET /test-field",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.FieldInjectionController",
|
|
||||||
"methodName" : "testField",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/FieldInjectionController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/test-field",
|
|
||||||
"verb" : "GET"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.FieldInjectionController.testField", "click.kamil.examples.statemachine.extended.service.ProfiledQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "PROFILED_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.ProfiledQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/ProfiledQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 19,
|
|
||||||
"polymorphicEvents" : [ "PROFILED_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "GET /test-field",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.FieldInjectionController",
|
|
||||||
"methodName" : "testField",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/FieldInjectionController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/test-field",
|
|
||||||
"verb" : "GET"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.FieldInjectionController.testField", "click.kamil.examples.statemachine.extended.service.PrimaryQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "PRIMARY_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.PrimaryQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/PrimaryQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 19,
|
|
||||||
"polymorphicEvents" : [ "PRIMARY_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "GET /test-field",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.FieldInjectionController",
|
|
||||||
"methodName" : "testField",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/FieldInjectionController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/test-field",
|
|
||||||
"verb" : "GET"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.FieldInjectionController.testField", "click.kamil.examples.statemachine.extended.service.QualifierQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "QUALIFIER_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.QualifierQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/QualifierQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "QUALIFIER_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
}, {
|
||||||
"entryPoint" : {
|
"entryPoint" : {
|
||||||
"type" : "REST",
|
"type" : "REST",
|
||||||
|
|||||||
@@ -533,114 +533,6 @@
|
|||||||
"targetState" : "START",
|
"targetState" : "START",
|
||||||
"event" : "AUDIT_EVENT"
|
"event" : "AUDIT_EVENT"
|
||||||
} ]
|
} ]
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "GET /test-setter",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.SetterInjectionController",
|
|
||||||
"methodName" : "testSetter",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/SetterInjectionController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/test-setter",
|
|
||||||
"verb" : "GET"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.SetterInjectionController.testSetter", "click.kamil.examples.statemachine.extended.service.FallbackQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "FALLBACK_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.FallbackQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/FallbackQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "FALLBACK_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "GET /test-setter",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.SetterInjectionController",
|
|
||||||
"methodName" : "testSetter",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/SetterInjectionController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/test-setter",
|
|
||||||
"verb" : "GET"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.SetterInjectionController.testSetter", "click.kamil.examples.statemachine.extended.service.ProfiledQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "PROFILED_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.ProfiledQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/ProfiledQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 19,
|
|
||||||
"polymorphicEvents" : [ "PROFILED_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "GET /test-setter",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.SetterInjectionController",
|
|
||||||
"methodName" : "testSetter",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/SetterInjectionController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/test-setter",
|
|
||||||
"verb" : "GET"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.SetterInjectionController.testSetter", "click.kamil.examples.statemachine.extended.service.PrimaryQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "PRIMARY_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.PrimaryQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/PrimaryQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 19,
|
|
||||||
"polymorphicEvents" : [ "PRIMARY_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "GET /test-setter",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.SetterInjectionController",
|
|
||||||
"methodName" : "testSetter",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/SetterInjectionController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/test-setter",
|
|
||||||
"verb" : "GET"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.SetterInjectionController.testSetter", "click.kamil.examples.statemachine.extended.service.QualifierQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "QUALIFIER_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.QualifierQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/QualifierQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "QUALIFIER_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
}, {
|
||||||
"entryPoint" : {
|
"entryPoint" : {
|
||||||
"type" : "REST",
|
"type" : "REST",
|
||||||
@@ -668,60 +560,6 @@
|
|||||||
},
|
},
|
||||||
"contextMachineId" : null,
|
"contextMachineId" : null,
|
||||||
"matchedTransitions" : null
|
"matchedTransitions" : null
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/primary",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testPrimary",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/primary",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testPrimary", "click.kamil.examples.statemachine.extended.service.FallbackQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "FALLBACK_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.FallbackQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/FallbackQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "FALLBACK_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/primary",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testPrimary",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/primary",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testPrimary", "click.kamil.examples.statemachine.extended.service.ProfiledQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "PROFILED_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.ProfiledQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/ProfiledQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 19,
|
|
||||||
"polymorphicEvents" : [ "PROFILED_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
}, {
|
||||||
"entryPoint" : {
|
"entryPoint" : {
|
||||||
"type" : "REST",
|
"type" : "REST",
|
||||||
@@ -749,168 +587,6 @@
|
|||||||
},
|
},
|
||||||
"contextMachineId" : null,
|
"contextMachineId" : null,
|
||||||
"matchedTransitions" : null
|
"matchedTransitions" : null
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/primary",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testPrimary",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/primary",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testPrimary", "click.kamil.examples.statemachine.extended.service.QualifierQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "QUALIFIER_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.QualifierQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/QualifierQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "QUALIFIER_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/primary",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testPrimary",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/primary",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testPrimary", "click.kamil.examples.statemachine.extended.service.NamedQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "NAMED_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.NamedQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/NamedQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "NAMED_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/named",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testNamed",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/named",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testNamed", "click.kamil.examples.statemachine.extended.service.FallbackQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "FALLBACK_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.FallbackQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/FallbackQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "FALLBACK_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/named",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testNamed",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/named",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testNamed", "click.kamil.examples.statemachine.extended.service.ProfiledQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "PROFILED_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.ProfiledQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/ProfiledQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 19,
|
|
||||||
"polymorphicEvents" : [ "PROFILED_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/named",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testNamed",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/named",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testNamed", "click.kamil.examples.statemachine.extended.service.PrimaryQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "PRIMARY_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.PrimaryQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/PrimaryQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 19,
|
|
||||||
"polymorphicEvents" : [ "PRIMARY_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/named",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testNamed",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/named",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testNamed", "click.kamil.examples.statemachine.extended.service.QualifierQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "QUALIFIER_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.QualifierQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/QualifierQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "QUALIFIER_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
}, {
|
||||||
"entryPoint" : {
|
"entryPoint" : {
|
||||||
"type" : "REST",
|
"type" : "REST",
|
||||||
@@ -938,87 +614,6 @@
|
|||||||
},
|
},
|
||||||
"contextMachineId" : null,
|
"contextMachineId" : null,
|
||||||
"matchedTransitions" : null
|
"matchedTransitions" : null
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/qualifier",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testQualifier",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/qualifier",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testQualifier", "click.kamil.examples.statemachine.extended.service.FallbackQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "FALLBACK_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.FallbackQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/FallbackQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "FALLBACK_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/qualifier",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testQualifier",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/qualifier",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testQualifier", "click.kamil.examples.statemachine.extended.service.ProfiledQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "PROFILED_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.ProfiledQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/ProfiledQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 19,
|
|
||||||
"polymorphicEvents" : [ "PROFILED_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/qualifier",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testQualifier",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/qualifier",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testQualifier", "click.kamil.examples.statemachine.extended.service.PrimaryQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "PRIMARY_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.PrimaryQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/PrimaryQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 19,
|
|
||||||
"polymorphicEvents" : [ "PRIMARY_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
}, {
|
||||||
"entryPoint" : {
|
"entryPoint" : {
|
||||||
"type" : "REST",
|
"type" : "REST",
|
||||||
@@ -1046,87 +641,6 @@
|
|||||||
},
|
},
|
||||||
"contextMachineId" : null,
|
"contextMachineId" : null,
|
||||||
"matchedTransitions" : null
|
"matchedTransitions" : null
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/qualifier",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testQualifier",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/qualifier",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testQualifier", "click.kamil.examples.statemachine.extended.service.NamedQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "NAMED_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.NamedQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/NamedQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "NAMED_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/fallback",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testFallback",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/fallback",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testFallback", "click.kamil.examples.statemachine.extended.service.FallbackQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "FALLBACK_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.FallbackQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/FallbackQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "FALLBACK_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/fallback",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testFallback",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/fallback",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testFallback", "click.kamil.examples.statemachine.extended.service.ProfiledQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "PROFILED_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.ProfiledQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/ProfiledQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 19,
|
|
||||||
"polymorphicEvents" : [ "PROFILED_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
}, {
|
||||||
"entryPoint" : {
|
"entryPoint" : {
|
||||||
"type" : "REST",
|
"type" : "REST",
|
||||||
@@ -1154,141 +668,6 @@
|
|||||||
},
|
},
|
||||||
"contextMachineId" : null,
|
"contextMachineId" : null,
|
||||||
"matchedTransitions" : null
|
"matchedTransitions" : null
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/fallback",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testFallback",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/fallback",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testFallback", "click.kamil.examples.statemachine.extended.service.QualifierQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "QUALIFIER_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.QualifierQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/QualifierQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "QUALIFIER_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "POST /api/quirk/fallback",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.QuirkController",
|
|
||||||
"methodName" : "testFallback",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/QuirkController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/api/quirk/fallback",
|
|
||||||
"verb" : "POST"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.QuirkController.testFallback", "click.kamil.examples.statemachine.extended.service.NamedQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "NAMED_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.NamedQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/NamedQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "NAMED_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "GET /test-concrete",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.ConcreteReturnTypeController",
|
|
||||||
"methodName" : "testConcrete",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/ConcreteReturnTypeController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/test-concrete",
|
|
||||||
"verb" : "GET"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.ConcreteReturnTypeController.testConcrete", "click.kamil.examples.statemachine.extended.service.FallbackQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "FALLBACK_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.FallbackQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/FallbackQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "FALLBACK_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "GET /test-concrete",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.ConcreteReturnTypeController",
|
|
||||||
"methodName" : "testConcrete",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/ConcreteReturnTypeController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/test-concrete",
|
|
||||||
"verb" : "GET"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.ConcreteReturnTypeController.testConcrete", "click.kamil.examples.statemachine.extended.service.ProfiledQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "PROFILED_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.ProfiledQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/ProfiledQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 19,
|
|
||||||
"polymorphicEvents" : [ "PROFILED_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "GET /test-concrete",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.ConcreteReturnTypeController",
|
|
||||||
"methodName" : "testConcrete",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/ConcreteReturnTypeController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/test-concrete",
|
|
||||||
"verb" : "GET"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.ConcreteReturnTypeController.testConcrete", "click.kamil.examples.statemachine.extended.service.PrimaryQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "PRIMARY_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.PrimaryQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/PrimaryQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 19,
|
|
||||||
"polymorphicEvents" : [ "PRIMARY_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
}, {
|
||||||
"entryPoint" : {
|
"entryPoint" : {
|
||||||
"type" : "REST",
|
"type" : "REST",
|
||||||
@@ -1316,141 +695,6 @@
|
|||||||
},
|
},
|
||||||
"contextMachineId" : null,
|
"contextMachineId" : null,
|
||||||
"matchedTransitions" : null
|
"matchedTransitions" : null
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "GET /test-concrete",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.ConcreteReturnTypeController",
|
|
||||||
"methodName" : "testConcrete",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/ConcreteReturnTypeController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/test-concrete",
|
|
||||||
"verb" : "GET"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.ConcreteReturnTypeController.testConcrete", "click.kamil.examples.statemachine.extended.service.NamedQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "NAMED_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.NamedQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/NamedQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "NAMED_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "GET /test-field",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.FieldInjectionController",
|
|
||||||
"methodName" : "testField",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/FieldInjectionController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/test-field",
|
|
||||||
"verb" : "GET"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.FieldInjectionController.testField", "click.kamil.examples.statemachine.extended.service.FallbackQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "FALLBACK_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.FallbackQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/FallbackQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "FALLBACK_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "GET /test-field",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.FieldInjectionController",
|
|
||||||
"methodName" : "testField",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/FieldInjectionController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/test-field",
|
|
||||||
"verb" : "GET"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.FieldInjectionController.testField", "click.kamil.examples.statemachine.extended.service.ProfiledQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "PROFILED_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.ProfiledQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/ProfiledQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 19,
|
|
||||||
"polymorphicEvents" : [ "PROFILED_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "GET /test-field",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.FieldInjectionController",
|
|
||||||
"methodName" : "testField",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/FieldInjectionController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/test-field",
|
|
||||||
"verb" : "GET"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.FieldInjectionController.testField", "click.kamil.examples.statemachine.extended.service.PrimaryQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "PRIMARY_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.PrimaryQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/PrimaryQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 19,
|
|
||||||
"polymorphicEvents" : [ "PRIMARY_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
|
||||||
"entryPoint" : {
|
|
||||||
"type" : "REST",
|
|
||||||
"name" : "GET /test-field",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.web.FieldInjectionController",
|
|
||||||
"methodName" : "testField",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/web/FieldInjectionController.java",
|
|
||||||
"metadata" : {
|
|
||||||
"path" : "/test-field",
|
|
||||||
"verb" : "GET"
|
|
||||||
},
|
|
||||||
"parameters" : [ ]
|
|
||||||
},
|
|
||||||
"methodChain" : [ "click.kamil.examples.statemachine.extended.web.FieldInjectionController.testField", "click.kamil.examples.statemachine.extended.service.QualifierQuirkService.doQuirk" ],
|
|
||||||
"triggerPoint" : {
|
|
||||||
"event" : "QUALIFIER_EVENT",
|
|
||||||
"className" : "click.kamil.examples.statemachine.extended.service.QualifierQuirkService",
|
|
||||||
"methodName" : "doQuirk",
|
|
||||||
"sourceFile" : "src/main/java/click/kamil/examples/statemachine/extended/service/QualifierQuirkService.java",
|
|
||||||
"sourceModule" : null,
|
|
||||||
"stateMachineId" : null,
|
|
||||||
"sourceState" : null,
|
|
||||||
"lineNumber" : 17,
|
|
||||||
"polymorphicEvents" : [ "QUALIFIER_EVENT" ]
|
|
||||||
},
|
|
||||||
"contextMachineId" : null,
|
|
||||||
"matchedTransitions" : null
|
|
||||||
}, {
|
}, {
|
||||||
"entryPoint" : {
|
"entryPoint" : {
|
||||||
"type" : "REST",
|
"type" : "REST",
|
||||||
|
|||||||
Reference in New Issue
Block a user