Skip to content

fix: Remove the legacy digest engine - EXO-90072 - eXIP7.3.0.22 - #782

Merged
azayati merged 2 commits into
feature/experiencefrom
exip-7.3.0.22-cleanup-legacy-digest-api
Sep 9, 2026
Merged

azayati merged 2 commits into
feature/experiencefrom
exip-7.3.0.22-cleanup-legacy-digest-api

Conversation

@azayati

@azayati azayati commented Sep 8, 2026

Copy link
Copy Markdown
Member

What

The commons part of the legacy digest cleanup (task EXO-90072, spec 50469 §4 "Decision" and §5). The engine was switched off in 2022, its crons pushed to year 2099; io.meeds.commons.digest replaces it. Everything goes in this PR, including the API hooks: 97 files, −3968 lines.

Engine: DigestorService + DigestorServiceImpl, NotificationDailyJob / NotificationWeeklyJob and the job/mbeans package, DigestDailyPlugin / DigestWeeklyPlugin, DigestMailTemplateProvider, DigestTemplate, the two digest .gtmpl, JPAMailNotificationStorage + MailNotifEntity / MailDigestEntity / MailParamEntity + their DAOs and the MailNotificationStorage API, their Kernel configuration (components, plugins, 2099 cron properties, exo.feature.digestMailNotification.enabled), the legacy digest keys in the 40 locales of the notification bundle, the digest branches of NotificationServiceImpl, MailLifecycle, NotificationJob and the three digest MBean getters.

API: makeDigest and buildDigest are removed from AbstractNotificationPlugin and AbstractTemplateBuilder, NotificationService loses digest, UserSetting loses getDailyPlugins / getWeeklyPlugins / their setters / isInDaily / isInWeekly and the FREQUENCY.DAILY / FREQUENCY.WEEKLY constants, TemplateUtils and TemplateContentTransformerService lose processDigest, NotificationUtils loses getDigest.

Data: change sets 1.0.0-22..27 drop NTF_EMAIL_NOTIFS_PARAMS, NTF_EMAIL_NOTIFS_DIGEST, NTF_EMAIL_NOTIFS (children first) and their sequences, each guarded by tableExists / sequenceExists with onFail="MARK_RAN". A user's legacy exo:daily / exo:weekly rows are purged the next time his settings are saved.

Untouched: the mail queue (QueueMessage, SendEmailNotificationJob, MailQueueEntity), the instant path of MailLifecycle, NotificationServiceImpl.process (still broadcasts notification.processed and dispatches to the channels), and everything under io.meeds.commons.digest.

Merge order

makeDigest was abstract, so seventeen repositories override it. This PR merges first; their branches are knowingly red until their own PRs land, and those PRs are green because they remove the override. Same wave, task EXO-90072: social#6083, task#644, content#913, agenda#1112, processes#494, plus anti-malware, dlp, documents, email-connector, gamification, kudos, multifactor-authentication, notes, perk-store, push-notifications, wallet, web-conferencing.

Checked before removing the two frequency constants: no addon declares Daily or Weekly as a default frequency, and FREQUENCY.getFrequecy returns null on an unknown name while both callers compare to INSTANTLY, so an old configuration cannot break startup.

Checked

  • Independent review round on the engine removal: one over-removal fixed (six JMX metrics of the instant path had been dropped with the digest ones), an XML re-indentation reverted, the legacy rows purge added.
  • mvn install of commons-api, commons-component-common, commons-extension-webapp green; commons-component-common suite: 258 tests, only the 10 known ImageResizeServiceImplTest errors (a space in the local working-copy path, environmental, identical on the base branch).

How to test

  1. Startup without error, no NotificationDailyJob / NotificationWeeklyJob in the Quartz log or JMX.
  2. The three NTF_EMAIL_NOTIFS* tables are gone, DATABASECHANGELOG holds 1.0.0-22..27.
  3. Instant emails and push notifications still arrive for every addon.
  4. Notification settings drawer: opens, per-channel choices save, type labels stay translated.
  5. The new digest cycle (enable, capture, send, cleanup) unchanged.

N1 (commons, schema). 🤖 Generated with Claude Code

