■
Groovy はJava実行環境で動作するスクリプト言語のひとつです。
Groovy の紹介については @IT にコラム 「@IT:Groovyに触ってみよう」 があります。
この Groovy を BkJava に組み込んで、Groovy から Becky! のプラグインAPIを使用することができるようにする方法をご紹介します。これにより、Becky! へのスクリプトアクセスが可能になります。
BkGroovyアドイン のダウンロード
まず、こちら から BkGroovyアドイン をダウンロードします。
BkGroovyアドインは Becky! で Groovy を動作可能にする BkJava のアドインです。
Groovy のダウンロード
Groovyのホームページ から、Groovy をダウンロードします。
現状の最新版は、groovy-1.0-jsr-02.zip でした。
このファイルを展開したフォルダ配下に embeddable フォルダがありますが、
この中にある groovy-all-1.0-jsr-02.jar を BkJava.ini のクラスパス設定に追加します。
以下のようになります。
(見やすくするため、改行が入っていますが、実際は各エントリは一行に記述してください)
jvm.option.count=4 jvm.option.0=-Djava.compiler=NONE jvm.option.1=-Djava.class.path=C:\Program Files\RimArts\B2\PlugIns\BkJava\classes; C:\Program Files\RimArts\B2\PlugIns\BkJava\lib\bkjava.jar; C:\Program Files\RimArts\B2\PlugIns\BkJava\lib\groovy-all-1.0-jsr-02.jar jvm.option.2=-Djava.library.path=C:\Program Files\RimArts\B2\PlugIns\BkJava\lib jvm.option.3=-Djava.util.logging.config.file=C:\Program Files\RimArts\B2 \Plugins\BkJava\conf\logging.properties jvm.option.4= jvm.option.5=
config.xml の編集
Groovy のファイルを置く場所を BkJava/conf フォルダの config.xml に設定します。
"lib" パラメーターの値(value属性) には、動的に読み込みたい jar ファイルを置くパスを設定します。
ここに置いた jar ファイルにあるクラスは BkJava.ini ファイルのクラスパス設定に追加しなくても、Groovyファイルから使用することができます。
"groovy" パラメーターの値(value属性) には、Groovy ファイルを置くパスを指定します。
この直下に置かれた BkEventHandler を実装した Groovyファイルは、Becky! のプラグインとして動作します。(ファイルは複数配置することが可能です。)
<?xml version="1.0" encoding="Shift_JIS" ?> <config> <event_handler> <!-- factory 要素: class属性:BkEventHandlerFactoryを実装するクラスを指定します。 --> <factory class="org.becky.bkj.groovy.BkGroovyFactory"> <param name="lib" value="C:\Program Files\RimArts\B2\PlugIns\BkJava\lib" /> <param name="groovy" value="C:\Program Files\RimArts\B2\PlugIns\BkJava\groovy" /> </factory> </event_handler> </config>
groovy ファイルを作成する
上で指定したフォルダに BkEventHandler を実装した Groovyファイル を作成します。
ここでは、以下のような GroovyTest01.groovy を作成しました。
import org.becky.bkj.* import java.util.logging.Logger class GroovyTest01 extends BkEventAdapter { void start() { Logger.global.info("GroovyTest01 を開始します。") } int exit() { Logger.global.info("GroovyTest01 を終了します。") return 0 } void finishRetrieve(int number) { Logger.global.info(number + "件 受信しました。") } }
動かしてみる
Becky! を起動して、メールを受信後、終了すると、以下のようなログが見れます。
2005/07/16 0:19:22 gjdk.java.util.logging.Logger_GroovyReflector invoke 情報: GroovyTest01 を開始します。 2005/07/16 0:19:28 gjdk.java.util.logging.Logger_GroovyReflector invoke 情報: 0件 受信しました。 2005/07/16 0:20:36 gjdk.java.util.logging.Logger_GroovyReflector invoke 情報: GroovyTest01 を終了します。