Hey,
For this week, I just pushed a couple of commits to my github
repository, you can find it here:
https://github.com/TheAntimist/openmeetings/commit/4166cfcb3f7e2f79625d9d9e7e552bc1083cfb7c
All the classes I have added can be found here:
https://github.com/TheAntimist/openmeetings/tree/4166cfcb3f7e2f79625d9d9e7e552bc1083cfb7c/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav
My Forked repository can be found here:
https://github.com/TheAntimist/openmeetings/tree/3.2.x/
Here's what I've been able to complete:
* Addition to Entities: Appointments, now have href and OmCalendar,
fields. New OmCalendar Entity, for storing the CalendarEvents. Fields
included are: id, title, href, username, password, sync-token, deleted,
SyncType, owner.
* Implement Sync Handlers, which are basically functions to handle
syncing of items from the server to the Openmeetings Database. I have
currently implemented all the possible sync methods as mentioned earlier
i.e. ChangeLog based and WebDAV-Sync based. These have been divided into
three classes, namely, CtagHandler, EtagHandler and WebDAVSyncHandler,
along with that another special handler, called the MultigetHandler,
which is used by all the three classes.
Classes can be found here:
https://github.com/TheAntimist/openmeetings/tree/4166cfcb3f7e2f79625d9d9e7e552bc1083cfb7c/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/handler
* With respect to WebDAV-Sync, along with the Handler I have included
a new Method which is used by WebDAVSyncHandler for doing a REPORT, this
was necessary as in the original ReportMethods defined in
jackrabbit-webdav and caldav4j, don't have a specific support to make
changes to the Processing of Responses necessary to be utilized here.
* Included a Basic parser from iCal events from CalDAV to Appointment
classes. Using iCal4j. Doesn't handle complex Recurrences yet, due to
limitations of Appointment class. Although, in an update I'll include
the functions for basic recurrences, which already exists, such as
IsDaily, IsWeekly and so on.
* CalendarManager class, which handles basic initialization, and
setting up of the calendar. This then uses the specific synchandler,
depending on which type of syncing is allowed on the system. This class
provides a high level API for syncing, and in the future updates for
creation, deletion and updation of events on the server and the database.
Note: I tested the use of the syncing and so on, by creating another
object with the same classes, and have come across, no problems, on the
syncing side. Though, one issu, I did have initially was with respect to
Persistence Exceptions, which I somehow fixed, though, I wasn't using
the Spring FrameWork, I'll test the behaviour in spring and hopefully
they don't pop up.
Tested on Yahoo CalDAV Server and DAViCal local server.
Future Work:
* Handle creation and deletion of events.
* Improve Calendar Discovery functions.
* Implement Digest authentication and if possible OAuth. Currently
only Basic authentication supported.
* Handle encryption of Passwords in the database, using something
similar to the Firefox way for Symmetric encryption, using AES.
* Wicket UI.
--
Ankush Mishra