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

2009年7月24日金曜日

[Apache Shindig][お勉強][OpenSocial] メモ84 DataRequest.newFetchActivitiesRequestのサーバ側実装をしてみる(3)

次は、複数activityId指定で、newFetchActivitiesRequestしてみる。

対応するActivityServiceのメソッドは、


public Future<RestfulCollection<Activity>> getActivities(UserId userId, GroupId groupId,
String appId, Set<String> fields, CollectionOptions options, Set<String> activityIds, SecurityToken token)
throws ProtocolException;

これ。

GadgetのXMLに書くJavaScriptは、

function getTwoData() {
/*===================================================================*/
/* OWNER IdSpec */
/*===================================================================*/
var idspec = new opensocial.IdSpec();
idspec.setField(opensocial.IdSpec.Field.USER_ID, opensocial.IdSpec.PersonId.OWNER);
idspec.setField(opensocial.IdSpec.Field.GROUP_ID, opensocial.IdSpec.GroupId.SELF);
var params = {};
params['activityId'] = [
'tjt0tt30k9f0hje01eu0emq0zr505bd0',
'w920slc0ze20nmf0diq0cnk0mj71kbz0'
];

/*===================================================================*/
/* DataRequestオブジェクトを作成し、 */
/* そこにActivity取得リクエストを追加. */
/* レスポンスを取得するときのキーは'get_activity' */
/*===================================================================*/

var req = opensocial.newDataRequest();
req.add(req.newFetchActivitiesRequest(idspec, params), 'get_activity');
/*===================================================================*/
/* 送信! */
/*===================================================================*/
req.send(function(response){
var activity = response.get('get_activity')
if (activity.hadError()) {
document.getElementById('result').innerHTML
= 'エラーだったよ:' + activity.getErrorMessage();
return;
}
var out = document.createElement('ul');
var li = document.createElement('li');
if (activity.getData().size() == 0) {
li.innerHTML = 'Activity0件';
out.appendChild(li);
}
activity.getData().each(function(act) {
var title = act.getField(opensocial.Activity.Field.TITLE);
var media = act.getField(opensocial.Activity.Field.MEDIA_ITEMS);
if (media != undefined) {
for (var ii=0, len = media.length; ii < len; ii++) {
if (media[ii].getField(opensocial.MediaItem.Field.TYPE) == opensocial.MediaItem.Type.IMAGE) {
title +=
'<br /><img src="'
+ media[ii].getField(opensocial.MediaItem.Field.URL);
+ '/>';
}
}
}
li.innerHTML = title;
out.appendChild(li);
});

document.getElementById('result').appendChild(out);

});
}


こんな感じ。

params['activityId'] に今度は配列(というんですかね?)をセット。
jsonrpccontainer.jsのnewFetchActivitiesRequestもいい感じに修正し、
リクエストしてみると、、、

ちゃんとサーバ側に全てのパラメータがわたる。

わたっている様はこんな感じ。

[リクエスト:[20481986]] 2009-07-24 22:35:34,328 DEBUG jp.qsdn.gms.social.service.ActivityServiceImpl - userId:[OWNER]:
[リクエスト:[20481986]] 2009-07-24 22:35:34,328 DEBUG jp.qsdn.gms.social.service.ActivityServiceImpl - groupId:[SELF]:
[リクエスト:[20481986]] 2009-07-24 22:35:34,328 DEBUG jp.qsdn.gms.social.service.ActivityServiceImpl - appId:[http://localhost/opensocial/hello.xml]:
[リクエスト:[20481986]] 2009-07-24 22:35:34,328 DEBUG jp.qsdn.gms.social.service.ActivityServiceImpl - options:sortBy:[topFriends]
[リクエスト:[20481986]] 2009-07-24 22:35:34,328 DEBUG jp.qsdn.gms.social.service.ActivityServiceImpl - options:sortOrder:[ascending]
[リクエスト:[20481986]] 2009-07-24 22:35:34,328 DEBUG jp.qsdn.gms.social.service.ActivityServiceImpl - options:filter:[null]
[リクエスト:[20481986]] 2009-07-24 22:35:34,328 DEBUG jp.qsdn.gms.social.service.ActivityServiceImpl - options:filterOperation:[contains]
[リクエスト:[20481986]] 2009-07-24 22:35:34,328 DEBUG jp.qsdn.gms.social.service.ActivityServiceImpl - options:filterValue:[]
[リクエスト:[20481986]] 2009-07-24 22:35:34,328 DEBUG jp.qsdn.gms.social.service.ActivityServiceImpl - options:first:[0]
[リクエスト:[20481986]] 2009-07-24 22:35:34,328 DEBUG jp.qsdn.gms.social.service.ActivityServiceImpl - options:max:[20]
[リクエスト:[20481986]] 2009-07-24 22:35:34,328 DEBUG jp.qsdn.gms.social.service.ActivityServiceImpl - options:updatedSince:[null]
[リクエスト:[20481986]] 2009-07-24 22:35:34,329 DEBUG jp.qsdn.gms.social.service.ActivityServiceImpl - activityId:[tjt0tt30k9f0hje01eu0emq0zr505bd0]
[リクエスト:[20481986]] 2009-07-24 22:35:34,329 DEBUG jp.qsdn.gms.social.service.ActivityServiceImpl - activityId:[w920slc0ze20nmf0diq0cnk0mj71kbz0]



ということで、次はgetActivitiesの中身を実装する。

.

0 コメント: