Swagger @QueryParam导致错误dropwizard

时间:2015-04-22 01:55:38

标签: json jackson swagger dropwizard

我添加了@QueryParam作为我的REST注释的一部分但是当我与swagger集成时,它会在生成swagger JSON时导致以下错误:

Exception in thread "main" java.lang.IllegalArgumentException: Unrecognized Type: [null]
    at com.fasterxml.jackson.databind.type.TypeFactory._constructType(TypeFactory.java:406)
    at com.fasterxml.jackson.databind.type.TypeFactory.constructType(TypeFactory.java:354)
    at com.fasterxml.jackson.databind.ObjectMapper.constructType(ObjectMapper.java:1187)
    at com.wordnik.swagger.jackson.ModelResolver.resolveProperty(ModelResolver.java:62)
    at com.wordnik.swagger.converter.ModelConverterContextImpl.resolveProperty(ModelConverterContextImpl.java:59)
    at com.wordnik.swagger.jackson.ModelResolver.resolveProperty(ModelResolver.java:160)
    at com.wordnik.swagger.jackson.ModelResolver.resolveProperty(ModelResolver.java:62)
    at com.wordnik.swagger.converter.ModelConverterContextImpl.resolveProperty(ModelConverterContextImpl.java:59)
    at com.wordnik.swagger.converter.ModelConverters.readAsProperty(ModelConverters.java:71)
    at com.wordnik.swagger.jaxrs.DefaultParameterExtension.extractParameters(DefaultParameterExtension.java:49)
    at com.wordnik.swagger.jersey.SwaggerJersey2Jaxrs.extractParameters(SwaggerJersey2Jaxrs.java:100)
    at com.wordnik.swagger.jaxrs.Reader.getParameters(Reader.java:542)
    at com.wordnik.swagger.jaxrs.Reader.parseMethod(Reader.java:519)
    at com.wordnik.swagger.jaxrs.Reader.read(Reader.java:155)
    at com.wordnik.swagger.jaxrs.Reader.read(Reader.java:64)
    at com.wordnik.swagger.jaxrs.Reader.read(Reader.java:55)
    at com.wordnik.swagger.jaxrs.config.BeanConfig.setScan(BeanConfig.java:148)

任何人都知道如何解决?这是依赖性错误吗?

我正在使用swagger com.wordnik swagger-jersey2-jaxrs 1.5.1-M2版本。有什么想法吗?

其他方法细节

    @GET
    @Path("/stuff/test")
    @ApiOperation(value = "Get some data", notes = "Returns some data", response = Existing.class, responseContainer = "List")
    @ApiResponses(value = { @ApiResponse(code = 404, message = "some error message") })
    @Timed
    public Response getData(
            @ApiParam(value = "filter", required = false, name = "filter") @QueryParam("filter") Optional<String> filterParam)
            throws Exception {
//codes here
}

2 个答案:

答案 0 :(得分:0)

当我忘记在Application.run方法中添加以下映射细节时,我遇到了类似的错误:

"Nixon":[{"approvalRating": 10, "suitColor":"blue", "firstName":"Richard"}]

如果没有此设置,空值的映射将失败,这可能与您的Optional相对应。

答案 1 :(得分:0)

这似乎是从1.3迁移到1.5的回归。我们过去曾处理过try (BufferedInputStream bStream = httpGateway.loadContents()) { cachedContent = xmlParser.parseVideos(bStream); } ,但可能会让转换失败。

你现在能做的最好的事情就是在swagger-core上打开一个问题。