Apache Shindigは、デフォルトではREST APIの出力データには以下のものしか選択できません。
- Atom
- XML
- JSON
他の出力方法を追加するには、以下の方法が考えられます。
1.BeanConverterを追加する
インターフェースBeanConverterをimplementしたクラスを作成してGuiceで追加します。
参考:
- GC: BeanConverter – org.apache.shindig.protocol.conversion.BeanConverter (.java) – GrepCode Interface Source
- aipo-opensocial/AipoSocialApiGuiceModule.java at master · aipocom/aipo-opensocial
BeanConverterはStringベースのデータを返却することが予定されたものですので、そうでない場合は次のやり方を使います。
2.DataServiceServletをいじる
ShindigのREST APIの出力を行っているのは、DataServiceServletのhandleSingleRequestメソッドですので、こちらに処理を追加します。
例えば、バイナリデータを出力する場合、以下のような方法がありえます。
private void handleSingleRequest(HttpServletRequest servletRequest, HttpServletResponse servletResponse, SecurityToken token, BeanConverter converter) throws IOException { servletResponse.setContentType("image/png"); OutputStream out = servletResponse.getOutputStream(); byte[] b = Hoge.getBinaryData(); out.write(b); out.close(); }