2017-03-09 15 views
1

私は、ユーザーが権限を持っているかどうかを確認する機能withCheckPermissionsを作成しようとしています、Javaの8:権限を確認し、応答を返すために機能的なインターフェース、ユーザが「悪い応答を返すpermission'dされていない場合

  1. そう返します 『それはPOST
  2. た場合はそうでない

は、ここで私がこれまで持っているものだ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 

それを行うための適切な方法はありますか?

私は、次のような構造物を避けるためにしようとしています:あなたはそれを通知しない限り、あなたはあなたのエンドポイントが生成するメディアタイプを定義するdidntのとおり

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

私にはうまく見えます。私はなぜエラーが関連するのか分かりません。 – shmosel

+3

取得したエラーは、権限を確認する方法とは関係ありません。 –

+1

あなたのメソッドは 'Response'ではなく' A'を返すべきです。それ以外の場合、パラメータは不要です。 – shmosel

答えて

2

すると、タイプがなる「アプリケーション/オクテットストリーム」リクエストヘッダ(Accept = "text/plain")。

メソッドに@Produces(MediaType.TEXT_PLAIN)を入れて試してみてください。

関連する問題