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

2009年7月24日金曜日

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

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

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

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

これ。

GadgetのXMLに書くJavaScriptは、
  1. function getTwoData() {  
  2.   /*===================================================================*/  
  3.   /* OWNER IdSpec                                                      */  
  4.   /*===================================================================*/  
  5.   var idspec = new opensocial.IdSpec();  
  6.   idspec.setField(opensocial.IdSpec.Field.USER_ID,  opensocial.IdSpec.PersonId.OWNER);  
  7.   idspec.setField(opensocial.IdSpec.Field.GROUP_ID, opensocial.IdSpec.GroupId.SELF);  
  8.   var params = {};  
  9.   params['activityId'] = [  
  10.     'tjt0tt30k9f0hje01eu0emq0zr505bd0',  
  11.     'w920slc0ze20nmf0diq0cnk0mj71kbz0'  
  12.   ];  
  13.   
  14.   /*===================================================================*/  
  15.   /* DataRequestオブジェクトを作成し、                                 */  
  16.   /* そこにActivity取得リクエストを追加.                               */  
  17.   /* レスポンスを取得するときのキーは'get_activity'                    */  
  18.   /*===================================================================*/  
  19.   
  20.   var req = opensocial.newDataRequest();  
  21.   req.add(req.newFetchActivitiesRequest(idspec, params), 'get_activity');  
  22.   /*===================================================================*/  
  23.   /* 送信!                                                             */  
  24.   /*===================================================================*/  
  25.   req.send(function(response){  
  26.     var activity = response.get('get_activity')  
  27.     if (activity.hadError()) {  
  28.       document.getElementById('result').innerHTML  
  29.         = 'エラーだったよ:' + activity.getErrorMessage();  
  30.       return;  
  31.     }  
  32.     var out = document.createElement('ul');  
  33.     var li = document.createElement('li');  
  34.     if (activity.getData().size() == 0) {  
  35.       li.innerHTML = 'Activity0件';  
  36.       out.appendChild(li);  
  37.     }  
  38.     activity.getData().each(function(act) {  
  39.       var title = act.getField(opensocial.Activity.Field.TITLE);  
  40.       var media = act.getField(opensocial.Activity.Field.MEDIA_ITEMS);  
  41.       if (media != undefined) {  
  42.         for (var ii=0, len = media.length; ii < len; ii++) {  
  43.           if (media[ii].getField(opensocial.MediaItem.Field.TYPE) == opensocial.MediaItem.Type.IMAGE) {  
  44.             title +=  
  45.                 '  
  46. g src="'  
  47.               + media[ii].getField(opensocial.MediaItem.Field.URL);  
  48.               + '/>';  
  49.           }  
  50.         }  
  51.       }  
  52.       li.innerHTML = title;  
  53.       out.appendChild(li);  
  54.     });  
  55.   
  56.     document.getElementById('result').appendChild(out);  
  57.   
  58.   });  
  59. }  

こんな感じ。

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 コメント: