Package su.onno.spring
Class OnnoAutoConfiguration
java.lang.Object
org.springframework.data.jdbc.repository.config.AbstractJdbcConfiguration
su.onno.spring.OnnoAutoConfiguration
- All Implemented Interfaces:
org.springframework.beans.factory.Aware,org.springframework.context.ApplicationContextAware
@AutoConfiguration(after=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration.class)
@EnableConfigurationProperties(OnnoProperties.class)
@ConditionalOnBean(javax.sql.DataSource.class)
public class OnnoAutoConfiguration
extends org.springframework.data.jdbc.repository.config.AbstractJdbcConfiguration
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbackgroundJobs(org.jobrunr.scheduling.JobScheduler jobScheduler) clusterEntityChangeRelay(ClusterEventBus clusterEventBus) Publish side of cross-node live-UI sync: relays eachEntityChangedEventonto theClusterEventBusfor peer nodes (no-op with the default bus).Local-only fallbackClusterEventBus.clusterProcessTaskRelay(ClusterEventBus clusterEventBus) Relays audience-scoped process-task inbox invalidations to peer nodes.constantManager(ConstantPersistence constantPersistence, MetadataRegistry registry) constantPersistence(org.jdbi.v3.core.Jdbi jdbi) deletionAwareFinderValidator(org.springframework.context.ApplicationContext context, OnnoProperties properties) Boot-time guardrail that flags catalog/document repository finders which may return soft-deleted rows into business logic (seeDeletionAwareFinderValidator).entityChangePublisher(org.springframework.context.ApplicationEventPublisher applicationEventPublisher) Bridges the framework'sEntityChangePublisherSPI onto Spring'sApplicationEventPublisher, so arepository.save/deletepublishes anEntityChangedEventthat application code can@EventListener— the same event the generic controllers emit, so both write paths are observable through one hook (issues #28, #29).informationRegisterRepositoryMap(org.jdbi.v3.core.Jdbi jdbi, MetadataRegistry registry) org.springframework.data.jdbc.core.convert.JdbcConverterjdbcConverter(org.springframework.data.jdbc.core.mapping.JdbcMappingContext mappingContext, org.springframework.jdbc.core.namedparam.NamedParameterJdbcOperations operations, org.springframework.data.jdbc.core.convert.RelationResolver relationResolver, org.springframework.data.jdbc.core.convert.JdbcCustomConversions conversions, org.springframework.data.relational.core.dialect.Dialect dialect) Replaces the defaultJdbcConverterwithOnnoJdbcConverter, which maps framework enums to theirUUIDcolumn type so@Enumerationattributes persist throughrepository.save(...)(issue #26).org.springframework.data.jdbc.core.mapping.JdbcMappingContextjdbcMappingContext(Optional<org.springframework.data.relational.core.mapping.NamingStrategy> namingStrategy, org.springframework.data.jdbc.core.convert.JdbcCustomConversions customConversions, org.springframework.data.relational.RelationalManagedTypes jdbcManagedTypes) org.jdbi.v3.core.Jdbijdbi(DataSource dataSource) metadataRegistry(OnnoProperties properties, org.springframework.context.ApplicationContext context) numberGenerator(org.jdbi.v3.core.Jdbi jdbi) onnoAfterConvertCallback(MetadataRegistry registry, SecretCipher secretCipher) onnoAfterDeleteCallback(OutboxWriter outboxWriter, MetadataRegistry registry, EntityChangePublisher entityChangePublisher) onnoAfterSaveCallback(OutboxWriter outboxWriter, MetadataRegistry registry, SecretCipher secretCipher, EntityChangePublisher entityChangePublisher, OnnoMetrics metrics) onnoBeforeConvertCallback(MetadataRegistry registry, NumberGenerator numberGenerator, SecretCipher secretCipher, OnnoMetrics metrics) onnoBeforeDeleteCallback(OutboxWriter outboxWriter, MetadataRegistry registry, EntityChangePublisher entityChangePublisher) onnoMetrics(org.springframework.beans.factory.ObjectProvider<io.micrometer.core.instrument.MeterRegistry> meterRegistry) org.springframework.data.relational.core.mapping.NamingStrategyoutboxWriter(org.jdbi.v3.core.Jdbi jdbi) postedDocumentLoader(MetadataRegistry registry, org.springframework.context.ApplicationContext context) postEventPublisher(org.springframework.context.ApplicationEventPublisher applicationEventPublisher) Bridges the framework'sPostEventPublisherSPI onto Spring'sApplicationEventPublisher, so a successful post/unpost publishes aDocumentPostedEvent/DocumentUnpostedEventthat application code can@EventListener.postingService(org.jdbi.v3.core.Jdbi jdbi, MetadataRegistry registry, Map<Class<?>, RegisterRepositoryImpl<?>> repositoryImplMap, OutboxWriter outboxWriter, PostEventPublisher postEventPublisher, PostedDocumentLoader postedDocumentLoader, OnnoMetrics metrics) processDefinitions(org.springframework.beans.factory.ObjectProvider<ProcessDefinition<?, ?>> definitions, org.springframework.beans.factory.ObjectProvider<ProcessDefinitionMigration<?, ?, ?, ?>> migrations) Validates and indexes every application-provided typed process definition.processEngine(org.jdbi.v3.core.Jdbi jdbi, ProcessDefinitions definitions, MetadataRegistry metadataRegistry, ProcessPayloadCodec payloadCodec, ProcessEventPublisher events) Durable transactional process runtime backed by the framework-managed process tables.processEventPublisher(org.springframework.context.ApplicationEventPublisher applicationEventPublisher) Bridges durable process mutations onto Spring after their database transaction commits.processPayloadCodec(org.springframework.beans.factory.ObjectProvider<com.fasterxml.jackson.databind.ObjectMapper> objectMapper) Application-configured Jackson boundary used by the core durable process runtime.processPendingWorkRegistrar(ProcessEngine processEngine, org.jobrunr.scheduling.JobScheduler jobScheduler) Durable wake-up for due process timers and completed subprocess waits.refResolver(org.springframework.context.ApplicationContext applicationContext) Map<Class<?>, RegisterPersistence<?>> registerPersistenceMap(org.jdbi.v3.core.Jdbi jdbi, MetadataRegistry registry) Map<Class<?>, RegisterRepositoryImpl<?>> registerRepositoryImplMap(Map<Class<?>, RegisterPersistence<?>> persistenceMap) scheduledJobRegistrar(org.springframework.context.ApplicationContext applicationContext, org.jobrunr.scheduling.JobScheduler jobScheduler) schemaInitializer(DataSource dataSource, OnnoProperties properties, org.springframework.context.ApplicationContext context, org.springframework.beans.factory.ObjectProvider<AppMigration> migrations) secretCipher(OnnoProperties properties) The default (Viewport.DESKTOP) layout, kept as a bean for consumers that aren't viewport-aware (identity resolution, the metadata API).uiLayoutResolver(MetadataRegistry registry) protected List<?> Methods inherited from class org.springframework.data.jdbc.repository.config.AbstractJdbcConfiguration
dataAccessStrategyBean, getInitialEntitySet, getMappingBasePackages, jdbcAggregateTemplate, jdbcCustomConversions, jdbcDialect, jdbcManagedTypes, scanForEntities, setApplicationContext
-
Constructor Details
-
OnnoAutoConfiguration
public OnnoAutoConfiguration()
-
-
Method Details
-
onnoNamingStrategy
@Bean public org.springframework.data.relational.core.mapping.NamingStrategy onnoNamingStrategy() -
userConverters
- Overrides:
userConvertersin classorg.springframework.data.jdbc.repository.config.AbstractJdbcConfiguration
-
jdbcMappingContext
public org.springframework.data.jdbc.core.mapping.JdbcMappingContext jdbcMappingContext(Optional<org.springframework.data.relational.core.mapping.NamingStrategy> namingStrategy, org.springframework.data.jdbc.core.convert.JdbcCustomConversions customConversions, org.springframework.data.relational.RelationalManagedTypes jdbcManagedTypes) - Overrides:
jdbcMappingContextin classorg.springframework.data.jdbc.repository.config.AbstractJdbcConfiguration
-
jdbcConverter
public org.springframework.data.jdbc.core.convert.JdbcConverter jdbcConverter(org.springframework.data.jdbc.core.mapping.JdbcMappingContext mappingContext, org.springframework.jdbc.core.namedparam.NamedParameterJdbcOperations operations, @Lazy org.springframework.data.jdbc.core.convert.RelationResolver relationResolver, org.springframework.data.jdbc.core.convert.JdbcCustomConversions conversions, org.springframework.data.relational.core.dialect.Dialect dialect) Replaces the defaultJdbcConverterwithOnnoJdbcConverter, which maps framework enums to theirUUIDcolumn type so@Enumerationattributes persist throughrepository.save(...)(issue #26). The body mirrorsAbstractJdbcConfiguration.jdbcConverter(org.springframework.data.jdbc.core.mapping.JdbcMappingContext, org.springframework.jdbc.core.namedparam.NamedParameterJdbcOperations, org.springframework.data.jdbc.core.convert.RelationResolver, org.springframework.data.jdbc.core.convert.JdbcCustomConversions, org.springframework.data.relational.core.dialect.Dialect)so all other behaviour is unchanged.- Overrides:
jdbcConverterin classorg.springframework.data.jdbc.repository.config.AbstractJdbcConfiguration
-
schemaInitializer
@Bean public SchemaInitializer schemaInitializer(DataSource dataSource, OnnoProperties properties, org.springframework.context.ApplicationContext context, org.springframework.beans.factory.ObjectProvider<AppMigration> migrations) -
onnoMetrics
@Bean public OnnoMetrics onnoMetrics(org.springframework.beans.factory.ObjectProvider<io.micrometer.core.instrument.MeterRegistry> meterRegistry) -
secretCipher
-
deletionAwareFinderValidator
@Bean public DeletionAwareFinderValidator deletionAwareFinderValidator(org.springframework.context.ApplicationContext context, OnnoProperties properties) Boot-time guardrail that flags catalog/document repository finders which may return soft-deleted rows into business logic (seeDeletionAwareFinderValidator). Controlled byonno.repository.deletion-check(warndefault /strict/off). -
onnoBeforeConvertCallback
@Bean public OnnoBeforeConvertCallback onnoBeforeConvertCallback(MetadataRegistry registry, NumberGenerator numberGenerator, SecretCipher secretCipher, OnnoMetrics metrics) -
entityChangePublisher
@Bean public EntityChangePublisher entityChangePublisher(org.springframework.context.ApplicationEventPublisher applicationEventPublisher) Bridges the framework'sEntityChangePublisherSPI onto Spring'sApplicationEventPublisher, so arepository.save/deletepublishes anEntityChangedEventthat application code can@EventListener— the same event the generic controllers emit, so both write paths are observable through one hook (issues #28, #29). -
processEventPublisher
@Bean public ProcessEventPublisher processEventPublisher(org.springframework.context.ApplicationEventPublisher applicationEventPublisher) Bridges durable process mutations onto Spring after their database transaction commits. -
clusterEventBus
Local-only fallbackClusterEventBus.onno-cluster-startersupplies a PostgresLISTEN/NOTIFYbus (its auto-configuration is orderedbeforethis one, so its@ConditionalOnMissingBeanbean registers first and this one backs off); an application may override either with its own bean. With this no-op default, the cluster relay/bridge are inert and single-node behaviour is unchanged. -
clusterEntityChangeRelay
Publish side of cross-node live-UI sync: relays eachEntityChangedEventonto theClusterEventBusfor peer nodes (no-op with the default bus). -
clusterProcessTaskRelay
Relays audience-scoped process-task inbox invalidations to peer nodes. -
onnoAfterSaveCallback
@Bean public OnnoAfterSaveCallback onnoAfterSaveCallback(OutboxWriter outboxWriter, MetadataRegistry registry, SecretCipher secretCipher, EntityChangePublisher entityChangePublisher, OnnoMetrics metrics) -
onnoAfterConvertCallback
@Bean public OnnoAfterConvertCallback onnoAfterConvertCallback(MetadataRegistry registry, SecretCipher secretCipher) -
onnoBeforeDeleteCallback
@Bean public OnnoBeforeDeleteCallback onnoBeforeDeleteCallback(OutboxWriter outboxWriter, MetadataRegistry registry, EntityChangePublisher entityChangePublisher) -
onnoAfterDeleteCallback
@Bean public OnnoAfterDeleteCallback onnoAfterDeleteCallback(OutboxWriter outboxWriter, MetadataRegistry registry, EntityChangePublisher entityChangePublisher) -
numberGenerator
-
refResolver
@Bean public RefResolver refResolver(org.springframework.context.ApplicationContext applicationContext) -
metadataRegistry
@Bean public MetadataRegistry metadataRegistry(OnnoProperties properties, org.springframework.context.ApplicationContext context) -
jdbi
-
processDefinitions
@Bean public ProcessDefinitions processDefinitions(org.springframework.beans.factory.ObjectProvider<ProcessDefinition<?, ?>> definitions, org.springframework.beans.factory.ObjectProvider<ProcessDefinitionMigration<?, ?, ?, ?>> migrations) Validates and indexes every application-provided typed process definition. -
processPayloadCodec
@Bean @ConditionalOnMissingBean(ProcessPayloadCodec.class) public ProcessPayloadCodec processPayloadCodec(org.springframework.beans.factory.ObjectProvider<com.fasterxml.jackson.databind.ObjectMapper> objectMapper) Application-configured Jackson boundary used by the core durable process runtime. -
processEngine
@Bean @ConditionalOnMissingBean(ProcessEngine.class) public ProcessEngine processEngine(org.jdbi.v3.core.Jdbi jdbi, ProcessDefinitions definitions, MetadataRegistry metadataRegistry, ProcessPayloadCodec payloadCodec, ProcessEventPublisher events) Durable transactional process runtime backed by the framework-managed process tables. -
outboxWriter
-
registerPersistenceMap
@Bean public Map<Class<?>,RegisterPersistence<?>> registerPersistenceMap(org.jdbi.v3.core.Jdbi jdbi, MetadataRegistry registry) -
registerRepositoryImplMap
@Bean public Map<Class<?>,RegisterRepositoryImpl<?>> registerRepositoryImplMap(Map<Class<?>, RegisterPersistence<?>> persistenceMap) -
postEventPublisher
@Bean public PostEventPublisher postEventPublisher(org.springframework.context.ApplicationEventPublisher applicationEventPublisher) Bridges the framework'sPostEventPublisherSPI onto Spring'sApplicationEventPublisher, so a successful post/unpost publishes aDocumentPostedEvent/DocumentUnpostedEventthat application code can@EventListener. This is the Spring-bean-reachable "after post" hook (no Kafka outbox required). -
postedDocumentLoader
@Bean @ConditionalOnMissingBean(PostedDocumentLoader.class) public PostedDocumentLoader postedDocumentLoader(MetadataRegistry registry, org.springframework.context.ApplicationContext context) -
postingService
@Bean public PostingService postingService(org.jdbi.v3.core.Jdbi jdbi, MetadataRegistry registry, Map<Class<?>, RegisterRepositoryImpl<?>> repositoryImplMap, OutboxWriter outboxWriter, PostEventPublisher postEventPublisher, PostedDocumentLoader postedDocumentLoader, OnnoMetrics metrics) -
informationRegisterRepositoryMap
@Bean public Map<Class<?>,InformationRegisterRepositoryImpl<?>> informationRegisterRepositoryMap(org.jdbi.v3.core.Jdbi jdbi, MetadataRegistry registry) -
constantPersistence
-
constantManager
@Bean public ConstantManager constantManager(ConstantPersistence constantPersistence, MetadataRegistry registry) -
backgroundJobs
@Bean @ConditionalOnBean(org.jobrunr.scheduling.JobScheduler.class) public BackgroundJobs backgroundJobs(org.jobrunr.scheduling.JobScheduler jobScheduler) -
scheduledJobRegistrar
@Bean @ConditionalOnBean(org.jobrunr.scheduling.JobScheduler.class) public ScheduledJobRegistrar scheduledJobRegistrar(org.springframework.context.ApplicationContext applicationContext, org.jobrunr.scheduling.JobScheduler jobScheduler) -
processPendingWorkRegistrar
@Bean @ConditionalOnBean(org.jobrunr.scheduling.JobScheduler.class) public ProcessPendingWorkRegistrar processPendingWorkRegistrar(ProcessEngine processEngine, org.jobrunr.scheduling.JobScheduler jobScheduler) Durable wake-up for due process timers and completed subprocess waits. -
layoutSet
-
uiLayout
The default (Viewport.DESKTOP) layout, kept as a bean for consumers that aren't viewport-aware (identity resolution, the metadata API). -
uiLayoutResolver
-
uiProfileResolver
-