Skip to content

fix: trust builders generated in the same round regardless of builderUsagePackages - #298

Closed
igel-devin-ai wants to merge 1 commit into
java-helpers:mainfrom
igel-devin-ai:devin/fix-generated-builder-usage-trust
Closed

igel-devin-ai wants to merge 1 commit into
java-helpers:mainfrom
igel-devin-ai:devin/fix-generated-builder-usage-trust

Conversation

@igel-devin-ai

Copy link
Copy Markdown
Collaborator

Summary

Fixes the usage-scope semantics of BuilderScopeResolver: builders generated by this processor in the same compilation round are now trusted and used regardless of builderUsagePackages — the generated-in-round check in resolve() runs before the usage-scope filter instead of after it.

An explicitly generated builder is trusted like any other self-generated builder; previously a scoped configuration could silently drop a co-generated builder and fall back to a plain DTO consumer.

Changes

  • BuilderScopeResolver.resolve(): moved the generatedTypeNames lookup ahead of the usagePackages check; javadoc reordered accordingly.
  • ScopedOwnerDtoBuilder (generated example): sponsor now exposes the builder-consumer overload sponsor(Consumer<SponsorDtoBuilder>) — SponsorDto's builder is generated in the same compilation, so it is used despite sponsor living outside the usage scope.
  • BuilderScopeResolverTest: registered-but-out-of-usage-scope resolution now asserts lib.LibHelperBuilder.
  • ScopedOwnerDtoBuilderTest: sponsor builder-consumer overload asserted as present.

Split out of #296 as requested — that PR keeps only the @SimpleBuilderFor feature.

…UsagePackages

Builders produced by this processor are always used by other generated
builders: the generated-in-round check in BuilderScopeResolver.resolve()
now runs before the builderUsagePackages filter instead of after it.
Previously, a scoped configuration could silently ignore a co-generated
builder and fall back to a DTO consumer, making the scope act as a bug:
an explicitly generated builder is trusted, like any other self-
generated builder.

Update the scoping example (sponsor field now exposes a builder-consumer
overload) and adjust the resolver and example tests to the new
semantics.

Co-Authored-By: Andreas Igel <andreas.igel@computacenter.com>
@sonarqubecloud

Copy link
Copy Markdown

@igel-devin-ai

Copy link
Copy Markdown
Collaborator Author

Closing per maintainer feedback: generated-in-round builders must honor builderUsagePackages — exempting them from the usage scope is wrong. The correct semantics will be applied in #296.

@AndreasIgel

Copy link
Copy Markdown
Collaborator

This is wrong, builder usage package should always filter out even self generated builders

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants