我正在尝试创建一个函数withCheckPermissions
,用于检查用户是否具有权限,
这是我到目前为止所拥有的:
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
}
答案 0 :(得分:2)
由于您没有定义端点生成的媒体类型,因此类型将为“application / octet-stream”,除非您在请求标头上通知它(Accept =“text / plain”)。
将@Produces(MediaType.TEXT_PLAIN)添加到您的方法并尝试,应该可以。