S2Axis 開発記 プロトタイプその2 名前空間対応
昨日の日記で,名前空間を使ってコンポーネントを取ってこれないと書いたのですが,それは私が名前空間の区切り文字をセミコロンだと思いこんでいたためです.実際はピリオドでした.心より恥じる.
S2 の ContainerConstants
を見れば一目瞭然だったのに... 残念!!!!
ということで,昨日の S2handler#getComponentName()
を名前空間対応にしました.
protected String getComponentName(final MessageContext msgContext) { final String pathInfo = (String) msgContext .getProperty(HTTPConstants.MC_HTTP_SERVLETPATHINFO); if (pathInfo == null || pathInfo.length() == 0) { return null; } return pathInfo.substring(1).replace('/', '.'); }
String#replace()
を呼ぶようにしただけですが.
ちなみに ContainerConstans
に定義されている NS_SEP
は char
ではなく String
なのですね.ここで正規表現使うのももなんなので,この定数を使うのはやめてしまいました.
これだと,foo/ba/hoge
という URL から foo.bar.hoge
というコンポーネント名を作ってしまうのですが,どうせコンポーネントが見つからなければ何もしないのでこんなんでいいかなっと.
これでテストしてみたところ,無事名前空間付きのコンポーネントも取得できました♪