I want to get URI for specific method without 'hardcoding' it.
I tried UriBuilder.fromMethod
but it only generates URI that is specified in the @Path
annotation for that method, it doesn't take into account the @Path
of the resource class it's in.
For example, here's the class
@Path("/v0/app")
public class AppController {
@Path("/{app-id}")
public String getApp(@PathParam("app-id") int appid) {
// ...
}
}
I want to get the URL for the getApp
method, this /v0/app/100
for example.
UPDATE:
I want to get the URL from method other than getApp
It works if you use UriBuilder.fromResource
, then add the method path with path(Class resource, String method)
URI uri = UriBuilder
.fromResource(AppController.class)
.path(AppController.class, "getApp")
.resolveTemplate("app-id", 1)
.build();
Not sure why it doesn't work with fromMethod
.
Here's a test case
public class UriBuilderTest {
@Path("/v0/app")
public static class AppController {
@Path("/{app-id}")
public String getApp(@PathParam("app-id") int appid) {
return null;
}
}
@Test
public void testit() {
URI uri = UriBuilder
.fromResource(AppController.class)
.path(AppController.class, "getApp")
.resolveTemplate("app-id", 1)
.build();
assertEquals("/v0/app/1", uri.toASCIIString());
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With