Enum Class WriteChannel

java.lang.Object
java.lang.Enum<WriteChannel>
org.exoplatform.caldav.model.WriteChannel
All Implemented Interfaces:
Serializable, Comparable<WriteChannel>, Constable

public enum WriteChannel extends Enum<WriteChannel>

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 Constants
    Enum Constant
    Description
    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 a calendar-multiget REPORT afterwards to learn the version the server now holds.
    CalDAV PUT and DELETE on the object's own href.
  • Method Summary

    Modifier and Type
    Method
    Description
    of(String stored)
    Reads a stored value into a channel, tolerating anything a database can hold.
    Returns the enum constant of this class with the specified name.
    static WriteChannel[]
    Returns an array containing the constants of this enum class, in the order they are declared.

    Methods inherited from class java.lang.Object

    getClass, notify, notifyAll, wait, wait, wait
  • Enum Constant Details

    • CALDAV

      public static final WriteChannel CALDAV
      CalDAV PUT and DELETE on the object's own href. The default, and what every deployment did before this setting existed.
    • BLUEMIND_IMPORT

      public static final WriteChannel 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 a calendar-multiget REPORT 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

      public static WriteChannel[] 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

      public static WriteChannel valueOf(String name)
      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 name
      NullPointerException - if the argument is null
    • of

      public static WriteChannel of(String stored)
      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 CALDAV when it names none