Pot*_*ipz 8 java reflection rest jax-rs jersey
Jersey是否提供任何方式来列出它所暴露的所有资源?也就是说,给定资源类:
package com.zoo.resource
@Path("/animals")
public class AnimalResource {
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("dog")
public Dog getDog(){
...
}
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("cat")
public Cat getCat(){
...
}
}
Run Code Online (Sandbox Code Playgroud)
泽西岛是否为我提供了获取信息的方式:
GET在路径/animals/dog返回类型Dog GET在路径/animals/cat返回类型Cat(此外,它是否为我提供了一种了解AnimalResource是资源的方法?)
我希望在单元测试中可以获得这些信息,以便我可以检查我公开的每个资源是否符合外部系统的预期.我知道有一个自动化暴露了application.wadl,但是我没有看到向我显示返回类型,我不知道如何从我的测试中访问它.
[更新 - 示例是相同的,但我已经重写了我的警告]
可以办到.请尝试以下方法:
import com.sun.jersey.api.model.AbstractResource;
import com.sun.jersey.api.model.AbstractSubResourceMethod;
import com.sun.jersey.server.impl.modelapi.annotation.IntrospectionModeller;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
public class AnimalsTest
{
public static void main(String [] args)
{
AbstractResource resource = IntrospectionModeller.createResource(AnimalResource.class);
System.out.println("Path is " + resource.getPath().getValue());
String uriPrefix = resource.getPath().getValue();
for (AbstractSubResourceMethod srm :resource.getSubResourceMethods())
{
String uri = uriPrefix + "/" + srm.getPath().getValue();
System.out.println(srm.getHttpMethod() + " at the path " + uri + " return " + srm.getReturnType().getName());
}
}
}
Run Code Online (Sandbox Code Playgroud)
class Dog {}
Run Code Online (Sandbox Code Playgroud)
class Cat {}
Run Code Online (Sandbox Code Playgroud)
@Path("/animals")
class AnimalResource {
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("dog")
public Dog getDog(){
return null;
}
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("cat")
public Cat getCat(){
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
这些内省类在泽西服务器中.
请注意,上面的示例使用了一些在程序包名称中包含"impl"的Jersey类,这些类表明这些Jersey类不是为了公共消费而且可能在将来很有可能发生重大变化.我只是在这里推测 - 我不是泽西岛的提交者.只是一个随机的用户.
此外,我通过仔细阅读源代码找到了所有内容.我从未见过任何关于内省JAX-RS注释类的批准方法的文档.我同意官方支持的API来做这种事情会非常有帮助.
| 归档时间: |
|
| 查看次数: |
7507 次 |
| 最近记录: |