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 {