読者です 読者をやめる 読者になる 読者になる

BuriSystemContextについての疑問

buri

ソースを眺めていても、Selector系をいじっているときもとても頻繁に登場していたので気になっていた、BuriSystemContextです。
要はグローバル変数DTOなんですが、何を保持しているのかが結構わかりづらいなーと思っていました。

で、(主に自分のために)Javadocでもつけたいなぁなんて思って眺めていたんですが、いくつかわからないことや確認したいことがあったのでここで書いてみます。

  • BTIDとは?
    • Buri Transaction IDあたりですかね?BuriRecorderInterceptor#saveLog(BuriMethodInvocation)でSystemContext#getBTID()を呼んでいますが、その後のこの値がどこかで使われることはないようでした。「いつか」のための仕込みと思えばよいですか?
  • Exceptionを1つ保持できるようになっていますが...
    • 誰も使っていないようです。現状でいりますか?
      • [追記]wakanagoProcess.ftlで使ってるみたいですね。これは要るということで。
  • pathStackというStackフィールドがありますが...
    • 誰も使っていないようです。現状でいりますか?
  • HashMapのサブクラスになっていますが...
    • 今のところ拡張アトリビュートとでも言うべき項目はuserContextぐらいで、しかもこれってかなり重要な情報なので、正式にフィールドに保持するようにしてもよいのではないかと思いました。そうすると、HashMapを継承しなくてもよくなります。
  • userIDとuserIDNumとuserIDStrとuserIDValとの違い
    • BuriUserUtilあたりを見て、userIDNumはユーザテーブル上のレコード通番で、userIDStr(=userIDVal)は「guest」みたいなユーザIDの文字列表現かと思いました(ログイン名とかログインIDと呼んだりもしますね)。これらはアプリ側で用意される値かと。
    • で、userIDとはそれらのアプリ側ユーザ情報をぶり側でも独自に管理するためにBuriUserテーブルに登録するときに払い出されるレコード通番のこと、という理解でよいですか?
    • Yesでよければ、概念上ややこしいのでなにかよい名前を付けたいところですね。省略せずにburiUserIdとすれば良さそうな気もします。対してアプリ側のユーザIDは、appUserIdあたりでしょうか。appUserIdNum, appUserIdStr。
  • buriExecModeがありますが...
    • この値を使って処理を行っている箇所が見あたりません。現状で要りますか? HotDeploy関連の情報だと思いますが...。

ひとまず。