Java8:检查权限和return响应的功能接口

Java 8: Functional interface to check permissions and return a response

我正在尝试创建一个函数 withCheckPermissions 检查用户是否有权限,

  1. 如果用户没有权限return a "Bad Response"
  2. 否则 Return "success" 如果它是 POST
  3. 否则return GET 请求的内容

这是我目前的情况:

  public <A extends Response> Response withCheckPermissions(Supplier<A> code) {
    User user = getCurrentUser();
    if (isAllowed(user)) {
      try {
        return code.get();
      } catch (Exception e) {
        return handleError(ERROR_MESSAGE, e);
      }
    } else {
      log.warn("User not allowed...");
      return sendBadRequest(NO_ACCESS_MESSAGE);
    }
  } 

我称它为:

  @POST
  @Path("myJob")
  public Response sendMail() {
      return withCheckPermissions(() -> {
        try {
          manager.generateEmail();
        } catch (Exception e) {
          return handleError("Problem sending email", e);
        }
        return sendSuccess();
      });
    }

我收到如下错误:

Could not find MessageBodyWriter for response object of type: java.util.HashMap of media type: application/octet-stream

有正确的方法吗?

我试图避免这样的构造:

if isAllowed(User) {
   doSomething()
} else {
return errorResponse 
}

由于您没有定义端点生成的媒体类型,因此类型将为 "application/octet-stream",除非您根据请求通知它 header(接受 = "text/plain")。

将@Produces(MediaType.TEXT_PLAIN) 放入您的方法中并尝试,应该有效。