java - Swagger ReaderListener 未调用

标签 java web-services jax-rs swagger swagger-2.0

我试图从 ReaderListener 接口(interface)调用 afterScan(...) 方法,但它没有被调用。这是我的代码:

@SwaggerDefinition( info = @Info(
    description = "My API",
    version = "V1.2.3",
    title = "The only API you'll ever need",
    termsOfService = "share and care",
    contact = @Contact(name = "Test-Bob", email = "test-bob@tester.io", url = "http://swagger.io"),
    license = @License(name = "Apache 2.0", url = "http://www.apache.org")))
    @Api(tags = {"something", "else"})
    @Path("/myUrl/swagger/{type:json|yaml}")
    public class MyApiListingResource extends BaseApiListingResource implements ReaderListener {

      private static final Logger logger = LoggerFactory.getLogger(MyApiListingResource.class); 

      @Context ServletContext context;

      @GET
      @Produces({MediaType.APPLICATION_JSON, "application/yaml"})
      @ApiOperation(value = "The swagger definition in either JSON or YAML", 
        hidden = true)
      public Response getListing(@Context Application app, @Context ServletConfig servletConfig, @Context HttpHeaders headers,
                @Context UriInfo uriInfo, @PathParam("type") String type) throws JsonProcessingException {

            if (isNotBlank(type) && type.trim().equalsIgnoreCase("yaml")) {

                return getListingYamlResponse(app, context, servletConfig, headers, uriInfo);

            } else {

                System.out.println("I found json!");
                logger.debug("I'm also before!!!");

                return getListingJsonResponse(app, context, servletConfig, headers, uriInfo);
            }
      }

      @Override
      public void beforeScan(Reader reader, Swagger swagger) {

      System.out.println("I'm before!!!");
      logger.debug("I'm also before!!!");

      } 

      @Override
      public void afterScan(Reader reader, Swagger swagger) {

      System.out.println("I'm after!!!");
      logger.debug("I'm also after!!!");     

      }

    }

现在当我调用以下服务时:

http://localhost:9081/myApp/myUrl/swagger/json

我确实收到了“我找到了 json!”在我的控制台和日志中...但是控制台或日志中没有打印任何“之前”或“之后”注释。

我使用的是 Swagger 1.5.10 和 Java 7。我将提供所需的任何其他详细信息。

欢迎任何想法!谢谢!

<小时/>

更新:我尝试向此类添加 @SwaggerDefinition 注释,如上所示,但它仍然不起作用。

我缺少什么想法吗?

最佳答案

我终于明白了这个问题。显然,原始设计的问题是我在尝试实现 ReaderListener 的同一个类上扩展了 BaseApiListingResource。无论出于何种原因(如果您知道原因,请随时发表评论),每当我扩展 BaseApiListingResource 时,ReaderListener 都无法工作。如果我在不扩展 BaseApiListingResource 的类上实现 ReaderListener,则 beforeScan afterScan工作得很好。

希望这对某人有帮助......

关于java - Swagger ReaderListener 未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43720467/

相关文章:

java - 内省(introspection) Jersey 资源模型 Jersey 2.x

java - 设置和获取 HTTP header 的最佳选项是什么?使用 Apache CXF 拦截器或过滤器

php - PHP SoapClient 调用中的空值

java - 创建 JAX-RS 提供程序以从 InputStream 创建 Java Image

java - Spring Hibernate validator 不工作但 javax 是

java - Twitter4j NumberFormatException

java - 通过 TCP 套接字从 java 服务器发送对象到 android 客户端

java - System.nanoTime/System.currentTimeMillis = 107(这应该是 1e6 吗?)

java - 当端点非常相似时,路径参数与查询参数

iphone - 检测仅 iPhone 应用程序访问 Web 服务的最佳实践?