Fail closed on ambiguous enum type matching during linking
Pass CodebaseContext into StrictFqnMatchingEngine so import-style OrderEvent.PAY cannot match a.OrderEvent.PAY when OrderEvent is ambiguous across packages. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -3,6 +3,7 @@ package click.kamil.springstatemachineexporter.analysis.enricher.matching;
|
||||
import click.kamil.springstatemachineexporter.analysis.model.TriggerPoint;
|
||||
import click.kamil.springstatemachineexporter.model.Event;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.io.TempDir;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -337,4 +338,27 @@ class StrictFqnMatchingEngineTest {
|
||||
|
||||
assertThat(engine.matches(smEvent, triggerPoint)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldNotMatchImportStyleEnumWhenSimpleNameIsAmbiguous(@TempDir java.nio.file.Path tempDir) throws Exception {
|
||||
java.nio.file.Files.createDirectories(tempDir.resolve("a"));
|
||||
java.nio.file.Files.createDirectories(tempDir.resolve("b"));
|
||||
java.nio.file.Files.writeString(tempDir.resolve("a/OrderEvent.java"),
|
||||
"package a; public enum OrderEvent { PAY }");
|
||||
java.nio.file.Files.writeString(tempDir.resolve("b/OrderEvent.java"),
|
||||
"package b; public enum OrderEvent { PAY }");
|
||||
|
||||
click.kamil.springstatemachineexporter.ast.common.CodebaseContext context =
|
||||
new click.kamil.springstatemachineexporter.ast.common.CodebaseContext();
|
||||
context.scan(tempDir);
|
||||
|
||||
StrictFqnMatchingEngine engine = new StrictFqnMatchingEngine(context);
|
||||
Event smEvent = Event.of("PAY", "a.OrderEvent.PAY");
|
||||
TriggerPoint triggerPoint = TriggerPoint.builder()
|
||||
.event("OrderEvent.PAY")
|
||||
.polymorphicEvents(List.of("OrderEvent.PAY"))
|
||||
.build();
|
||||
|
||||
assertThat(engine.matches(smEvent, triggerPoint)).isFalse();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user