cursor
This commit is contained in:
@@ -14,6 +14,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import click.kamil.springstatemachineexporter.exporter.ExportOptions;
|
||||
import click.kamil.springstatemachineexporter.analysis.enricher.routing.HeuristicBeanResolutionEngine;
|
||||
import click.kamil.springstatemachineexporter.analysis.enricher.routing.BeanResolutionEngine;
|
||||
import click.kamil.springstatemachineexporter.analysis.enricher.matching.EventMatchingEngine;
|
||||
@@ -21,6 +22,8 @@ import click.kamil.springstatemachineexporter.analysis.enricher.matching.StrictF
|
||||
|
||||
public class TransitionLinkerEnricher implements AnalysisEnricher {
|
||||
|
||||
private static final ExportOptions LINK_FORMAT_OPTIONS = ExportOptions.builder().build();
|
||||
|
||||
private final BeanResolutionEngine routingEngine = new HeuristicBeanResolutionEngine();
|
||||
private final EventMatchingEngine matchingEngine = new StrictFqnMatchingEngine();
|
||||
|
||||
@@ -47,17 +50,16 @@ public class TransitionLinkerEnricher implements AnalysisEnricher {
|
||||
|
||||
for (Transition t : stateMachineTransitions) {
|
||||
if (t.getEvent() != null && matchingEngine.matches(t.getEvent(), tp)) {
|
||||
String smEventRaw = t.getEvent().fullIdentifier() != null ? t.getEvent().fullIdentifier() : t.getEvent().rawName();
|
||||
// Event matches
|
||||
String smEventForLink = formatEventForLink(t.getEvent());
|
||||
for (State smSourceState : t.getSourceStates()) {
|
||||
String smSourceRaw = smSourceState.fullIdentifier() != null ? smSourceState.fullIdentifier() : smSourceState.rawName();
|
||||
String smSource = simplify(smSourceRaw);
|
||||
String smSourceForLink = formatSourceForLink(smSourceState);
|
||||
String smSource = simplify(smSourceForLink);
|
||||
if (triggerSource == null || triggerSource.equals(smSource)) {
|
||||
if (t.getTargetStates() == null || t.getTargetStates().isEmpty()) {
|
||||
MatchedTransition mt = MatchedTransition.builder()
|
||||
.sourceState(smSourceRaw)
|
||||
.targetState(smSourceRaw)
|
||||
.event(smEventRaw)
|
||||
.sourceState(smSourceForLink)
|
||||
.targetState(smSourceForLink)
|
||||
.event(smEventForLink)
|
||||
.build();
|
||||
if (isRoutedToCorrectMachine(chain, result.getName(), context)
|
||||
&& isConstraintCompatible(tp.getConstraint(), result.getName())) {
|
||||
@@ -65,11 +67,11 @@ public class TransitionLinkerEnricher implements AnalysisEnricher {
|
||||
}
|
||||
} else {
|
||||
for (State smTargetState : t.getTargetStates()) {
|
||||
String targetRaw = smTargetState.fullIdentifier() != null ? smTargetState.fullIdentifier() : smTargetState.rawName();
|
||||
String targetForLink = formatSourceForLink(smTargetState);
|
||||
MatchedTransition mt = MatchedTransition.builder()
|
||||
.sourceState(smSourceRaw)
|
||||
.targetState(targetRaw)
|
||||
.event(smEventRaw)
|
||||
.sourceState(smSourceForLink)
|
||||
.targetState(targetForLink)
|
||||
.event(smEventForLink)
|
||||
.build();
|
||||
if (isRoutedToCorrectMachine(chain, result.getName(), context)
|
||||
&& isConstraintCompatible(tp.getConstraint(), result.getName())) {
|
||||
@@ -215,6 +217,22 @@ public class TransitionLinkerEnricher implements AnalysisEnricher {
|
||||
return simplified;
|
||||
}
|
||||
|
||||
private String formatSourceForLink(State state) {
|
||||
if (state == null) return null;
|
||||
return simplifyForLink(LINK_FORMAT_OPTIONS.formatState(state));
|
||||
}
|
||||
|
||||
private String formatEventForLink(click.kamil.springstatemachineexporter.model.Event event) {
|
||||
if (event == null) return null;
|
||||
return LINK_FORMAT_OPTIONS.formatEvent(event);
|
||||
}
|
||||
|
||||
private String simplifyForLink(String name) {
|
||||
if (name == null) return "";
|
||||
if (name.contains("\"")) return name;
|
||||
return name.replaceAll("[^a-zA-Z0-9_.]", "");
|
||||
}
|
||||
|
||||
private boolean isGuardedContains(String smEvent, String triggerEvent) {
|
||||
if (smEvent == null || triggerEvent == null) return false;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user