-uri_preprocess について

スケルトン生成ツールが 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 動作
1FULL_PROCESS通常動作です。
第一引数の URI を使い URI 解決を行います。
2NOT_USE_OTHER第一引数の URI を使い URI 解決を行いますが、これが HTML ページに解決できなかった場合(静的コンテンツ)、-other で指定されたパスを付加せず第一引数の URI をそのままスケルトンソースに使用します。
3NO_PROCESSURI 解決を全く行いません。
常に第一引数の URI をそのままスケルトンソースに使用します。
HTML ページに解決可能な URI であってもマッピングしません。