Commit Graph

812 Commits

Author SHA1 Message Date
Daniil Tsarev
4fa434fcf2 GH-1138 - Fix Kotlin examples for module and named interfaces declarations and dependencies.
Signed-off-by: daniil.tsaryov@jetbrains.com
2025-04-04 14:16:40 +02:00
Oliver Drotbohm
3442afd4eb GH-1133 - More resilient APT output location detection.
Gradle's APT handling seems to significantly differ from Maven's as the Java compilation runs from a completely different base folder than the actual project compiled. Even more so, for multi-module projects, the base folder is always the same, which causes APT output using Java's plain File API to override itself in a multi-module project.

I've tweaked the output folder detection to look up well-known APT parameters provided by either the Spring Boot plugin (org.springframework.boot.configurationprocessor.additionalMetadataLocations) or KAPT (for Kotlin-based projects, kapt.kotlin.generated) and derive the actual output folder from the values set for those. If neither of these is set, we fall back to the original local folder.
2025-04-03 13:49:24 +02:00
Oliver Drotbohm
47fa1fb056 GH-1130 - Polishing.
Simplify output to one line. Formatting, authorship.
2025-04-01 14:21:25 +02:00
조상준
12811a7f37 GH-1130 - Add debug log describing selected externalized events.
Original pull request: GH-1135
Signed-off-by: 조상준 <juncho12011201@gmail.com>
2025-04-01 14:20:53 +02:00
Oliver Drotbohm
777a5c9e7e GH-1131 - Non-empty collections do not indicate scenario completion anymore.
Similarly to our treatment of Optional, we now only consider non-empty collections a trigger for a state change based Scenario conclusion.
2025-03-28 12:50:46 +01:00
Oliver Drotbohm
fa946c148b GH-1122 - Consolidate automatic module names. 2025-03-22 15:17:47 +01:00
Oliver Drotbohm
6a98b3624e GH-1105 - Prepare next development iteration. 2025-03-21 11:52:23 +01:00
Oliver Drotbohm
48ecc12337 GH-1105 - Release version 1.4.0-M3. 2025-03-21 11:52:23 +01:00
Oliver Drotbohm
6eecb9dc80 GH-1105 - Upgrade to Spring Boot 3.5 M3. 2025-03-21 11:48:22 +01:00
Oliver Drotbohm
eb72e18fdd GH-1116 - Update Spring Framework to 6.2.5. 2025-03-20 12:02:52 +01:00
Oliver Drotbohm
433a22559e GH-1110 - Register AssertablePublishedEvents in ApplicationContext if AssertJ is on the classpath.
We now check for the presence of AssertJ on the classpath and rather register an instance of ApplicationPublishedEvents in the ApplicationContext if present.
2025-03-17 19:01:53 +01:00
Oliver Drotbohm
8df778b039 GH-202 - Support for bean instances located in test sources in @ApplicationModuleTest.
Prior to this commit, the TypeExcludeFilter registered by @ApplicationModuleTest decided whether to include a type based on the ApplicationModules instance and the content of the modules' backing JavaPackage instances. Those in turn always consider the classes scanned by ArchUnit to decide whether they include a type or not. As an ApplicationModules instance is set up to only consider production code, any type located in the test sources was disregarded from component scanning.

