Repository navigation
codegen: extract codegen-core + codegen-roaster modules (phase 1) - #368
Open
igel-devin-ai wants to merge 29 commits into
Open
igel-devin-ai wants to merge 29 commits into
igel-devin-ai wants to merge 29 commits into
Conversation
Contributor
Dependency ReviewThe following issues were found:
|
devin-ai-integration
Bot
force-pushed
the
devin/1792742307-simple-codegen-moves
branch
2 times, most recently
from
October 24, 2026 11:18
d75412b to
bd7f0c9
Compare
Contributor
Author
|
Heads-up on ordering: this move waits for #378 / PR #379 (the generic Details on issue #349. |
devin-ai-integration
Bot
force-pushed
the
devin/1792742307-simple-codegen-moves
branch
2 times, most recently
from
November 1, 2026 14:34
5ae4941 to
55e3959
Compare
…n-testing module skeletons
…enums so codegen has no simple-builders dependency
…ocessor (BuilderScopeResolver stays)
…eateFormatterResolver become required hooks; SourceFormatterResolver moves to codegen.roaster behind the FormatterResolver SPI
…sonar config * processor, example-custom-generator and codegen-roaster get their new module dependencies * moved sources re-import what stayed behind in the processor domain; text-block test snippets keep their simple-builders imports * formatter profile resources move to codegen-roaster; roaster test moves with its package-private access * ActivePerformanceTrackerTest stays in the processor test tree under its new codegen.logging package — codegen-testing cannot come back into simple-processor (Maven dep cycle) * sonar binaries/tests/jacoco paths cover the four new modules
* maven.yml collects classes, test-classes and jacoco reports for the four new modules alongside core/processor * fork-sonar.yml restores them and scans them; coverage exclusions mirror the jacoco config (codegen model is the same DTO boilerplate) * sonar-project.properties and pom sonar.* properties list all modules
SBOM, reproducible-build timestamp and the staging deploy now cover all deployable modules — publishing processor alone would ship a pom referencing codegen artifacts that don't exist on Central.
ClassCodeGenerator/SourceFormatter/GenerationIssueReporter/GenerationPhases/ CodeGenerationException/FormatterResolver and the logging contracts (PerformanceTracker, ActivePerformanceTracker, NoOpPerformanceTracker, PhaseHierarchy) have no javax.* references — they belong to the SPI that backends implement, so they drop to codegen-core. GenerationEnvironment and ProcessingLogger still carry javax types; they split in the next commit.
…vax boundary — javax-free contracts in codegen-core, Messager/annotation-processing impls in simple-processor
…re, simple-processor wires it as the default backend
…utoService/MapStruct/Jackson/compile-testing comments dropped, JaCoCo 'processor module only' reworded
devin-ai-integration
Bot
force-pushed
the
devin/1792742307-simple-codegen-moves
branch
from
November 1, 2026 15:20
4d0abee to
88c3ff4
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Phase 1 of the codegen extraction (#233): the decoupled generic layer moves out of
processorinto two new Maven artifacts, preserving git history via renames.New modules
io.github.java-helpers.codegen:codegen-core— framework-agnostic processing/codegen layer, package rootorg.javahelpers.codegen:codegen— the SPI (ClassCodeGenerator,SourceFormatter,GenerationEnvironment,GenerationIssueReporter,GenerationPhases,CodeGenerationException)codegen.processing—AnnotationProcessingContext,AnnotationProcessingOptions,CompilerOptioncodegen.analysis—JavaLangAnalyser,JavaLangMapper,TypeMappingContext,TypeNameAnalyser,FieldAnnotationExtractor,GeneratedTypescodegen.model— the shared generation model (TypeNamefamily, DTOs, imports, javadoc,PackageScopes, …)codegen.logging—ProcessingLogger,PerformanceTracker/Active/NoOp,PhaseHierarchycodegen.util—ImportCollectorcodegen.enums— mirrors ofAccessModifier/OptionState/FormattingMode(see below)io.github.java-helpers.codegen:codegen-roaster— the Roaster backend (codegen.roaster:RoasterCodeGenerator,RoasterMapper,RoasterSourceFormatter,RoasterMapperException)Dependency direction is strictly
processor → codegen-roaster → codegen-core: codegen links to nothing in simple-builders (opposite direction comes later). To cut thesimple-builders-corelink, the three enums the model/config types carry are mirrored intocodegen.enums;OptionValueParserswas already the string→enum boundary, so annotation/compiler-arg values now land directly as codegen types.corereferences remain only where processor code names types emitted into generated source (TrackedValue).Move discipline
One commit per move so
git log --followkeeps history: module skeletons → logging → model → classgen SPI/roaster/util → enum mirror → processing generics → analysis → tests → sonar/docs → poms/CI → theorg.javahelpers.simple.codegen→org.javahelpers.codegenpackage/artifact rename (allgit mv-tracked).BuilderScopeResolver,OptionValueParsers, the builder model (BuilderFieldDto,BuilderDefinitionDto,BuilderConfiguration,ResolvedBuilder,BuilderMethodDto, …) and all ofgenerators/mapstruct/processing's builder plumbing stay processor-side (per issue body: no backwards dependencies).Tests / wiring
TypeNameTest,PackageScopesTest,NoOpPerformanceTrackerTest); tests exercising codegen classes through processor fixtures stay processor-side.META-INF/servicesunchanged —RoasterCodeGeneratoris wired explicitly, theGeneratorSPI is processor's own.sonar.java.binariesnow covers all four modules.Verification
mvn clean install: 509 processor + 19 codegen-core + 32 codegen-roaster + 32 example — all greenexample/generated-example-builderis byte-identical (git statusclean after regen against installed artifacts)Closes #349. Preparatory work for #363 (own repository), #364 (perf-optimized backend), #365 (shaded consumption), #366 (backend priority).