This is an automated email from the ASF dual-hosted git repository.
solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git
The following commit(s) were added to refs/heads/master by this push:
new cde0394 [OPENMEETINGS-2481] initial refactoring of IcalHandler
cde0394 is described below
commit cde03944fbb9ec4e4bd95451673f3c75ac809536
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Thu Oct 15 21:03:54 2020 +0700
[OPENMEETINGS-2481] initial refactoring of IcalHandler
---
.../db/dao/calendar/AppointmentDao.java | 4 +-
.../service/calendar/caldav/IcalUtils.java | 12 +-
.../service/room/InvitationManager.java | 37 ++---
.../apache/openmeetings/util/mail/IcalHandler.java | 130 ++++++-----------
.../apache/openmeetings/util/mail/MailUtil.java | 2 +
.../openmeetings/calendar/TestSendIcalMessage.java | 161 ++++-----------------
6 files changed, 97 insertions(+), 249 deletions(-)
diff --git
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
index 474df5d..c97654e 100644
---
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
+++
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
@@ -18,6 +18,7 @@
*/
package org.apache.openmeetings.db.dao.calendar;
+import static java.util.UUID.randomUUID;
import static org.apache.openmeetings.db.util.DaoHelper.UNSUPPORTED;
import static
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_CALENDAR_ROOM_CAPACITY;
import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM_USER_ID;
@@ -100,8 +101,10 @@ public class AppointmentDao implements
IDataProviderDao<Appointment>{
}
a.setRoom(roomDao.update(r, userId));
final boolean newApp = a.getId() == null;
+ Appointment a0 = newApp ? null : get(a.getId());
if (newApp) {
a.setInserted(new Date());
+ a.setIcalId(randomUUID().toString());
em.persist(a);
} else {
a.setUpdated(new Date());
@@ -111,7 +114,6 @@ public class AppointmentDao implements
IDataProviderDao<Appointment>{
Set<Long> mmIds = newApp ? new HashSet<>()
:
meetingMemberDao.getMeetingMemberIdsByAppointment(a.getId());
// update meeting members
- Appointment a0 = newApp ? null : get(a.getId());
boolean sendMail = a0 == null ||
!a0.getTitle().equals(a.getTitle()) ||
!(a0.getDescription() != null ?
a0.getDescription().equals(a.getDescription()) : true) ||
!(a0.getLocation() != null ?
a0.getLocation().equals(a.getLocation()) : true) ||
diff --git
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/IcalUtils.java
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/IcalUtils.java
index 53a8cae..57a3ce2 100644
---
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/IcalUtils.java
+++
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/IcalUtils.java
@@ -20,6 +20,8 @@ package org.apache.openmeetings.service.calendar.caldav;
import static java.util.UUID.randomUUID;
import static org.apache.openmeetings.db.util.TimezoneUtil.getTimeZone;
+import static org.apache.openmeetings.util.mail.MailUtil.MAILTO;
+import static org.apache.openmeetings.util.mail.MailUtil.SCHEME_MAILTO;
import java.net.URI;
import java.text.ParsePosition;
@@ -228,7 +230,7 @@ public class IcalUtils {
URI uri = URI.create(organizer.getValue());
//If the value of the organizer is an email
- if ("mailto".equals(uri.getScheme())) {
+ if (SCHEME_MAILTO.equals(uri.getScheme())) {
String email = uri.getSchemeSpecificPart();
organizerEmail = email;
@@ -248,7 +250,7 @@ public class IcalUtils {
if (attendees != null && !attendees.isEmpty()) {
for (Property attendee : attendees) {
URI uri = URI.create(attendee.getValue());
- if ("mailto".equals(uri.getScheme())) {
+ if (SCHEME_MAILTO.equals(uri.getScheme())) {
String email =
uri.getSchemeSpecificPart();
Role role =
attendee.getParameter(Role.CHAIR.getName());
@@ -439,14 +441,14 @@ public class IcalUtils {
if (appointment.getMeetingMembers() != null) {
for (MeetingMember meetingMember :
appointment.getMeetingMembers()) {
- Attendee attendee = new
Attendee(URI.create("mailto:" +
-
meetingMember.getUser().getAddress().getEmail()));
+ Attendee attendee = new
Attendee(URI.create(MAILTO
+ +
meetingMember.getUser().getAddress().getEmail()));
attendee.getParameters().add(Role.REQ_PARTICIPANT);
attendee.getParameters().add(new
Cn(meetingMember.getUser().getLogin()));
meeting.getProperties().add(attendee);
}
}
- URI orgUri = URI.create("mailto:" +
appointment.getOwner().getAddress().getEmail());
+ URI orgUri = URI.create(MAILTO +
appointment.getOwner().getAddress().getEmail());
Attendee orgAtt = new Attendee(orgUri);
orgAtt.getParameters().add(Role.CHAIR);
Cn orgCn = new Cn(appointment.getOwner().getLogin());
diff --git
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/room/InvitationManager.java
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/room/InvitationManager.java
index 9dde6a5..0192d1b 100644
---
a/openmeetings-service/src/main/java/org/apache/openmeetings/service/room/InvitationManager.java
+++
b/openmeetings-service/src/main/java/org/apache/openmeetings/service/room/InvitationManager.java
@@ -23,10 +23,7 @@ import static
org.apache.openmeetings.db.entity.calendar.Appointment.allowedStar
import static
org.apache.openmeetings.db.util.ApplicationHelper.ensureApplication;
import static org.apache.openmeetings.db.util.TimezoneUtil.getTimeZone;
-import java.util.ArrayList;
import java.util.Date;
-import java.util.List;
-import java.util.Map;
import java.util.TimeZone;
import org.apache.openmeetings.IApplication;
@@ -50,7 +47,6 @@ import
org.apache.openmeetings.service.mail.template.subject.SubjectEmailTemplat
import
org.apache.openmeetings.service.mail.template.subject.UpdatedAppointmentTemplate;
import org.apache.openmeetings.util.crypt.CryptProvider;
import org.apache.openmeetings.util.mail.IcalHandler;
-import org.apache.wicket.util.string.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -116,29 +112,18 @@ public class InvitationManager implements
IInvitationManager {
if (ical) {
String username = i.getInvitee().getLogin();
boolean isOwner =
owner.getId().equals(i.getInvitee().getId());
- IcalHandler handler = new
IcalHandler(MessageType.CANCEL == type ? IcalHandler.ICAL_METHOD_CANCEL :
IcalHandler.ICAL_METHOD_REQUEST);
-
- Map<String, String> attendeeList =
handler.getAttendeeData(email, username, isOwner);
-
- List<Map<String, String>> atts = new ArrayList<>();
- atts.add(attendeeList);
-
- // Defining Organizer
-
- Map<String, String> organizerAttendee =
handler.getAttendeeData(replyToEmail, owner.getLogin(), isOwner);
-
Appointment a = i.getAppointment();
- // Create ICal Message
- String meetingId = handler.addNewMeeting(a.getStart(),
a.getEnd(), a.getTitle(), atts, invitationLink,
- organizerAttendee, a.getIcalId(),
getTimeZone(owner).getID());
-
- // Writing back meetingUid
- if (Strings.isEmpty(a.getIcalId())) {
- a.setIcalId(meetingId);
- }
-
- log.debug(handler.getICalDataAsString());
- mailHandler.send(new MailMessage(email, replyToEmail,
subject, template, handler.getIcalAsByteArray()));
+ IcalHandler handler = new
IcalHandler(MessageType.CANCEL == type ? IcalHandler.ICAL_METHOD_CANCEL :
IcalHandler.ICAL_METHOD_REQUEST)
+
.createVEvent(getTimeZone(owner).getID(), a.getStart(), a.getEnd(),
a.getTitle())
+ .addOrganizer(replyToEmail,
owner.getLogin())
+ .addAttendee(email, username, isOwner)
+ .setLocation(a.getLocation())
+ .setDescription(invitationLink)
+ .setUid(a.getIcalId())
+ .build();
+
+ log.debug(handler.toString());
+ mailHandler.send(new MailMessage(email, replyToEmail,
subject, template, handler.toByteArray()));
} else {
mailHandler.send(email, replyToEmail, subject,
template);
}
diff --git
a/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/IcalHandler.java
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/IcalHandler.java
index 3ede26f..3d30ab7 100644
---
a/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/IcalHandler.java
+++
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/IcalHandler.java
@@ -18,18 +18,14 @@
*/
package org.apache.openmeetings.util.mail;
-import static java.util.UUID.randomUUID;
+import static org.apache.openmeetings.util.mail.MailUtil.MAILTO;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.net.URI;
import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
import java.util.NoSuchElementException;
-import org.apache.wicket.util.string.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -68,6 +64,8 @@ public class IcalHandler {
/** ICal instance */
private final Calendar icsCalendar;
+ private TimeZone timeZone;
+ private VEvent meeting;
/** Creation of a new Event */
public static final Method ICAL_METHOD_REQUEST = Method.REQUEST;
@@ -90,36 +88,12 @@ public class IcalHandler {
icsCalendar.getProperties().add(method);
}
- /**
- *
- * @param startDate
- * use standard TimeZone!!
- * @param endDate
- * use standard time zone!!
- * @param name
- * meeting name
- * @param attendees
- * List of attendees (use getAttendeeData to retrieve valid
records)
- * @param description
- * containing the meeting description
- * @param organizer
- * organizer
- * @param uid
- * (maybe null)
- * @param javaTzId ID of owner's java time zone
- * @return UID of Meeting
- */
- //
---------------------------------------------------------------------------------------
- public String addNewMeeting(Date startDate, Date endDate, String name,
- List<Map<String, String>> attendees, String description,
- Map<String, String> organizer, String uid, String
javaTzId)
- {
-
+ public IcalHandler createVEvent(String tz, Date startDate, Date
endDate, String name) {
TimeZoneRegistry registry =
TimeZoneRegistryFactory.getInstance().createRegistry();
- TimeZone timeZone = registry.getTimeZone(javaTzId);
+ timeZone = registry.getTimeZone(tz);
if (timeZone == null) {
- throw new NoSuchElementException("Unable to get time
zone by id provided: " + javaTzId);
+ throw new NoSuchElementException("Unable to get time
zone by id provided: " + tz);
}
DateTime start = new DateTime(startDate);
@@ -127,63 +101,54 @@ public class IcalHandler {
DateTime end = new DateTime(endDate);
end.setTimeZone(timeZone);
- VEvent meeting = new VEvent(start, end, name);
+ meeting = new VEvent(start, end, name);
+ meeting.getProperties().add(Transp.OPAQUE);
+ return this;
+ }
+ public IcalHandler setDescription(String description) {
meeting.getProperties().add(new Description(description));
- meeting.getProperties().add(new Sequence(0));
- meeting.getProperties().add(new Location(""));
- meeting.getProperties().add(Transp.OPAQUE);
+ return this;
+ }
- // generate unique identifier (if not submitted)
- Uid ui;
- if (Strings.isEmpty(uid)) {
- ui = new Uid(randomUUID().toString());
- log.debug("Generating Meeting UID : {}", ui.getValue());
- } else {
- ui = new Uid(uid);
- log.debug("Using Meeting UID : {}", ui.getValue());
- }
+ public IcalHandler setLocation(String location) {
+ meeting.getProperties().add(new Location(location));
+ return this;
+ }
- meeting.getProperties().add(ui);
+ public IcalHandler setSequence(int seq) {
+ meeting.getProperties().add(new Sequence(seq));
+ return this;
+ }
- for (Map<String, String> att : attendees) {
- Attendee uno = new Attendee(URI.create(att.get("uri")));
- String chair = att.get("chair");
- uno.getParameters().add("0".equals(chair) ?
Role.REQ_PARTICIPANT : Role.CHAIR);
- uno.getParameters().add(new Cn(att.get("cn")));
- meeting.getProperties().add(uno);
- }
+ public IcalHandler setUid(String uid) {
+ meeting.getProperties().add(new Uid(uid));
+ return this;
+ }
- Organizer orger = new
Organizer(URI.create(organizer.get("uri")));
- orger.getParameters().add(new Cn(organizer.get("cn")));
+ private static URI getMailto(String email) {
+ return URI.create(MAILTO + email);
+ }
+ public IcalHandler addOrganizer(String email, String name) {
+ Organizer orger = new Organizer(getMailto(email));
+ orger.getParameters().add(new Cn(name));
meeting.getProperties().add(orger);
-
- icsCalendar.getComponents().add(timeZone.getVTimeZone());
- icsCalendar.getComponents().add(meeting);
-
- return ui.getValue();
+ return this;
}
- /**
- * Use this function to build a valid record for the AttendeeList for
- * addMeetings Generate a Attendee
- *
- * @param emailAdress
- * - email of attendee
- * @param displayName
- * - name of attendee
- * @param chair
- * - is this organizer
- * @return attendee data as {@link Map}
- */
- public Map<String, String> getAttendeeData(String emailAdress, String
displayName, boolean chair) {
- Map<String, String> oneRecord = new HashMap<>();
- oneRecord.put("uri", "mailto:" + emailAdress);
- oneRecord.put("cn", displayName);
- oneRecord.put("chair", chair ? "1" : "0");
+ public IcalHandler addAttendee(String email, String display, boolean
chair) {
+ Attendee uno = new Attendee(URI.create(MAILTO + email));
+ uno.getParameters().add(chair ? Role.REQ_PARTICIPANT :
Role.CHAIR);
+ uno.getParameters().add(new Cn(display));
+ meeting.getProperties().add(uno);
+ return this;
+ }
- return oneRecord;
+ public IcalHandler build() {
+ icsCalendar.getComponents().add(timeZone.getVTimeZone());
+ icsCalendar.getComponents().add(meeting);
+ return this;
}
/**
@@ -194,7 +159,7 @@ public class IcalHandler {
* @throws Exception
* - in case of error during writing to the file
*/
- public void writeDataToFile(String inFilerPath) throws Exception {
+ public void toFile(String inFilerPath) throws Exception {
String filerPath = inFilerPath.endsWith(".ics") ? inFilerPath
: String.format("%s.ics", inFilerPath);
@@ -211,7 +176,7 @@ public class IcalHandler {
* @throws Exception
* - in case of error during writing to byte array
*/
- public byte[] getIcalAsByteArray() throws Exception {
+ public byte[] toByteArray() throws Exception {
ByteArrayOutputStream bout = new ByteArrayOutputStream();
CalendarOutputter outputter = new CalendarOutputter();
outputter.output(icsCalendar, bout);
@@ -221,7 +186,8 @@ public class IcalHandler {
/**
* Retrieving Data as String
*/
- public String getICalDataAsString() {
- return icsCalendar.toString();
+ @Override
+ public String toString() {
+ return icsCalendar == null ? null : icsCalendar.toString();
}
}
diff --git
a/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/MailUtil.java
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/MailUtil.java
index c7ab2dd..a051d7f 100644
---
a/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/MailUtil.java
+++
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/MailUtil.java
@@ -23,6 +23,8 @@ import org.apache.wicket.util.string.Strings;
import org.apache.wicket.validation.Validatable;
public class MailUtil {
+ public static final String SCHEME_MAILTO = "mailto";
+ public static final String MAILTO = SCHEME_MAILTO + ":";
private MailUtil() {}
public static boolean isValid(String email) {
diff --git
a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestSendIcalMessage.java
b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestSendIcalMessage.java
index 958db62..1b6926c 100644
---
a/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestSendIcalMessage.java
+++
b/openmeetings-web/src/test/java/org/apache/openmeetings/calendar/TestSendIcalMessage.java
@@ -19,15 +19,12 @@
package org.apache.openmeetings.calendar;
import static java.util.UUID.randomUUID;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.net.URI;
import java.util.Calendar;
import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.List;
-import java.util.Map;
+import java.util.TimeZone;
import javax.activation.DataHandler;
import javax.mail.BodyPart;
@@ -48,23 +45,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
-import net.fortuna.ical4j.data.CalendarOutputter;
-import net.fortuna.ical4j.model.DateTime;
-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.Method;
-import net.fortuna.ical4j.model.property.Organizer;
-import net.fortuna.ical4j.model.property.ProdId;
-import net.fortuna.ical4j.model.property.Uid;
-import net.fortuna.ical4j.model.property.Version;
-
class TestSendIcalMessage extends AbstractJUnitDefaults {
private static final Logger log =
LoggerFactory.getLogger(TestSendIcalMessage.class);
@@ -78,120 +58,31 @@ class TestSendIcalMessage extends AbstractJUnitDefaults {
String htmlBody = "test";
- public void simpleInvitionIcalLink() {
- // Create a TimeZone
- TimeZoneRegistry registry =
TimeZoneRegistryFactory.getInstance().createRegistry();
- TimeZone timezone = registry.getTimeZone("America/Mexico_City");
- VTimeZone tz = timezone.getVTimeZone();
-
- // Start Date is on: April 1, 2008, 9:00 am
- java.util.Calendar startDate = new GregorianCalendar();
- startDate.setTimeZone(timezone);
- startDate.set(java.util.Calendar.MONTH,
java.util.Calendar.APRIL);
- startDate.set(java.util.Calendar.DAY_OF_MONTH, 1);
- startDate.set(java.util.Calendar.YEAR, 2008);
- startDate.set(java.util.Calendar.HOUR_OF_DAY, 9);
- startDate.set(java.util.Calendar.MINUTE, 0);
- startDate.set(java.util.Calendar.SECOND, 0);
-
- // End Date is on: April 1, 2008, 13:00
- java.util.Calendar endDate = new GregorianCalendar();
- endDate.setTimeZone(timezone);
- endDate.set(java.util.Calendar.MONTH, java.util.Calendar.APRIL);
- endDate.set(java.util.Calendar.DAY_OF_MONTH, 1);
- endDate.set(java.util.Calendar.YEAR, 2008);
- endDate.set(java.util.Calendar.HOUR_OF_DAY, 13);
- endDate.set(java.util.Calendar.MINUTE, 0);
- endDate.set(java.util.Calendar.SECOND, 0);
-
- // Create the event
- String eventName = "Progress Meeting";
- DateTime start = new DateTime(startDate.getTime());
- DateTime end = new DateTime(endDate.getTime());
- VEvent meeting = new VEvent(start, end, eventName);
-
- // add timezone info..
- meeting.getProperties().add(tz.getTimeZoneId());
-
- // generate unique identifier..
- Uid uid = new Uid(randomUUID().toString());
- meeting.getProperties().add(uid);
-
- // add attendees..
- Attendee dev1 = new
Attendee(URI.create("mailto:[email protected]"));
- dev1.getParameters().add(Role.REQ_PARTICIPANT);
- dev1.getParameters().add(new Cn("Developer 1"));
- meeting.getProperties().add(dev1);
-
- Attendee dev2 = new
Attendee(URI.create("mailto:[email protected]"));
- dev2.getParameters().add(Role.OPT_PARTICIPANT);
- dev2.getParameters().add(new Cn("Developer 2"));
- meeting.getProperties().add(dev2);
-
- // Create a calendar
- net.fortuna.ical4j.model.Calendar 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);
-
- // Add the event and print
- icsCalendar.getComponents().add(meeting);
-
- Organizer orger = new
Organizer(URI.create("[email protected]"));
- orger.getParameters().add(new Cn("Sebastian Wagner"));
- meeting.getProperties().add(orger);
-
- icsCalendar.getProperties().add(Method.REQUEST);
-
- log.debug(icsCalendar.toString());
-
- ByteArrayOutputStream bout = new ByteArrayOutputStream();
- CalendarOutputter outputter = new CalendarOutputter();
- try {
- outputter.output(icsCalendar, bout);
- iCalMimeBody = bout.toByteArray();
-
- sendIcalMessage();
- } catch (Exception e) {
- log.error("Error", e);
- }
- }
-
@Test
- void sendInvitionIcalLink() {
- try {
- String email = "[email protected]";
- String username = "shans";
- boolean invitor = false;
-
- Calendar start = Calendar.getInstance();
- Calendar end = Calendar.getInstance();
- IcalHandler handler = new
IcalHandler(IcalHandler.ICAL_METHOD_REQUEST);
-
- // Transforming Meeting Members
-
- Map<String, String> attendeeList =
handler.getAttendeeData(email, username, invitor);
- Map<String, String> organizerAttendee =
handler.getAttendeeData(recipients, "seba-test", true);
-
- List<Map<String, String>> atts = List.of(attendeeList);
-
- // Create ICal Message
- String meetingId =
handler.addNewMeeting(start.getTime(), end.getTime(), "test event",
- atts,
"localhost:5080/link_openmeetings",
- organizerAttendee, "",
java.util.TimeZone.getDefault().getID());
-
- log.debug("meetingId " + meetingId);
-
- iCalMimeBody = handler.getIcalAsByteArray();
-
- sendIcalMessage();
-
- // return MailHandler.sendMail(email, subject,
template);
-
- } catch (Exception err) {
- log.error("sendInvitionIcalLink", err);
- }
+ void sendInvitionIcalLink() throws Exception {
+ String email = "[email protected]";
+ String username = "shans";
+ boolean invitor = false;
+
+ Date start = Calendar.getInstance().getTime();
+ Calendar endCal = Calendar.getInstance();
+ endCal.add(Calendar.HOUR_OF_DAY, 1);
+ Date end = endCal.getTime();
+ IcalHandler handler = new
IcalHandler(IcalHandler.ICAL_METHOD_REQUEST)
+ .createVEvent(TimeZone.getDefault().getID(),
start, end, "test event")
+ .addOrganizer(recipients, "seba-test")
+ .addAttendee(email, username, invitor)
+
.setDescription("localhost:5080/link_openmeetings")
+ .setLocation("")
+ .setUid(randomUUID().toString())
+ .build();
+
+ log.debug("ICS: {}", handler.toString());
+ assertNotNull(handler.toString(), "Valid ICS should be
created");
+
+ iCalMimeBody = handler.toByteArray();
+
+ sendIcalMessage();
}
private void sendIcalMessage() throws Exception {