All Classes and Interfaces
Class
Description
Immutable data key.
Used by FutureCache to execute the ServiceContext.
Check cluster node Name and generate auto name if not configured
This listener is called when an user was enabled/disabled from the system
and update his setting as active/inactive
Provides different methods which are used for comparing and making a list of differences between content.
The glue between the notification dispatcher and the digest: captures every
processed notification for the digests of its recipients, apart from the
notification itself.
Answers "is this user due now?" in his own local calendar, in Java and not
in SQL, so that the rule is the same on every database.
Keeps NTF_DIGEST_USERS, the work list of the digest sender job, in sync with
the choices of the users: the row holds only what the job needs to answer
"which users are due now?".
A notification waiting for the digest of one recipient: one row per
notification and per recipient, shared by his daily and his weekly digest,
never duplicated per frequency.
Finds the wording of a digest label in the language of the recipient.
Builds one digest email from the waiting items of one occurrence: keeps the
categories the user selected for this frequency (the second half of the
double check), groups them in display order, asks each addon for its lines,
caps every category and counts the rest, then lays everything out with the
template.
The mail queue the platform sends from (
EMAIL_QUEUE), reached through
Spring Data so that a digest email is queued in the very transaction that
claims its occurrence.Puts a digest email in the platform mail queue, with the same row shape and
the same checks as the legacy
QueueMessage.put, but through the
Spring EntityManager: called inside the transaction that claims the
occurrence, the queue row and the watermark commit, or roll back, together.Renders the digest email template.
One occurrence of one frequency for one user, as a single transaction: the
claim of the occurrence (the guarded move of the watermark), the reading of
the waiting items, the building of the email, its row in the mail queue and
the deletion of the covered items commit together, or roll back together.
Writes and reads back the PARAMS column of a waiting item: a small JSON
object of strings, ids only.
What the digest email needs to know about its recipient and about the
platform, gathered from the existing notification helpers so that the digest
emails come from the same sender and use the same links as the instant ones.
The work list of the digest sender job: who is a candidate, the claim of an
occurrence, the waiting items of a user and their deletion.
One run of the digest sender job: the safety cleanup, then the selection of
the users due now, then one task per due user serving his frequencies one
after the other, on a small worker pool.
The one scheduled job of the digest, hourly by default.
Reads and writes the digest settings through
SettingService, whose
cache is in-memory and cluster-coherent: a change saved on one server applies
immediately on every server.The glue between the platform timezone of a user and the digest: when the
platform saves a user's timezone (event social.timeZone.saved, source = the
username, data = the zone id), the copy the digest sender job keeps in its
work list is refreshed, so the next occurrence is computed in the new
timezone.
The work list of the digest sender job: one row per user having at least one
digest frequency enabled, nobody else.
Route class which contains path, action and argument list.
Prevent XSS/XEE attacks by encoding user HTML inputs.
Cached data list.
Simple lorem ipsum text generator.
This REST Service deserves resource bundles in JSON format
Sends the queued emails, one execution at a time: two overlapping executions
load the same queue rows and send each of them twice (seen when the Quartz
scheduler starts in the last second of a minute and releases the missed
occurrence right before the next one).
Kind of closure.
A class implementing this interface is executed will be started (execution of the method start())
during the startup of the platform but on one node only if running in cluster.
This service allow to running a specific service (implements StartableClusterAware interface) on one cluster node.