@azayati
azayati force-pushed the exip-7.3.0.22-cleanup-legacy-digest-api branch from 2c6033e to 3080954 Compare September 8, 2026 13:18
@azayati azayati changed the title fix: The legacy digest hooks of the notification API become deprecated no-ops - EXO-90072 - eXIP7.3.0.22 fix: Remove the legacy digest engine, the API keeps deprecated no-op hooks - EXO-90072 - eXIP7.3.0.22 Sep 8, 2026
@azayati
azayati force-pushed the exip-7.3.0.22-cleanup-legacy-digest-api branch 2 times, most recently from ccd7c6a to a66d370 Compare September 8, 2026 19:30
@azayati azayati changed the title fix: Remove the legacy digest engine, the API keeps deprecated no-op hooks - EXO-90072 - eXIP7.3.0.22 fix: Remove the legacy digest engine - EXO-90072 - eXIP7.3.0.22 Sep 8, 2026
@azayati
azayati force-pushed the exip-7.3.0.22-cleanup-legacy-digest-api branch from a66d370 to 7be3cfb Compare September 8, 2026 19:57
The digest engine switched off in 2022 (crons pushed to 2099) is removed in
full, now that io.meeds.commons.digest replaces it.

Engine: DigestorService and its implementation, the daily and weekly jobs
with their MBeans, DigestDailyPlugin and DigestWeeklyPlugin, the digest
template provider, DigestTemplate, the two gtmpl templates, the JPA mail
notification storage with its three entities and DAOs, their Kernel
configuration, the 2099 cron properties and the
exo.feature.digestMailNotification.enabled flag, and the legacy digest keys
in the 40 locales of the notification bundle.

API: makeDigest and buildDigest disappear from AbstractNotificationPlugin
and AbstractTemplateBuilder, NotificationService loses its digest entry
point, UserSetting loses its daily and weekly plugin lists, isInDaily,
isInWeekly and the DAILY and WEEKLY frequencies, TemplateUtils and the
template transformer lose processDigest, NotificationUtils loses getDigest.
The addons drop their overrides in their own PRs of the same wave; no addon
declares Daily or Weekly as a default frequency, and the frequency parser
returns null on an unknown name, so nothing breaks at startup.

Data: three Liquibase change sets drop NTF_EMAIL_NOTIFS,
NTF_EMAIL_NOTIFS_DIGEST, NTF_EMAIL_NOTIFS_PARAMS and their sequences, and
the legacy exo:daily and exo:weekly rows of a user are purged the next time
his settings are saved.

Kept untouched: the mail queue, the instant path of MailLifecycle,
NotificationServiceImpl.process and the new digest engine.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@azayati
azayati force-pushed the exip-7.3.0.22-cleanup-legacy-digest-api branch from 7be3cfb to c4e639c Compare September 9, 2026 07:48
…igest plugins - EXO-90072 - eXIP7.3.0.22

The notification bundles reach the ResourceBundleService only through the
plugins that declare them, and the two removed digest plugins were the only
ones declaring locale.notification.template.CommonsNotification: the digest
email came out with its keys (subject, greeting, intro, footer links).
NotificationPluginContainer now takes an extra list of bundle paths to
deploy, declared where the component is.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@sonarqubecloud

sonarqubecloud Bot commented Sep 9, 2026

Copy link
Copy Markdown

@azayati
azayati merged commit 1376cc4 into feature/experience Sep 9, 2026
5 checks passed
@azayati
azayati deleted the exip-7.3.0.22-cleanup-legacy-digest-api branch September 9, 2026 15:10
azayati added a commit to Meeds-io/task that referenced this pull request Sep 9, 2026
…ns - EXO-90072 - eXIP7.3.0.22 (#644)

> **Depends on Meeds-io/commons#782** (the legacy `makeDigest` hook
becomes a concrete deprecated no-op there). Until it is merged this
branch does not compile against the feature branch, hence the draft.
Task EXO-90072, spec 50469 §5.

## What
- `MailTemplateProvider`: the `makeDigest` override and the
`buildDigestMsg` helpers are removed; the mail `CommentTemplateBuilder`
only held a `buildDigestMsg` override, so it is gone and
`TaskCommentPlugin` uses the plain `TemplateBuilder`.
- `PushTemplateProvider`: the two no-op `makeDigest` overrides.
- `TaskNotification_en.properties`: the 12
`Notification.digest.{one,more}.*` keys and 5 `Notification.label.*`
keys (and, one.other, more.other, task, tasks) read only by the removed
code (verified by grep over Java, gtmpl, JS, Vue). The same keys are
removed in the 40 locale files of the bundle.
- Tests: `testMakeDigest` removed (it only asserted the removed bodies).

Untouched: `TaskDigestLinePlugin`, its Kernel declaration and its
`digest.*` keys (the new digest of the eXIP), every `makeMessage` path.

## Checked
`services` and `webapps` build; the 17 notification tests are green (the
DAO container tests fail identically on the base branch locally, stale
social snapshot).

