Skip to content

GH-1778 - Clarify violation for non-exposed types in allowed modules - #1785

Open
kalayciburak wants to merge 1 commit into
spring-projects:mainfrom
kalayciburak:fix/gh-1778-non-exposed-shared-module-message
Open

GH-1778 - Clarify violation for non-exposed types in allowed modules#1785
kalayciburak wants to merge 1 commit into
spring-projects:mainfrom
kalayciburak:fix/gh-1778-non-exposed-shared-module-message

Conversation

@kalayciburak

Copy link
Copy Markdown

Summary

Fixes #1778.

When a module is allowed as a dependency target (for example because it is listed in @Modulithic(sharedModules = …)) but the concrete type is not part of an allowed named interface, verification previously reported:

Module 'bidding' depends on module 'review' via … Allowed targets: review.

That message is ambiguous: the module appears in the allowed targets list while the dependency is still rejected. The intended diagnosis is that the type is not exposed.

Change

In QualifiedDependency.isValidDependencyWithin, if the target module is present in the origin module's allowed dependencies but the target type is not exposed, emit the existing non-exposed-type violation (INTERNAL_REFERENCE) instead of the generic "Allowed targets" message.

Tests

  • RED→GREEN reproducer reproducers.gh1778.Gh1778Tests (shared review module + internal review.analysis.AnalyzerService)
  • ./mvnw -pl spring-modulith-core test — 94/94 GREEN
  • ./mvnw -pl spring-modulith-integration-test -am test -Dtest=ApplicationModulesIntegrationTest — 19/19 GREEN

…llowed modules.

When a dependency targets a module that is allowed (for example via
sharedModules) but the concrete type is not part of an allowed named
interface, report the non-exposed-type message instead of the ambiguous
"Allowed targets: <module>" wording.

Signed-off-by: Burak KALAYCI <kalayciburak1996@gmail.com>
@odrotbohm odrotbohm assigned odrotbohm and unassigned odrotbohm Aug 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants