Если мне дан относительный путь (скажем, path = "/foo/1/bar"
), как я могу узнать, какой метод ресурса будет использоваться для обработки запроса (в данном примере это будет FooResource.bar
метод)?
Я пытался использовать Reflections, просматривая все аннотированные классы и методы @Path
и создавая карту, указывающую на эти методы. Тем не менее, это не было бы идеально, так как мне придется проверить заданный относительный путь по всем существующим @Path
с.
Вот пример Ресурс:
@Path("/foo")
public class FooResource {
@GET
@Path("{id}/bar")
public String bar(@PathParam("id") int barId)
{
return "Hello Bar " + Integer(barId).toString();
}
@POST
@Path("/biz")
public String biz(BisRequest biz)
{
return "Hello Biz";
}
}
Вместо моего текущего решения, которое:
mapper = new HashMap<String, Method>();
/** content of mapper
String "/foo/{id}/bar" -> java.lang.reflect.Method FooResource.bar
String "/foo/biz" -> java.lang.reflect.Method FooResource.biz
*/
public Method findResourceMethodForPath(String path, HashMap<String, Method> mapper) {
String correctKey = findCorrectKeyForPath(path, mapper.keySet());
return mapper.get(correctKey);
}
Был бы более понятный способ реализации findResourceMethodForPath
без необходимости использования mapper
, как определено во фрагменте выше?