-S2Sio仕様

昨日、ファウンデーションの理事会の後に羽生さんに様子を聞いたところ、ひがさんの提案もあってSIO("シオ"と読むらしい。羽生さんが言ってたのを聞いてる中、"シオ"がSIOのことを指しているのに気がつくまで時間かかった)の仕様案をディスカッション。
追記
コメント欄による名称変更ツッコミにあわせて、SAOに変更。実装組んでみて仕様調整。以下、修正済みです。
diconファイル

<components>
  <component class="org.seasar.sao.rhino.RhinoScriptEngine"/>
  <component name="sao" class="org.seasar.sao.SaoInterceptor"/>
  <component class="sample.Speaker">
    <aspect>sao</aspect>
  </component>
  <component name="userManager" class="sample.UserManagerImpl"/>
</components>

SAOインターフェイス(Speaker.java)

@ScriptFile("sample/Speaker.js") // 規約に従っているので省略可能
public interface Speaker {
  String say(String name);
  @ScriptMethod("sleep") 
  String message(String msg);
}

JavaScriptファイル(Speaker.js)

function say(name) {
  var fullName = userManager.getFullName(name); 
  return 'hello ' + fullName;
}
function sleep(name) {
  return 'zzzzz...' + name;
}

そして、Tiger限定です。SAOインターフェイスとJSファイルが対応し、SAOメソッドとJSメソッドが対応するようにしました。とりあえず、スクリプトファイルのタイムスタンプを見てリロードする機能はやめ。