Commit Graph

36 Commits

Author SHA1 Message Date
Oliver Drotbohm
f09f3aa827 GH-802 - Allow transitive application module dependency resolution.
ApplicationModule now exposes both getDirectDependencies(…) and getAllDependencies(…), the former as alias for the now deprecated getDependencies(…) for symmetry reasons. The latter recursively resolves transitive dependencies.

We now optimize the dependency analysis by skipping types residing java and javax packages as they're not relevant to our dependency arrangement model. A few additional optimizations in ApplicationModuleDependencies to avoid iterating over each establishing dependency if all we need to look at is the general module dependency arrangement.

Improve performance of ApplicationModule.contains(…) checks by checking whether the given type can even live inside the package space of the module.
2024-09-06 21:41:35 +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
Oliver Drotbohm
69499b9258 GH-644 - Remove deprecated configuration method on Documenter. 2024-07-16 14:56:01 +02:00
Oliver Drotbohm
8e7225b9f7 GH-644 - Polishing.
Documenter now remembers whether it has cleared the output directory so that multiple attempts to clear on one Documenter instance will not wipe the content previously generated on the same instance. All methods ultimately creating files trigger the one-time target folder wipe now.

Moved file system operations into the OutputFolder abstraction.

A couple of parameter renames for consistency.
2024-07-16 14:54:58 +02:00
Tobias Haindl
08430ad1af GH-644 - Add option to clean the output directory in documentation generation. 2024-07-15 19:27:21 +02:00
Oliver Drotbohm
b4dae619c1 GH-644 - Initial draft. 2024-07-15 17:51:04 +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
Lukas Dohmen
b83119ed5a GH-608 - Polishing in Asciidoctor rendering. 2024-05-22 16:50:39 +02:00
Oliver Drotbohm
232cb3c9ec GH-476 - Move off legacy Structurizr PlantUML generation. 2024-01-21 12:23:29 +01:00
Oliver Drotbohm
c32227bdfb GH-463 - Update copyright headers. 2024-01-17 19:45:40 +01:00
Oliver Drotbohm
72762faf4d GH-462 - Upgrade to latest Structurizr.
Core 1.18 -> 1.29
Export 1.8.3 -> 1.19.0
2024-01-17 18:03:32 +01:00
Oliver Drotbohm
9d30fcd29c GH-373 - Fix detection of jMolecules Layered Architecture presence. 2023-11-17 17:14:17 +01:00
Oliver Drotbohm
16bc4b3a60 GH-192 - Add default component groupings for jMolecules architecture abstractions.
We now register default groupings for the architectural abstractions [0] in case they are available on the classpath but still fall back to the standard Spring Framework ones if not. In other words, if you e.g. use the jmolecules-hexagonal-architecture ones, types and packages annotated with @Port will cause the affected types to appear under a "Ports" section in the "Spring components" row in the Application Module Canvas.

[0] https://github.com/xmolecules/jmolecules#available-libraries-1
2023-04-30 22:35:14 +02: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
58ad0a33e7 GH-120 - Use *.puml as default file extension for PlantUML files generated. 2023-01-19 16:12:34 +01:00
Oliver Drotbohm
5c34886907 GH-114 - Rename ….modulith.model to ….modulith.core. 2023-01-12 16:34:07 +01:00
Oliver Drotbohm
0d009f06c9 GH-111 - Package and publish Javadoc.
A lot of Javadoc polish. Not done yet.
2023-01-12 16:20:20 +01:00
Oliver Drotbohm
9ce6bf23ae GH-14 - Remove Lombok from production sources.
Polished a lot of Javadoc.
2023-01-12 01:05:35 +01:00
Oliver Drotbohm
a7e033172b GH-102 - ApplicationModules now allows traversing modules in topological order.
We now optionally integrate with the JGraphT library to calculate the topological order of modules based on their dependency structure. That order is then exposed in ApplicationModules' iteration and via ….getComparator().

Renamed FormattableJavaClass to FormattableType and allow it to be created from a plain Class as well.
2023-01-05 10:21:36 +01:00
Oliver Drotbohm
4e13fbf7f8 GH-99 - Extend license headers to 2023. 2023-01-02 18:12:29 +01:00
Oliver Drotbohm
22993f43d9 GH-74 - Bean references in Application Module Canvas now get de-duplicated. 2022-11-18 00:13:18 +01:00
Oliver Drotbohm
55b16857f3 GH-69 - Switch to Stream.toList(). 2022-11-11 18:49:03 +01:00
Oliver Drotbohm
d96263fe30 GH-11, GH-66, GH-67, GH-68 - Improve module canvas.
Overhauled the module canvas in various ways. By default, we now skip "empty" rows. In other words, if we do not find any published events for example, we skip the entire row. CanvasOptions.revealEmptyRows() can be used to keep those empty rows around. We now also expose all value types and Spring bean references.

Refactored the dependency lookup APIs on ApplicationModule. Both DependencyType and DependencyDepth are now top-level types. Also, ApplicationModuleDependency and ApplicationModuleDependencies were introduced as explicit types. In the course of that, ApplicationModule.getDependencies(…) has got its return type changed from List<ApplicationModule> to ApplicationModuleDependencies. The internal ModuleDependency type has been renamed to QualifiedDependency.
2022-11-11 18:33:03 +01:00
Oliver Drotbohm
7c93b273d9 GH-43 - Improve consistency in Documenter API.
Consistent method overloads to avoid the need to create default instances of customization options. Renamed Options to DiagramOptions for consistency with CanvasOptions.
2022-10-13 17:24:44 +02:00
Oliver Drotbohm
e4841e5648 GH-41 - Upgrade to latest Structurizr libraries. 2022-09-20 17:12:43 +02:00
Oliver Drotbohm
5f6b82ef2d GH-40 - Switch to C4 component diagrams by default.
We now render the module component diagrams in C4 style by default. Changed the implementation of ApplicationModuleInformation to fallback to the simple module name by default unless fully-qualified module names are enabled.
2022-09-20 17:08:35 +02:00
Oliver Drotbohm
bdb90e9298 GH-37 - Hide internal aggregates and components by default in module canvas.
We now only include exposed types in the module canvas rendered. This can be overridden by calling CanvasOptions.revealInternals().
2022-09-12 15:45:08 +02:00
Oliver Drotbohm
68c11ca214 GH-33 - Avoid throwing IOException from public Documenter API. 2022-07-28 19:37:13 +02:00
Oliver Drotbohm
13b83ef947 GH-28 - Consolidate sample and integration tests module. 2022-07-27 14:57:15 +02:00
Oliver Drotbohm
82c18fe509 GH-9 - Rename core, public abstractions from Module to ApplicationModule.
Remove obsolete @since tags and deprecations.
2022-07-19 15:34:44 +02:00
Oliver Drotbohm
8ba6c11e3d GH-1 - Consistent license years and HTTPS URLs. 2022-07-19 15:04:52 +02:00
Oliver Drotbohm
48ea08ae59 GH-1 - Consistent author names. 2022-07-19 15:02:00 +02:00
Oliver Drotbohm
b2425d024a GH-1 - Polishing.
Fix import order after package renames.
2022-07-08 09:35:55 +02:00
Björn Kieling
417e215993 GH-1 - Update Maven artifact coordinates, package and directory structure.
Original pull request: GH-7.
2022-07-07 20:41:59 +02:00