メモ代わり。てきとーに。 いや、ですからてきとーですって。 2年前ぐらいにPythonあたりでメールくれた方、ごめんなさい。メール紛失してしまい無視した形になってしまいました。。。

2009年6月12日金曜日

[Apache Shindig][お勉強][Gadget][OpenSocial] メモ11 とりあえずPersonServiceを実装してみる

とりあえず、PersonServiceを実装してみる。


1. SampleModuleをNanashiModuleとしてコピーしてくる。
2. NananshiModuleをweb.xmlで登録。
3. PersonServiceをimplements。
4. NanashiModuleのPersonServiceへのbindを書き換え。
 

多分、こんな感じでできると思う。

ということでやってみる。

SampleModuleをコピー

social-api/src/main/java/org/apache/shindig/social/sample/SampleModule.java
 

をコピー。
名前は適当にNanashiModule.javaにした。

NananshiModuleをweb.xmlで登録
クラス名とパッケージ以外は修正していない。
とりあえずパッケージはjp.qsdn.nanashi.social。
で、

<context-param>
<param-name>guice-modules</param-name>
<param-value>
org.apache.shindig.common.PropertiesModule:
org.apache.shindig.gadgets.DefaultGuiceModule:
org.apache.shindig.social.sample.SampleModule:
org.apache.shindig.gadgets.oauth.OAuthModule:
org.apache.shindig.common.cache.ehcache.EhCacheModule
</param-value>
</context-param>
 

の、org.apache.shindig.social.sample.SampleModuleを削除。
そこに、
jp.qsdn.nanashi.social.NanashiModuleを追加。

org.apache.shindig.social.opensocial.spi.PersonServiceをimplements
名前は適当にjp.qsdn.nanashi.social.spi.PersonServiceImplとでもつけておく。

で、

* Future<RestfulCollection<Person>> getPeople(Set userIds, GroupId groupId,
CollectionOptions collectionOptions, Set<String> fields, SecurityToken token)
throws ProtocolException

* Future getPerson(UserId id, Set<String> fields, SecurityToken token)
throws ProtocolException
 

を実装する。
やはり、securityTokenもわたってくるので、
たとえばあるGadgetではPersonは誰も返さない、そしてあるGadgetにはPerson全部返す、
なんてことが可能っぽい。
今のところ、getPersonが呼ばれてエラーになっているので、とりあえず
getPersonだけ実装してみる。と思ったら、getPeopleも呼ばれるらしい。

で、実装。

public class PersonServiceImpl
implements PersonService {

protected final Log logger = LogFactory.getLog(PersonServiceImpl.class);

public Future<RestfulCollection<Person>> getPeople(Set<UserId> userIds, GroupId groupId,
CollectionOptions options, Set<String> fields, SecurityToken token)
throws ProtocolException {
List<Person> result = Lists.newArrayList();

Name name = new NameImpl("rootの友達1 だぞー");
Person personObj = new PersonImpl("rootfrend1", "rootの友達1だよーん", name);
result.add(personObj);
name = new NameImpl("rootの友達2 だぞー");
personObj = new PersonImpl("rootfrend2", "rootの友達2だよーん", name);
result.add(personObj);

int totalSize = result.size();
return ImmediateFuture.newInstance(new RestfulCollection(result, 0, totalSize));
}

public Future<Person> getPerson(UserId id, Set<String> fields, SecurityToken token)
throws ProtocolException {
logger.debug("UserId:[" + id.getUserId(token) + "]");
Name name = new NameImpl("root だぞー");
Person personObj = new PersonImpl("root", "rootだよーん", name);
return ImmediateFuture.newInstance(personObj);
}
}
 


な感じ。
カスみたいなソースだけど、とりあえずGadgetから友達一覧を取得できた。
他のインタフェースも似た感じでしょう。たぶん。

--
やはりGuiceかSpringがどちらかに統一したい。。
Springは資産があるので、できればSpringで使いたいんだけど、、
http://cwiki.apache.org/confluence/display/SHINDIG/Shindig+Spring+Example
を見る限り、ApplicationContextをGuice用に作りなおさなきゃいけないのかしら。

.

0 コメント: