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

2009年7月22日水曜日

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

ShindigのAppDataServiceDb.javaを見ると、

  1. // load the map up  
  2. List<ApplicationDataMapDb> dataMaps = JPQLUtils.getListQuery(entityManager, sb.toString(),  
  3.     paramList, null);  
  4. Map<String, Map<String, String>> results = new HashMap<String, Map<String, String>>();  
  5.   
  6. // only add in the fields  
  7. if (fields == null || fields.size() == 0) {  
  8.   for (ApplicationDataMapDb adm : dataMaps) {  
  9.     results.put(adm.getPersonId(), adm.getValues());  
  10.   }  
  11. else {  
  12.   for (ApplicationDataMapDb adm : dataMaps) {  
  13.     Map<String, String> m = Maps.newHashMap();  
  14.     for (String f : fields) {  
  15.       String value = adm.getValues().get(f);  
  16.       if (null != value) {  
  17.         m.put(f, value);  
  18.       }  
  19.     }  
  20.     results.put(adm.getPersonId(), m);  
  21.   }  
  22. }  
  23. DataCollection dc = new DataCollection(results);  
  24. return ImmediateFuture.newInstance(dc);  

となっていて、見たこともないDataCollectionというクラスがImmediateFutre.newInstanceされて返されている。。

結局のところ、AppDataService.getPersonDataは、同じように
  1. DataCollection dc = new DataCollection(results);  
  2. return ImmediateFuture.newInstance(dc);  

としてやればよいと。

resultsは、
  1. Map<String, Map<String, String>> results = new HashMap<String, Map<String, String>>();  

と。

このresultsをせっせと作って、
org.apache.shindig.protocol.DataCollection
にして返す。

大体わかった。
.

0 コメント: