2010/03/25

UserServiceクラスの作り方 [ GAE ]

GAEにてGoogleのログイン関係の操作を行う際に、
UserServiceインタフェースを使用します。
例えばGoogleアカウントのニックネームを使用する場合は、

UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();

if (user != null) {
 resp.setContentType("text/plain");
 resp.getWriter().println("Hello, " + user.getNickname());

} else {
 resp.sendRedirect(userService.createLoginURL(req.getRequestURI()));
}

こんな感じで記述します。まぁGoogleのGAEスタートアップの
コードそのまんまなんですが。
で、ちょっと気になったのがここ。

>>UserServiceFactory.getUserService();

ファクトリクラス使ってオブジェクトを生成してるよう。
という事は何らかの条件によって生成されるUserServiceの
実装クラスが変わるのか・・・?

なんとなく気になったので調べてみました。
早速appengine-api-1.0-sdk-1.3.1.jarを解凍して
UserServiceFactory.classをJADで逆コンパイルした結果……!

return new UserServiceImpl();

実装クラスをnewしてるだけだったーー!
…という訳で特に条件分岐とかはしていませんでした。
まぁいつでも切り替えられるようにという意味では
確かにこういう作りにしておくのが安牌なのでしょうね。
勉強になります。

無駄に気になった疑問は解消されたので、
今度はログインURL周りについてかこうと思います。

が、そのまえに仕事に戻ります。

0 件のコメント: