Enum Class SharingMechanism
- All Implemented Interfaces:
Serializable,Comparable<SharingMechanism>,Constable
The catalogue of granting mechanisms, in code: an entry is a protocol and a
verdict on it, and which entry a server gets is selected from what the
server says about itself (of(DavOptions, String): what the
collection advertises, CalDavClient.capabilities(org.exoplatform.caldav.client.CalDavEndpoint, java.lang.String), and, for
BlueMind, where the collection lives),
not ticked by an
administrator nor frozen on a registration row. Granting is not a CalDAV
feature — no RFC defines calendar sharing — so the two servers this add-on
targets have nothing in common here: Stalwart takes RFC 3744's ACL
method and nothing else, BlueMind takes Apple's POST CS:share
(design note 52695 B.8.2, review 52697).
Offered only where every change can be confirmed. An entry is
offered when eXo can read back, after each grant and revoke, whether the
server applied it, and reports "not applied" otherwise. How it is confirmed
differs per server. On Stalwart, the ACL is read over DAV, and a grant was
also seen to reach the sharee live (note 52696). On BlueMind, the owner
cannot read the ACL over DAV (note 52697, live results of 2026-09-13), so
the container's access list is read through BlueMind's REST API.
BLUEMIND_SHARE is offered on BlueMind's source code and on that
read-back. The live capture of a BlueMind grant is still pending: the
BlueMind section of the delivery's live test.
-
Nested Class Summary
Nested classes/interfaces inherited from class java.lang.Enum
Enum.EnumDesc<E extends Enum<E>> -
Enum Constant Summary
Enum ConstantsEnum ConstantDescriptionApple sharing as BlueMind's DAV server implements it (BlueMind source,plugins/net.bluemind.dav.server/.../proto/sharing/SharingProtocol.java): aPOSTofCS:shareon a calendar collection names the sharee by e-mail, and the server rewrites the container's access list through its own container management.Apple sharing (POSTof aCS:sharebody, or theresource-sharingdraft) on a server that is not recognised as BlueMind.No granting mechanism eXo knows of: Google, or a server without RFC 3744.RFC 3744 §8.1: the owner writes the collection's whole access control list with theACLmethod. -
Method Summary
Modifier and TypeMethodDescriptionstatic booleanisBlueMindCollection(String collectionHref) Whether a path is a calendar collection as BlueMind's DAV server names one.booleanWhether eXo offers granting through this mechanism.static SharingMechanismof(DavOptions options) The mechanism a collection's advertised DAV classes and allowed methods select, read from those alone.static SharingMechanismof(DavOptions options, String collectionHref) The mechanism what a collection advertises (CalDavClient.capabilities(org.exoplatform.caldav.client.CalDavEndpoint, java.lang.String)) selects, given where the collection lives.static SharingMechanismReturns the enum constant of this class with the specified name.static SharingMechanism[]values()Returns an array containing the constants of this enum class, in the order they are declared.
-
Enum Constant Details
-
WEBDAV_ACL
RFC 3744 §8.1: the owner writes the collection's whole access control list with theACLmethod. Verified on Stalwart 0.16 on 2026-09-13: a read grant from Alice to Bob answered 200, and Alice's calendar was then listed in Bob's own home, owned by Alice and read-only for him (note 52696). -
CALENDARSERVER_SHARE
Apple sharing (POSTof aCS:sharebody, or theresource-sharingdraft) on a server that is not recognised as BlueMind. Not offered: nothing tells eXo how such a server resolves a sharee or how a change could be read back. A collection in BlueMind's layout isBLUEMIND_SHAREinstead. -
BLUEMIND_SHARE
Apple sharing as BlueMind's DAV server implements it (BlueMind source,plugins/net.bluemind.dav.server/.../proto/sharing/SharingProtocol.java): aPOSTofCS:shareon a calendar collection names the sharee by e-mail, and the server rewrites the container's access list through its own container management. Offered, with two things eXo does around it because the protocol cannot: the server answers 200 whatever happened, so every change is confirmed by reading the container's access list back through BlueMind's REST API; and the server rewrites or removes every entry of the sharee, so a sharee holding anything but plain reading is refused rather than downgraded. -
NONE
No granting mechanism eXo knows of: Google, or a server without RFC 3744.
-
-
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
-
isOffered
public boolean isOffered()Whether eXo offers granting through this mechanism.- Returns:
- true for a mechanism whose every change eXo can confirm by reading it back
-
of
The mechanism a collection's advertised DAV classes and allowed methods select, read from those alone.Read in this order, and the order is the point:
- A vendor sharing protocol advertised (
calendarserver-sharing, or draft-pot'sresource-sharing) selectsCALENDARSERVER_SHARE, whatever else the server says. On such a server the ACL is the storage its own sharing layer manages, and a grant written beside that layer is not what its users or its UI see. BlueMind is the case that makes this rule first: its capturedDAVheader advertisesaccess-controlas well ascalendarserver-sharing(bluemind-principal.captured.xml), so a rule on RFC 3744 alone would offer it. - RFC 3744 access control advertised, the
ACLmethod allowed, and nocalendar-proxydelegation layered on top selectsWEBDAV_ACL. Stalwart answers exactly this (design A.5, liveOPTIONS). The delegation exclusion keeps out servers whose proxy groups are mapped onto the same ACL (SOGo). - Anything else is
NONE: Google advertises no access control at all.
- Parameters:
options- what the collection answered, null when nothing was asked- Returns:
- the mechanism, never null
- A vendor sharing protocol advertised (
-
of
The mechanism what a collection advertises (CalDavClient.capabilities(org.exoplatform.caldav.client.CalDavEndpoint, java.lang.String)) selects, given where the collection lives.Apple sharing is offered on one server only, and BlueMind is recognised by two independent facts that must both hold: it advertises
calendarserver-sharingin theDAVheader of its PROPFIND answers (PropFindProtocol.java:125, captured inbluemind-principal.captured.xml; where itsOPTIONSis answered bare in front of its DAV server, as on the deployments observed,CalDavClient.capabilities(org.exoplatform.caldav.client.CalDavEndpoint, java.lang.String)reads them from a PROPFIND), and the collection has the path BlueMind's DAV server gives every calendar,/dav/calendars/__uids__/<owner uid>/<container uid>/(ResType.VSTUFF_CONTAINER). Apple's CalendarServer uses the same__uids__layout without the/davroot, and Nextcloud and iCloud use other paths; those stay not offered. The service confirms the recognition before any change: BlueMind's REST API must accept the owner's login, which no other server answers.- Parameters:
options- what the collection answered, null when nothing was askedcollectionHref- the collection's path, may be null- Returns:
- the mechanism, never null
-
isBlueMindCollection
Whether a path is a calendar collection as BlueMind's DAV server names one.- Parameters:
collectionHref- the collection's path, may be null- Returns:
- true for
/dav/calendars/__uids__/<uid>/<container>/
-