ShindigでREST APIの出力データをいじる

Apache Shindigは、デフォルトではREST APIの出力データには以下のものしか選択できません。

  • Atom
  • XML
  • JSON

他の出力方法を追加するには、以下の方法が考えられます。

1.BeanConverterを追加する

インターフェースBeanConverterをimplementしたクラスを作成してGuiceで追加します。

参考:

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();
}