From 77fcec648a8142622d6344bd80d31653742d5441 Mon Sep 17 00:00:00 2001 From: Dean Chapman Date: Thu, 11 Sep 2025 23:02:44 +0100 Subject: [PATCH 1/2] Refactored to submodules --- app/build.gradle | 4 +- core/build.gradle | 95 ++++++++++++++++ .../java/com/p14n/postevent/Publisher.java | 0 .../p14n/postevent/broker/AsyncExecutor.java | 0 .../postevent/broker/DefaultExecutor.java | 0 .../broker/DefaultMessageBroker.java | 0 .../postevent/broker/EventMessageBroker.java | 0 .../p14n/postevent/broker/MessageBroker.java | 0 .../postevent/broker/MessageSubscriber.java | 0 .../p14n/postevent/broker/SystemEvent.java | 0 .../postevent/broker/SystemEventBroker.java | 0 .../postevent/broker/TransactionalBroker.java | 0 .../postevent/broker/TransactionalEvent.java | 0 .../p14n/postevent/catchup/CatchupServer.java | 0 .../catchup/CatchupServerInterface.java | 0 .../postevent/catchup/CatchupService.java | 0 .../catchup/OneAtATimeBehaviour.java | 0 .../postevent/catchup/PersistentBroker.java | 0 .../catchup/UnprocessedSubmitter.java | 0 .../com/p14n/postevent/data/ConfigData.java | 0 .../java/com/p14n/postevent/data/Event.java | 0 .../p14n/postevent/data/PostEventConfig.java | 0 .../com/p14n/postevent/data/Traceable.java | 0 .../data/UnprocessedEventFinder.java | 0 .../com/p14n/postevent/db/DatabaseSetup.java | 0 .../main/java/com/p14n/postevent/db/SQL.java | 0 .../postevent/processor/OrderedProcessor.java | 0 .../postevent/telemetry/BrokerMetrics.java | 0 .../postevent/telemetry/MapTextMapGetter.java | 0 .../telemetry/OpenTelemetryFunctions.java | 0 .../com/p14n/postevent/CatchupServerTest.java | 0 .../p14n/postevent/CatchupServiceTest.java | 0 .../com/p14n/postevent/DatabaseSetupTest.java | 0 .../postevent/DefaultMessageBrokerTest.java | 0 .../p14n/postevent/PersistentBrokerTest.java | 0 .../postevent/PostgresConnectionTest.java | 0 .../com/p14n/postevent/PublisherTest.java | 0 .../java/com/p14n/postevent/TestUtil.java | 0 .../postevent/UnprocessedEventFinderTest.java | 0 .../postevent/broker/TestAsyncExecutor.java | 0 .../p14n/postevent/example/ExampleUtil.java | 0 .../processor/OrderedProcessorTest.java | 0 debezium/build.gradle | 89 +++++++++++++++ .../com/p14n/postevent/LocalConsumer.java | 0 .../postevent/LocalPersistentConsumer.java | 0 .../postevent/debezium/DebeziumServer.java | 0 .../p14n/postevent/debezium/Functions.java | 0 .../PostgresDebeziumConnectorTest.java | 0 {library => grpc}/build.gradle | 102 ++++-------------- .../com/p14n/postevent/ConsumerServer.java | 0 .../postevent/RemotePersistentConsumer.java | 0 .../remote/MessageBrokerGrpcClient.java | 0 .../remote/MessageBrokerGrpcServer.java | 0 .../catchup/remote/CatchupGrpcClient.java | 0 .../catchup/remote/CatchupGrpcServer.java | 0 .../src/main/proto/catchup.proto | 0 .../src/main/proto/messagebroker.proto | 0 .../com/p14n/postevent/LocalConsumerTest.java | 0 .../MessageBrokerGrpcIntegrationTest.java | 0 .../remote/CatchupGrpcIntegrationTest.java | 0 .../dst/DeterministicConsumerTest.java | 0 .../example/LocalConsumerExample.java | 0 .../LocalPersistentConsumerExample.java | 0 .../example/RemoteConsumerExample.java | 0 settings.gradle | 2 +- 65 files changed, 211 insertions(+), 81 deletions(-) create mode 100644 core/build.gradle rename {library => core}/src/main/java/com/p14n/postevent/Publisher.java (100%) rename {library => core}/src/main/java/com/p14n/postevent/broker/AsyncExecutor.java (100%) rename {library => core}/src/main/java/com/p14n/postevent/broker/DefaultExecutor.java (100%) rename {library => core}/src/main/java/com/p14n/postevent/broker/DefaultMessageBroker.java (100%) rename {library => core}/src/main/java/com/p14n/postevent/broker/EventMessageBroker.java (100%) rename {library => core}/src/main/java/com/p14n/postevent/broker/MessageBroker.java (100%) rename {library => core}/src/main/java/com/p14n/postevent/broker/MessageSubscriber.java (100%) rename {library => core}/src/main/java/com/p14n/postevent/broker/SystemEvent.java (100%) rename {library => core}/src/main/java/com/p14n/postevent/broker/SystemEventBroker.java (100%) rename {library => core}/src/main/java/com/p14n/postevent/broker/TransactionalBroker.java (100%) rename {library => core}/src/main/java/com/p14n/postevent/broker/TransactionalEvent.java (100%) rename {library => core}/src/main/java/com/p14n/postevent/catchup/CatchupServer.java (100%) rename {library => core}/src/main/java/com/p14n/postevent/catchup/CatchupServerInterface.java (100%) rename {library => core}/src/main/java/com/p14n/postevent/catchup/CatchupService.java (100%) rename {library => core}/src/main/java/com/p14n/postevent/catchup/OneAtATimeBehaviour.java (100%) rename {library => core}/src/main/java/com/p14n/postevent/catchup/PersistentBroker.java (100%) rename {library => core}/src/main/java/com/p14n/postevent/catchup/UnprocessedSubmitter.java (100%) rename {library => core}/src/main/java/com/p14n/postevent/data/ConfigData.java (100%) rename {library => core}/src/main/java/com/p14n/postevent/data/Event.java (100%) rename {library => core}/src/main/java/com/p14n/postevent/data/PostEventConfig.java (100%) rename {library => core}/src/main/java/com/p14n/postevent/data/Traceable.java (100%) rename {library => core}/src/main/java/com/p14n/postevent/data/UnprocessedEventFinder.java (100%) rename {library => core}/src/main/java/com/p14n/postevent/db/DatabaseSetup.java (100%) rename {library => core}/src/main/java/com/p14n/postevent/db/SQL.java (100%) rename {library => core}/src/main/java/com/p14n/postevent/processor/OrderedProcessor.java (100%) rename {library => core}/src/main/java/com/p14n/postevent/telemetry/BrokerMetrics.java (100%) rename {library => core}/src/main/java/com/p14n/postevent/telemetry/MapTextMapGetter.java (100%) rename {library => core}/src/main/java/com/p14n/postevent/telemetry/OpenTelemetryFunctions.java (100%) rename {library => core}/src/test/java/com/p14n/postevent/CatchupServerTest.java (100%) rename {library => core}/src/test/java/com/p14n/postevent/CatchupServiceTest.java (100%) rename {library => core}/src/test/java/com/p14n/postevent/DatabaseSetupTest.java (100%) rename {library => core}/src/test/java/com/p14n/postevent/DefaultMessageBrokerTest.java (100%) rename {library => core}/src/test/java/com/p14n/postevent/PersistentBrokerTest.java (100%) rename {library => core}/src/test/java/com/p14n/postevent/PostgresConnectionTest.java (100%) rename {library => core}/src/test/java/com/p14n/postevent/PublisherTest.java (100%) rename {library => core}/src/test/java/com/p14n/postevent/TestUtil.java (100%) rename {library => core}/src/test/java/com/p14n/postevent/UnprocessedEventFinderTest.java (100%) rename {library => core}/src/test/java/com/p14n/postevent/broker/TestAsyncExecutor.java (100%) rename {library => core}/src/test/java/com/p14n/postevent/example/ExampleUtil.java (100%) rename {library => core}/src/test/java/com/p14n/postevent/processor/OrderedProcessorTest.java (100%) create mode 100644 debezium/build.gradle rename {library => debezium}/src/main/java/com/p14n/postevent/LocalConsumer.java (100%) rename {library => debezium}/src/main/java/com/p14n/postevent/LocalPersistentConsumer.java (100%) rename {library => debezium}/src/main/java/com/p14n/postevent/debezium/DebeziumServer.java (100%) rename {library => debezium}/src/main/java/com/p14n/postevent/debezium/Functions.java (100%) rename {library => debezium}/src/test/java/com/p14n/postevent/PostgresDebeziumConnectorTest.java (100%) rename {library => grpc}/build.gradle (57%) rename {library => grpc}/src/main/java/com/p14n/postevent/ConsumerServer.java (100%) rename {library => grpc}/src/main/java/com/p14n/postevent/RemotePersistentConsumer.java (100%) rename {library => grpc}/src/main/java/com/p14n/postevent/broker/remote/MessageBrokerGrpcClient.java (100%) rename {library => grpc}/src/main/java/com/p14n/postevent/broker/remote/MessageBrokerGrpcServer.java (100%) rename {library => grpc}/src/main/java/com/p14n/postevent/catchup/remote/CatchupGrpcClient.java (100%) rename {library => grpc}/src/main/java/com/p14n/postevent/catchup/remote/CatchupGrpcServer.java (100%) rename {library => grpc}/src/main/proto/catchup.proto (100%) rename {library => grpc}/src/main/proto/messagebroker.proto (100%) rename {library => grpc}/src/test/java/com/p14n/postevent/LocalConsumerTest.java (100%) rename {library => grpc}/src/test/java/com/p14n/postevent/broker/remote/MessageBrokerGrpcIntegrationTest.java (100%) rename {library => grpc}/src/test/java/com/p14n/postevent/catchup/remote/CatchupGrpcIntegrationTest.java (100%) rename {library => grpc}/src/test/java/com/p14n/postevent/dst/DeterministicConsumerTest.java (100%) rename {library => grpc}/src/test/java/com/p14n/postevent/example/LocalConsumerExample.java (100%) rename {library => grpc}/src/test/java/com/p14n/postevent/example/LocalPersistentConsumerExample.java (100%) rename {library => grpc}/src/test/java/com/p14n/postevent/example/RemoteConsumerExample.java (100%) diff --git a/app/build.gradle b/app/build.gradle index 1a99336..a6075a9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -17,7 +17,9 @@ repositories { } dependencies { - implementation project(':library') + implementation project(':core') + implementation project(':debezium') + implementation project(':grpc') implementation 'io.opentelemetry:opentelemetry-sdk:1.32.0' implementation 'io.opentelemetry:opentelemetry-api:1.32.0' implementation 'io.opentelemetry.instrumentation:opentelemetry-grpc-1.6:1.32.0-alpha' diff --git a/core/build.gradle b/core/build.gradle new file mode 100644 index 0000000..8c0d204 --- /dev/null +++ b/core/build.gradle @@ -0,0 +1,95 @@ +plugins { + id 'java' + id 'com.adarshr.test-logger' version '4.0.0' +} + +compileJava { + sourceCompatibility = 21 + targetCompatibility = 21 +} + +group = 'com.p14n' +version = '1.0.1-SNAPSHOT' + +repositories { + mavenCentral() +} + +dependencies { + // Core database and connection pooling + implementation 'com.zaxxer:HikariCP:6.2.1' + implementation 'org.slf4j:slf4j-api:2.0.9' + + // Guava for utilities + implementation 'com.google.guava:guava:32.0.0-jre' + + // OpenTelemetry core dependencies + implementation 'io.opentelemetry:opentelemetry-api:1.32.0' + + // Test dependencies + testImplementation platform('io.zonky.test.postgres:embedded-postgres-binaries-bom:16.2.0') + testImplementation 'io.zonky.test:embedded-postgres:2.0.7' + testImplementation 'net.jqwik:jqwik:1.8.2' + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.0' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.0' + testRuntimeOnly 'ch.qos.logback:logback-classic:1.4.11' + testImplementation 'org.mockito:mockito-core:3.12.4' +} + +testlogger { + theme 'standard' + showExceptions true + showStackTraces true + showFullStackTraces false + showCauses true + slowThreshold 2000 + showSummary true + showSimpleNames false + showPassed true + showSkipped true + showFailed true + showStandardStreams false + showPassedStandardStreams true + showSkippedStandardStreams true + showFailedStandardStreams true +} + +test { + useJUnitPlatform { + includeEngines 'jqwik', 'junit-jupiter' + } + maxHeapSize = "1G" + minHeapSize = "512M" + maxParallelForks = 1 + failFast = true + testLogging.showStandardStreams = true +} + +task fastTest( type: Test ) { + useJUnitPlatform { + includeEngines 'junit-jupiter' + exclude '**/dst/**' + } +} + +jar { + manifest { + } +} + +tasks.withType(Jar) { + duplicatesStrategy = DuplicatesStrategy.EXCLUDE +} + +task testJar(type: Jar, dependsOn: testClasses) { + archiveClassifier.set('tests') // For Gradle 6+ + from sourceSets.test.output +} + +configurations { + tests +} + +artifacts { + tests testJar +} \ No newline at end of file diff --git a/library/src/main/java/com/p14n/postevent/Publisher.java b/core/src/main/java/com/p14n/postevent/Publisher.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/Publisher.java rename to core/src/main/java/com/p14n/postevent/Publisher.java diff --git a/library/src/main/java/com/p14n/postevent/broker/AsyncExecutor.java b/core/src/main/java/com/p14n/postevent/broker/AsyncExecutor.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/broker/AsyncExecutor.java rename to core/src/main/java/com/p14n/postevent/broker/AsyncExecutor.java diff --git a/library/src/main/java/com/p14n/postevent/broker/DefaultExecutor.java b/core/src/main/java/com/p14n/postevent/broker/DefaultExecutor.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/broker/DefaultExecutor.java rename to core/src/main/java/com/p14n/postevent/broker/DefaultExecutor.java diff --git a/library/src/main/java/com/p14n/postevent/broker/DefaultMessageBroker.java b/core/src/main/java/com/p14n/postevent/broker/DefaultMessageBroker.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/broker/DefaultMessageBroker.java rename to core/src/main/java/com/p14n/postevent/broker/DefaultMessageBroker.java diff --git a/library/src/main/java/com/p14n/postevent/broker/EventMessageBroker.java b/core/src/main/java/com/p14n/postevent/broker/EventMessageBroker.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/broker/EventMessageBroker.java rename to core/src/main/java/com/p14n/postevent/broker/EventMessageBroker.java diff --git a/library/src/main/java/com/p14n/postevent/broker/MessageBroker.java b/core/src/main/java/com/p14n/postevent/broker/MessageBroker.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/broker/MessageBroker.java rename to core/src/main/java/com/p14n/postevent/broker/MessageBroker.java diff --git a/library/src/main/java/com/p14n/postevent/broker/MessageSubscriber.java b/core/src/main/java/com/p14n/postevent/broker/MessageSubscriber.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/broker/MessageSubscriber.java rename to core/src/main/java/com/p14n/postevent/broker/MessageSubscriber.java diff --git a/library/src/main/java/com/p14n/postevent/broker/SystemEvent.java b/core/src/main/java/com/p14n/postevent/broker/SystemEvent.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/broker/SystemEvent.java rename to core/src/main/java/com/p14n/postevent/broker/SystemEvent.java diff --git a/library/src/main/java/com/p14n/postevent/broker/SystemEventBroker.java b/core/src/main/java/com/p14n/postevent/broker/SystemEventBroker.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/broker/SystemEventBroker.java rename to core/src/main/java/com/p14n/postevent/broker/SystemEventBroker.java diff --git a/library/src/main/java/com/p14n/postevent/broker/TransactionalBroker.java b/core/src/main/java/com/p14n/postevent/broker/TransactionalBroker.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/broker/TransactionalBroker.java rename to core/src/main/java/com/p14n/postevent/broker/TransactionalBroker.java diff --git a/library/src/main/java/com/p14n/postevent/broker/TransactionalEvent.java b/core/src/main/java/com/p14n/postevent/broker/TransactionalEvent.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/broker/TransactionalEvent.java rename to core/src/main/java/com/p14n/postevent/broker/TransactionalEvent.java diff --git a/library/src/main/java/com/p14n/postevent/catchup/CatchupServer.java b/core/src/main/java/com/p14n/postevent/catchup/CatchupServer.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/catchup/CatchupServer.java rename to core/src/main/java/com/p14n/postevent/catchup/CatchupServer.java diff --git a/library/src/main/java/com/p14n/postevent/catchup/CatchupServerInterface.java b/core/src/main/java/com/p14n/postevent/catchup/CatchupServerInterface.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/catchup/CatchupServerInterface.java rename to core/src/main/java/com/p14n/postevent/catchup/CatchupServerInterface.java diff --git a/library/src/main/java/com/p14n/postevent/catchup/CatchupService.java b/core/src/main/java/com/p14n/postevent/catchup/CatchupService.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/catchup/CatchupService.java rename to core/src/main/java/com/p14n/postevent/catchup/CatchupService.java diff --git a/library/src/main/java/com/p14n/postevent/catchup/OneAtATimeBehaviour.java b/core/src/main/java/com/p14n/postevent/catchup/OneAtATimeBehaviour.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/catchup/OneAtATimeBehaviour.java rename to core/src/main/java/com/p14n/postevent/catchup/OneAtATimeBehaviour.java diff --git a/library/src/main/java/com/p14n/postevent/catchup/PersistentBroker.java b/core/src/main/java/com/p14n/postevent/catchup/PersistentBroker.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/catchup/PersistentBroker.java rename to core/src/main/java/com/p14n/postevent/catchup/PersistentBroker.java diff --git a/library/src/main/java/com/p14n/postevent/catchup/UnprocessedSubmitter.java b/core/src/main/java/com/p14n/postevent/catchup/UnprocessedSubmitter.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/catchup/UnprocessedSubmitter.java rename to core/src/main/java/com/p14n/postevent/catchup/UnprocessedSubmitter.java diff --git a/library/src/main/java/com/p14n/postevent/data/ConfigData.java b/core/src/main/java/com/p14n/postevent/data/ConfigData.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/data/ConfigData.java rename to core/src/main/java/com/p14n/postevent/data/ConfigData.java diff --git a/library/src/main/java/com/p14n/postevent/data/Event.java b/core/src/main/java/com/p14n/postevent/data/Event.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/data/Event.java rename to core/src/main/java/com/p14n/postevent/data/Event.java diff --git a/library/src/main/java/com/p14n/postevent/data/PostEventConfig.java b/core/src/main/java/com/p14n/postevent/data/PostEventConfig.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/data/PostEventConfig.java rename to core/src/main/java/com/p14n/postevent/data/PostEventConfig.java diff --git a/library/src/main/java/com/p14n/postevent/data/Traceable.java b/core/src/main/java/com/p14n/postevent/data/Traceable.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/data/Traceable.java rename to core/src/main/java/com/p14n/postevent/data/Traceable.java diff --git a/library/src/main/java/com/p14n/postevent/data/UnprocessedEventFinder.java b/core/src/main/java/com/p14n/postevent/data/UnprocessedEventFinder.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/data/UnprocessedEventFinder.java rename to core/src/main/java/com/p14n/postevent/data/UnprocessedEventFinder.java diff --git a/library/src/main/java/com/p14n/postevent/db/DatabaseSetup.java b/core/src/main/java/com/p14n/postevent/db/DatabaseSetup.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/db/DatabaseSetup.java rename to core/src/main/java/com/p14n/postevent/db/DatabaseSetup.java diff --git a/library/src/main/java/com/p14n/postevent/db/SQL.java b/core/src/main/java/com/p14n/postevent/db/SQL.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/db/SQL.java rename to core/src/main/java/com/p14n/postevent/db/SQL.java diff --git a/library/src/main/java/com/p14n/postevent/processor/OrderedProcessor.java b/core/src/main/java/com/p14n/postevent/processor/OrderedProcessor.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/processor/OrderedProcessor.java rename to core/src/main/java/com/p14n/postevent/processor/OrderedProcessor.java diff --git a/library/src/main/java/com/p14n/postevent/telemetry/BrokerMetrics.java b/core/src/main/java/com/p14n/postevent/telemetry/BrokerMetrics.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/telemetry/BrokerMetrics.java rename to core/src/main/java/com/p14n/postevent/telemetry/BrokerMetrics.java diff --git a/library/src/main/java/com/p14n/postevent/telemetry/MapTextMapGetter.java b/core/src/main/java/com/p14n/postevent/telemetry/MapTextMapGetter.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/telemetry/MapTextMapGetter.java rename to core/src/main/java/com/p14n/postevent/telemetry/MapTextMapGetter.java diff --git a/library/src/main/java/com/p14n/postevent/telemetry/OpenTelemetryFunctions.java b/core/src/main/java/com/p14n/postevent/telemetry/OpenTelemetryFunctions.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/telemetry/OpenTelemetryFunctions.java rename to core/src/main/java/com/p14n/postevent/telemetry/OpenTelemetryFunctions.java diff --git a/library/src/test/java/com/p14n/postevent/CatchupServerTest.java b/core/src/test/java/com/p14n/postevent/CatchupServerTest.java similarity index 100% rename from library/src/test/java/com/p14n/postevent/CatchupServerTest.java rename to core/src/test/java/com/p14n/postevent/CatchupServerTest.java diff --git a/library/src/test/java/com/p14n/postevent/CatchupServiceTest.java b/core/src/test/java/com/p14n/postevent/CatchupServiceTest.java similarity index 100% rename from library/src/test/java/com/p14n/postevent/CatchupServiceTest.java rename to core/src/test/java/com/p14n/postevent/CatchupServiceTest.java diff --git a/library/src/test/java/com/p14n/postevent/DatabaseSetupTest.java b/core/src/test/java/com/p14n/postevent/DatabaseSetupTest.java similarity index 100% rename from library/src/test/java/com/p14n/postevent/DatabaseSetupTest.java rename to core/src/test/java/com/p14n/postevent/DatabaseSetupTest.java diff --git a/library/src/test/java/com/p14n/postevent/DefaultMessageBrokerTest.java b/core/src/test/java/com/p14n/postevent/DefaultMessageBrokerTest.java similarity index 100% rename from library/src/test/java/com/p14n/postevent/DefaultMessageBrokerTest.java rename to core/src/test/java/com/p14n/postevent/DefaultMessageBrokerTest.java diff --git a/library/src/test/java/com/p14n/postevent/PersistentBrokerTest.java b/core/src/test/java/com/p14n/postevent/PersistentBrokerTest.java similarity index 100% rename from library/src/test/java/com/p14n/postevent/PersistentBrokerTest.java rename to core/src/test/java/com/p14n/postevent/PersistentBrokerTest.java diff --git a/library/src/test/java/com/p14n/postevent/PostgresConnectionTest.java b/core/src/test/java/com/p14n/postevent/PostgresConnectionTest.java similarity index 100% rename from library/src/test/java/com/p14n/postevent/PostgresConnectionTest.java rename to core/src/test/java/com/p14n/postevent/PostgresConnectionTest.java diff --git a/library/src/test/java/com/p14n/postevent/PublisherTest.java b/core/src/test/java/com/p14n/postevent/PublisherTest.java similarity index 100% rename from library/src/test/java/com/p14n/postevent/PublisherTest.java rename to core/src/test/java/com/p14n/postevent/PublisherTest.java diff --git a/library/src/test/java/com/p14n/postevent/TestUtil.java b/core/src/test/java/com/p14n/postevent/TestUtil.java similarity index 100% rename from library/src/test/java/com/p14n/postevent/TestUtil.java rename to core/src/test/java/com/p14n/postevent/TestUtil.java diff --git a/library/src/test/java/com/p14n/postevent/UnprocessedEventFinderTest.java b/core/src/test/java/com/p14n/postevent/UnprocessedEventFinderTest.java similarity index 100% rename from library/src/test/java/com/p14n/postevent/UnprocessedEventFinderTest.java rename to core/src/test/java/com/p14n/postevent/UnprocessedEventFinderTest.java diff --git a/library/src/test/java/com/p14n/postevent/broker/TestAsyncExecutor.java b/core/src/test/java/com/p14n/postevent/broker/TestAsyncExecutor.java similarity index 100% rename from library/src/test/java/com/p14n/postevent/broker/TestAsyncExecutor.java rename to core/src/test/java/com/p14n/postevent/broker/TestAsyncExecutor.java diff --git a/library/src/test/java/com/p14n/postevent/example/ExampleUtil.java b/core/src/test/java/com/p14n/postevent/example/ExampleUtil.java similarity index 100% rename from library/src/test/java/com/p14n/postevent/example/ExampleUtil.java rename to core/src/test/java/com/p14n/postevent/example/ExampleUtil.java diff --git a/library/src/test/java/com/p14n/postevent/processor/OrderedProcessorTest.java b/core/src/test/java/com/p14n/postevent/processor/OrderedProcessorTest.java similarity index 100% rename from library/src/test/java/com/p14n/postevent/processor/OrderedProcessorTest.java rename to core/src/test/java/com/p14n/postevent/processor/OrderedProcessorTest.java diff --git a/debezium/build.gradle b/debezium/build.gradle new file mode 100644 index 0000000..64f6442 --- /dev/null +++ b/debezium/build.gradle @@ -0,0 +1,89 @@ +plugins { + id 'java' + id 'com.adarshr.test-logger' version '4.0.0' +} + +compileJava { + sourceCompatibility = 21 + targetCompatibility = 21 +} + +group = 'com.p14n' +version = '1.0.1-SNAPSHOT' + +repositories { + mavenCentral() +} + +dependencies { + // Dependency on core module + implementation project(':core') + + // Debezium dependencies + implementation 'io.debezium:debezium-api:3.0.1.Final' + implementation ('io.debezium:debezium-embedded:3.0.1.Final') { + exclude group: 'org.glassfish.jersey.containers', module: 'jersey-container-servlet' + exclude group: 'org.glassfish.jersey.inject', module: 'jersey-hk2' + exclude group: 'org.eclipse.jetty' + } + implementation 'io.debezium:debezium-connector-postgres:3.0.1.Final' + implementation 'io.debezium:debezium-storage-jdbc:3.0.1.Final' + + // Guava for utilities + implementation 'com.google.guava:guava:32.0.0-jre' + + // OpenTelemetry core dependencies + implementation 'io.opentelemetry:opentelemetry-api:1.32.0' + + // Logging + implementation 'org.slf4j:slf4j-api:2.0.9' + + // Security constraint + constraints { + implementation 'com.google.guava:guava:32.0.0-jre' + } + + // Test dependencies + testImplementation platform('io.zonky.test.postgres:embedded-postgres-binaries-bom:16.2.0') + testImplementation 'io.zonky.test:embedded-postgres:2.0.7' + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.0' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.0' + testRuntimeOnly 'ch.qos.logback:logback-classic:1.4.11' + testImplementation 'org.mockito:mockito-core:3.12.4' +} + +testlogger { + theme 'standard' + showExceptions true + showStackTraces true + showFullStackTraces false + showCauses true + slowThreshold 2000 + showSummary true + showSimpleNames false + showPassed true + showSkipped true + showFailed true + showStandardStreams false + showPassedStandardStreams true + showSkippedStandardStreams true + showFailedStandardStreams true +} + +test { + useJUnitPlatform() + maxHeapSize = "1G" + minHeapSize = "512M" + maxParallelForks = 1 + failFast = true + testLogging.showStandardStreams = true +} + +jar { + manifest { + } +} + +tasks.withType(Jar) { + duplicatesStrategy = DuplicatesStrategy.EXCLUDE +} diff --git a/library/src/main/java/com/p14n/postevent/LocalConsumer.java b/debezium/src/main/java/com/p14n/postevent/LocalConsumer.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/LocalConsumer.java rename to debezium/src/main/java/com/p14n/postevent/LocalConsumer.java diff --git a/library/src/main/java/com/p14n/postevent/LocalPersistentConsumer.java b/debezium/src/main/java/com/p14n/postevent/LocalPersistentConsumer.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/LocalPersistentConsumer.java rename to debezium/src/main/java/com/p14n/postevent/LocalPersistentConsumer.java diff --git a/library/src/main/java/com/p14n/postevent/debezium/DebeziumServer.java b/debezium/src/main/java/com/p14n/postevent/debezium/DebeziumServer.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/debezium/DebeziumServer.java rename to debezium/src/main/java/com/p14n/postevent/debezium/DebeziumServer.java diff --git a/library/src/main/java/com/p14n/postevent/debezium/Functions.java b/debezium/src/main/java/com/p14n/postevent/debezium/Functions.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/debezium/Functions.java rename to debezium/src/main/java/com/p14n/postevent/debezium/Functions.java diff --git a/library/src/test/java/com/p14n/postevent/PostgresDebeziumConnectorTest.java b/debezium/src/test/java/com/p14n/postevent/PostgresDebeziumConnectorTest.java similarity index 100% rename from library/src/test/java/com/p14n/postevent/PostgresDebeziumConnectorTest.java rename to debezium/src/test/java/com/p14n/postevent/PostgresDebeziumConnectorTest.java diff --git a/library/build.gradle b/grpc/build.gradle similarity index 57% rename from library/build.gradle rename to grpc/build.gradle index e511de3..8e13a92 100644 --- a/library/build.gradle +++ b/grpc/build.gradle @@ -1,12 +1,7 @@ -import com.vanniktech.maven.publish.SonatypeHost -import com.vanniktech.maven.publish.JavaLibrary -import com.vanniktech.maven.publish.JavadocJar - plugins { id 'java' id 'com.adarshr.test-logger' version '4.0.0' id 'com.google.protobuf' version '0.9.2' - id "com.vanniktech.maven.publish" version "0.31.0" } compileJava { @@ -22,20 +17,9 @@ repositories { } dependencies { - implementation 'io.debezium:debezium-api:3.0.1.Final' - implementation ('io.debezium:debezium-embedded:3.0.1.Final') { - exclude group: 'org.glassfish.jersey.containers', module: 'jersey-container-servlet' - exclude group: 'org.glassfish.jersey.inject', module: 'jersey-hk2' - exclude group: 'org.eclipse.jetty' - } - implementation 'io.debezium:debezium-connector-postgres:3.0.1.Final' - implementation 'io.debezium:debezium-storage-jdbc:3.0.1.Final' - implementation 'org.slf4j:slf4j-api:2.0.9' - implementation 'com.zaxxer:HikariCP:6.2.1' - - constraints { - implementation 'com.google.guava:guava:32.0.0-jre' - } + // Dependency on core module + implementation project(':core') + implementation project(':debezium') // gRPC dependencies implementation 'io.grpc:grpc-netty-shaded:1.53.0' @@ -48,20 +32,26 @@ dependencies { // For code generation implementation 'com.google.protobuf:protobuf-java:3.21.7' + // Logging + implementation 'org.slf4j:slf4j-api:2.0.9' + + // Security constraint + constraints { + implementation 'com.google.guava:guava:32.0.0-jre' + } + + // Instrumentation for GRPC + implementation 'io.opentelemetry.instrumentation:opentelemetry-grpc-1.6:1.32.0-alpha' + + // Test dependencies + testImplementation project(path: ':core', configuration: 'tests') + testImplementation 'net.jqwik:jqwik:1.8.2' testImplementation platform('io.zonky.test.postgres:embedded-postgres-binaries-bom:16.2.0') testImplementation 'io.zonky.test:embedded-postgres:2.0.7' - testImplementation 'net.jqwik:jqwik:1.8.2' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.0' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.0' testRuntimeOnly 'ch.qos.logback:logback-classic:1.4.11' testImplementation 'org.mockito:mockito-core:3.12.4' - - // OpenTelemetry core dependencies - implementation 'io.opentelemetry:opentelemetry-api:1.32.0' - - // Instrumentation for GRPC - implementation 'io.opentelemetry.instrumentation:opentelemetry-grpc-1.6:1.32.0-alpha' - } testlogger { @@ -83,9 +73,7 @@ testlogger { } test { - useJUnitPlatform { - includeEngines 'jqwik', 'junit-jupiter' - } + useJUnitPlatform() maxHeapSize = "1G" minHeapSize = "512M" maxParallelForks = 1 @@ -93,19 +81,6 @@ test { testLogging.showStandardStreams = true } -task fastTest( type: Test ) { - useJUnitPlatform { - includeEngines 'junit-jupiter' - exclude '**/dst/**' - - } -} - -jar { - manifest { - } -} - // Configure Protobuf plugin protobuf { protoc { @@ -132,6 +107,11 @@ sourceSets { } } +jar { + manifest { + } +} + tasks.withType(Jar) { duplicatesStrategy = DuplicatesStrategy.EXCLUDE } @@ -140,39 +120,3 @@ javadoc { exclude "**/grpc/**" source = sourceSets.main.allJava } - -mavenPublishing { - - configure(new JavaLibrary(new JavadocJar.Javadoc(), true)) - - publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL, true) - - signAllPublications() - - coordinates("com.p14n", "postevent", version) - - pom { - name = "Postevent" - description = 'A reliable event publishing and consumption system using PostgreSQL and gRPC' - inceptionYear = "2025" - url = "https://github.com/p14n/postevent/" - licenses { - license { - name = 'MIT License' - url = 'https://opensource.org/licenses/MIT' - } - } - developers { - developer { - id = 'p14n' - name = 'Dean Chapman' - email = 'dean@p14n.com' - } - } - scm { - connection = 'scm:git:git://github.com/p14n/postevent.git' - developerConnection = 'scm:git:ssh://github.com:p14n/postevent.git' - url = 'https://github.com/p14n/postevent' - } - } -} \ No newline at end of file diff --git a/library/src/main/java/com/p14n/postevent/ConsumerServer.java b/grpc/src/main/java/com/p14n/postevent/ConsumerServer.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/ConsumerServer.java rename to grpc/src/main/java/com/p14n/postevent/ConsumerServer.java diff --git a/library/src/main/java/com/p14n/postevent/RemotePersistentConsumer.java b/grpc/src/main/java/com/p14n/postevent/RemotePersistentConsumer.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/RemotePersistentConsumer.java rename to grpc/src/main/java/com/p14n/postevent/RemotePersistentConsumer.java diff --git a/library/src/main/java/com/p14n/postevent/broker/remote/MessageBrokerGrpcClient.java b/grpc/src/main/java/com/p14n/postevent/broker/remote/MessageBrokerGrpcClient.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/broker/remote/MessageBrokerGrpcClient.java rename to grpc/src/main/java/com/p14n/postevent/broker/remote/MessageBrokerGrpcClient.java diff --git a/library/src/main/java/com/p14n/postevent/broker/remote/MessageBrokerGrpcServer.java b/grpc/src/main/java/com/p14n/postevent/broker/remote/MessageBrokerGrpcServer.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/broker/remote/MessageBrokerGrpcServer.java rename to grpc/src/main/java/com/p14n/postevent/broker/remote/MessageBrokerGrpcServer.java diff --git a/library/src/main/java/com/p14n/postevent/catchup/remote/CatchupGrpcClient.java b/grpc/src/main/java/com/p14n/postevent/catchup/remote/CatchupGrpcClient.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/catchup/remote/CatchupGrpcClient.java rename to grpc/src/main/java/com/p14n/postevent/catchup/remote/CatchupGrpcClient.java diff --git a/library/src/main/java/com/p14n/postevent/catchup/remote/CatchupGrpcServer.java b/grpc/src/main/java/com/p14n/postevent/catchup/remote/CatchupGrpcServer.java similarity index 100% rename from library/src/main/java/com/p14n/postevent/catchup/remote/CatchupGrpcServer.java rename to grpc/src/main/java/com/p14n/postevent/catchup/remote/CatchupGrpcServer.java diff --git a/library/src/main/proto/catchup.proto b/grpc/src/main/proto/catchup.proto similarity index 100% rename from library/src/main/proto/catchup.proto rename to grpc/src/main/proto/catchup.proto diff --git a/library/src/main/proto/messagebroker.proto b/grpc/src/main/proto/messagebroker.proto similarity index 100% rename from library/src/main/proto/messagebroker.proto rename to grpc/src/main/proto/messagebroker.proto diff --git a/library/src/test/java/com/p14n/postevent/LocalConsumerTest.java b/grpc/src/test/java/com/p14n/postevent/LocalConsumerTest.java similarity index 100% rename from library/src/test/java/com/p14n/postevent/LocalConsumerTest.java rename to grpc/src/test/java/com/p14n/postevent/LocalConsumerTest.java diff --git a/library/src/test/java/com/p14n/postevent/broker/remote/MessageBrokerGrpcIntegrationTest.java b/grpc/src/test/java/com/p14n/postevent/broker/remote/MessageBrokerGrpcIntegrationTest.java similarity index 100% rename from library/src/test/java/com/p14n/postevent/broker/remote/MessageBrokerGrpcIntegrationTest.java rename to grpc/src/test/java/com/p14n/postevent/broker/remote/MessageBrokerGrpcIntegrationTest.java diff --git a/library/src/test/java/com/p14n/postevent/catchup/remote/CatchupGrpcIntegrationTest.java b/grpc/src/test/java/com/p14n/postevent/catchup/remote/CatchupGrpcIntegrationTest.java similarity index 100% rename from library/src/test/java/com/p14n/postevent/catchup/remote/CatchupGrpcIntegrationTest.java rename to grpc/src/test/java/com/p14n/postevent/catchup/remote/CatchupGrpcIntegrationTest.java diff --git a/library/src/test/java/com/p14n/postevent/dst/DeterministicConsumerTest.java b/grpc/src/test/java/com/p14n/postevent/dst/DeterministicConsumerTest.java similarity index 100% rename from library/src/test/java/com/p14n/postevent/dst/DeterministicConsumerTest.java rename to grpc/src/test/java/com/p14n/postevent/dst/DeterministicConsumerTest.java diff --git a/library/src/test/java/com/p14n/postevent/example/LocalConsumerExample.java b/grpc/src/test/java/com/p14n/postevent/example/LocalConsumerExample.java similarity index 100% rename from library/src/test/java/com/p14n/postevent/example/LocalConsumerExample.java rename to grpc/src/test/java/com/p14n/postevent/example/LocalConsumerExample.java diff --git a/library/src/test/java/com/p14n/postevent/example/LocalPersistentConsumerExample.java b/grpc/src/test/java/com/p14n/postevent/example/LocalPersistentConsumerExample.java similarity index 100% rename from library/src/test/java/com/p14n/postevent/example/LocalPersistentConsumerExample.java rename to grpc/src/test/java/com/p14n/postevent/example/LocalPersistentConsumerExample.java diff --git a/library/src/test/java/com/p14n/postevent/example/RemoteConsumerExample.java b/grpc/src/test/java/com/p14n/postevent/example/RemoteConsumerExample.java similarity index 100% rename from library/src/test/java/com/p14n/postevent/example/RemoteConsumerExample.java rename to grpc/src/test/java/com/p14n/postevent/example/RemoteConsumerExample.java diff --git a/settings.gradle b/settings.gradle index 342ca00..e5f8e62 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,2 +1,2 @@ rootProject.name = 'postevent' -include 'library', 'app' \ No newline at end of file +include 'core', 'debezium', 'grpc', 'app' \ No newline at end of file From e57f084e66da9327d2692e5146f20549569b01c9 Mon Sep 17 00:00:00 2001 From: Dean Chapman Date: Fri, 12 Sep 2025 09:12:03 +0100 Subject: [PATCH 2/2] Update maven publishing --- grpc/build.gradle | 52 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/grpc/build.gradle b/grpc/build.gradle index 8e13a92..498dab7 100644 --- a/grpc/build.gradle +++ b/grpc/build.gradle @@ -1,7 +1,12 @@ +import com.vanniktech.maven.publish.SonatypeHost +import com.vanniktech.maven.publish.JavaLibrary +import com.vanniktech.maven.publish.JavadocJar + plugins { id 'java' id 'com.adarshr.test-logger' version '4.0.0' id 'com.google.protobuf' version '0.9.2' + id "com.vanniktech.maven.publish" version "0.31.0" } compileJava { @@ -73,7 +78,9 @@ testlogger { } test { - useJUnitPlatform() + useJUnitPlatform { + includeEngines 'jqwik', 'junit-jupiter' + } maxHeapSize = "1G" minHeapSize = "512M" maxParallelForks = 1 @@ -81,6 +88,13 @@ test { testLogging.showStandardStreams = true } +task fastTest( type: Test ) { + useJUnitPlatform { + includeEngines 'junit-jupiter' + exclude '**/dst/**' + + } +} // Configure Protobuf plugin protobuf { protoc { @@ -120,3 +134,39 @@ javadoc { exclude "**/grpc/**" source = sourceSets.main.allJava } + +mavenPublishing { + + configure(new JavaLibrary(new JavadocJar.Javadoc(), true)) + + publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL, true) + + signAllPublications() + + coordinates("com.p14n", "postevent", version) + + pom { + name = "Postevent" + description = 'A reliable event publishing and consumption system using PostgreSQL and gRPC' + inceptionYear = "2025" + url = "https://github.com/p14n/postevent/" + licenses { + license { + name = 'MIT License' + url = 'https://opensource.org/licenses/MIT' + } + } + developers { + developer { + id = 'p14n' + name = 'Dean Chapman' + email = 'dean@p14n.com' + } + } + scm { + connection = 'scm:git:git://github.com/p14n/postevent.git' + developerConnection = 'scm:git:ssh://github.com:p14n/postevent.git' + url = 'https://github.com/p14n/postevent' + } + } +} \ No newline at end of file