スケルトン生成ツールが URI を解釈する直前に、独自処理を挟む事ができます。これにより、
が行えます。
このためには、URIPreProcess インターフェイス(API も併せて参照して下さい)を実装したクラスを準備する必要があります。
例えば、以下のような HTML ファイルがあるとします。
1: 2: 3: 4: 5: 6:
<html> <head></head> <body> <img src="ab.jpg"> </body> </html>
上記の "ab.jpg" を "xy.jpg" に置換したいとします。
置換処理用の URIPreProcess 実装クラスを作成します。
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
import paraselene.dyna.mockup.*; import java.net.*; public class PreProcess implements URIPreProcess { public URIHandle getHandle( String class_name, URI src ) throws Exception { String path = src.toString(); if ( path.equals( "ab.jpg" ) ) { return new URIHandle( new URI( "xy.jpg" ), URIHandle.URIProcess.FULL_PROCESS ); } return null; } }
ここでは単純に、引数 src が "ab.jpg" であれば "xy.jpg" に置き換えています。
例えばスケルトン生成時にパッケージ名を site としていれば、引数 class_name には
site.logic.IndexHtml
というクラス名を示す文字列が渡されます。
あるディレクトリ下の HTML のみ処理対象としたい等の場合は、この引数の文字列内容より判断して下さい。
上記ソースをコンパイルしクラスが作成されたならば、スケルトン生成ツールに
-uri_preprocess PreProcess
と引数指定して下さい。
もしクラスパスが通らない場所に作成したクラスがあるならば、-class_pathを併用して下さい。
URIHandle コンストラクタの第二引数は、以下のように振る舞います。
| No | URIProcess | 動作 |
|---|---|---|
| 1 | FULL_PROCESS | 通常動作です。 第一引数の URI を使い URI 解決を行います。 |
| 2 | NOT_USE_OTHER | 第一引数の URI を使い URI 解決を行いますが、これが HTML ページに解決できなかった場合(静的コンテンツ)、-other で指定されたパスを付加せず第一引数の URI をそのままスケルトンソースに使用します。 |
| 3 | NO_PROCESS | URI 解決を全く行いません。 常に第一引数の URI をそのままスケルトンソースに使用します。 HTML ページに解決可能な URI であってもマッピングしません。 |