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

2009年7月24日金曜日

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

jsonrpccontainer.jsを元にコンテナを実装した場合、activityIdが渡せないので、

  1. JsonRpcContainer.prototype.newFetchActivitiesRequest = function(idSpec,    
  2.     opt_params) {    
  3.   var rpc = { method : "activities.get" };    
  4.   rpc.params = this.translateIdSpec(idSpec);    
  5.   rpc.params.appId = "@app";    
  6.   /* ここから */    
  7.   if (opt_params['activityId']) {    
  8.     rpc.params.activityId = opt_params['activityId'];    
  9.   }    
  10.   /* ここまで */    
  11.   FieldTranslations.translateStandardArguments(opt_params, rpc.params);    
  12.   FieldTranslations.translateNetworkDistance(idSpec, rpc.params);    
  13.     
  14.   return new JsonRpcRequestItem(rpc,    
  15.       function(rawJson) {    
  16.         /* さらに修正 ここから */    
  17.         if (rawJson['list']) {    
  18.           rawJson = rawJson['list'];    
  19.         }    
  20.         else {    
  21.           rawJson = [rawJson];    
  22.         }    
  23.         /* さらに修正 ここまで */    
  24.         var activities = [];    
  25.         for (var i = 0; i < rawJson.length; i++) {    
  26.           activities.push(new JsonActivity(rawJson[i]));    
  27.         }    
  28.         return new opensocial.Collection(activities);    
  29.       });    
  30. };    


とした。

んで、ActivityServiceの方は、
  1. public Future<Activity> getActivity(UserId userId, GroupId groupId, String appId,  
  2.     Set<String> fields, String activityId, SecurityToken token)  
  3.     throws ProtocolException {  
  4.   if (logger.isDebugEnabled()) {  
  5.     logger.debug("userId:[" + userId + "]:");  
  6.     logger.debug("groupId:[" + groupId + "]:");  
  7.     logger.debug("appId:[" + appId + "]:");  
  8.     for (String field: fields) {  
  9.       logger.debug("field:[" + field + "]");  
  10.     }  
  11.     logger.debug("activityId:[" + activityId + "]");  
  12.   }  
  13.   Activity activity = logic.getActivity(userId, activityId, token);  
  14.   if ( activity != null  ) {  
  15.     return ImmediateFuture.newInstance(activity);  
  16.   }  
  17.   throw new ProtocolException(HttpServletResponse.SC_BAD_REQUEST,"Cant find activity");  
  18. }  

とした。
logic.getActivityは、ただ単にテーブルからactivityをひっぱってくるだけ。

一応これでactivityId指定の1件取得newFetchActivitiesRequest完成。

次はgetActivities()の2つ。
.

0 コメント: