diff --git a/extensions/hibernate-envers/deployment/src/main/java/io/quarkus/hibernate/envers/deployment/HibernateEnversProcessor.java b/extensions/hibernate-envers/deployment/src/main/java/io/quarkus/hibernate/envers/deployment/HibernateEnversProcessor.java index ad2ff3d70b9f9..736accdc727f6 100644 --- a/extensions/hibernate-envers/deployment/src/main/java/io/quarkus/hibernate/envers/deployment/HibernateEnversProcessor.java +++ b/extensions/hibernate-envers/deployment/src/main/java/io/quarkus/hibernate/envers/deployment/HibernateEnversProcessor.java @@ -10,6 +10,7 @@ import io.quarkus.deployment.annotations.Record; import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem; import io.quarkus.hibernate.envers.HibernateEnversBuildTimeConfig; +import io.quarkus.hibernate.envers.HibernateEnversBuildTimeConfigPersistenceUnit; import io.quarkus.hibernate.envers.HibernateEnversRecorder; import io.quarkus.hibernate.orm.deployment.AdditionalJpaModelBuildItem; import io.quarkus.hibernate.orm.deployment.PersistenceUnitDescriptorBuildItem; @@ -38,8 +39,10 @@ public void registerEnversReflections(BuildProducer re reflectiveClass.produce( new ReflectiveClassBuildItem(false, false, "org.hibernate.tuple.component.DynamicMapComponentTuplizer")); - buildTimeConfig.revisionListener.ifPresent(s -> reflectiveClass.produce(new ReflectiveClassBuildItem(true, true, s))); - buildTimeConfig.auditStrategy.ifPresent(s -> reflectiveClass.produce(new ReflectiveClassBuildItem(true, true, s))); + for (HibernateEnversBuildTimeConfigPersistenceUnit pu : buildTimeConfig.getAllPersistenceUnitConfigsAsMap().values()) { + pu.revisionListener.ifPresent(s -> reflectiveClass.produce(new ReflectiveClassBuildItem(true, true, s))); + pu.auditStrategy.ifPresent(s -> reflectiveClass.produce(new ReflectiveClassBuildItem(true, true, s))); + } } @BuildStep diff --git a/extensions/hibernate-envers/deployment/src/test/java/io/quarkus/hibernate/orm/envers/EnversConfigurationPerPUTest.java b/extensions/hibernate-envers/deployment/src/test/java/io/quarkus/hibernate/orm/envers/EnversConfigurationPerPUTest.java new file mode 100644 index 0000000000000..fa9a0d78024dd --- /dev/null +++ b/extensions/hibernate-envers/deployment/src/test/java/io/quarkus/hibernate/orm/envers/EnversConfigurationPerPUTest.java @@ -0,0 +1,79 @@ +package io.quarkus.hibernate.orm.envers; + +import static org.assertj.core.api.Assertions.assertThat; + +import javax.inject.Inject; +import javax.persistence.EntityManagerFactory; + +import org.hibernate.engine.spi.SessionFactoryImplementor; +import org.hibernate.envers.boot.internal.EnversService; +import org.hibernate.envers.configuration.internal.AuditEntitiesConfiguration; +import org.hibernate.internal.SessionFactoryImpl; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; + +import io.quarkus.hibernate.orm.PersistenceUnit; +import io.quarkus.test.QuarkusUnitTest; + +public class EnversConfigurationPerPUTest { + + @RegisterExtension + static QuarkusUnitTest runner = new QuarkusUnitTest() + .withApplicationRoot((jar) -> jar + .addClasses(MyAuditedEntity.class)) + .withConfigurationResource("application-multiple-pu.properties"); + + @Inject + EntityManagerFactory emf; + + @Inject + @PersistenceUnit("db1") + EntityManagerFactory emf1; + + @Inject + @PersistenceUnit("db2") + EntityManagerFactory emf2; + + @Test + public void testTableName() { + String generatedTableName = getAuditConfiguration(emf).getAuditTableName("entity", "table"); + assertThat(generatedTableName).isEqualTo("P_table"); + + generatedTableName = getAuditConfiguration(emf1).getAuditTableName("entity", "table"); + assertThat(generatedTableName).isEqualTo("T_table"); + + generatedTableName = getAuditConfiguration(emf2).getAuditTableName("entity", "table"); + assertThat(generatedTableName).isEqualTo("R_table"); + } + + @Test + public void testRevisionFieldName() { + String configuredRevisionFieldName = getAuditConfiguration(emf).getRevisionFieldName(); + assertThat(configuredRevisionFieldName).isEqualTo("GEN"); + + configuredRevisionFieldName = getAuditConfiguration(emf1).getRevisionFieldName(); + assertThat(configuredRevisionFieldName).isEqualTo("REVISION"); + + configuredRevisionFieldName = getAuditConfiguration(emf2).getRevisionFieldName(); + assertThat(configuredRevisionFieldName).isEqualTo("REV"); + } + + @Test + public void testRevisionTypeName() { + String configuredRevisionTypeName = getAuditConfiguration(emf).getRevisionTypePropName(); + assertThat(configuredRevisionTypeName).isEqualTo("GEN_TYPE"); + + configuredRevisionTypeName = getAuditConfiguration(emf1).getRevisionTypePropName(); + assertThat(configuredRevisionTypeName).isEqualTo("REV_TYPE"); + + configuredRevisionTypeName = getAuditConfiguration(emf2).getRevisionTypePropName(); + assertThat(configuredRevisionTypeName).isEqualTo("REVTYPE"); + } + + private AuditEntitiesConfiguration getAuditConfiguration(EntityManagerFactory emf) { + return ((((SessionFactoryImplementor) emf + .unwrap(SessionFactoryImpl.class)) + .getServiceRegistry()).getParentServiceRegistry()) + .getService(EnversService.class).getAuditEntitiesConfiguration(); + } +} diff --git a/extensions/hibernate-envers/deployment/src/test/resources/application-multiple-pu.properties b/extensions/hibernate-envers/deployment/src/test/resources/application-multiple-pu.properties new file mode 100644 index 0000000000000..25ed7d5caebe5 --- /dev/null +++ b/extensions/hibernate-envers/deployment/src/test/resources/application-multiple-pu.properties @@ -0,0 +1,28 @@ +quarkus.datasource.db-kind=h2 + +#quarkus.hibernate-orm.log.sql=true +quarkus.hibernate-orm.database.generation=drop-and-create +quarkus.hibernate-orm.packages=io.quarkus.hibernate.orm.envers +quarkus.hibernate-envers.audit-table-suffix= +quarkus.hibernate-envers.audit-table-prefix=P_ +quarkus.hibernate-envers.revision-field-name=GEN +quarkus.hibernate-envers.revision-type-field-name=GEN_TYPE + +quarkus.datasource."db1".db-kind=h2 +quarkus.hibernate-orm."db1".database.generation=drop-and-create +quarkus.hibernate-orm."db1".datasource=db1 +quarkus.hibernate-orm."db1".packages=io.quarkus.hibernate.orm.envers +quarkus.hibernate-envers."db1".audit-table-suffix= +quarkus.hibernate-envers."db1".audit-table-prefix=T_ +quarkus.hibernate-envers."db1".revision-field-name=REVISION +quarkus.hibernate-envers."db1".revision-type-field-name=REV_TYPE + +quarkus.datasource."db2".db-kind=h2 +quarkus.hibernate-orm."db2".database.generation=drop-and-create +quarkus.hibernate-orm."db2".datasource=db2 +quarkus.hibernate-orm."db2".packages=io.quarkus.hibernate.orm.envers +quarkus.hibernate-envers."db2".audit-table-suffix= +quarkus.hibernate-envers."db2".audit-table-prefix=R_ +quarkus.hibernate-envers."db2".revision-field-name=REV +quarkus.hibernate-envers."db2".revision-type-field-name=REVTYPE + diff --git a/extensions/hibernate-envers/runtime/src/main/java/io/quarkus/hibernate/envers/HibernateEnversBuildTimeConfig.java b/extensions/hibernate-envers/runtime/src/main/java/io/quarkus/hibernate/envers/HibernateEnversBuildTimeConfig.java index bfe1b16a289ac..5c48492b5508e 100644 --- a/extensions/hibernate-envers/runtime/src/main/java/io/quarkus/hibernate/envers/HibernateEnversBuildTimeConfig.java +++ b/extensions/hibernate-envers/runtime/src/main/java/io/quarkus/hibernate/envers/HibernateEnversBuildTimeConfig.java @@ -1,7 +1,6 @@ package io.quarkus.hibernate.envers; import java.util.Map; -import java.util.Optional; import java.util.TreeMap; import io.quarkus.hibernate.orm.runtime.PersistenceUnitUtil; @@ -50,163 +49,6 @@ public Map getAllPersiste return map; } - /** - * Enable store_data_at_delete feature. - * Maps to {@link org.hibernate.envers.configuration.EnversSettings#STORE_DATA_AT_DELETE}. - */ - @ConfigItem(defaultValue = "false") - public boolean storeDataAtDelete; - - /** - * Defines a suffix for historical data table. Defaults to {@literal _AUD}. - * Maps to {@link org.hibernate.envers.configuration.EnversSettings#AUDIT_TABLE_SUFFIX}. - */ - @ConfigItem(defaultValue = "_AUD") - public Optional auditTableSuffix; - - /** - * Defines a prefix for historical data table. Default is the empty string. - * Maps to {@link org.hibernate.envers.configuration.EnversSettings#AUDIT_TABLE_PREFIX}. - */ - @ConfigItem(defaultValue = "") - public Optional auditTablePrefix; - - /** - * Revision field name. Defaults to {@literal REV}. - * Maps to {@link org.hibernate.envers.configuration.EnversSettings#REVISION_FIELD_NAME}. - */ - @ConfigItem(defaultValue = "REV") - public Optional revisionFieldName; - - /** - * Revision type field name. Defaults to {@literal REVTYPE}. - * Maps to {@link org.hibernate.envers.configuration.EnversSettings#REVISION_TYPE_FIELD_NAME}. - */ - @ConfigItem(defaultValue = "REVTYPE") - public Optional revisionTypeFieldName; - - /** - * Enable the revision_on_collection_change feature. - * Maps to {@link org.hibernate.envers.configuration.EnversSettings#REVISION_ON_COLLECTION_CHANGE}. - */ - @ConfigItem(defaultValue = "true") - public boolean revisionOnCollectionChange; - - /** - * Enable the do_not_audit_optimistic_locking_field feature. - * Maps to {@link org.hibernate.envers.configuration.EnversSettings#DO_NOT_AUDIT_OPTIMISTIC_LOCKING_FIELD}. - */ - @ConfigItem(defaultValue = "true") - public boolean doNotAuditOptimisticLockingField; - - /** - * Defines the default schema of where audit tables are to be created. - * Maps to {@link org.hibernate.envers.configuration.EnversSettings#DEFAULT_SCHEMA}. - */ - @ConfigItem(defaultValue = "") - public Optional defaultSchema; - - /** - * Defines the default catalog of where audit tables are to be created. - * Maps to {@link org.hibernate.envers.configuration.EnversSettings#DEFAULT_CATALOG}. - */ - @ConfigItem(defaultValue = "") - public Optional defaultCatalog; - - /** - * Enables the track_entities_changed_in_revision feature. - * Maps to {@link org.hibernate.envers.configuration.EnversSettings#TRACK_ENTITIES_CHANGED_IN_REVISION}. - */ - @ConfigItem(defaultValue = "false") - public boolean trackEntitiesChangedInRevision; - - /** - * Enables the use_revision_entity_with_native_id feature. - * Maps to {@link org.hibernate.envers.configuration.EnversSettings#USE_REVISION_ENTITY_WITH_NATIVE_ID}. - */ - @ConfigItem(defaultValue = "true") - public boolean useRevisionEntityWithNativeId; - - /** - * Enables the global_with_modified_flag feature. - * Maps to {@link org.hibernate.envers.configuration.EnversSettings#GLOBAL_WITH_MODIFIED_FLAG}. - */ - @ConfigItem(defaultValue = "false") - public boolean globalWithModifiedFlag; - - /** - * Defines the suffix to be used for modified flag columns. Defaults to {@literal _MOD}. - * Maps to {@link org.hibernate.envers.configuration.EnversSettings#MODIFIED_FLAG_SUFFIX} - */ - @ConfigItem(defaultValue = "_MOD") - public Optional modifiedFlagSuffix; - - /** - * Defines the fully qualified class name of a user defined revision listener. - * Maps to {@link org.hibernate.envers.configuration.EnversSettings#REVISION_LISTENER}. - */ - @ConfigItem - public Optional revisionListener; - - /** - * Defines the fully qualified class name of the audit strategy to be used. - * - * Maps to {@link org.hibernate.envers.configuration.EnversSettings#AUDIT_STRATEGY}. - */ - @ConfigItem(defaultValue = "org.hibernate.envers.strategy.DefaultAuditStrategy") - public Optional auditStrategy; - - /** - * Defines the property name for the audit entity's composite primary key. Defaults to {@literal originalId}. - * Maps to {@link org.hibernate.envers.configuration.EnversSettings#ORIGINAL_ID_PROP_NAME}. - */ - @ConfigItem(defaultValue = "originalId") - public Optional originalIdPropName; - - /** - * Defines the column name that holds the end revision number in audit entities. Defaults to {@literal REVEND}. - * Maps to {@link org.hibernate.envers.configuration.EnversSettings#AUDIT_STRATEGY_VALIDITY_END_REV_FIELD_NAME}. - */ - @ConfigItem(defaultValue = "REVEND") - public Optional auditStrategyValidityEndRevFieldName; - - /** - * Enables the audit_strategy_validity_store_revend_timestamp feature. - * Maps to {@link org.hibernate.envers.configuration.EnversSettings#AUDIT_STRATEGY_VALIDITY_STORE_REVEND_TIMESTAMP}. - */ - @ConfigItem(defaultValue = "false") - public boolean auditStrategyValidityStoreRevendTimestamp; - - /** - * Defines the column name of the revision end timestamp in the audit tables. Defaults to {@literal REVEND_TSTMP}. - * Maps to {@link org.hibernate.envers.configuration.EnversSettings#AUDIT_STRATEGY_VALIDITY_REVEND_TIMESTAMP_FIELD_NAME}. - */ - @ConfigItem(defaultValue = "REVEND_TSTMP") - public Optional auditStrategyValidityRevendTimestampFieldName; - - /** - * Defines the name of the column used for storing collection ordinal values for embeddable elements. - * Defaults to {@literal SETORDINAL}. - * Maps to {@link org.hibernate.envers.configuration.EnversSettings#EMBEDDABLE_SET_ORDINAL_FIELD_NAME}. - */ - @ConfigItem(defaultValue = "SETORDINAL") - public Optional embeddableSetOrdinalFieldName; - - /** - * Enables the allow_identifier_reuse feature. - * Maps to {@link org.hibernate.envers.configuration.EnversSettings#ALLOW_IDENTIFIER_REUSE}. - */ - @ConfigItem(defaultValue = "false") - public boolean allowIdentifierReuse; - - /** - * Defines the naming strategy to be used for modified columns. - * Defaults to {@literal org.hibernate.envers.boot.internal.LegacyModifiedColumnNamingStrategy}. - * Maps to {@link org.hibernate.envers.configuration.EnversSettings#MODIFIED_COLUMN_NAMING_STRATEGY}. - */ - @ConfigItem(defaultValue = "org.hibernate.envers.boot.internal.LegacyModifiedColumnNamingStrategy") - public Optional modifiedColumnNamingStrategy; - public static String extensionPropertyKey(String radical) { return "quarkus.hibernate-envers." + radical; } diff --git a/extensions/hibernate-envers/runtime/src/main/java/io/quarkus/hibernate/envers/HibernateEnversBuildTimeConfigPersistenceUnit.java b/extensions/hibernate-envers/runtime/src/main/java/io/quarkus/hibernate/envers/HibernateEnversBuildTimeConfigPersistenceUnit.java index 5c439cb39cc41..8645657bd5037 100644 --- a/extensions/hibernate-envers/runtime/src/main/java/io/quarkus/hibernate/envers/HibernateEnversBuildTimeConfigPersistenceUnit.java +++ b/extensions/hibernate-envers/runtime/src/main/java/io/quarkus/hibernate/envers/HibernateEnversBuildTimeConfigPersistenceUnit.java @@ -27,4 +27,161 @@ public class HibernateEnversBuildTimeConfigPersistenceUnit { @ConfigItem(defaultValueDocumentation = "'true' if Hibernate ORM is enabled; 'false' otherwise") public Optional active = Optional.empty(); + /** + * Enable store_data_at_delete feature. + * Maps to {@link org.hibernate.envers.configuration.EnversSettings#STORE_DATA_AT_DELETE}. + */ + @ConfigItem(defaultValue = "false") + public boolean storeDataAtDelete; + + /** + * Defines a suffix for historical data table. Defaults to {@literal _AUD}. + * Maps to {@link org.hibernate.envers.configuration.EnversSettings#AUDIT_TABLE_SUFFIX}. + */ + @ConfigItem(defaultValue = "_AUD") + public Optional auditTableSuffix; + + /** + * Defines a prefix for historical data table. Default is the empty string. + * Maps to {@link org.hibernate.envers.configuration.EnversSettings#AUDIT_TABLE_PREFIX}. + */ + @ConfigItem(defaultValue = "") + public Optional auditTablePrefix; + + /** + * Revision field name. Defaults to {@literal REV}. + * Maps to {@link org.hibernate.envers.configuration.EnversSettings#REVISION_FIELD_NAME}. + */ + @ConfigItem(defaultValue = "REV") + public Optional revisionFieldName; + + /** + * Revision type field name. Defaults to {@literal REVTYPE}. + * Maps to {@link org.hibernate.envers.configuration.EnversSettings#REVISION_TYPE_FIELD_NAME}. + */ + @ConfigItem(defaultValue = "REVTYPE") + public Optional revisionTypeFieldName; + + /** + * Enable the revision_on_collection_change feature. + * Maps to {@link org.hibernate.envers.configuration.EnversSettings#REVISION_ON_COLLECTION_CHANGE}. + */ + @ConfigItem(defaultValue = "true") + public boolean revisionOnCollectionChange; + + /** + * Enable the do_not_audit_optimistic_locking_field feature. + * Maps to {@link org.hibernate.envers.configuration.EnversSettings#DO_NOT_AUDIT_OPTIMISTIC_LOCKING_FIELD}. + */ + @ConfigItem(defaultValue = "true") + public boolean doNotAuditOptimisticLockingField; + + /** + * Defines the default schema of where audit tables are to be created. + * Maps to {@link org.hibernate.envers.configuration.EnversSettings#DEFAULT_SCHEMA}. + */ + @ConfigItem(defaultValue = "") + public Optional defaultSchema; + + /** + * Defines the default catalog of where audit tables are to be created. + * Maps to {@link org.hibernate.envers.configuration.EnversSettings#DEFAULT_CATALOG}. + */ + @ConfigItem(defaultValue = "") + public Optional defaultCatalog; + + /** + * Enables the track_entities_changed_in_revision feature. + * Maps to {@link org.hibernate.envers.configuration.EnversSettings#TRACK_ENTITIES_CHANGED_IN_REVISION}. + */ + @ConfigItem(defaultValue = "false") + public boolean trackEntitiesChangedInRevision; + + /** + * Enables the use_revision_entity_with_native_id feature. + * Maps to {@link org.hibernate.envers.configuration.EnversSettings#USE_REVISION_ENTITY_WITH_NATIVE_ID}. + */ + @ConfigItem(defaultValue = "true") + public boolean useRevisionEntityWithNativeId; + + /** + * Enables the global_with_modified_flag feature. + * Maps to {@link org.hibernate.envers.configuration.EnversSettings#GLOBAL_WITH_MODIFIED_FLAG}. + */ + @ConfigItem(defaultValue = "false") + public boolean globalWithModifiedFlag; + + /** + * Defines the suffix to be used for modified flag columns. Defaults to {@literal _MOD}. + * Maps to {@link org.hibernate.envers.configuration.EnversSettings#MODIFIED_FLAG_SUFFIX} + */ + @ConfigItem(defaultValue = "_MOD") + public Optional modifiedFlagSuffix; + + /** + * Defines the fully qualified class name of a user defined revision listener. + * Maps to {@link org.hibernate.envers.configuration.EnversSettings#REVISION_LISTENER}. + */ + @ConfigItem + public Optional revisionListener; + + /** + * Defines the fully qualified class name of the audit strategy to be used. + * + * Maps to {@link org.hibernate.envers.configuration.EnversSettings#AUDIT_STRATEGY}. + */ + @ConfigItem(defaultValue = "org.hibernate.envers.strategy.DefaultAuditStrategy") + public Optional auditStrategy; + + /** + * Defines the property name for the audit entity's composite primary key. Defaults to {@literal originalId}. + * Maps to {@link org.hibernate.envers.configuration.EnversSettings#ORIGINAL_ID_PROP_NAME}. + */ + @ConfigItem(defaultValue = "originalId") + public Optional originalIdPropName; + + /** + * Defines the column name that holds the end revision number in audit entities. Defaults to {@literal REVEND}. + * Maps to {@link org.hibernate.envers.configuration.EnversSettings#AUDIT_STRATEGY_VALIDITY_END_REV_FIELD_NAME}. + */ + @ConfigItem(defaultValue = "REVEND") + public Optional auditStrategyValidityEndRevFieldName; + + /** + * Enables the audit_strategy_validity_store_revend_timestamp feature. + * Maps to {@link org.hibernate.envers.configuration.EnversSettings#AUDIT_STRATEGY_VALIDITY_STORE_REVEND_TIMESTAMP}. + */ + @ConfigItem(defaultValue = "false") + public boolean auditStrategyValidityStoreRevendTimestamp; + + /** + * Defines the column name of the revision end timestamp in the audit tables. Defaults to {@literal REVEND_TSTMP}. + * Maps to {@link org.hibernate.envers.configuration.EnversSettings#AUDIT_STRATEGY_VALIDITY_REVEND_TIMESTAMP_FIELD_NAME}. + */ + @ConfigItem(defaultValue = "REVEND_TSTMP") + public Optional auditStrategyValidityRevendTimestampFieldName; + + /** + * Defines the name of the column used for storing collection ordinal values for embeddable elements. + * Defaults to {@literal SETORDINAL}. + * Maps to {@link org.hibernate.envers.configuration.EnversSettings#EMBEDDABLE_SET_ORDINAL_FIELD_NAME}. + */ + @ConfigItem(defaultValue = "SETORDINAL") + public Optional embeddableSetOrdinalFieldName; + + /** + * Enables the allow_identifier_reuse feature. + * Maps to {@link org.hibernate.envers.configuration.EnversSettings#ALLOW_IDENTIFIER_REUSE}. + */ + @ConfigItem(defaultValue = "false") + public boolean allowIdentifierReuse; + + /** + * Defines the naming strategy to be used for modified columns. + * Defaults to {@literal org.hibernate.envers.boot.internal.LegacyModifiedColumnNamingStrategy}. + * Maps to {@link org.hibernate.envers.configuration.EnversSettings#MODIFIED_COLUMN_NAMING_STRATEGY}. + */ + @ConfigItem(defaultValue = "org.hibernate.envers.boot.internal.LegacyModifiedColumnNamingStrategy") + public Optional modifiedColumnNamingStrategy; + } diff --git a/extensions/hibernate-envers/runtime/src/main/java/io/quarkus/hibernate/envers/HibernateEnversRecorder.java b/extensions/hibernate-envers/runtime/src/main/java/io/quarkus/hibernate/envers/HibernateEnversRecorder.java index b6df7ccd5d8d1..6bcc24e51088f 100644 --- a/extensions/hibernate-envers/runtime/src/main/java/io/quarkus/hibernate/envers/HibernateEnversRecorder.java +++ b/extensions/hibernate-envers/runtime/src/main/java/io/quarkus/hibernate/envers/HibernateEnversRecorder.java @@ -32,43 +32,47 @@ private HibernateEnversIntegrationStaticInitListener(HibernateEnversBuildTimeCon @Override public void contributeBootProperties(BiConsumer propertyCollector) { var puConfig = buildTimeConfig.getAllPersistenceUnitConfigsAsMap().get(puName); - if (puConfig != null && puConfig.active.isPresent() && !puConfig.active.get()) { + if (puConfig == null) { + // Leave Envers unconfigured, but still activate it. + return; + } + if (puConfig.active.isPresent() && !puConfig.active.get()) { propertyCollector.accept(EnversService.INTEGRATION_ENABLED, "false"); // Do not process other properties: Hibernate Envers is inactive anyway. return; } - addConfig(propertyCollector, EnversSettings.STORE_DATA_AT_DELETE, buildTimeConfig.storeDataAtDelete); - addConfig(propertyCollector, EnversSettings.AUDIT_TABLE_SUFFIX, buildTimeConfig.auditTableSuffix); - addConfig(propertyCollector, EnversSettings.AUDIT_TABLE_PREFIX, buildTimeConfig.auditTablePrefix); - addConfig(propertyCollector, EnversSettings.REVISION_FIELD_NAME, buildTimeConfig.revisionFieldName); - addConfig(propertyCollector, EnversSettings.REVISION_TYPE_FIELD_NAME, buildTimeConfig.revisionTypeFieldName); + addConfig(propertyCollector, EnversSettings.STORE_DATA_AT_DELETE, puConfig.storeDataAtDelete); + addConfig(propertyCollector, EnversSettings.AUDIT_TABLE_SUFFIX, puConfig.auditTableSuffix); + addConfig(propertyCollector, EnversSettings.AUDIT_TABLE_PREFIX, puConfig.auditTablePrefix); + addConfig(propertyCollector, EnversSettings.REVISION_FIELD_NAME, puConfig.revisionFieldName); + addConfig(propertyCollector, EnversSettings.REVISION_TYPE_FIELD_NAME, puConfig.revisionTypeFieldName); addConfig(propertyCollector, EnversSettings.REVISION_ON_COLLECTION_CHANGE, - buildTimeConfig.revisionOnCollectionChange); + puConfig.revisionOnCollectionChange); addConfig(propertyCollector, EnversSettings.DO_NOT_AUDIT_OPTIMISTIC_LOCKING_FIELD, - buildTimeConfig.doNotAuditOptimisticLockingField); - addConfig(propertyCollector, EnversSettings.DEFAULT_SCHEMA, buildTimeConfig.defaultSchema); - addConfig(propertyCollector, EnversSettings.DEFAULT_CATALOG, buildTimeConfig.defaultCatalog); + puConfig.doNotAuditOptimisticLockingField); + addConfig(propertyCollector, EnversSettings.DEFAULT_SCHEMA, puConfig.defaultSchema); + addConfig(propertyCollector, EnversSettings.DEFAULT_CATALOG, puConfig.defaultCatalog); addConfig(propertyCollector, EnversSettings.TRACK_ENTITIES_CHANGED_IN_REVISION, - buildTimeConfig.trackEntitiesChangedInRevision); + puConfig.trackEntitiesChangedInRevision); addConfig(propertyCollector, EnversSettings.USE_REVISION_ENTITY_WITH_NATIVE_ID, - buildTimeConfig.useRevisionEntityWithNativeId); - addConfig(propertyCollector, EnversSettings.GLOBAL_WITH_MODIFIED_FLAG, buildTimeConfig.globalWithModifiedFlag); - addConfig(propertyCollector, EnversSettings.MODIFIED_FLAG_SUFFIX, buildTimeConfig.modifiedFlagSuffix); - addConfigIfPresent(propertyCollector, EnversSettings.REVISION_LISTENER, buildTimeConfig.revisionListener); - addConfigIfPresent(propertyCollector, EnversSettings.AUDIT_STRATEGY, buildTimeConfig.auditStrategy); - addConfigIfPresent(propertyCollector, EnversSettings.ORIGINAL_ID_PROP_NAME, buildTimeConfig.originalIdPropName); + puConfig.useRevisionEntityWithNativeId); + addConfig(propertyCollector, EnversSettings.GLOBAL_WITH_MODIFIED_FLAG, puConfig.globalWithModifiedFlag); + addConfig(propertyCollector, EnversSettings.MODIFIED_FLAG_SUFFIX, puConfig.modifiedFlagSuffix); + addConfigIfPresent(propertyCollector, EnversSettings.REVISION_LISTENER, puConfig.revisionListener); + addConfigIfPresent(propertyCollector, EnversSettings.AUDIT_STRATEGY, puConfig.auditStrategy); + addConfigIfPresent(propertyCollector, EnversSettings.ORIGINAL_ID_PROP_NAME, puConfig.originalIdPropName); addConfigIfPresent(propertyCollector, EnversSettings.AUDIT_STRATEGY_VALIDITY_END_REV_FIELD_NAME, - buildTimeConfig.auditStrategyValidityEndRevFieldName); + puConfig.auditStrategyValidityEndRevFieldName); addConfig(propertyCollector, EnversSettings.AUDIT_STRATEGY_VALIDITY_STORE_REVEND_TIMESTAMP, - buildTimeConfig.auditStrategyValidityStoreRevendTimestamp); + puConfig.auditStrategyValidityStoreRevendTimestamp); addConfigIfPresent(propertyCollector, EnversSettings.AUDIT_STRATEGY_VALIDITY_REVEND_TIMESTAMP_FIELD_NAME, - buildTimeConfig.auditStrategyValidityRevendTimestampFieldName); + puConfig.auditStrategyValidityRevendTimestampFieldName); addConfigIfPresent(propertyCollector, EnversSettings.EMBEDDABLE_SET_ORDINAL_FIELD_NAME, - buildTimeConfig.embeddableSetOrdinalFieldName); - addConfig(propertyCollector, EnversSettings.ALLOW_IDENTIFIER_REUSE, buildTimeConfig.allowIdentifierReuse); + puConfig.embeddableSetOrdinalFieldName); + addConfig(propertyCollector, EnversSettings.ALLOW_IDENTIFIER_REUSE, puConfig.allowIdentifierReuse); addConfigIfPresent(propertyCollector, EnversSettings.MODIFIED_COLUMN_NAMING_STRATEGY, - buildTimeConfig.modifiedColumnNamingStrategy); + puConfig.modifiedColumnNamingStrategy); } public static void addConfig(BiConsumer propertyCollector, String configPath, T value) {