From e5c1fcd807420102a32a46d7a6d57d00a7cfb66c Mon Sep 17 00:00:00 2001 From: mguessan Date: Tue, 16 Jun 2009 08:55:00 +0000 Subject: [PATCH] Caldav: Send empty response instead of error on freebusy with unknown attendee git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@588 3d1905a2-6b24-0410-a738-b14d5a86fcbd --- src/java/davmail/caldav/CaldavConnection.java | 57 ++++++++----------- 1 file changed, 24 insertions(+), 33 deletions(-) diff --git a/src/java/davmail/caldav/CaldavConnection.java b/src/java/davmail/caldav/CaldavConnection.java index 762f2f88..2fccd3e2 100644 --- a/src/java/davmail/caldav/CaldavConnection.java +++ b/src/java/davmail/caldav/CaldavConnection.java @@ -617,43 +617,34 @@ public class CaldavConnection extends AbstractConnection { freeBusyMap.put(attendee, freeBusy); } } - if (!freeBusyMap.isEmpty()) { - CaldavResponse response = new CaldavResponse(HttpStatus.SC_OK); - response.startScheduleResponse(); + CaldavResponse response = new CaldavResponse(HttpStatus.SC_OK); + response.startScheduleResponse(); - for (Map.Entry entry : freeBusyMap.entrySet()) { - String attendee = entry.getKey(); - response.startRecipientResponse(attendee); + for (Map.Entry entry : freeBusyMap.entrySet()) { + String attendee = entry.getKey(); + response.startRecipientResponse(attendee); - StringBuilder ics = new StringBuilder(); - ics.append("BEGIN:VCALENDAR").append((char) 13).append((char) 10) - .append("VERSION:2.0").append((char) 13).append((char) 10) - .append("PRODID:-//davmail.sf.net/NONSGML DavMail Calendar V1.1//EN").append((char) 13).append((char) 10) - .append("METHOD:REPLY").append((char) 13).append((char) 10) - .append("BEGIN:VFREEBUSY").append((char) 13).append((char) 10) - .append("DTSTAMP:").append(valueMap.get("DTSTAMP")).append("").append((char) 13).append((char) 10) - .append("ORGANIZER:").append(valueMap.get("ORGANIZER")).append("").append((char) 13).append((char) 10) - .append("DTSTART:").append(valueMap.get("DTSTART")).append("").append((char) 13).append((char) 10) - .append("DTEND:").append(valueMap.get("DTEND")).append("").append((char) 13).append((char) 10) - .append("UID:").append(valueMap.get("UID")).append("").append((char) 13).append((char) 10) - .append(attendeeKeyMap.get(attendee)).append(':').append(attendee).append("").append((char) 13).append((char) 10); - entry.getValue().appendTo(ics); - ics.append("END:VFREEBUSY").append((char) 13).append((char) 10) - .append("END:VCALENDAR"); - response.appendCalendarData(ics.toString()); - response.endRecipientResponse(); + StringBuilder ics = new StringBuilder(); + ics.append("BEGIN:VCALENDAR").append((char) 13).append((char) 10) + .append("VERSION:2.0").append((char) 13).append((char) 10) + .append("PRODID:-//davmail.sf.net/NONSGML DavMail Calendar V1.1//EN").append((char) 13).append((char) 10) + .append("METHOD:REPLY").append((char) 13).append((char) 10) + .append("BEGIN:VFREEBUSY").append((char) 13).append((char) 10) + .append("DTSTAMP:").append(valueMap.get("DTSTAMP")).append("").append((char) 13).append((char) 10) + .append("ORGANIZER:").append(valueMap.get("ORGANIZER")).append("").append((char) 13).append((char) 10) + .append("DTSTART:").append(valueMap.get("DTSTART")).append("").append((char) 13).append((char) 10) + .append("DTEND:").append(valueMap.get("DTEND")).append("").append((char) 13).append((char) 10) + .append("UID:").append(valueMap.get("UID")).append("").append((char) 13).append((char) 10) + .append(attendeeKeyMap.get(attendee)).append(':').append(attendee).append("").append((char) 13).append((char) 10); + entry.getValue().appendTo(ics); + ics.append("END:VFREEBUSY").append((char) 13).append((char) 10) + .append("END:VCALENDAR"); + response.appendCalendarData(ics.toString()); + response.endRecipientResponse(); - } - response.endScheduleResponse(); - response.close(); - } else { - StringBuilder buffer = new StringBuilder("Unknown recipient(s): "); - for (String attendee : attendees) { - buffer.append(attendee); - buffer.append(' '); - } - sendHttpResponse(HttpStatus.SC_NOT_FOUND, null, "text/plain", buffer.toString(), true); } + response.endScheduleResponse(); + response.close(); }