Author: solomax
Date: Tue Aug 28 06:02:04 2012
New Revision: 1377980

URL: http://svn.apache.org/viewvc?rev=1377980&view=rev
Log:
OPENMEETINGS-316 ical invitations/updates/cancelations seems to work as 
expected in OL/Gmail/Thunderbird

Modified:
    
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/conference/Invitationmanagement.java
    
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/IcalHandler.java
    
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailiCalThread.java

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/conference/Invitationmanagement.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/conference/Invitationmanagement.java?rev=1377980&r1=1377979&r2=1377980&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/conference/Invitationmanagement.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/app/data/conference/Invitationmanagement.java
 Tue Aug 28 06:02:04 2012
@@ -756,12 +756,12 @@ public class Invitationmanagement {
                Vector<HashMap<String, String>> atts = new 
Vector<HashMap<String, String>>();
                atts.add(attendeeInDerHashMap);
 
-               HashMap<String, String> attendeeList = 
handler.getAttendeeData(user
+               HashMap<String, String> organizer = handler.getAttendeeData(user
                                .getAdresses().getEmail(), user.getLogin(), 
invitor);
 
                handler.addNewMeeting(startdate, enddate, 
                                point.getAppointmentName(), atts,
-                               subject, attendeeList, point.getIcalId(), 
timezone);
+                               subject, organizer, point.getIcalId(), 
timezone);
 
                log.debug(handler.getICalDataAsString());
 
@@ -803,11 +803,11 @@ public class Invitationmanagement {
                Vector<HashMap<String, String>> atts = new 
Vector<HashMap<String, String>>();
                atts.add(attendeeInDerHashMap);
 
-               HashMap<String, String> attendeeList = 
handler.getAttendeeData(user
+               HashMap<String, String> organizer = handler.getAttendeeData(user
                                .getAdresses().getEmail(), user.getLogin(), 
invitor);
 
                handler.addNewMeeting(starttime, endtime, 
point.getAppointmentName(), atts,
-                               subject, attendeeList, point.getIcalId(), 
timeZone);
+                               subject, organizer, point.getIcalId(), 
timeZone);
 
                log.debug(handler.getICalDataAsString());
 

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/IcalHandler.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/IcalHandler.java?rev=1377980&r1=1377979&r2=1377980&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/IcalHandler.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/IcalHandler.java
 Tue Aug 28 06:02:04 2012
@@ -31,15 +31,17 @@ import net.fortuna.ical4j.model.TimeZone
 import net.fortuna.ical4j.model.TimeZoneRegistry;
 import net.fortuna.ical4j.model.TimeZoneRegistryFactory;
 import net.fortuna.ical4j.model.component.VEvent;
-import net.fortuna.ical4j.model.component.VTimeZone;
 import net.fortuna.ical4j.model.parameter.Cn;
 import net.fortuna.ical4j.model.parameter.Role;
 import net.fortuna.ical4j.model.property.Attendee;
 import net.fortuna.ical4j.model.property.CalScale;
 import net.fortuna.ical4j.model.property.Description;
+import net.fortuna.ical4j.model.property.Location;
+import net.fortuna.ical4j.model.property.Method;
 import net.fortuna.ical4j.model.property.Organizer;
 import net.fortuna.ical4j.model.property.ProdId;
 import net.fortuna.ical4j.model.property.Sequence;
+import net.fortuna.ical4j.model.property.Transp;
 import net.fortuna.ical4j.model.property.Uid;
 import net.fortuna.ical4j.model.property.Version;
 import net.fortuna.ical4j.util.UidGenerator;
@@ -66,38 +68,28 @@ public class IcalHandler {
        // private TimeZoneRegistry timeRegistry;
 
        /** Creation of a new Event */
-       public final static String ICAL_METHOD_REQUEST = "REQUEST";
-       public final static String ICAL_METHOD_CANCEL = "CANCEL";
-       public final static String ICAL_METHOD_REFRESH = "REFRESH";
+       public final static Method ICAL_METHOD_REQUEST = Method.REQUEST;
+       public final static Method ICAL_METHOD_CANCEL = Method.CANCEL;
+       public final static Method ICAL_METHOD_REFRESH = Method.REFRESH;
 
        /**
         * Konstruktor with DefaultTimeZone
         * 
-        * @param methodType
+        * @param method
         *            (@see IcalHandler Constants)
         * @throws Exception
         */
-       public IcalHandler(String methodType) {
-               log.debug("Icalhandler method type : " + methodType);
+       public IcalHandler(Method method) {
+               log.debug("Icalhandler method type : " + method);
                
                icsCalendar = new net.fortuna.ical4j.model.Calendar();
 
                icsCalendar.getProperties().add(
                                new ProdId("-//Events Calendar//iCal4j 
1.0//EN"));
-               icsCalendar.getProperties().add(CalScale.GREGORIAN);
                icsCalendar.getProperties().add(Version.VERSION_2_0);
+               icsCalendar.getProperties().add(CalScale.GREGORIAN);
                
-               // Switch Method Type
-               // we comment out the Method type for now: The event type needs 
an organizer
-               // set, actually this leads to errors in displaying the email 
as iCal invitation
-               // in gmail, so we removed it for now. issue 1563
-//             if (methodType.equals(ICAL_METHOD_REFRESH))
-//                     icsCalendar.getProperties().add(Method.REFRESH);
-//             else if (methodType.equals(ICAL_METHOD_CANCEL))
-//                     icsCalendar.getProperties().add(Method.CANCEL);
-//             else
-//                     icsCalendar.getProperties().add(Method.REQUEST);
-
+               icsCalendar.getProperties().add(method);
        }
 
        /**
@@ -136,14 +128,10 @@ public class IcalHandler {
                
                VEvent meeting = new VEvent(start, end, name);
 
-               // add timezone info..
-               VTimeZone tz = timeZone.getVTimeZone();
-
-               meeting.getProperties().add(tz.getTimeZoneId());
-
                meeting.getProperties().add(new Description(description));
-
-               meeting.getProperties().add(new Sequence(1));
+               meeting.getProperties().add(new Sequence(0));
+               meeting.getProperties().add(new Location(""));
+               meeting.getProperties().add(Transp.OPAQUE);
 
                // generate unique identifier (if not submitted)
                Uid ui = null;
@@ -178,6 +166,7 @@ public class IcalHandler {
 
                meeting.getProperties().add(orger);
 
+               icsCalendar.getComponents().add(timeZone.getVTimeZone());
                icsCalendar.getComponents().add(meeting);
 
                return ui.getValue();

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailiCalThread.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailiCalThread.java?rev=1377980&r1=1377979&r2=1377980&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailiCalThread.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/org/openmeetings/utils/mail/MailiCalThread.java
 Tue Aug 28 06:02:04 2012
@@ -61,18 +61,31 @@ public class MailiCalThread extends Mail
                        // -- Create a new message --
                        Multipart multipart = new MimeMultipart();
 
+                       Multipart multiBody = new MimeMultipart("alternative");
                        BodyPart html = new MimeBodyPart();
                        html.setDataHandler(new DataHandler(new 
ByteArrayDataSource(
-                                       htmlBody, "text/html; 
charset=\"utf-8\"")));
+                                       htmlBody, "text/html; charset=UTF-8")));
+                       multiBody.addBodyPart(html);
 
-                       BodyPart iCalAttachment = new MimeBodyPart();
-                       iCalAttachment.setDataHandler(new DataHandler(
+                       BodyPart iCalContent = new MimeBodyPart();
+                       iCalContent.addHeader("content-class", 
"urn:content-classes:calendarmessage");
+                       iCalContent.setDataHandler(new DataHandler(
                                        new ByteArrayDataSource(
                                                        new 
ByteArrayInputStream(iCalMimeBody),
-                                                       
"text/calendar;method=REQUEST;charset=\"UTF-8\"")));
+                                                       "text/calendar; 
charset=UTF-8; method=REQUEST")));
+                       multiBody.addBodyPart(iCalContent);
+                       BodyPart body = new MimeBodyPart();
+                       body.setContent(multiBody);
+                       multipart.addBodyPart(body);
+                       
+                       BodyPart iCalAttachment = new MimeBodyPart();
+                       iCalAttachment.setDataHandler(new DataHandler(
+                               new ByteArrayDataSource(new 
ByteArrayInputStream(iCalMimeBody), "application/ics")));
+                       
iCalAttachment.removeHeader("Content-Transfer-Encoding");
+                       iCalAttachment.addHeader("Content-Transfer-Encoding", 
"base64");
+                       iCalAttachment.removeHeader("Content-Type");
+                       iCalAttachment.addHeader("Content-Type", 
"application/ics");
                        iCalAttachment.setFileName("invite.ics");
-
-                       multipart.addBodyPart(html);
                        multipart.addBodyPart(iCalAttachment);
 
                        msg.setContent(multipart);


Reply via email to