diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/value/PropertyExtractor.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/value/PropertyExtractor.java index eaff3cf18..4cd17518e 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/value/PropertyExtractor.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/value/PropertyExtractor.java @@ -61,6 +61,10 @@ public class PropertyExtractor { String prefix = extractAnnotationParameter(annotation, PARAM_PREFIX); String name = stringLiteral.getLiteralValue(); return prefix != null && !prefix.isBlank() ? prefix + "." + name : name; + case PARAM_PREFIX: + name = extractAnnotationParameter(annotation, PARAM_NAME); + prefix = stringLiteral.getLiteralValue(); + return prefix != null && !prefix.isBlank() ? prefix + "." + name : name; } } return null; diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/conditionals/test/ConditionalOnPropertyReferenceFinderTest.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/conditionals/test/ConditionalOnPropertyReferenceFinderTest.java index c5b515d99..86df32070 100644 --- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/conditionals/test/ConditionalOnPropertyReferenceFinderTest.java +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/conditionals/test/ConditionalOnPropertyReferenceFinderTest.java @@ -118,6 +118,22 @@ public class ConditionalOnPropertyReferenceFinderTest { assertEquals(7, location.getRange().getEnd().getCharacter()); } + @Test + void testFindReferencesToPropertyFromAnnotationWithPrefixOnPrefix() throws Exception { + harness.getServer().getWorkspaceService().setWorkspaceFolders(List.of(new WorkspaceFolder(directory.toURI().toString()))); + + List references = getReferences("@ConditionalOnProperty(prefix=\"<*>my\", name=\"prop\")"); + + assertEquals(1, references.size()); + + Location location = references.get(0); + assertEquals(directory.toPath().resolve("src/main/java/application.properties").toUri().toString(), location.getUri()); + assertEquals(0, location.getRange().getStart().getLine()); + assertEquals(0, location.getRange().getStart().getCharacter()); + assertEquals(0, location.getRange().getEnd().getLine()); + assertEquals(7, location.getRange().getEnd().getCharacter()); + } + private List getReferences(String completionLine) throws Exception { harness.getServer().getWorkspaceService().setWorkspaceFolders(List.of(new WorkspaceFolder(directory.toURI().toString())));