Skip to content

fix: refactor projectgraphgenerator to expose read-only graph results - #462

Merged
cdsap merged 1 commit into
mainfrom
issue/459-hermes-refactor-projectgraphgenerator-to-ex-a1
Sep 12, 2026
Merged

fix: refactor projectgraphgenerator to expose read-only graph results#462
cdsap merged 1 commit into
mainfrom
issue/459-hermes-refactor-projectgraphgenerator-to-ex-a1

Conversation

@cdsap

@cdsap cdsap commented Sep 12, 2026

Copy link
Copy Markdown
Owner

Summary

Problem

ProjectGraphGenerator.generate() returns MutableList at project-generator/src/main/kotlin/io/github/cdsap/projectgenerator/ProjectGraphGenerator.kt:16, although callers only read the generated graph and ProjectGraph itself is immutable.

Why this matters

The mutable return type leaks construction details across the domain boundary and permits callers to alter generated graph state after creation, increasing coupling and making behavior harder to reason about.

Proposed change

Change generate() to return List while retaining a private mutable accumulator during construction. Add or update a focused test documenting that the generated graph is consumed as a read-only result.

Notes

This clarifies the domain boundary: graph construction remains internally mutable, while the generated graph is returned as an immutable domain result. Because the library is published, review downstream source compatibility before applying the signature change.

Fixes #459

Changes

  • project-generator/src/main/kotlin/io/github/cdsap/projectgenerator/ProjectGraphGenerator.kt
  • project-generator/src/test/kotlin/io/github/cdsap/projectgenerator/ProjectGraphGeneratorTest.kt

Verification

  • ./gradlew :project-generator:unitTest
  • ./gradlew :cli:test
  • ./gradlew ktlintCheck

@cdsap
cdsap merged commit 9f49e65 into main Sep 12, 2026
14 checks passed
@cdsap
cdsap deleted the issue/459-hermes-refactor-projectgraphgenerator-to-ex-a1 branch September 12, 2026 22:25
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.

Refactor ProjectGraphGenerator to expose read-only graph results

1 participant