Skip to content

Commit

Permalink
GH-1463: support concatenated strings while extracting request mappin…
Browse files Browse the repository at this point in the history
…g path information
  • Loading branch information
martinlippert committed Feb 6, 2025
1 parent b537496 commit c28c6d8
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -224,12 +224,14 @@ public static String getExpressionValueAsString(Expression exp, Consumer<ITypeBi
else if (exp instanceof SimpleName) {
return ((SimpleName) exp).getIdentifier();
}
else {
return null;
}
} else {
return null;
Object constValue = exp.resolveConstantExpressionValue();
if (constValue != null) {
return constValue.toString();
}
}

return null;
}

@SuppressWarnings("unchecked")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -383,6 +383,20 @@ void testMediaTypes() throws Exception {
assertTrue(containsSymbol(symbols, "@/produce3 - Content-Type: text/plain,testproducetype", docUri, 33, 1, 33, 94));
assertTrue(containsSymbol(symbols, "@/everything - Accept: application/json,text/plain,testconsume - Content-Type: application/json", docUri, 38, 1, 38, 170));
}

@Test
void testPathWithConcatenatedString() throws Exception {
String docUri = directory.toPath().resolve("src/main/java/org/test/MappingsWithConcatenatedStrings.java").toUri().toString();
List<? extends WorkspaceSymbol> symbols = indexer.getSymbols(docUri);
assertTrue(containsSymbol(symbols, "@/path1/path2 -- GET", docUri, 13, 1, 13, 33));
}

@Test
void testPathWithConcatenatedStringAndConstantInvolved() throws Exception {
String docUri = directory.toPath().resolve("src/main/java/org/test/MappingsWithConcatenatedStrings.java").toUri().toString();
List<? extends WorkspaceSymbol> symbols = indexer.getSymbols(docUri);
assertTrue(containsSymbol(symbols, "@/path1/path/from/constant -- GET", docUri, 17, 1, 17, 56));
}

private boolean containsSymbol(List<? extends WorkspaceSymbol> symbols, String name, String uri, int startLine, int startCHaracter, int endLine, int endCharacter) {
for (Iterator<? extends WorkspaceSymbol> iterator = symbols.iterator(); iterator.hasNext();) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package org.test;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import static org.springframework.web.bind.annotation.RequestMethod.PUT;

public class MappingsWithConcatenatedStrings {

@GetMapping("/path1" + "/path2")
public void concatenatedPathMapping() {
}

@GetMapping("/path1/" + Constants.REQUEST_MAPPING_PATH)
public void concatenatedPathMappingWithConstant() {
}

}

0 comments on commit c28c6d8

Please sign in to comment.