给定URI的注释检索

时间:2018-08-10 09:08:25

标签: java rest java-ee

在给定与服务相对应的URI的情况下,我想检索服务的注释(尤其是@RolesAllowed)。 这里是一个例子:

服务:

@GET
@Path("/example")
@RolesAllowed({ "BASIC_USER", "ADMIN" })
public Response foo() {
    //Service implementation 
}

给定字符串“ / example”,我想检索{“ BASIC_USER”,“ ADMIN”}。

我使用RestAssured进行测试,因此,如果可能的话,我更喜欢后者的解决方案。 谢谢。

1 个答案:

答案 0 :(得分:1)

我对RestAssured并不熟悉,但是我编写了以下Junit测试,它可以工作。也许您可以使其适应RestAssured。

首先服务:

public class Service {

  @GET
  @Path("/example")
  @RolesAllowed({ "BASIC_USER", "ADMIN" })
  public Response foo() {
    return new Response();
}

}

这是相应的Junit测试:

@Test
public void testFooRoles() throws Exception {
    Method method = Service.class.getMethod("foo");
    Annotation path = method.getDeclaredAnnotation(javax.ws.rs.Path.class);
    assertTrue(((Path) path).value().equals("/example"));

    RolesAllowed annotation = method.getDeclaredAnnotation(RolesAllowed.class);
    List<String> roles = Arrays.asList(annotation.value());
    assertEquals(2, roles.size());
    assertTrue(roles.contains("BASIC_USER"));
    assertTrue(roles.contains("ADMIN"));
}