/*
 * This code is generated by blanco Framework.
 * Apache Antタスク [BlancoJUnit]の抽象親クラス
 */
package blanco.junit.task;

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;

/**
 * Apache Antタスク [BlancoJUnit]の抽象親クラス。
 * 
 * この抽象親クラスでは、Apache Antタスクで一般的に必要なチェックなどのコーディングを肩代わりします。
 * このクラスを継承して、パッケージ[blanco.junit.task]にBlancoJUnitTaskクラスを作成してください。そしてAntタスクの処理内容を記述してください。<br>
 * <br>
 * Antタスクへの組み込み例<br>
 * <pre>
 * &lt;taskdef name=&quot;blancojunit&quot; classname=&quot;blanco.junit.task.BlancoJUnitTask">
 *     &lt;classpath&gt;
 *         &lt;fileset dir=&quot;lib&quot; includes=&quot;*.jar&quot; /&gt;
 *         &lt;fileset dir=&quot;lib.ant&quot; includes=&quot;*.jar&quot; /&gt;
 *     &lt;/classpath&gt;
 * &lt;/taskdef&gt;
 * </pre>
 */
public abstract class AbstractBlancoJUnitTask extends Task {


    protected abstract void process() throws IllegalArgumentException;

    /**
     * Antタスクのメイン処理。Apache Antから このメソッドが呼び出されます。
     * 
     * @throws BuildException タスクとしての例外が発生した場合。
     */
    public final void execute() throws BuildException {
        System.out.println("BlancoJUnitTask 処理開始");
        
        try {
            // 実際のAntタスクの主処理を実行します。
            process();
        } catch (IllegalArgumentException e) {
            throw new BuildException(e.getMessage());
        } catch (Exception e) {
            e.printStackTrace();
            throw new BuildException("タスクを処理中に例外が発生しました。処理を中断します。" + e.toString());
        } catch (Error e) {
            e.printStackTrace();
            throw new BuildException("タスクを処理中にエラーが発生しました。処理を中断します。" + e.toString());
        }
    }
}
