Here's the current list of CalDAV library implementations in JAVA:
- iCal4j (which is used in the project already for handling ics):
This is already used to send out event invites through email. Just
that this might still be used for handling CalDAV as the calendar data
is still made up of iCal.
There exists an iCal4j-connector which from their page, also,
implements the CalDAV using jackrabbit-webdav library. But it's
development seems to have stopped since 2013.
- CalDAV4j ( https://github.com/caldav4j/caldav4j ):
From their Project Page:
CalDAV4j is a protocol library that extends the Slide project's
WebDAV client library (which itself is an extension of the Apache's
HttpClient library) to allow high level manipulation of CalDAV calendar
collections as well as lower level CalDAV protocol interactions. This
project uses iCal4j for iCalendar processing.
This project is promising and their library is stable to use. But
from their googlecode commits it was last commited on Nov 2013, though
since moving to GitHub, it still hasn't had much happen.
One thing I have noticed it's still missing the CalDAV ACL's, things
like "PRINCIPAL" query haven't been implemented. I'm also not sure of
it's status of development or it's integration to the JackRabbit
sources, but from digging up it's history I notice that the Open Source
Applications Foundation (OSAF) is now defunct, and thus, it might seem
like the project is at a halt. There also seem to be issues with
jackrabbit-webdav integeration, it still seems to be using Apache Slide
as the WebDAV library, atleast in the master branches, though there is a
branch on the Google Code for caldav4j-webdav using the
jackrabbit-webdav
library(https://caldav4j.googlecode.com/svn/branches/caldav4j-jackrabbit/).
- JackRabbit-WebDAV
(https://jackrabbit.apache.org/jcr/components/jackrabbit-webdav-library.html)
:
Taken from their project page:
This is the WebDAV Library component of the Apache Jackrabbit
project. This component provides interfaces and common utility classes
used for building a WebDAV server or client.
It supports DAV 1, 2, DeltaV, Ordering, Access Control, Search, Bind.
In the end both CalDAV4j and Jackrabbit-webdav, can be used. It'd be
preferrable to use CalDAV4j, which directly implements CalDAV protocol
but extends Apache Slide WebDAV protocol library. The main problem with
caldav4j is that Apache abandoned Slide in 2007 and therefore it is
based on a deprecated library (now Apache advises to consider Jackrabbit
project instead). And Jackrabbit-webdav implements only WebDAV specific
code. Some operations will be very familiar if you already have
experience with HTTP services (GET, PUT and DELETE), but many are added
too (MKCOL, MKCALENDAR).
Thus comes the dilemma of which library to use, perhaps at some part
even the CalDAV4j, could fail, and it would be easier to use
jackrabbit-webdav at places to implement parts which don't already exist.
In the end, I'm still not certain of which library to use.
Ankush