gitextract_2k8z5qvm/ ├── .github/ │ ├── dependabot.yml │ └── workflows/ │ ├── cd_build.yml │ ├── pull_request.yml │ └── release.yml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── pom.xml ├── settings.xml ├── transactionoutbox-acceptance/ │ ├── pom.xml │ └── src/ │ └── test/ │ └── java/ │ └── com/ │ └── gruelbox/ │ └── transactionoutbox/ │ └── acceptance/ │ ├── TestComplexConfigurationExample.java │ ├── TestH2.java │ ├── TestMSSqlServer2019.java │ ├── TestMSSqlServer2022.java │ ├── TestMySql5.java │ ├── TestMySql8.java │ ├── TestOracle18.java │ ├── TestOracle21.java │ ├── TestPostgres11.java │ ├── TestPostgres12.java │ ├── TestPostgres13.java │ ├── TestPostgres14.java │ ├── TestPostgres15.java │ ├── TestPostgres16.java │ ├── TestRequestSerialization.java │ ├── TestStubbing.java │ └── persistor/ │ ├── TestDefaultPersistorH2.java │ ├── TestDefaultPersistorMSSqlServer2019.java │ ├── TestDefaultPersistorMySql5.java │ ├── TestDefaultPersistorMySql8.java │ ├── TestDefaultPersistorOracle18.java │ └── TestDefaultPersistorPostgres16.java ├── transactionoutbox-core/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── gruelbox/ │ │ └── transactionoutbox/ │ │ ├── AlreadyScheduledException.java │ │ ├── ConnectionProvider.java │ │ ├── DataSourceConnectionProvider.java │ │ ├── DefaultDialect.java │ │ ├── DefaultInvocationSerializer.java │ │ ├── DefaultMigrationManager.java │ │ ├── DefaultPersistor.java │ │ ├── Dialect.java │ │ ├── DriverConnectionProvider.java │ │ ├── ExecutorSubmitter.java │ │ ├── FailedDeserializingInvocation.java │ │ ├── FunctionInstantiator.java │ │ ├── Instantiator.java │ │ ├── Invocation.java │ │ ├── InvocationSerializer.java │ │ ├── Migration.java │ │ ├── MissingOptionalDependencyException.java │ │ ├── NoTransactionActiveException.java │ │ ├── OptimisticLockException.java │ │ ├── ParameterContextTransactionManager.java │ │ ├── Persistor.java │ │ ├── ReflectionInstantiator.java │ │ ├── RuntimeTypeAdapterFactory.java │ │ ├── SQLAction.java │ │ ├── SimpleTransactionManager.java │ │ ├── StubParameterContextTransactionManager.java │ │ ├── StubPersistor.java │ │ ├── StubThreadLocalTransactionManager.java │ │ ├── Submitter.java │ │ ├── ThreadLocalContextTransactionManager.java │ │ ├── ThrowingRunnable.java │ │ ├── ThrowingTransactionalSupplier.java │ │ ├── ThrowingTransactionalWork.java │ │ ├── Transaction.java │ │ ├── TransactionContextPlaceholder.java │ │ ├── TransactionManager.java │ │ ├── TransactionOutbox.java │ │ ├── TransactionOutboxEntry.java │ │ ├── TransactionOutboxImpl.java │ │ ├── TransactionOutboxListener.java │ │ ├── TransactionalInvocation.java │ │ ├── TransactionalSupplier.java │ │ ├── TransactionalWork.java │ │ ├── UncheckedException.java │ │ ├── Validatable.java │ │ ├── Validator.java │ │ └── spi/ │ │ ├── AbstractFullyQualifiedNameInstantiator.java │ │ ├── AbstractThreadLocalTransactionManager.java │ │ ├── ProxyFactory.java │ │ ├── SimpleTransaction.java │ │ └── Utils.java │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── gruelbox/ │ │ └── transactionoutbox/ │ │ ├── AbstractTestDefaultInvocationSerializer.java │ │ ├── TestDefaultInvocationSerializer.java │ │ ├── TestDefaultMigrationManager.java │ │ ├── TestDefaultPersistorConfiguration.java │ │ ├── TestProxyGeneration.java │ │ └── TestValidator.java │ └── resources/ │ └── logback-test.xml ├── transactionoutbox-guice/ │ ├── README.md │ ├── pom.xml │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── gruelbox/ │ │ └── transactionoutbox/ │ │ └── guice/ │ │ └── GuiceInstantiator.java │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── gruelbox/ │ │ └── transactionoutbox/ │ │ └── guice/ │ │ └── acceptance/ │ │ ├── TestGuiceBinding.java │ │ └── TestGuiceInstantiator.java │ └── resources/ │ └── logback-test.xml ├── transactionoutbox-jackson/ │ ├── README.md │ ├── pom.xml │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── gruelbox/ │ │ └── transactionoutbox/ │ │ └── jackson/ │ │ ├── CustomInvocationDeserializer.java │ │ ├── CustomInvocationSerializer.java │ │ ├── JacksonInvocationSerializer.java │ │ ├── TransactionOutboxEntryDeserializer.java │ │ └── TransactionOutboxJacksonModule.java │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── gruelbox/ │ │ └── transactionoutbox/ │ │ └── jackson/ │ │ ├── MonetaryAmount.java │ │ ├── SerializationStressTestInput.java │ │ ├── TestJacksonInvocationSerializer.java │ │ ├── TestTransactionOutboxEntrySerialization.java │ │ └── acceptance/ │ │ └── TestJacksonSerializer.java │ └── resources/ │ └── logback-test.xml ├── transactionoutbox-jooq/ │ ├── README.md │ ├── pom.xml │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── gruelbox/ │ │ └── transactionoutbox/ │ │ └── jooq/ │ │ ├── DefaultJooqTransactionManager.java │ │ ├── JooqTransactionListener.java │ │ ├── JooqTransactionManager.java │ │ └── ThreadLocalJooqTransactionManager.java │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── gruelbox/ │ │ └── transactionoutbox/ │ │ └── jooq/ │ │ └── acceptance/ │ │ ├── AbstractJooqAcceptanceTest.java │ │ ├── AbstractJooqAcceptanceThreadLocalTest.java │ │ ├── JooqTestUtils.java │ │ ├── TestJooqThreadLocalH2.java │ │ ├── TestJooqThreadLocalMSSqlServer2019.java │ │ ├── TestJooqThreadLocalMySql5.java │ │ ├── TestJooqThreadLocalMySql8.java │ │ ├── TestJooqThreadLocalPostgres16.java │ │ ├── TestJooqTransactionManagerWithDefaultProviderAndExplicitlyPassedContext.java │ │ └── TestJooqTransactionManagerWithDefaultProviderAndThreadLocalContext.java │ └── resources/ │ └── logback-test.xml ├── transactionoutbox-quarkus/ │ ├── README.md │ ├── pom.xml │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── gruelbox/ │ │ └── transactionoutbox/ │ │ └── quarkus/ │ │ ├── CdiInstantiator.java │ │ └── QuarkusTransactionManager.java │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── gruelbox/ │ │ └── transactionoutbox/ │ │ └── quarkus/ │ │ └── acceptance/ │ │ ├── ApplicationConfig.java │ │ ├── BusinessService.java │ │ ├── BusinessServiceTest.java │ │ ├── DaoImpl.java │ │ └── RemoteCallService.java │ └── resources/ │ ├── application.properties │ └── db/ │ └── create.sql ├── transactionoutbox-spring/ │ ├── README.md │ ├── pom.xml │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── gruelbox/ │ │ └── transactionoutbox/ │ │ └── spring/ │ │ ├── SpringInstantiator.java │ │ ├── SpringTransactionManager.java │ │ └── SpringTransactionOutboxConfiguration.java │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── gruelbox/ │ │ └── transactionoutbox/ │ │ └── spring/ │ │ ├── SpringTransactionManagerTest.java │ │ ├── example/ │ │ │ ├── multipledatasources/ │ │ │ │ ├── EventuallyConsistentController.java │ │ │ │ ├── ExternalsConfiguration.java │ │ │ │ ├── MultipleDataSourcesTest.java │ │ │ │ ├── TransactionOutboxBackgroundProcessor.java │ │ │ │ ├── TransactionOutboxProperties.java │ │ │ │ ├── TransactionOutboxSpringMultipleDatasourcesDemoApplication.java │ │ │ │ ├── computer/ │ │ │ │ │ ├── Computer.java │ │ │ │ │ ├── ComputerExternalQueueService.java │ │ │ │ │ ├── ComputerRepository.java │ │ │ │ │ └── ComputersDbConfiguration.java │ │ │ │ └── employee/ │ │ │ │ ├── Employee.java │ │ │ │ ├── EmployeeExternalQueueService.java │ │ │ │ ├── EmployeeRepository.java │ │ │ │ └── EmployeesDbConfiguration.java │ │ │ └── simple/ │ │ │ ├── Customer.java │ │ │ ├── CustomerRepository.java │ │ │ ├── EventuallyConsistentController.java │ │ │ ├── EventuallyConsistentControllerTest.java │ │ │ ├── ExternalQueueService.java │ │ │ ├── ExternalsConfiguration.java │ │ │ ├── TransactionOutboxBackgroundProcessor.java │ │ │ ├── TransactionOutboxProperties.java │ │ │ ├── TransactionOutboxSpringDemoApplication.java │ │ │ └── Utils.java │ │ └── it/ │ │ ├── MyRemoteService.java │ │ ├── SpringTransactionManagerIT.java │ │ └── TestApplication.java │ └── resources/ │ ├── META-INF/ │ │ └── persistence.xml │ ├── application.properties │ └── logback-test.xml ├── transactionoutbox-testing/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── gruelbox/ │ │ └── transactionoutbox/ │ │ ├── TestingMode.java │ │ └── testing/ │ │ ├── AbstractAcceptanceTest.java │ │ ├── AbstractPersistorTest.java │ │ ├── BaseTest.java │ │ ├── ClassProcessor.java │ │ ├── InterfaceProcessor.java │ │ ├── LatchListener.java │ │ ├── OrderedEntryListener.java │ │ ├── ProcessedEntryListener.java │ │ └── TestUtils.java │ └── resources/ │ └── logback-test.xml ├── transactionoutbox-virtthreads/ │ ├── pom.xml │ └── src/ │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── gruelbox/ │ │ └── transactionoutbox/ │ │ └── virtthreads/ │ │ ├── AbstractVirtualThreadsTest.java │ │ ├── TestVirtualThreadsH2.java │ │ ├── TestVirtualThreadsH2Jooq.java │ │ ├── TestVirtualThreadsMySql5.java │ │ ├── TestVirtualThreadsMySql8.java │ │ ├── TestVirtualThreadsOracle21.java │ │ └── TestVirtualThreadsPostgres16.java │ └── resources/ │ └── logback-test.xml └── ~/ ├── settings.xml └── toolchains.xml