ページの先頭行へ戻る
 Apcoordinatorユーザーズガイド

11.3.2 コンパイル形式での実行

コンパイルの操作

XMLデータ仕様記述コンパイラは、XMLデータ仕様記述のXMLからJavaソースを生成します。XMLデータ仕様記述コンパイラは、com.fujitsu.uji.xscript.compiler.ESpecCompilerクラスで提供されています。XMLデータ仕様記述コンパイラは、以下のコマンドで実行します。

  java com.fujitsu.uji.xscript.compiler.ESpecCompiler XMLデータ仕様記述ファイル名 生成Javaクラス名
                             [-p パッケージ名] [-comment:none] [-s 生成Javaクラスの基底クラス名]
                             [-e 生成Javaソースの文字エンコーディング]

実際の指定例

  java com.fujitsu.uji.xscript.compiler.ESpecCompiler carrent.xml Carrentc -p carrent

ESpecCompiler
実行クラスをこのとおり指定します。

XMLデータ仕様記述ファイル名
コンパイル対象のXMLデータ仕様記述のXMLファイルを指定します。

生成Javaクラス名
コンパイル結果のJavaクラス名です。パッケージは含めません。

パッケージ名
コンパイル結果のJavaクラスのパッケージ名です。省略するとパッケージなしになります。

-comment:none
コンパイル結果のJavaソースにコメントを出力したくない場合に指定します。省略するとJavaソースにコメントを出力します。

生成Javaクラスの基底クラス名
継承形式の利用者定義メソッドを利用する場合に、ESpecValidatorクラスを継承して利用者定義メソッドを実装したクラスを指定します。省略すると、ESpecValidatorクラスから直接継承します。

生成Javaソースの文字エンコーディング
生成するJavaソースの文字エンコーディングです。省略するとShift_JISになります。

ポイント

Apcoordinator開発環境をインストールしたフォルダの、binフォルダの中に、ujiespec.batがあります。バッチファイルを作成する場合には参考にしてください。

注意

生成したJavaソースをJDK 5.0でコンパイルした場合、以下の警告が表示される場合がありますが、動作には問題ありません。

注:Carrentc.java の操作は、未チェックまたは安全ではありません。
注:詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてください。

上記でCarrentc.javaは、生成したJavaソースのファイル名です。

コンパイルしたXMLデータ仕様記述の呼び出し

コンパイルしたXMLデータ仕様記述を利用する場合は、ESpecValidatorのgetInstanceメソッドで、パッケージ名、クラス名を指定します。

import com.fujitsu.uji.DispatchContext;
import com.fujitsu.uji.xscript.ESpecValidator;
import com.fujitsu.uji.xscript.ESpecResultException;
import com.fujitsu.uji.xscript.ESpecException;

....

    public void processOrder(DispatchContext context, OrderBean bean) throws java.lang.Exception {
        ESpecValidator validator = 
          //ESpecValidator.getInstance(getClass().getClassLoader()); インタプリタ用
            ESpecValidator.getInstance(getClass().getClassLoader(), "mypackage.CheckPrice");
        validator.setInfLoader(context.getApplicationProfile().getInfLoader());
        try {
            validator.setXml("checkPrice.xml");
            validator.validate("checkValue", bean);
        } catch(ESpecResultException e) {
            ...
        } catch(Exception e) {
            throw e;
        }
        ...
    }

getInstance
引数に、"パッケージ名.クラス名"を指定する文字列を追加します。例ではgetInstanceメソッドの復帰値がmypackage.CheckPriceクラスのインスタンスとなります。