Enum Class WriteChannel
- All Implemented Interfaces:
Serializable,Comparable<WriteChannel>,Constable
Through which door eXo writes and removes the meeting copies of a server.
One decision per registration, like MirrorTargetKind, and for the
same reason: it is a property of the server behind the registration, not of
any user or any single write. A channel, not a tolerance — the quirk
catalogue changes what eXo notices about a copy, this changes
how the copy gets there — which is why it is its own field rather
than an entry in ServerQuirk.
Why a second door exists at all (EXO-90307). A copy written over CalDAV
reaches BlueMind's calendar service with sendNotification=true
hard-coded (plugins/net.bluemind.dav.server/.../proto/put/CreateEntity.java:165,170;
the DELETE too, .../proto/delete/DeleteProtocol.java:102), and
BlueMind then schedules the meeting itself: same-server invitees get it
twice, an answer given on BlueMind's own object never reaches eXo, and
external attendees get BlueMind's mail on top of eXo's. BlueMind honours no
SCHEDULE-AGENT and offers no administrator toggle, so there is no
CalDAV-side escape. Its ICS import endpoint, on the other hand, hard-codes
sendNotification=false on every add, modify and delete it performs
(EventChangesMerge.java:102,238,240), and
IcsHook.mustSendNotification returns on that flag before anything
else is looked at (IcsHook.java:1099-1117).
-
Nested Class Summary
Nested classes/interfaces inherited from class java.lang.Enum
Enum.EnumDesc<E extends Enum<E>> -
Enum Constant Summary
Enum ConstantsEnum ConstantDescriptionBlueMind's own REST API: the ICS import endpoint for every write (PUT /api/calendars/vevent/{containerUid},IVEvent.importIcs), its calendar API for every removal (DELETE /api/calendars/{containerUid}/{uid}?sendNotifications=false), and acalendar-multigetREPORT afterwards to learn the version the server now holds.CalDAVPUTandDELETEon the object's own href. -
Method Summary
Modifier and TypeMethodDescriptionstatic WriteChannelReads a stored value into a channel, tolerating anything a database can hold.static WriteChannelReturns the enum constant of this class with the specified name.static WriteChannel[]values()Returns an array containing the constants of this enum class, in the order they are declared.
-
Enum Constant Details
-
CALDAV
CalDAVPUTandDELETEon the object's own href. The default, and what every deployment did before this setting existed. -
BLUEMIND_IMPORT
BlueMind's own REST API: the ICS import endpoint for every write (PUT /api/calendars/vevent/{containerUid},IVEvent.importIcs), its calendar API for every removal (DELETE /api/calendars/{containerUid}/{uid}?sendNotifications=false), and acalendar-multigetREPORT afterwards to learn the version the server now holds. Only meaningful on a BlueMind server, and offered to the administrator as a flag so that turning it off is the whole rollback.
-
-
Method Details
-
values
Returns an array containing the constants of this enum class, in the order they are declared.- Returns:
- an array containing the constants of this enum class, in the order they are declared
-
valueOf
Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)- Parameters:
name- the name of the enum constant to be returned.- Returns:
- the enum constant with the specified name
- Throws:
IllegalArgumentException- if this enum class has no constant with the specified nameNullPointerException- if the argument is null
-
of
Reads a stored value into a channel, tolerating anything a database can hold.Never throws, for the reason
MirrorTargetKind.of(java.lang.String)gives: the column is written by this code and by a Liquibase default, so an unexpected value means somebody edited the row by hand or a later version wrote a name this one does not know — and the safe reading of both is the behaviour every deployment already had. A throw on read would take down every account resolving through that server, not merely route its writes through the older door.- Parameters:
stored- the value read from the registration row, may be null or blank- Returns:
- the channel it names, or
CALDAVwhen it names none
-