feat(builder): workspace-wide master switch to disable DDK code generation on workspace builds#1435
Closed
joaodinissf wants to merge 1 commit into
Closed
Conversation
joaodinissf
force-pushed
the
feat/builder-participant-disable-pref
branch
3 times, most recently
from
June 19, 2026 09:18
e74d3cb to
38b007d
Compare
joaodinissf
force-pushed
the
feat/builder-participant-disable-pref
branch
from
July 7, 2026 15:53
38b007d to
35adf6c
Compare
joaodinissf
force-pushed
the
feat/builder-participant-disable-pref
branch
from
July 18, 2026 19:43
35adf6c to
89ef43f
Compare
joaodinissf
force-pushed
the
feat/builder-participant-disable-pref
branch
from
July 18, 2026 23:35
89ef43f to
cff9ca0
Compare
…ation Add a single shared preference (node com.avaloq.tools.ddk, key disableBuilderParticipants, default: generation enabled) that disables code generation by the builder participants of all DDK languages at once. - ConditionalBuilderParticipant gates build() on the switch; the Check and Format participants check it at the top of their custom build() overrides, and Scope/Export now bind ConditionalBuilderParticipant subclasses in place of the stock BuilderParticipant so they are covered too. - Each language's Compiler preference page shows the same master checkbox (BuilderParticipantMasterSwitch): live page instances mirror the pending state instantly, nothing persists before Apply, and while active the per-language options are grayed out with their prior enablement captured and restored, leaving stock dependency-driven enablement intact. - Re-enabling generation via Apply/OK schedules a full rebuild so generated artifacts catch up on changes made while the switch was off. - Explicit CLEAN builds are exempt from the gate: Project > Clean still deletes generated artifacts while the switch is on (they stay deleted until regeneration is re-enabled). - The disable polarity means the native boolean default (false = enabled) holds in every context without a preference initializer. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
joaodinissf
force-pushed
the
feat/builder-participant-disable-pref
branch
from
July 19, 2026 06:05
cff9ca0 to
2badd65
Compare
Collaborator
Author
|
Closing. Manual verification on a patched Eclipse 2026-06 / Xtext 2.43 install showed the feature works as designed (the switch renders on all four Compiler pages, mirrors across them, and gates generation), but the investigation surfaced two decisive facts:
Too much code for too little benefit given the current review backlog. To skip meta-DSL regeneration today: uncheck Compiler is activated on the language's Compiler preference page (per language, workspace- or project-scoped). Drafted by Claude Code; reviewed and approved by the author. |
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.
What
One master checkbox — "Disable DDK code generation on workspace builds (all DDK languages)" — shown identically at the top of each meta-DSL's Compiler preference page (Check, Scope, Export, Format). It is a single shared workspace preference: toggling it on any page mirrors instantly to the other pages, and while it is active the per-language options below it are grayed out.
Why
The meta-DSL builder participants regenerate committed artifacts during workspace builds. For DDK contributors who are not currently editing
.check/.scope/.export/.formatsources — especially on slower machines, where clean/full builds re-run generation across every catalog and model in the workspace — that is avoidable build time. The switch turns regeneration off for all four languages in one click; on-demand regeneration via theGenerate*.mwe2workflows is unaffected.Design
false= enabled) holds in every context (IDE, headless, tests) without a preference initializer. Untouched workspaces behave exactly as before.BuilderParticipantSettings(new,com.avaloq.tools.ddk.xtext.builder) reads/writes the shared instance-scope nodecom.avaloq.tools.ddk.ConditionalBuilderParticipant.build()gates on it; Check and Format check it at the top of their custombuild()overrides; Scope and Export now bind trivialConditionalBuilderParticipantsubclasses in place of the stockBuilderParticipantso they are covered too.BuilderParticipantMasterSwitch(new,com.avaloq.tools.ddk.xtext.ui) wraps each configuration block's stock content under the master checkbox. Live page instances mirror the pending (unsaved) state instantly, so the four checkboxes always agree and no page can save a stale value over another page's change; nothing persists before Apply, Cancel discards. The gray-out captures each control's own enablement first and restores it afterwards, so enablement the stock page manages (e.g. dependent options) is never clobbered — with the switch untouched, stock pages render pixel-identical. Project property pages are unchanged (the switch is workspace-wide).CLEANbuilds are exempt from the gate: while the switch disables regeneration, a Project → Clean still deletes the generated artifacts (which then stay deleted until re-enabling). Note this is deliberately stricter than the stock per-language "Compiler is activated" pref, which skips the participant wholesale — clean-output included.ConditionalBuilderParticipantdescendant that delegates tosuper.build(…), including participants of downstream languages built on this class;build()overrides that do not delegate must checkisBuilderParticipantEnabled()themselves (documented in the Javadoc).Verification
mvn -T 3C clean verify checkstyle:check pmd:check pmd:cpd-check spotbugs:check→ BUILD SUCCESS, 358 tests / 0 failures, all static analysis clean.🤖 Generated with Claude Code