The checks for package inclusion for a test execution have now been revamped to consider the sole package names when filtering types for inclusion.
2025-03-17 18:35:03 +01:00
Oliver Drotbohm
a771ecfad5 GH-1105 - Add dependency mapping file. 2025-03-13 23:27:42 +01:00
Oliver Drotbohm
424837bde8 GH-1103 - Update Spring Framework to 6.2.4. 2025-03-13 23:15:01 +01:00
Oliver Drotbohm
c6b7288211 GH-1104 - Upgrade to Micrometer Tracing 1.5 M3. 2025-03-13 23:15:01 +01:00
Oliver Drotbohm
df4d82dd3f GH-1098 - Optimize type selection in Classes.
We now resort to a simple iteration over the types within a Classes arrangement to detect all classes residing in certain packages. This is primarily used during the JavaPackage data structure construction as it's called for every sub-package of a package originally created from a Classes instance. The new simplified algorithm avoids set up of DescribedPredicate instances to eventually only perform simple package name checks.
2025-03-07 12:42:45 +01:00
Oliver Drotbohm
083ce7beae GH-1098 - Fix performance regression in JavaPackage.
The fix for GH-1039 introduced a performance regression as the calculation of the sub-packages escaped the SingletonSupplier and thus is now included in every hashCode() calculation. Took the chance to significantly revamp the sub-package calculation for nested packages. In other words, the entire sub-package arrangement for a package is calculated once with pre-computed intermediaries held instead of re-computing them per sub-package.
2025-03-04 15:56:50 +01:00
Oliver Drotbohm
423f54d6b9 GH-1097 - Upgrade to ArchUnit 1.4. 2025-02-26 19:17:39 +01:00
Oliver Drotbohm
f0016c8164 GH-1094 - Prepare next development iteration. 2025-02-25 10:40:49 +01:00
Oliver Drotbohm
95acf1fcac GH-1094 - Release version 1.4.0-M2. 2025-02-25 10:40:48 +01:00
Oliver Drotbohm
07f7843385 GH-1024 - Remove Spring Cloud AWS version property. 2025-02-25 10:09:43 +01:00
Oliver Drotbohm
dc1b9e7a88 GH-1093 - Switch back to Spring Framework 6.2.3. 2025-02-25 09:47:32 +01:00
Oliver Drotbohm
06d47fb1de GH-1050 - ModuleContextCustomizer are now considered equal if their backing execution is. 2025-02-24 22:12:17 +01:00
Oliver Drotbohm
34ff544d95 GH-1090 - ModuleTestExecution now uses ApplicationModulesFactory to bootstrap ApplicationModules.
This allows running tests against it and see application modules located in test sources.
2025-02-24 22:05:59 +01:00
Oliver Drotbohm
ec0e2c73e9 GH-1087 - Set up DCO infrastructure. 2025-02-24 12:54:06 +01:00
Lukas Dohmen
f49fad2a04 GH-1084 - Complete description for Neo4j index property.
Signed-off-by: Lucas Dohmen <l.dohmen@yahoo.de>
2025-02-24 12:39:53 +01:00
Oliver Drotbohm
bf0c07e222 GH-1052 - ApplicationModuleSource now uses JavaPackage.findAnnotation(…).
This is to make sure that marker types annotated with @PackageInfo are considered, too. Deprecate JavaPackage.getAnnotation(…) as it's not used anywhere anymore and we would like to consistently consider package info marker types when looking up package annotations.
2025-02-23 22:06:30 +01:00
Oliver Drotbohm
cd36bd7ac8 GH-1077 - Do not CI build hacking/* branches. 2025-02-23 13:49:02 +01:00
Oliver Drotbohm
66bb3b847a GH-1075 - Temporarily upgrade to Spring Framework 6.2.4 snapshots. 2025-02-23 13:13:36 +01:00
Oliver Drotbohm
c145ba5a07 GH-1051 - Only unregister resubmitted event publication in case of errors.
Before this commit the code resubmitting incomplete event publications unregistered them independently of whether they succeeded or not. We now only do that for failed submissions as an error here indicates a failure to *submit* the publication. As the execution is likely performed asynchronously, a successful hand-off does not implicate the publication being completely processed.
2025-02-23 13:13:24 +01:00
Oliver Drotbohm
a0315113bc GH-1066 - Use metadata resource's input stream rather than file. 2025-02-23 09:48:51 +01:00
Oliver Drotbohm
20f07b7936 GH-1068 - Switch to simple event type name for automatically created counters. 2025-02-23 09:48:05 +01:00
Oliver Drotbohm
78991f4723 GH-1060 - Remove dependency to JGraphT from runtime artifact. 2025-02-23 09:47:09 +01:00
Oliver Drotbohm
f09009bfb2 Gh-1075 - Temporarily downgrade to Spring Framework 6.2.2. 2025-02-22 17:10:45 +01:00
Oliver Drotbohm
efc99f1a35 GH-1073 - Upgrade to Spring Boot 3.5 M2. 2025-02-22 16:34:08 +01:00
Oliver Drotbohm
c7bf5f100d GH-1072 - Upgrade to Micrometer Tracing 1.5 M2. 2025-02-22 15:44:11 +01:00
Oliver Drotbohm
c8ad505c2a GH-1071 - Update Spring Framework to 6.2.3. 2025-02-22 15:39:06 +01:00
Oliver Drotbohm
f09c499600 GH-1068 - Polishing. 2025-02-22 15:34:30 +01:00
Oliver Drotbohm
d5408d7359 GH-1064 - Polishing. 2025-02-22 15:20:12 +01:00
Oliver Drotbohm
32099f2073 GH-1055 - Remove dependency to Commons Logging.
The Structurizr Core library depended on by the documentation support artifact pulls in Commons Logging which conflicts with Spring Frameworks spring-jcl artifact. We now explicitly exclude the former to prevent warning logs at runtime.
2025-02-22 15:13:52 +01:00
Oliver Drotbohm
dd37a283da GH-1068 - Automatically create counters for cross-module application events.
We now create counters for each cross-module application event published. The counters can be customized through ModulithEventMetricsCustomizer beans registered in the ApplicationContext.

Refactored the packages to let ….modulith.observability become the API package and moved all implementation components into ….modulith.observability.support.
2025-02-22 14:50:08 +01:00
Oliver Drotbohm
417e1c1e8c GH-1066 - Provide abstraction to access ApplicationModuleIdentifiers in order of module dependency.
Introduce ApplicationModuleIdentifiers as abstraction for an ordered collection of application module identifiers.

Introduced ApplicationModuleMetadata as abstraction for the generated metadata (usually located in META-INF/spring-modulith/application-modules.json) to expose the information we currently need to downstream infrastructure components. Migrated the components introduced to execute ApplicationModuleInitializers to AMA and adapt auto-configuration accordingly.
2025-02-22 14:19:32 +01:00
Oliver Drotbohm
7db3897b0f GH-1065 - Avoid the bootstrap of an ApplicationModules instance to execute ApplicationModuleInitializers. 2025-02-21 23:15:24 +01:00
Oliver Drotbohm
65f7bb7a8f GH-1064 - Move AOT processor to generate application module metadata into runtime module. 2025-02-21 23:09:18 +01:00
Oliver Drotbohm
8042ad5b9a GH-1063 - Polishing. 2025-02-21 23:02:17 +01:00
Oliver Drotbohm
a800e20e63 GH-1063 - Documenter now creates application module metadata file. 2025-02-21 23:01:42 +01:00
Oliver Drotbohm
a9365ed257 GH-1056 - Switch to object identity comparison when looking up event publications.
We now rather use an object identity comparison in TargetEventPublication.isAssociatedWith(…) instead of an ….equals(…) as that would return the wrong publication for identical events.
2025-02-21 22:55:12 +01:00
Oliver Drotbohm
19db2339bd GH-1062 - ApplicationModuleExporter now exposes ApplicationModuleInitializer beans. 2025-02-21 22:49:28 +01:00
Oliver Drotbohm
8fb7f07b4a GH-1060 - Remove optional dependency on JGraphT.
We now implement the topological sorting of application modules ourselves. Properly recalculate module order after ApplicationModules recreation with shared modules. Make iterator resilient against premature invocation by falling back to the unordered modules.

Cleanup of generated type ignorance.
2025-02-21 16:15:33 +01:00
Oliver Drotbohm
421c2f8eff GH-935 - Migrate to Micrometer Tracings's local service name. 2025-02-20 21:05:07 +01:00