Commit Graph

99 Commits

Author SHA1 Message Date
Oliver Drotbohm
3773c0d175 GH-31 - Fix build resource file detection for test execution optimizations. 2024-09-16 17:42:16 +02:00
Oliver Drotbohm
a391e86ee8 GH-823 - Update reference docs after republication property deprecation. 2024-09-16 15:36:22 +02:00
Oliver Drotbohm
1092184258 GH-31 - Reference documentation for test optimizations. 2024-09-16 15:36:22 +02:00
Oliver Drotbohm
bec0a35da2 GH-818 - Fix reference docs on event republication on startup defaults. 2024-09-13 17:38:41 +02:00
Nils Breunese
1015570942 GH-809 - Fix and improve Kotlin code examples in reference documentation. 2024-09-12 16:40:00 +02:00
K. Siva Prasad Reddy
d5ab8b65cf GH-795 - Documentation polishing. 2024-09-04 14:38:51 +02:00
K. Siva Prasad Reddy
2b6a0bebf2 GH-795 - Using @MockitoBean and @MockitoSpyBean. 2024-09-04 14:37:46 +02:00
Oliver Drotbohm
5d57e2ce0f GH-613 - Fix SPI interface declaration in reference documentation example. 2024-09-04 12:06:25 +02:00
Oliver Drotbohm
d51dc86a56 GH-613 - Stable anchor for reference documentation section. 2024-09-04 12:04:35 +02:00
Oliver Drotbohm
1062f53bfa GH-613 - Add SPI to support external ApplicationModuleSource contributions.
We now expose ApplicationModuleSourceFactory as Spring Factories-based SPI interface to further contribute ApplicationModuleSource instances either from a provided root package subject for module detection through a (potentially customized) ApplicationModuleDetectionStrategy or by explicitly listing particular module base packages.
2024-09-04 08:51:19 +02:00
Oliver Drotbohm
b370d5a3f2 GH-787 - Allow references between sibling sub-modules.
Previously, we rejected references between sub-modules both contained in the same parent package.

Related ticket: GH-578.
2024-08-30 18:22:02 +02:00
Oliver Drotbohm
cd0b5cf5c3 GH-748 - Allow publication completion to delete database entries.
We now expose a spring.modulith.events.completion-mode property, defaulting the previous behavior to a value of UPDATE. The property can also be configured to DELETE, which will cause the persistence implementations to flip to removing the database entries for event publications instead of setting the completion date.
2024-08-27 21:52:53 +02:00
Lukas Dohmen
597a483fd5 GH-743 - Correct spelling in documentation. 2024-08-23 11:25:38 +02:00
Oliver Drotbohm
662adac088 GH-578 - Improve nesting code sample in reference documentation. 2024-08-16 17:14:40 +02:00
Oliver Drotbohm
7838204c25 GH-578 - Support for nested application modules.
The ApplicationModules bootstrap now triggers the module base package detection, followed by a new, additional pass of detecting nested application module packages. Those packages are now added to the ones we create ApplicationModule instances for and also handed into the module instance creation step as exclusions to make sure that parent modules do not include code residing in sub-modules.

The bootstrap of ApplicationModules now uses a dedicated ApplicationModuleSource to allow calculating a default module name relative to the application base package.

Each module now operates on the Classes instance obtained from the JavaPackage instance that constitutes the module's base package but filtered by the given exclusions.
2024-08-16 17:09:51 +02:00
Raed
75b3ff4cac GH-685 - Introduce spring.modulith.events.jdbc.schema to allow defining the database schema for the event_publication table. 2024-07-08 23:12:26 +02:00
Oliver Drotbohm
e7515cc1dc GH-638 - Polishing. 2024-07-08 17:21:08 +02:00
Cora Iberkleid
d32ef518e0 GH-638 - Create aggregating Asciidoc document including all files generated. 2024-07-08 17:17:16 +02:00
adrien-lesur
a3d44689ba GH-687 - Fix broken link to Spring Data Domain Event publishing. 2024-07-05 10:52:24 +02:00
Dimitrios Begnis
a821810783 GH-670 - Add documentation for Neo4j modules. 2024-06-19 16:18:11 +02:00
Oliver Drotbohm
7547bc2cad GH-652 - Polishing. 2024-06-06 16:23:58 +02:00
Oliver Drotbohm
ed1cb3fc91 GH-652 - Allow to configure the ApplicationModuleDetectionStrategy via a configuration property.
We now expose a configuration property spring.modulith.detection-strategy that can take either of the two prepared values "direct-sub-packages" (default) or "explicitly-annotated", or a fully qualified class name of the strategy to use.

Removed ApplicationModuleStrategies enum to avoid exposing the enum values as additional implementations. Those are now held as inline lambda expression in the factory methods on ApplicationModuleStrategy. Extracted the lookup of the strategy to use into ApplicationModuleDetectionStrategyLookup for easier testability.
2024-06-06 15:45:57 +02:00
Oliver Drotbohm
51c5f0bf42 GH-601 - Support for wildcard references to named interfaces in explicitly defined allowed application module dependencies.
When defining allowed application module dependencies to named interfaces, the asterisk can now be used to allow referencing all named interfaces declared by the target module.
2024-05-16 16:03:14 +02:00
dowenliu-xyz
551e117113 GH-588 - Fix a spell mistake in docs. 2024-05-14 12:34:29 +02:00
Oliver Drotbohm
4be7626855 GH-584 - Fix configuration property metadata for JSON support in Kafka and RabbitMQ. 2024-05-08 10:33:21 +02:00
Oliver Drotbohm
36ec890de8 GH-550 - Rearrange sections in reference doc.
The exclusion of types from the Application Modules model is now described in the section about the ApplicationModules type already. That general section is now located before the discussion of simple and advanced modules.

