7. イベントハンドラ¶
7.1. イベントハンドラとは¶
イベントハンドラとは、ユーザによる履歴・コメントモジュールへのコメントや、別のアプリケーションのイベントの登録を、組み込んだアプリケーションで検知する機能です。
7.2. イベントハンドラの実装方法¶
履歴・コメントモジュールでイベントの登録を検知した際に、任意の処理を行うことができます。処理は Java で実装します。
7.2.1. イベントハンドラの処理を行うJavaファイルの作成¶
プロジェクトのsrc/main/java/ 配下に、任意のフォルダを作成します。その配下にJavaファイルを作成し、以下のように実装を行います。サンプルコードでは、jp/co/intra_mart/journal/sample/event/handler ディレクトリ配下に JournalEventHandlerSample.java というファイルを作成します。getApplication の返却値でどのイベントの登録を検知するのかを指定します。onRegisterJournalEvent は検知したイベントの情報を受け取り、任意の処理を行うことができます。package jp.co.intra_mart.journal.sample.event.handler; import jp.co.intra_mart.common.platform.log.Logger; import jp.co.intra_mart.foundation.journal.event.JournalEvent; import jp.co.intra_mart.foundation.journal.handler.JournalEventHandler; // JournalEventHandler インタフェースを実装したクラスを作成することで、イベントの登録を検知できる public class JournalEventHandlerSample implements JournalEventHandler { private static final Logger LOGGER = Logger.getLogger(JournalEventHandlerSample.class); private static final String application = "*"; // イベントの登録を検知するアプリケーションを指定 // "*"を返却することで、すべてのアプリケーションに対して実行される @Override public String getApplication() { return application; } // イベントの登録を検知した際に実行される処理 @Override public void onRegisterJournalEvent(final JournalEvent event) { LOGGER.info(event.toString()); } }
7.2.2. イベントハンドラの処理を行うクラスの登録¶
作成したJournalEventHandlerSampleクラスは、ServiceLoaderクラスを利用して読み込まれるサービスプロバイダとして扱います。
その為、ServiceLoaderとして読み込みを行う為のプロバイダ構成ファイルを配置します。
プロバイダ構成ファイルはクラスパス上の /META-INF/services/jp.co.intra_mart.foundation.journal.handler.JournalEventHandler ファイルです。
intra-mart e Builder for Accel Platform を利用する場合には、プロジェクト配下より src/main/resources/META-INF/services ディレクトリを作成した後、 jp.co.intra_mart.foundation.journal.handler.JournalEventHandler ファイルを作成してください。
プロバイダ構成ファイルには、作成したパッケージ指定クラスのFQDNを指定します。
jp.co.intra_mart.journal.sample.event.handler.JournalEventHandlerSample