Class BlueMindAclClient

java.lang.Object
org.exoplatform.caldav.client.bluemind.BlueMindAclClient

@Component public class BlueMindAclClient extends Object
Reads the access control list of a BlueMind calendar through BlueMind's own REST API — the one place its sharing state can be read (EXO-90253).

BlueMind's DAV server answers a CS:share with 200 whatever it did and publishes no sharee list over DAV (CS:invite is a stub: plugins/net.bluemind.dav.server/.../proto/props/calendarserver/Invite.java), so the only proof that a grant was applied is the container's access list, GET /api/containers/_manage/{containerUid}/_acl (parent/core/net.bluemind.core.container.api/.../IContainerManagement.java), which the container's owner may read (ContainerPermissionResolver.java: the owner holds every verb).

The session — same server, the owner's stored credentials, log in, read, always log out — is BlueMindRestSession's, shared with every other REST conversation this add-on holds with BlueMind.

  • Field Details

    • API_KEY_HEADER

      public static final String API_KEY_HEADER
      The header BlueMind's REST API reads a session key from.
      See Also:
  • Constructor Details

    • BlueMindAclClient

      @Autowired public BlueMindAclClient(BlueMindRestSession session)
      The client Spring builds, over the shared session.
      Parameters:
      session - the REST session every BlueMind conversation shares
  • Method Details

    • readAcl

      public List<BlueMindAclClient.BlueMindAce> readAcl(CalDavEndpoint endpoint, String containerUid)
      A container's access list, read as its owner in one short REST session.
      Parameters:
      endpoint - the owner's DAV endpoint, minted from the registry
      containerUid - the container uid, the last segment of the calendar collection's path
      Returns:
      the entries, in the order BlueMind lists them
      Throws:
      UnsupportedOperationException - when the configured credentials are not a login and password
      CalDavAuthenticationException - when BlueMind refuses the login
      CalDavForbiddenException - when the account may not read the list
      CalDavUnreachableException - when the server cannot be reached
      CalDavException - when the answer is anything else
    • open

      public BlueMindAclClient.Session open(CalDavEndpoint endpoint)
      Opens a REST session as the owner, for as many reads as one service call needs; BlueMindAclClient.Session.close() logs it out. The exceptions are those of readAcl(CalDavEndpoint, String) for the login half.
      Parameters:
      endpoint - the owner's DAV endpoint, minted from the registry
      Returns:
      the session, to close
    • acceptsCredentials

      public boolean acceptsCredentials(CalDavEndpoint endpoint)
      Whether the owner's configured credentials are a login and password this API can take, without calling the server: what decides whether sharing on BlueMind is offered at all, so that a registration whose provider produces a token never shows an action every click of which would be refused.
      Parameters:
      endpoint - the owner's endpoint, minted from the registry
      Returns:
      true when the provider produces a Basic login and password