The verification section now mentions the behavior for open modules as well.
2024-04-19 17:32:19 +02:00
Oliver Drotbohm
6de6f46ada GH-550 - Polishing. 2024-04-10 19:08:58 +02:00
Stephan Harbauer
1dd7238ff7 GH-550 - Add section on how to exclude packages from application module detection. 2024-04-10 19:08:47 +02:00
sant0s
d9bbd7ca45 GH-540 - Improve reference documentation. 2024-03-28 11:36:12 +01:00
Oliver Drotbohm
1949c415c4 GH-528 - Add section on @Modulithic to reference documentation. 2024-03-19 15:51:51 +01:00
emanuel.trandafir
3d68f1a588 GH-521 - Improve reference docs.
Making the starters section more visible. Fixed links related to testing.
2024-03-05 19:41:28 +01:00
Oliver Drotbohm
5f7e6a2479 GH-522 - Support for package info types.
Introduce @PackageInfo annotation to allow marking a types as alternative to Java's native package-info.java so that annotation lookups on a JavaPackage will also find annotations placed on that type. Useful to declare package scoped metadata like @ApplicationModule and @NamedInterface for languages that do not support packages well enough (read: Kotlin).
2024-03-05 09:55:34 +01:00
Oliver Drotbohm
f3c111f769 GH-284 - Support for open application modules.
Application modules can now be declared as open, which causes internal components being exposed for access by other modules.
2024-02-29 12:58:49 +01:00
Stefano Cordio
b40b45379e GH-499 - Fixes and improvements for Fundamentals section. 2024-02-14 15:19:05 +01:00
Oliver Drotbohm
2f96c75377 GH-442 - Fix invalid reference in event externalization reference docs. 2024-01-10 15:15:45 +01:00
Niki Micallef
f81c155011 GH-383 - Update runtime.adoc by completing intro paragraph.
Original pull request: GH-384.
2023-11-24 15:32:45 +01:00
Oliver Drotbohm
792b69c25e GH-355 - Polish Kotlin code samples in event section of reference documentation. 2023-11-02 08:26:00 +01:00
Maciej Walkowiak
d95da874bd GH-344 - Support for event externalization into AWS SNS and SQS.
Additional event externalization implementations for AWS SNS and SQS.

Original pull request: GH-350.
2023-11-02 08:22:28 +01:00
Oliver Drotbohm
576b8f5074 GH-342 - Allow disabling event externalization.
We now expose spring.modulith.events.externalization.enabled that can be set to false to disable the event externalization completely. Useful in test cases, for example.
2023-10-23 12:22:42 +02:00
Devashish Bhattacharjee
9b79e09729 GH-256 - Added Kotlin variant for Java code. 2023-10-17 10:22:02 +02:00
Oliver Drotbohm
cc99f9d357 GH-325 - Add mission statement to reference documentation. 2023-10-16 08:32:26 +02:00
Oliver Drotbohm
51f205af59 GH-324 - Add Neo4j-specific configuration properties to reference documentation. 2023-10-16 08:31:35 +02:00
Devashish Bhattacharjee
31a570c87b GH-255 - Add Gradle snippets for build related samples to the reference documentation. 2023-09-19 10:02:12 +02:00
Rob Winch
c43a338a99 GH-297 - Update to antora-ui-spring v0.3.7. 2023-09-19 09:00:01 +02:00
Oliver Drotbohm
0d563dde1e GH-285 - Add diagram extension to main branch Antora playbook. 2023-09-12 11:09:53 +02:00
Rob Winch
56036d151a GH-285 - Migrate documentation to Antora. 2023-09-12 09:21:48 +02:00
Oliver Drotbohm
9b0062f354 GH-248 - Support to automatically externalize events.
We now allow externalizing application events to a variety of message brokers through the addition of Spring Modulith modules for Kafka, AMQP and JMS to a user project's classpath. Which events shall be externalized and how they're supposed to be routed to the message broker can be configured through either annotations or via a configuration API declared as Spring bean.

In case Jackson is on the classpath, we also add auto-configuration to use a Boot-configured ObjectMapper instance with the corresponding message broker client APIs to properly serialize and deserialize messages to JSON.
2023-09-07 16:29:10 +02:00
Oliver Drotbohm
971a143436 GH-294 - Introduce user API to deal with completed and incomplete event publications.
Introduce a new spring-modulith-events-api artifact to contain types that are supposed to be used by application code to deal with event publications. `EventPublication` was moved into that artifact and got everything non infrastructure related extracted from it's previous incarnation. That in turn has been renamed to `TargetEventPublication`.

`CompletedEventPublications` exposes API to allow purging completed publications either by a given predicate or age (in `Duration`). The interface is implemented by `DefaultEventPublicationRegistry` and thus subject for dependency injection into user code. It primarily delegates to the corresponding methods on `EventPublicationRepository` adapting the given `Duration`s to the `Clock` instance already held internally.

`IncompleteEventPublications` allows triggering the re-submission of incomplete publications by the same criteria as `CEP`. The interface is implemented by `PersistentApplicationEventMulticaster` and this subject for dependency injection into user code.

`EventPublicationRepository` now also allows publications to be deleted by identifiers. The existing implementations have been adapted and batch the requests for every 100 identifiers to prevent a list too large to run into limitations of the underlying data store.

Polished transactional metadata declaration in JPA- and MongoDB-based repository implementations.

Tightened nullability expressions here and there.
2023-09-04 15:24:37 +02:00
Oliver Drotbohm
1fe681bffc GH-289 - Polishing. 2023-09-04 09:55:04 +02:00
Karl Heinz Marbaise
4af54d09a6 GH-289 - Project version is not correctly inserted into the documentation.
Original pull request: GH-290.
2023-09-04 09:54:56 +02:00