Merge "Fix #2457665 (Guests don't appear in Exchange events)"
diff --git a/src/com/android/exchange/adapter/CalendarSyncAdapter.java b/src/com/android/exchange/adapter/CalendarSyncAdapter.java
index 2be5a9d..6bc04ae 100644
--- a/src/com/android/exchange/adapter/CalendarSyncAdapter.java
+++ b/src/com/android/exchange/adapter/CalendarSyncAdapter.java
@@ -228,6 +228,7 @@
cv.put(Events._SYNC_ACCOUNT, mAccount.mEmailAddress);
cv.put(Events._SYNC_ACCOUNT_TYPE, Email.EXCHANGE_ACCOUNT_MANAGER_TYPE);
cv.put(Events._SYNC_ID, serverId);
+ cv.put(Events.HAS_ATTENDEE_DATA, 1);
int allDayEvent = 0;
String organizerName = null;
@@ -280,7 +281,7 @@
break;
case Tags.CALENDAR_ATTENDEES:
// If eventId >= 0, this is an update; otherwise, a new Event
- attendeesParser(ops, organizerName, organizerEmail, eventId);
+ attendeesParser(ops, eventId);
break;
case Tags.BASE_BODY:
cv.put(Events.DESCRIPTION, bodyParser());
@@ -358,6 +359,24 @@
}
}
+ // Handle the organizer (who IS an attendee on device, but NOT in EAS)
+ if (organizerName != null || organizerEmail != null) {
+ ContentValues attendeeCv = new ContentValues();
+ if (organizerName != null) {
+ attendeeCv.put(Attendees.ATTENDEE_NAME, organizerName);
+ }
+ if (organizerEmail != null) {
+ attendeeCv.put(Attendees.ATTENDEE_EMAIL, organizerEmail);
+ }
+ attendeeCv.put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_ORGANIZER);
+ attendeeCv.put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_REQUIRED);
+ if (eventId < 0) {
+ ops.newAttendee(attendeeCv);
+ } else {
+ ops.updatedAttendee(attendeeCv, eventId);
+ }
+ }
+
// If there's no recurrence, set DTEND to the end time
if (!cv.containsKey(Events.RRULE)) {
cv.put(Events.DTEND, endTime);
@@ -576,26 +595,7 @@
return categories.toString();
}
- private String attendeesParser(CalendarOperations ops, String organizerName,
- String organizerEmail, long eventId) throws IOException {
- String body = null;
- // First, handle the organizer (who IS an attendee on device, but NOT in EAS)
- if (organizerName != null || organizerEmail != null) {
- ContentValues cv = new ContentValues();
- if (organizerName != null) {
- cv.put(Attendees.ATTENDEE_NAME, organizerName);
- }
- if (organizerEmail != null) {
- cv.put(Attendees.ATTENDEE_EMAIL, organizerEmail);
- }
- cv.put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_ORGANIZER);
- cv.put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_REQUIRED);
- if (eventId < 0) {
- ops.newAttendee(cv);
- } else {
- ops.updatedAttendee(cv, eventId);
- }
- }
+ private void attendeesParser(CalendarOperations ops, long eventId) throws IOException {
while (nextTag(Tags.CALENDAR_ATTENDEES) != END) {
switch (tag) {
case Tags.CALENDAR_ATTENDEE:
@@ -605,7 +605,6 @@
skipTag();
}
}
- return body;
}
private void attendeeParser(CalendarOperations ops, long eventId) throws IOException {