の任意の子に共通の親クラスServerResource
を作成できます。このような:
public class CommonParentResource extends ServerResource
{
// class definition
}
次に、その中のServerResourceクラスのメソッドをオーバーライドします。doInit()
public class CommonParentResource extends ServerResource
{
public void doInit()
{
boolean authorized=false;
String sid = getRequestAttributes().containsKey("sid") ? (String)getRequestAttributes().get("sid") : StringUtils.EMPTY;
// Authorization logic here.
if(!authorized)//after authorization process completed.
{
getResponse().setStatus(Status.CLIENT_ERROR_UNAUTHORIZED);
getResponse().setEntity(/*Representation carrrying message for unauthorized user*/);
}
}
}
ここで、この承認チェックを実行する新しい子クラスはServerResource
、このクラスを拡張する必要がありCommonParentResource
ます。このような:
public class FriendsListResource extends CommonParentResource
{
@Get
//......
}
ここでは2つのポイントが重要です。
doInit()
の子クラスのは、 // ..ServerResource
で注釈が付けられたメソッドを呼び出す前に呼び出されます。@Get
@Post
(注意)このステートメントを使用しない場合:
getResponse().setStatus(Status.CLIENT_ERROR_UNAUTHORIZED);
つまり、エラーへの応答のステータスを設定しない場合、 / / / ...で注釈が付けられたメソッドが呼び出されます!ただし、プログラムが応答のステータスをエラーステータスに設定した場合、/ / / ...は実行されず、エンドユーザーには次のようなエラーメッセージが表示されます。@Get
@Post
@Put
@Get
@Post
@Put
getResponse().setEntity(/*Representation carrrying message for unauthorized user*/);