Commit Graph

211 Commits

Author SHA1 Message Date
Oliver Drotbohm
79b73bca0f Gh-153 - Upgrade to Spring Asciidoctor backends 0.0.5. 2023-03-03 14:05:07 +01:00
Oliver Drotbohm
735be03f0d GH-132 - Polishing.
Add core starter to BOM.
2023-03-03 13:55:28 +01:00
Oliver Drotbohm
14123293b6 GH-152 - Introduce starter to include actuator & observability features. 2023-03-03 13:55:01 +01:00
Oliver Drotbohm
d9e761e50b GH-149 - Polishing. 2023-02-27 10:41:49 +01:00
Oliver Drotbohm
ce264aaf96 GH-150 - Scenario now execute stimulus within new transaction.
To make sure that we trigger transactional event listeners from Scenario based integration tests, we trigger stimulus executions using transactions configured to require a new transaction. This makes sure that Scenarios work in integration tests using @Transactional, of course circumventing the default rollback behavior of those transactions. There's no other way to implement this as we *need* to commit a transaction to trigger the delivery of transaction-bound events.

Fixed a bug in the handling of Scenario.stimulus(Supplier<T>) as for this, the Supplier handed into the method had not been executed transactionally at all.
2023-02-26 20:26:53 +01:00
Oliver Drotbohm
47a8a7fa77 GH-149 - Default configuration to await task termination for 2 seconds.
We now tweak the task executor to await termination for 2 seconds unless explicitly disabled or any of the Spring Boot task executor shutdown properties being set. This makes sure that long running application module listeners do not access resources already in shutdown when running integration tests, in which the context could already shutdown while the listener is still running.
2023-02-26 11:50:15 +01:00
Oliver Drotbohm
c51ac5c6fb GH-147 - Prepare next development iteration. 2023-02-24 16:47:15 +01:00
Oliver Drotbohm
13c9f96448 GH-147 - Release version 0.4.1. 2023-02-24 16:47:14 +01:00
Oliver Drotbohm
e24bdaf80d GH-145 - Polishing. 2023-02-24 16:42:06 +01:00
Oliver Drotbohm
2b6298e214 GH-145 - Make sure the async ApplicationModulesRuntime bootstrap doesn't prevent shutdown.
We now use an AsyncTaskExecutor to bootstrap the ApplicationModules instance at startup asynchronously and - at the same time - do not block an explicit application shutdown. This also more idiomatic compared to using an ExecutorService directly.
2023-02-24 16:41:48 +01:00
Oliver Drotbohm
815df2552d GH-146 - Upgrade to jMolecules 2022.2.3. 2023-02-24 16:31:40 +01:00
Oliver Drotbohm
a4ebd569ad GH-144 - Update starter reference table in documentation. 2023-02-24 12:26:38 +01:00
Oliver Drotbohm
64a5929367 GH-143 - Prepare next development iteration. 2023-02-23 23:26:25 +01:00
Oliver Drotbohm
3e705a162e GH-143 - Release version 0.4.0. 2023-02-23 23:26:25 +01:00
Oliver Drotbohm
1f6c888e28 GH-136 - Polish Javadoc. 2023-02-23 23:11:46 +01:00
Oliver Drotbohm
73df1cb198 GH-142 - Upgrade to ArchUnit 1.0.1. 2023-02-23 23:07:37 +01:00
Oliver Drotbohm
f3bf6ff1b9 GH-137 - Upgrade to Spring Framework 6.0.5 (for Javadoc references). 2023-02-23 23:07:30 +01:00
Oliver Drotbohm
485c47fcab GH-141 - Avoid package wrapper for component diagrams. 2023-02-23 22:31:08 +01:00
Oliver Drotbohm
7dda0e3c3a GH-140 - Use system name as container title in generated documentation. 2023-02-23 22:29:26 +01:00
Oliver Drotbohm
715de2c684 GH-139 - Polish Javadoc of Modulithic.sharedModules(). 2023-02-23 22:24:49 +01:00
Oliver Drotbohm
bb466f99e9 GH-136 - API polishing for Scenario.
Move the registration of cleanup callbacks to the intermediate When type to avoid overloads of Scenario.stimulate(…). Also, to prevent multiple lambda-style parameters for ….stimulate(…) as they don't distinguish nice on the declaration side. Removed the varargs from ….publish(…) methods and wait for the actual request to add support for preparing, in transaction callbacks (potentially to be introduced as ….prepare(…) method).

