とりあえず、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用に作りなおさなきゃいけないのかしら。
.