diff --git a/mozilla/calendar/providers/caldav/calDavCalendar.js b/mozilla/calendar/providers/caldav/calDavCalendar.js index d7a5ef40b73..2aa8c441a66 100644 --- a/mozilla/calendar/providers/caldav/calDavCalendar.js +++ b/mozilla/calendar/providers/caldav/calDavCalendar.js @@ -57,6 +57,14 @@ // XXXdmose getItem and getItems() should return immutable events + +function debug(s) { + const debugging = true; + if (debugging) { + dump(s); + } +} + function calDavCalendar() { this.wrappedJSObject = this; this.mObservers = [ ]; @@ -186,7 +194,7 @@ calDavCalendar.prototype = { // 201 = HTTP "Created" // if (aStatusCode == 201) { - dump("Item added successfully.\n"); + debug("Item added successfully.\n"); var retVal = Components.results.NS_OK; // XXX deal with Location header @@ -197,7 +205,7 @@ calDavCalendar.prototype = { } else { // XXX real error handling - dump("Error adding item: " + aStatusCode + "\n"); + debug("Error adding item: " + aStatusCode + "\n"); retVal = Components.results.NS_ERROR_FAILURE; } @@ -217,7 +225,7 @@ calDavCalendar.prototype = { newItem.setProperty("locationURI", itemUri.spec); newItem.makeImmutable(); - dump("icalString = " + newItem.icalString + "\n"); + debug("icalString = " + newItem.icalString + "\n"); // XXX use if not exists // do WebDAV put @@ -247,7 +255,7 @@ calDavCalendar.prototype = { var eventUri = this.mUri.clone(); try { eventUri.spec = aItem.getProperty("locationURI"); - dump("using locationURI: " + eventUri.spec + "\n"); + debug("using locationURI: " + eventUri.spec + "\n"); } catch (ex) { // XXX how are we REALLY supposed to figure this out? eventUri.spec = eventUri.spec + aItem.id + ".ics"; @@ -263,11 +271,11 @@ calDavCalendar.prototype = { // 204 = HTTP "No Content" // if (aStatusCode == 204) { - dump("Item modified successfully.\n"); + debug("Item modified successfully.\n"); var retVal = Components.results.NS_OK; } else { - dump("Error modifying item: " + aStatusCode + "\n"); + debug("Error modifying item: " + aStatusCode + "\n"); // XXX deal with non-existent item here, other // real error handling @@ -297,7 +305,7 @@ calDavCalendar.prototype = { // XXX use if-exists stuff here // XXX use etag as generation // do WebDAV put - dump("modifyItem: aItem.icalString = " + aItem.icalString + "\n"); + debug("modifyItem: aItem.icalString = " + aItem.icalString + "\n"); var webSvc = Components.classes['@mozilla.org/webdav/service;1'] .getService(Components.interfaces.nsIWebDAVService); webSvc.putFromString(eventResource, "text/calendar", aItem.icalString, @@ -333,10 +341,10 @@ calDavCalendar.prototype = { // 204 = HTTP "No content" // if (aStatusCode == 204) { - dump("Item deleted successfully.\n"); + debug("Item deleted successfully.\n"); var retVal = Components.results.NS_OK; } else { - dump("Error deleting item: " + aStatusCode + "\n"); + debug("Error deleting item: " + aStatusCode + "\n"); // XXX real error handling here retVal = Components.results.NS_ERROR_FAILURE; } @@ -385,17 +393,17 @@ calDavCalendar.prototype = { default xml namespace = "urn:ietf:params:xml:ns:caldav"; queryXml = - + - - - + + + {aId} - - - + + + ; @@ -440,9 +448,9 @@ calDavCalendar.prototype = { var xSerializer = Components.classes ['@mozilla.org/xmlextras/xmlserializer;1'] .getService(Components.interfaces.nsIDOMSerializer); - //XXXdump(xSerializer.serializeToString(aDetail)); - responseElement = new XML( - xSerializer.serializeToString(aDetail)); + var response = xSerializer.serializeToString(aDetail); + debug("response = " + response + "\n"); + var responseElement = new XML(response); // create calIItemBase from e4x object // XXX error-check that we only have one result, etc @@ -454,10 +462,14 @@ calDavCalendar.prototype = { var item = calEventClass.createInstance(calIEvent); // cause returned data to be parsed into the event item + var calData = responseElement..C::["calendar-data"]; + if (calData.length = 0) { + debug("server returned empty or non-existing " + + "calendar-data element!\n"); + } + debug("ITEM RESULT: '" + calData + "'\n"); // XXX try-catch - dump ("ITEM RESULT: " + responseElement..C::["calendar-query-result"] + "\n"); - item.icalString = - responseElement..C::["calendar-query-result"]; + item.icalString = calData; item.parent = this; // save the location name in case we need to modify @@ -468,8 +480,8 @@ calDavCalendar.prototype = { if(aOccurrences) { iid = calIItemOccurrence; if (item.recurrenceInfo) { - //dump ("ITEM has recurrence: " + item + " (" + item.title + ")\n"); - //dump ("rangestart: " + aRangeStart.jsDate + " -> " + aRangeEnd.jsDate + "\n"); + debug("ITEM has recurrence: " + item + " (" + item.title + ")\n"); + debug("rangestart: " + aRangeStart.jsDate + " -> " + aRangeEnd.jsDate + "\n"); items = item.recurrenceInfo.getOccurrences (aRangeStart, aRangeEnd, 0, {}); } else { item = makeOccurrence(item, item.startDate, item.endDate); @@ -496,7 +508,7 @@ calDavCalendar.prototype = { } // XXX handle aCount - dump("errString = " + errString + "\n"); + debug("errString = " + errString + "\n"); if (items) { aListener.onGetResult(this, rv, iid, null, items ? items.length : 0, errString ? errString : items); @@ -556,7 +568,7 @@ calDavCalendar.prototype = { filterTypes = 0; if ( aItemFilter & calICalendar.ITEM_FILTER_TYPE_TODO ) { filterTypes++; - dump("getItems called with TODO filter\n"); + debug("getItems called with TODO filter\n"); } if ( aItemFilter & calICalendar.ITEM_FILTER_TYPE_EVENT ) { filterTypes++; @@ -565,7 +577,7 @@ calDavCalendar.prototype = { filterTypes++; } if ( filterTypes > 1 ) { - dump("Multiple simultaneous filter types not supported by " + + debug("Multiple simultaneous filter types not supported by " + "this provider.\n"); throw Components.results.NS_ERROR_FAILURE; } @@ -575,32 +587,32 @@ calDavCalendar.prototype = { var C = new Namespace("urn:ietf:params:xml:ns:caldav") default xml namespace = C; var queryXml = - + - - - + + + ; switch (aItemFilter & calICalendar.ITEM_FILTER_TYPE_ALL) { case calICalendar.ITEM_FILTER_TYPE_EVENT: - queryXml[0].C::filter.C::["icalcomp-filter"] - .C::["icalcomp-filter"].@name="VEVENT"; + queryXml[0].C::filter.C::["comp-filter"] + .C::["comp-filter"].@name="VEVENT"; break; case calICalendar.ITEM_FILTER_TYPE_TODO: - queryXml[0].C::filter.C::["icalcomp-filter"] - .C::["icalcomp-filter"].@name="VTODO"; + queryXml[0].C::filter.C::["comp-filter"] + .C::["comp-filter"].@name="VTODO"; break; case calICalendar.ITEM_FILTER_TYPE_JOURNAL: break; - queryXml[0].C::filter.C::["icalcomp-filter"] - .C::["icalcomp-filter"].@name="VJOURNAL"; + queryXml[0].C::filter.C::["comp-filter"] + .C::["comp-filter"].@name="VJOURNAL"; default: - dump("No item types specified\n"); + debug("No item types specified\n"); // XXX should we just quietly call back the completion method? throw NS_ERROR_FAILURE; @@ -614,16 +626,15 @@ calDavCalendar.prototype = { var rangeXml = ; - // append the time-range as a child of our innermost - // icalcomp-filter - queryXml[0].C::filter.C::["icalcomp-filter"] - .C::["icalcomp-filter"].appendChild(rangeXml); + // append the time-range as a child of our innermost comp-filter + queryXml[0].C::filter.C::["comp-filter"] + .C::["comp-filter"].appendChild(rangeXml); } // XXX aItemFilter var queryString = queryXml.toXMLString(); - dump("queryString = " + queryString + "\n"); + debug("queryString = " + queryString + "\n"); var occurrences = (aItemFilter & calICalendar.ITEM_FILTER_CLASS_OCCURRENCES) != 0; this.reportInternal(queryString, occurrences, aRangeStart, aRangeEnd, aCount, aListener); @@ -695,13 +706,13 @@ WebDavListener.prototype = { // aClosure is the listener aClosure.onOperationComplete(this, aStatusCode, 0, null, null); - dump("WebDavListener.onOperationComplete() called\n"); + debug("WebDavListener.onOperationComplete() called\n"); return; }, onOperationDetail: function(aStatusCode, aResource, aOperation, aDetail, aClosure) { - dump("WebDavListener.onOperationDetail() called\n"); + debug("WebDavListener.onOperationDetail() called\n"); return; } }