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_SEPchar ではなく String なのですね.ここで正規表現使うのももなんなので,この定数を使うのはやめてしまいました.
これだと,foo/ba/hoge という URL から foo.bar.hoge というコンポーネント名を作ってしまうのですが,どうせコンポーネントが見つからなければ何もしないのでこんなんでいいかなっと.
これでテストしてみたところ,無事名前空間付きのコンポーネントも取得できました♪