[cubby-user:75] Re: CubbyTestCase における、InternalForwardRequest のコピーについてのご報告
Takashi Someda
[E-MAIL ADDRESS DELETED]
2008年 6月 25日 (水) 01:24:33 JST
縣さん、
染田です。
> ひとまず、手元では解決されているとのことですので、
> 1.0.4でいただいたコードのものを適用したいと思います。
> 1.0.4のリリースはリリースできるバグフィックスがある程度
> たまってからおこなおうと考えています。
ありがとうございます。
> また、来月あたりに、少し機能強化をおこなったCubby1.1を
> リリースする予定です。
> 内部フォワードの実装方式を変更する予定ですので、
> 1.1リリース時には、この問題は解決してリリースします。
少し Trunk のぞいてみました。
priority や自動登録などなど出来るようになるのですね。
楽しみにしております。
染田
2008/6/17 AGATA Toshitaka <[E-MAIL ADDRESS DELETED]>:
> 染田さん
>
> 縣です。
>
>> 上記で Beans.copy をしているのですが、その際に serverName や
>> serverPort、scheme など、諸々の情報が、
> MockHttpServletContext#createRequest
>> で生成されている、MockHttpServletRequestImpl のデフォルト値によって上
> 書きされています。
>
> ご報告ありがとうございます。
> 確かに、ご指摘の問題が発生しますね。
> ここはもともと、内部フォワードをエミュレートするために、
> MockHttpServletRequestImplのservletPathとqueryStringを
> 書き換えるために、このように面倒なことやっています。
>
> ひとまず、手元では解決されているとのことですので、
> 1.0.4でいただいたコードのものを適用したいと思います。
> 1.0.4のリリースはリリースできるバグフィックスがある程度
> たまってからおこなおうと考えています。
>
> また、来月あたりに、少し機能強化をおこなったCubby1.1を
> リリースする予定です。
> 内部フォワードの実装方式を変更する予定ですので、
> 1.1リリース時には、この問題は解決してリリースします。
>
> Takashi Someda さんは書きました:
>> 染田です。
>>
>> またまた懲りずにテストネタですみません。。。
>>
>> CubbyTestCase#routing 内で行われている、InternalForwardRequest
>> から、S2TestCase 内の MockHttpServletRequestImpl へのコピーについて
>> ご報告です。
>>
>> 上記で Beans.copy をしているのですが、その際に serverName や
>> serverPort、scheme など、諸々の情報が、MockHttpServletContext#createRequest
>> で生成されている、MockHttpServletRequestImpl のデフォルト値によって上書きされています。
>>
>> その為、アクションの中で、上記のような情報に基づいて行き先を振り分けるような
>> 処理をしている部分で意図どおりのテストが出来ない部分がありました。
>> # ちなみに、私はアプリケーション内のリファラであるかを、ヘッダや諸々から判別し
>> # 行き先を振り分ける処理をアクションレイヤでしているところで捕まりました。
>>
>> 手元では、
>>
>> private static String[] EXCLUDES_PROPERTIES;
>> static {
>> List<String> list = new ArrayList<String>();
>> BeanDesc beanDesc =
>> BeanDescFactory.getBeanDesc(MockHttpServletRequestImpl.class);
>> for (int i = 0; i < beanDesc.getPropertyDescSize(); i++) {
>> PropertyDesc propDesc = beanDesc.getPropertyDesc(i);
>> if (propDesc.isReadable() && propDesc.isWritable()) {
>> String propName = propDesc.getPropertyName();
>> if(!"queryString".equals(propName)){
>> list.add(propDesc.getPropertyName());
>> }
>> }
>> }
>> EXCLUDES_PROPERTIES = list.toArray(new String[list.size()]);
>> }
>>
>> のような感じで、コピー対象外のプロパティを集めた後(queryString は除外/setter/getter
>> があるもののみ)、routing 内での Beans.copy を
>>
>> Beans.copy(internalForwardRequest, getRequest())
>> .excludes(EXCLUDES_PROPERTIES)
>> .execute();
>>
>> として回避しています。
>>
>> Cubby 1.0.2 で確認しました。
>> # ざっとソースを確認したところ 1.0.3 でも出るようにも思います。
>> ケースとしては、少ないのかもしれませんが、コントローラレイヤ
>> ですので、この辺りのリクエストの情報を参照して処理するケースも
>> あるのかな、と思いご報告させてもらいました。
>>
>> 以上です。
>
>
> --
> -------------------------------
> 株式会社ヌーラボ 縣 俊貴
> Mail : [E-MAIL ADDRESS DELETED]
> HP : http://www.nulab.co.jp/
> TEL : 03-5766-6256(東京)
> 092-724-0020(福岡)
> -------------------------------
> _______________________________________________
> cubby-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/cubby-user
>
--
SOMEDA Takashi
[E-MAIL ADDRESS DELETED]
blog : http://d.hatena.ne.jp/tksmd/
cubby-user メーリングリストの案内