Skip to content

Commit 8b2402f

Browse files
committed
ConfigにEntityListenerを返すメソッドを追加しました
1 parent 4d81dc5 commit 8b2402f

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

src/main/java/org/seasar/doma/internal/RuntimeConfig.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717

1818
import static org.seasar.doma.internal.util.AssertionUtil.assertNotNull;
1919

20+
import java.util.function.Supplier;
21+
2022
import javax.sql.DataSource;
2123

2224
import org.seasar.doma.jdbc.ClassHelper;
@@ -31,6 +33,7 @@
3133
import org.seasar.doma.jdbc.SqlLogType;
3234
import org.seasar.doma.jdbc.UnknownColumnHandler;
3335
import org.seasar.doma.jdbc.dialect.Dialect;
36+
import org.seasar.doma.jdbc.entity.EntityListener;
3437
import org.seasar.doma.jdbc.tx.TransactionManager;
3538

3639
/**
@@ -144,4 +147,10 @@ public int getBatchSize() {
144147
return config.getBatchSize();
145148
}
146149

150+
@Override
151+
public <ENTITY, LISTENER extends EntityListener<ENTITY>> LISTENER getEntityListener(
152+
Class<LISTENER> listenerClass, Supplier<LISTENER> listenerSupplier) {
153+
return config.getEntityListener(listenerClass, listenerSupplier);
154+
}
155+
147156
}

src/main/java/org/seasar/doma/jdbc/Config.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,14 @@
1717

1818
import java.sql.PreparedStatement;
1919
import java.sql.Statement;
20+
import java.util.function.Supplier;
2021

2122
import javax.sql.DataSource;
2223

2324
import org.seasar.doma.DomaIllegalArgumentException;
2425
import org.seasar.doma.jdbc.command.Command;
2526
import org.seasar.doma.jdbc.dialect.Dialect;
27+
import org.seasar.doma.jdbc.entity.EntityListener;
2628
import org.seasar.doma.jdbc.query.Query;
2729
import org.seasar.doma.jdbc.tx.TransactionManager;
2830
import org.seasar.doma.message.Message;
@@ -228,6 +230,29 @@ default int getBatchSize() {
228230
return 0;
229231
}
230232

233+
/**
234+
* {@link EntityListener} のインスタンスを取得します。
235+
* <p>
236+
* デフォルトの実装では単純に {@link Supplier#get()} を実行して取得したインスタンスを返します。
237+
*
238+
* {@link EntityListener} をDIコンテナで管理したい場合などはこのメソッドをオーバーライドし、
239+
* DIコンテナから取得したインスタンスを返すようにしてください。
240+
*
241+
* @param listenerClass
242+
* {@link EntityListener} の実装クラス
243+
* @param listenerSupplier
244+
* {@link EntityListener} のインスタンスを返す {@link Supplier}
245+
* @param <ENTITY>
246+
* エンティティの型
247+
* @param <LISTENER>
248+
* リスナーの型
249+
* @return {@link EntityListener} のインスタンス
250+
*/
251+
default <ENTITY, LISTENER extends EntityListener<ENTITY>> LISTENER getEntityListener(
252+
Class<LISTENER> listenerClass, Supplier<LISTENER> listenerSupplier) {
253+
return listenerSupplier.get();
254+
}
255+
231256
/**
232257
* {@link ConfigProvider} から {@link Config} を取得します。
233258
*

0 commit comments

Comments
 (0)