The default acceptance criteria for state change expectations now also considers a boolean true as concluding method result.
2023-02-23 22:14:20 +01:00
Oliver Drotbohm
50d8659595 GH-138 - Fix matrix variable reference in compatibility build. 2023-02-23 20:19:34 +01:00
Oliver Drotbohm
457e245361 GH-138 - Enable manual execution of compatibility builds. 2023-02-23 20:17:50 +01:00
Oliver Drotbohm
9f87e702c9 GH-138 - Set up integration builds against upcoming Spring Boot snapshots and milestones
Set up dedicated GitHub actions workflow to run tests against upcoming Spring Boot snapshots and milestones. Introduced with-preview-repos build profile to activate the Maven repositories containing snapshots and milestones.
2023-02-23 20:16:45 +01:00
Oliver Drotbohm
a9dd6add88 GH-137 - Upgrade to Spring Boot 3.0.3. 2023-02-23 20:14:03 +01:00
Oliver Drotbohm
926029ccbb GH-136 - Typos in reference documentation. 2023-02-20 20:03:10 +01:00
Oliver Drotbohm
a8abb7ba4b GH-136 - Fix issues in reference documentation. 2023-02-20 20:03:10 +01:00
Oliver Drotbohm
707d27e335 GH-136 - Simple suppliers need to be executed transactionally in Scenario. 2023-02-20 20:03:09 +01:00
Oliver Drotbohm
2f34d69d83 GH-136 - Update reference documentation about the newly introduced Scenario API. 2023-02-20 20:03:09 +01:00
Oliver Drotbohm
3bd25bdb12 GH-133 - Make sure event publication repositories return oldest uncompleted publications first. 2023-02-20 18:31:45 +01:00
Oliver Drotbohm
52fdc221a1 GH-136 - Introduce Scenario as application module integration test API.
See the Javadoc of Scenario for details.
2023-02-20 16:04:10 +01:00
Oliver Drotbohm
9428d3be87 GH-132 - Introduce core starter POM.
We now ship a spring-modulith-starter-core that includes dependencies that will typically be used for core runtime support, including the spring-modulith-moments and …-api artifacts in compile scope (so that production code can refer to them) as well as both the …-core and …-runtime artifacts in runtime scope (primarily for ApplicationModuleListener support).

The persistence-technology-specific event publication registry starters now refer to that core starter.
2023-02-11 09:14:24 +01:00
Oliver Drotbohm
71f928f5b0 GH-130 - Polishing.
Organized imports.
2023-02-03 11:09:07 +01:00
Morten Lilbæk Pedersen
8b913bc536 GH-129 - Fix incorrect package name in reference documentation.
Use correct ApplicationModuleDetectionStrategy package name
2023-02-03 10:53:48 +01:00
Oliver Drotbohm
c4fe271689 GH-130 - Fall back to annotated class' name as system name. 2023-02-03 10:52:14 +01:00
Oliver Drotbohm
8e637ecdf9 GH-126 - Upgrade to latest Structurizr. 2023-01-26 15:38:33 +01:00
Oliver Drotbohm
ff8df678e7 GH-125 - More detailed logging of pending event publication lookup on startup. 2023-01-26 09:30:50 +01:00
Oliver Drotbohm
3c25958edc GH-123 - Prepare next development iteration. 2023-01-20 10:16:34 +01:00
Oliver Drotbohm
43bea11041 GH-123 - Release version 0.3.0. 2023-01-20 10:16:34 +01:00
Oliver Drotbohm
7649a84254 GH-122 - Default to enable observability features. 2023-01-20 10:07:50 +01:00
Oliver Drotbohm
b187a7a71d GH-109 - Upgrade to Spring Boot 3.0.2. 2023-01-20 09:08:02 +01:00
Oliver Drotbohm
58ad0a33e7 GH-120 - Use *.puml as default file extension for PlantUML files generated. 2023-01-19 16:12:34 +01:00
Oliver Drotbohm
3fba520e9c GH-121 - Added new modules to reference documentation. 2023-01-19 15:18:34 +01:00
Oliver Drotbohm
868fddca50 GH-119 - Added package-info.java for util package. 2023-01-19 15:17:29 +01:00
Oliver Drotbohm
090ddc6fba GH-119 - Improve rendering of application modules structure as JSON.
Introduced ApplicationModulesExporter to render an ApplicationModules instances as JSON directly. To avoid a dependency to a JSON library and as we only have to be able to render rather simple arrangements, we just build up the JSON string ourselves.

ApplicationModulesEndpoint now caches the structure calculated once to avoid repeated work.
2023-01-18 18:39:09 +01:00
Oliver Drotbohm
9082ca27bb GH-118 - Reworked infrastructure to complete event publications.
Previously we used a dedicated BeanPostProcessor to decorate beans that expose transactional event listeners with an interceptor to mark event publications as completed if the method invocation completes successfully. We now have simplified the arrangement by using Spring's auto-proxy creation and registering an Advisor implementation. This allows us to properly and reliably  order the interceptor between the async one (goes before ours) and the transactional one (goes after ours). Also, this significantly simplifies the implementation of the interceptor as we can assume only commit listener methods being intercepted in the first place.
2023-01-16 21:57:45 +01:00
Oliver Drotbohm
6f5de96dcc GH-117 - Polishing. 2023-01-13 17:42:51 +01:00
Oliver Drotbohm
cacf14748c GH-117 - Test starter now includes the Spring Boot one and Awaitility. 2023-01-13 17:42:43 +01:00
Oliver Drotbohm
6616aaaffa GH-116 - PublishedEvents now sees events from asynchronous event listeners as well.
The ApplicationListener we deploy to capture events published  during a test method execution now uses an InheritableThreadLocal so that events published on threads spawned from the main test execution thread also end up in the PublishedEvents instance prepared for the test method.

Also, the registration of that particular event listener avoids duplicate registrations by inspecting the application context in use for the test method execution for an already registered listener, falling back to registering one.
2023-01-13 16:13:34 +01:00
Oliver Drotbohm
c4321c5305 GH-111 - Link to Javadoc from project metadata in reference documentation. 2023-01-12 20:07:13 +01:00