N2 (addon, no schema, no security). 🤖 Generated with [Claude
Code](https://claude.com/claude-code)

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
exo-swf pushed a commit to Meeds-io/task that referenced this pull request Sep 9, 2026
…ns - EXO-90072 - eXIP7.3.0.22 (#644)

> **Depends on Meeds-io/commons#782** (the legacy `makeDigest` hook
becomes a concrete deprecated no-op there). Until it is merged this
branch does not compile against the feature branch, hence the draft.
Task EXO-90072, spec 50469 §5.

## What
- `MailTemplateProvider`: the `makeDigest` override and the
`buildDigestMsg` helpers are removed; the mail `CommentTemplateBuilder`
only held a `buildDigestMsg` override, so it is gone and
`TaskCommentPlugin` uses the plain `TemplateBuilder`.
- `PushTemplateProvider`: the two no-op `makeDigest` overrides.
- `TaskNotification_en.properties`: the 12
`Notification.digest.{one,more}.*` keys and 5 `Notification.label.*`
keys (and, one.other, more.other, task, tasks) read only by the removed
code (verified by grep over Java, gtmpl, JS, Vue). The same keys are
removed in the 40 locale files of the bundle.
- Tests: `testMakeDigest` removed (it only asserted the removed bodies).

Untouched: `TaskDigestLinePlugin`, its Kernel declaration and its
`digest.*` keys (the new digest of the eXIP), every `makeMessage` path.

## Checked
`services` and `webapps` build; the 17 notification tests are green (the
DAO container tests fail identically on the base branch locally, stale
social snapshot).

N2 (addon, no schema, no security). 🤖 Generated with [Claude
Code](https://claude.com/claude-code)

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
azayati added a commit to Meeds-io/task that referenced this pull request Sep 10, 2026
…ns - EXO-90072 - eXIP7.3.0.22 (#644)

> **Depends on Meeds-io/commons#782** (the legacy `makeDigest` hook
becomes a concrete deprecated no-op there). Until it is merged this
branch does not compile against the feature branch, hence the draft.
Task EXO-90072, spec 50469 §5.

## What
- `MailTemplateProvider`: the `makeDigest` override and the
`buildDigestMsg` helpers are removed; the mail `CommentTemplateBuilder`
only held a `buildDigestMsg` override, so it is gone and
`TaskCommentPlugin` uses the plain `TemplateBuilder`.
- `PushTemplateProvider`: the two no-op `makeDigest` overrides.
- `TaskNotification_en.properties`: the 12
`Notification.digest.{one,more}.*` keys and 5 `Notification.label.*`
keys (and, one.other, more.other, task, tasks) read only by the removed
code (verified by grep over Java, gtmpl, JS, Vue). The same keys are
removed in the 40 locale files of the bundle.
- Tests: `testMakeDigest` removed (it only asserted the removed bodies).

Untouched: `TaskDigestLinePlugin`, its Kernel declaration and its
`digest.*` keys (the new digest of the eXIP), every `makeMessage` path.

## Checked
`services` and `webapps` build; the 17 notification tests are green (the
DAO container tests fail identically on the base branch locally, stale
social snapshot).

N2 (addon, no schema, no security). 🤖 Generated with [Claude
Code](https://claude.com/claude-code)

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
(cherry picked from commit 5beb448)
exo-swf pushed a commit to Meeds-io/task that referenced this pull request Sep 14, 2026
…ns - EXO-90072 - eXIP7.3.0.22 (#644)

> **Depends on Meeds-io/commons#782** (the legacy `makeDigest` hook
becomes a concrete deprecated no-op there). Until it is merged this
branch does not compile against the feature branch, hence the draft.
Task EXO-90072, spec 50469 §5.

## What
- `MailTemplateProvider`: the `makeDigest` override and the
`buildDigestMsg` helpers are removed; the mail `CommentTemplateBuilder`
only held a `buildDigestMsg` override, so it is gone and
`TaskCommentPlugin` uses the plain `TemplateBuilder`.
- `PushTemplateProvider`: the two no-op `makeDigest` overrides.
- `TaskNotification_en.properties`: the 12
`Notification.digest.{one,more}.*` keys and 5 `Notification.label.*`
keys (and, one.other, more.other, task, tasks) read only by the removed
code (verified by grep over Java, gtmpl, JS, Vue). The same keys are
removed in the 40 locale files of the bundle.
- Tests: `testMakeDigest` removed (it only asserted the removed bodies).

Untouched: `TaskDigestLinePlugin`, its Kernel declaration and its
`digest.*` keys (the new digest of the eXIP), every `makeMessage` path.

## Checked
`services` and `webapps` build; the 17 notification tests are green (the
DAO container tests fail identically on the base branch locally, stale
social snapshot).

N2 (addon, no schema, no security). 🤖 Generated with [Claude
Code](https://claude.com/claude-code)

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
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.

1 participant