Home of: [工房 "藤車"] > [SourceForge.net における PageMixer]

移行手引き

本ドキュメントは、 PageMixer の旧版から新版への移行手順に関して説明します。

3.0 版からそれ以降への移行

変更されたフィールドへの対応

あなたのクラスが以下のクラスフィールドに依存している場合、 再コンパイルが必要です。

移動されたフィールド:
PageMixer 3.1 版以降では、 BASE_HREF_KEY および CONTEXT_PATH_KEY は、 StrutsConsumerContext ではなく ServletConsumerContext において定義されています。
型変更されたフィールド:
PageMixer 3.1 版以降では、 "key object" のためのクラスフィールドは、 "Object" 型ではなく、 具体的なクラス型で定義されています。

再コンパイルをしない場合、 実行時に NoSuchFieldError が浮揚される可能性があります。

2.x 版から 3.x への移行

ロケールに応じた描画に関する移行

ロケールに応じた描画を行うためのクラス群は体系的に再設計されており、 それをわずかな記述で説明するのは容易ではありません。

ロケールに応じた描画に関する現行仕様の詳細に関しては、 "ロケールに応じた描画" チュートリアルを参照してください。

Servlet 環境関連の移行

Servlet 環境関連のクラス群は体系的に再設計されており、 それをわずかな記述で説明するのは容易ではありません。

PageMixer の Servlet 環境対応の現行仕様に関する詳細は、 "Servlet 環境における利用" を参照してください。

Struts 連携に関する移行

ErrorsFilter の改名以外の Struts 連携に関する 2.x 版から 3.x 版への移行の殆ど全ては、 Servlet 環境関連移行のそれです。

新規クラス ErrorsInsetFilter 導入のために名前が変更されたので、 ErrorsFilterErrorsTrimFilter に改めてください。

1.x 版から 2.x 版への移行

*Watcher に関する移行

本節では、 *Watcher インタフェース (TokenWatcher および SequenceWathcer) の変更に関して説明します。

*Watcher 開発者にとっての移行

*Watcher を含む Filter の再利用性を向上させるため、 2.0 版から、 *Watcher インタフェース定義は、 自身の持つ処理文脈に関する情報をクリアするためのメソッド "clear()" を持っています。

*Watcher 開発者であるあなたは、 仮にあなたの作成したクラスが処理文脈に関する情報を保持していなくても、 "clear()" メソッドを定義する必要があります。

Filter 開発者にとっての移行

前述のように、 *Watcher 実装は "clear()" を持っていますので、 あなたの固有クラスが *Watcher を使用しているのであれば、 Filter 開発者であるあなたは、 Token 列の最後(すなわち flush(ConsumerContext) メソッドにおいて) でこのメソッドを起動しなければなりません。

あなたの固有クラスが以下の条件を満たすのであれば、 特に何かする必要はありません。

LocalePage に関する移行

本節では、 LocalePage クラスの変更に関して説明します。

LocalePage 利用者にとっての移行

2.0 版から、 LocalePage.ByParser (または LocalePage.ByPersistentProducer)は、 LocatorLocalePage.ByPageParser (または LocatorLocalePage.ByPersistentProducer) によって置き換えられました。

上記クラスのコンストラクタを起動するためには、 以下に示す Locator 実装から1つ選ぶか、 自身で Locator を実装する必要があります。

Locator.ByClass
Class#getResourceAsStream を用いてデータを読み込みます。
Locator.ByServletContext
ServletContext#getResourceAsStream あるいは Class#getResourceAsStream を用いてデータを読み込みます。
Locator.OnLocalFS
FileInputStream を用いてデータを読み込みます。 このクラスは、変更時におけるデータの再読み込みを可能にします。
Locator.OnWebApp
ウェブアプリケーション配下のデータを FileInputStream を用いて読み込みます。 このクラスは、変更時におけるデータの再読み込みを可能にします。

LocalePage 開発者にとっての移行

"1.x" 版と "2.0" 版の LocalePage は、 手短に説明するには違い過ぎます。

そのため、詳細に関しては API ドキュメントをご覧ください。

一見、複雑になったと思われるかもしれませんが、 固有実装が容易になったと考えています。

Struts 連携に関する移行

Struts 連携に関する移行のための作業項目は以下に示す2点あります。

  1. プレゼンテーション Servlet の基底クラスを "MixerServlet" から "StrutsPage" に変更する
  2. "shouldForward" メソッドの定義を変更する

2.0 版から、 MixerServlet は、 PageServlet 派生クラスの StrutsPage で置き換えられ、 配布物に含まれなくなりました。

固有のプレゼンテーション Servlet の基底クラスを MixerServlet から StrutsPage に変更してください。

その後、 "shouldForward" メソッドの定義を補正する必要があります。

1.x 版では、 このメソッドは1つの引数(ConsumerContext)を持ち、 boolean 値を返すことを期待されていました。

しかし現在、 このメソッドは2つの引数(ConsumerContext および デフォルトの制御遷移先値としての String)を持ち、 制御遷移先としての String の返却を期待されています。

そのため、 行うべきことは、 (制御遷移したい場合は)与えられた制御遷移先あるいは (それ以外の場合は)null を返却することです。