Add path parameter extraction support to Java-Armeria analyzer #789
+72
−3
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Overview
This PR adds support for extracting path parameters from endpoint URLs in the Java-Armeria analyzer. Previously, the analyzer would detect endpoints but would not extract path parameters like
{userId}
from URLs such as/api/users/{userId}
.Changes
1. Path Parameter Extraction
Added a new
extract_path_parameters
method that scans endpoint URLs for path parameters using the pattern{paramName}
and createsParam
objects withparam_type = "path"
:2. Updated Endpoint Creation
Modified both
.service()
and.route()
endpoint handlers to extract path parameters after creating endpoints. This ensures parameters are detected for all HTTP methods (GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS).3. Fixed Server Block Regex
Changed
REGEX_SERVER_CODE_BLOCK
from non-greedy (*?
) to greedy (*
) to properly capture server blocks containing multiple.route().method().build()
chains:This change ensures that server blocks with multiple route builders are fully captured.
Example
The analyzer now correctly detects and extracts parameters from Armeria endpoints:
Output:
Testing
TestParametersService.java
covering all HTTP methodsRelated
Fixes #[issue-number] - Support more parameter types in Java-Armeria
Warning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
crystal-lang.org
curl -fsSL REDACTED
(dns block)esm.ubuntu.com
/usr/lib/apt/methods/https
(dns block)If you need me to access, download, or install something from one of these locations, you can either:
Original prompt
Fixes #761
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.