Package org.exoplatform.caldav.client


package org.exoplatform.caldav.client
  • Class
    Description
    The server refused the credentials.
    The CalDAV protocol, and nothing else: it fetches, it does not decide.
    Where a CalDAV conversation is allowed to go: the scheme and authority of one administrator-declared server, plus the account's base collection path on it.
    The one failure the CalDAV client throws for protocol and transport trouble: the server unreachable, an answer outside the accepted statuses of the verb, a body that is not DAV XML, or a target this client refuses to address.
    One calendar collection as a PROPFIND listed it: everything the sync engine binds a pair on, and nothing it does not need.
    One calendar object (an .ics resource) as the server answered it.
    CalDAV over the JDK's own HTTP client, modelled line for line on email-connector's HttpCardDavClient — the hand-written client that already works against the same BlueMind that defeated the browser — with the disciplines the relay established carried over: registry-only targets — endpoints are minted from the server registry alone (HttpCalDavClient.endpoint(Long, String)), hrefs resolve against that endpoint's authority, and a foreign-host href is refused; no redirects — a declared server must not be able to bounce this client's credentialed requests to another host, so the transport never follows a 3xx (which also rules the well-known discovery flow out by design: discovery starts at the registered base path instead); explicit timeouts and a bounded body read, both deployment-tunable; no auth material anywhere near a log or an exception — every message names the method and the URI, never a header. The XML is parsed with doctypes and external entities disabled: the payload comes from whatever server an administrator declared, which is still attacker-influenced input, and a stock parser would happily read files off this machine on its behalf.
    What an MKCALENDAR answered — deliberately never a boolean "created".
    What a conditional PUT answered.
    Which incremental-sync tier a collection's server can serve, read from one Depth:0 PROPFIND (supported-report-set, ctag, sync token) plus the DAV response header.
    The incremental strategies of the plan, cheapest first.
    What an RFC 6578 sync-collection REPORT answered: the hrefs that changed, the hrefs that are gone, and the token to store for the next run.