fix path parameters
This commit is contained in:
parent
97d6f4dc6a
commit
ea640122d8
4 changed files with 42 additions and 3 deletions
|
@ -1,6 +1,6 @@
|
||||||
group = org.xbib
|
group = org.xbib
|
||||||
name = netty-http
|
name = netty-http
|
||||||
version = 4.1.51.4
|
version = 4.1.51.5
|
||||||
|
|
||||||
gradle.wrapper.version = 6.4.1
|
gradle.wrapper.version = 6.4.1
|
||||||
netty.version = 4.1.51.Final
|
netty.version = 4.1.51.Final
|
||||||
|
|
|
@ -27,7 +27,7 @@ import java.util.Map;
|
||||||
* being useful for message signing; it's not a general purpose collection class
|
* being useful for message signing; it's not a general purpose collection class
|
||||||
* to handle request parameters.
|
* to handle request parameters.
|
||||||
*/
|
*/
|
||||||
public class HttpParameters extends /*LinkedHashSetMultiMap<String, String>*/ CaseInsensitiveParameters {
|
public class HttpParameters extends CaseInsensitiveParameters {
|
||||||
|
|
||||||
private static final String EQUALS = "=";
|
private static final String EQUALS = "=";
|
||||||
|
|
||||||
|
|
|
@ -92,7 +92,7 @@ public class HttpEndpoint implements Endpoint<HttpEndpointDescriptor> {
|
||||||
.setEndpointResolver(endpointResolver)
|
.setEndpointResolver(endpointResolver)
|
||||||
.setEndpoint((this))
|
.setEndpoint((this))
|
||||||
.setContext(context);
|
.setContext(context);
|
||||||
String pattern = prefix + path;
|
String pattern = path;
|
||||||
String effectiveRequestPath = serverRequestBuilder.getEffectiveRequestPath();
|
String effectiveRequestPath = serverRequestBuilder.getEffectiveRequestPath();
|
||||||
if (pathMatcher.match(pattern, effectiveRequestPath)) {
|
if (pathMatcher.match(pattern, effectiveRequestPath)) {
|
||||||
QueryParameters queryParameters = pathMatcher.extractUriTemplateVariables(pattern, effectiveRequestPath);
|
QueryParameters queryParameters = pathMatcher.extractUriTemplateVariables(pattern, effectiveRequestPath);
|
||||||
|
|
|
@ -30,6 +30,45 @@ class EndpointTest {
|
||||||
|
|
||||||
private static final Logger logger = Logger.getLogger(EndpointTest.class.getName());
|
private static final Logger logger = Logger.getLogger(EndpointTest.class.getName());
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testPrefixPathParameter() throws Exception {
|
||||||
|
HttpAddress httpAddress = HttpAddress.http1("localhost", 8008);
|
||||||
|
HttpEndpointResolver httpEndpointResolver = HttpEndpointResolver.builder()
|
||||||
|
.setPrefix("/files")
|
||||||
|
.addEndpoint(HttpEndpoint.builder().setPath("/{mypath}").build())
|
||||||
|
.setDispatcher((req, resp) -> {
|
||||||
|
logger.log(Level.INFO, "dispatching endpoint = " + req.getEndpoint() +
|
||||||
|
" req = " + req +
|
||||||
|
" req context path = " + req.getContextPath() +
|
||||||
|
" effective path = " + req.getEffectiveRequestPath() +
|
||||||
|
" path params = " + req.getPathParameters());
|
||||||
|
assertEquals("test.txt", req.getPathParameters().get("mypath"));
|
||||||
|
})
|
||||||
|
.build();
|
||||||
|
HttpServerDomain domain = HttpServerDomain.builder(httpAddress)
|
||||||
|
.addEndpointResolver(httpEndpointResolver)
|
||||||
|
.build();
|
||||||
|
Server server = Server.builder(domain)
|
||||||
|
.build();
|
||||||
|
Client client = Client.builder()
|
||||||
|
.build();
|
||||||
|
final AtomicBoolean success = new AtomicBoolean(false);
|
||||||
|
try {
|
||||||
|
server.accept();
|
||||||
|
Request request = Request.get().setVersion(HttpVersion.HTTP_1_1)
|
||||||
|
.url(server.getServerConfig().getAddress().base().resolve("/files/test.txt"))
|
||||||
|
.setResponseListener(resp -> {
|
||||||
|
success.set(true);
|
||||||
|
})
|
||||||
|
.build();
|
||||||
|
client.execute(request).get();
|
||||||
|
} finally {
|
||||||
|
server.shutdownGracefully();
|
||||||
|
client.shutdownGracefully();
|
||||||
|
logger.log(Level.INFO, "server and client shut down");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testEmptyPrefixEndpoint() throws Exception {
|
void testEmptyPrefixEndpoint() throws Exception {
|
||||||
Path vartmp = Paths.get("/var/tmp/");
|
Path vartmp = Paths.get("/var/tmp/");
|
||||||
|
|
Loading…
Reference in a new issue