JDT AST から Java JET2 への変換リファレンス・ガイド

この文書では、JDT AST から Java コードを生成するための JET2 変換の要素と構造について説明します。 本書は特に、JDT AST から Java コードを生成するためにこの変換を使用する予定の開発者に有用です。

JDT からコード JET2 への変換

JDT からコード JET2 への変換は、トップレベルの変換です。

JDT からコード JET2 への変換
識別子 com.ibm.xtools.transform.java.jet2templates
ソース java.util.Map (org.eclipse.jdt.core.IJavaProject と、そのプロジェクトの org.eclipse.jdt.core.dom.CompilationUnit 要素のコレクションの間のマッピング)
生成物 対応するプロジェクト内の CompilationUnit ごとの Java ファイル

変換では、ルート要素として Map<IJavaProject,Collection<CompilationUnit>> を予期します。 そしてプロジェクトごとにコレクションを処理し、対応するプロジェクト内に、対応するソース・ファイルを生成します。 CompilationUnit 要素には、必要な情報すべてが含まれていることが期待されます。 すなわち、パッケージ宣言、インポート宣言などです

modelInspectors

変換では、org.eclipse.jet.modelInspectors 拡張を使用して、JET テンプレート内で JDT AST を全探索します。 インスペクターは、オブジェクトを XPath 情報モデルに適合させるオブジェクトです。 各インスペクターは、適合可能なオブジェクトのタイプを規定し、それらのオブジェクトだけに引き渡されます。 ASTNode ごとに 1 つのインスペクターがあり、その ASTNode の XPath 照会に応答します。 それらのインスペクターは com.ibm.xtools.transform.java.jet2 プラグイン内で実装されます

拡張性

変換は拡張ポイントとして com.ibm.xtools.transform.java.jet2.IJavaJET2ListenerProvider を提供します。 これによって、変換実行中にカスタム・アクションを行うために、変換を起動することが可能になります。 IJavaJET2ListenerProvider というインターフェースによって、クライアントは、ASTNode ごとに Java JET2 変換に リスナーを登録し、さらに書き込まれるファイルごとに org.eclipse.jet.IWriterListener にリスナーを登録します。 拡張ポイントの構造については、以下に説明があります

IJavaJET2ListenerProvider 拡張
識別子 com.ibm.xtools.transform.java.jet2.IJavaJET2ListenerProvider
要素 JavaJET2ListenerProvider
属性 class
実装 com.ibm.xtools.transform.java.jet2.listeners.IJavaJET2ListenerProvider

インターフェース IJavaJET2ListenerProvider は次のように定義されます

public interface IJavaJET2ListenerProvider {
    public IJavaJET2Listener getJavaJET2Listener(String activityId);
    public IWriterListener getWriterListener(String activityId);
}

IJavaJET2Listener というノード・レベル・リスナーは、各 ASTNode が処理される前と後に起動され、 IWriterListener というファイル・レベル・リスナーは、各ファイルがコミットされる前と後に起動されます。 コントリビューターは、それぞれ関心のある特定の activityId についてのみ、リスナーを提供できます。 ActivityId は、Java JET2 変換のクライアントが指定できる識別子であり、コントリビューターは任意の activityId について リスナーを提供できます。それによってコントリビューターは、Java JET2 変換を起動する任意の変換を拡張できます。 インターフェース IJavaJET2Listener は、次のように定義されます

public interface IJavaJET2Listener {
    public void preVisit (ASTNode node, JET2Writer writer);
    public void postVisit(ASTNode node, JET2Writer writer);
}

増分書き込み

<TBD>

コード・フォーマット

<TBD>