55 */
66package io .quarkus .debezium .postgres .deployment ;
77
8- import java .util .List ;
9-
10- import jakarta .inject .Singleton ;
11-
128import io .debezium .connector .postgresql .Module ;
139import io .debezium .connector .postgresql .PostgresConnector ;
1410import io .debezium .connector .postgresql .PostgresConnectorTask ;
1511import io .debezium .connector .postgresql .PostgresSourceInfoStructMaker ;
1612import io .debezium .connector .postgresql .snapshot .lock .NoSnapshotLock ;
1713import io .debezium .connector .postgresql .snapshot .lock .SharedSnapshotLock ;
1814import io .debezium .connector .postgresql .snapshot .query .SelectAllSnapshotQuery ;
19- import io .debezium .runtime .configuration .QuarkusDatasourceConfiguration ;
20- import io .quarkus .agroal .spi .JdbcDataSourceBuildItem ;
21- import io .quarkus .arc .deployment .SyntheticBeanBuildItem ;
2215import io .quarkus .datasource .deployment .spi .DevServicesDatasourceResultBuildItem ;
23- import io .quarkus .debezium .configuration .DatasourceRecorder ;
16+ import io .quarkus .debezium .agroal .configuration .AgroalDatasourceConfiguration ;
17+ import io .quarkus .debezium .deployment .QuarkusEngineProcessor ;
2418import io .quarkus .debezium .deployment .items .DebeziumConnectorBuildItem ;
19+ import io .quarkus .debezium .deployment .items .DebeziumExtensionNameBuildItem ;
2520import io .quarkus .debezium .engine .PostgresEngineProducer ;
2621import io .quarkus .deployment .IsNormal ;
2722import io .quarkus .deployment .annotations .BuildProducer ;
2823import io .quarkus .deployment .annotations .BuildStep ;
29- import io .quarkus .deployment .annotations .ExecutionTime ;
30- import io .quarkus .deployment .annotations .Record ;
3124import io .quarkus .deployment .builditem .DevServicesResultBuildItem ;
32- import io .quarkus .deployment .builditem .FeatureBuildItem ;
3325import io .quarkus .deployment .builditem .nativeimage .ReflectiveClassBuildItem ;
3426import io .quarkus .deployment .dev .devservices .DevServicesConfig ;
3527import io .quarkus .deployment .pkg .steps .NativeOrNativeSourcesBuild ;
3628
37- public class PostgresEngineProcessor {
29+ public class PostgresEngineProcessor implements QuarkusEngineProcessor < AgroalDatasourceConfiguration > {
3830
3931 public static final String POSTGRESQL = Module .name ();
4032
4133 @ BuildStep
42- FeatureBuildItem feature () {
43- return new FeatureBuildItem ("debezium-" + POSTGRESQL );
34+ @ Override
35+ public DebeziumExtensionNameBuildItem debeziumExtensionNameBuildItem () {
36+ return new DebeziumExtensionNameBuildItem (POSTGRESQL );
4437 }
4538
4639 @ BuildStep
40+ @ Override
4741 public DebeziumConnectorBuildItem engine () {
4842 return new DebeziumConnectorBuildItem (POSTGRESQL , PostgresEngineProducer .class );
4943 }
5044
51- @ BuildStep
52- @ Record (ExecutionTime .RUNTIME_INIT )
53- public void generateDatasourceConfig (
54- DatasourceRecorder datasourceRecorder ,
55- BuildProducer <SyntheticBeanBuildItem > producer ,
56- List <JdbcDataSourceBuildItem > jdbcDataSources ) {
57-
58- jdbcDataSources
59- .stream ()
60- .filter (item -> item .getDbKind ().equals (POSTGRESQL ))
61- .forEach (item -> producer .produce (SyntheticBeanBuildItem
62- .configure (QuarkusDatasourceConfiguration .class )
63- .scope (Singleton .class )
64- .supplier (datasourceRecorder .convert (item .getName (), item .isDefault ()))
65- .setRuntimeInit ()
66- .named (item .getDbKind () + item .getName ())
67- .done ()));
68- }
69-
7045 @ BuildStep (onlyIfNot = IsNormal .class , onlyIf = DevServicesConfig .Enabled .class )
71- void configure (BuildProducer <DevServicesResultBuildItem > devServicesProducer ,
72- DevServicesDatasourceResultBuildItem devServicesDatasourceResultBuildItem ) {
46+ void devServices (BuildProducer <DevServicesResultBuildItem > devServicesProducer ,
47+ DevServicesDatasourceResultBuildItem devServicesDatasourceResultBuildItem ) {
7348 DevServicesDatasourceResultBuildItem .DbResult datasource = devServicesDatasourceResultBuildItem .getDefaultDatasource ();
7449
7550 if (datasource == null ) {
@@ -82,12 +57,13 @@ void configure(BuildProducer<DevServicesResultBuildItem> devServicesProducer,
8257
8358 devServicesProducer .produce (new DevServicesResultBuildItem ("debezium-postgres" ,
8459 "debezium" ,
85- QuarkusDatasource . generateDebeziumConfiguration ( datasource .getConfigProperties () )));
60+ datasource .getConfigProperties ()));
8661 }
8762
8863 @ BuildStep (onlyIf = NativeOrNativeSourcesBuild .class )
89- void registerClassesThatAreLoadedThroughReflection (BuildProducer <ReflectiveClassBuildItem > reflectiveClasses ) {
90- reflectiveClasses .produce (ReflectiveClassBuildItem .builder (
64+ @ Override
65+ public void registerClassesThatAreLoadedThroughReflection (BuildProducer <ReflectiveClassBuildItem > reflectiveClassBuildItemBuildProducer ) {
66+ reflectiveClassBuildItemBuildProducer .produce (ReflectiveClassBuildItem .builder (
9167 PostgresConnector .class ,
9268 PostgresSourceInfoStructMaker .class ,
9369 PostgresConnectorTask .class ,
@@ -98,4 +74,9 @@ void registerClassesThatAreLoadedThroughReflection(BuildProducer<ReflectiveClass
9874 .build ());
9975 }
10076
77+ @ Override
78+ public Class <AgroalDatasourceConfiguration > quarkusDatasourceConfiguration () {
79+ return AgroalDatasourceConfiguration .class ;
80+ }
81+
10182}
0 commit comments