1.1 --- a/src/net/fortuna/ical4j/model/component/VEvent.java Tue Feb 10 19:25:00 2015 +0100 1.2 +++ b/src/net/fortuna/ical4j/model/component/VEvent.java Tue Feb 10 19:38:00 2015 +0100 1.3 @@ -548,7 +548,6 @@ 1.4 1.5 PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties()); 1.6 PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties()); 1.7 - PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties()); 1.8 PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties()); 1.9 PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties()); 1.10 PropertyValidator.getInstance().assertOneOrLess(Property.DTEND, getProperties()); 1.11 @@ -643,7 +642,6 @@ 1.12 PropertyValidator.getInstance().assertOne(Property.SEQUENCE, getProperties()); 1.13 PropertyValidator.getInstance().assertOne(Property.UID, getProperties()); 1.14 1.15 - PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties()); 1.16 PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties()); 1.17 PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties()); 1.18 PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties()); 1.19 @@ -747,7 +745,6 @@ 1.20 1.21 PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties()); 1.22 PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties()); 1.23 - PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties()); 1.24 PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties()); 1.25 PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties()); 1.26 PropertyValidator.getInstance().assertOneOrLess(Property.DTEND, getProperties()); 1.27 @@ -833,7 +830,6 @@ 1.28 PropertyValidator.getInstance().assertOne(Property.ORGANIZER, getProperties()); 1.29 PropertyValidator.getInstance().assertOne(Property.UID, getProperties()); 1.30 1.31 - PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties()); 1.32 PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID, getProperties()); 1.33 PropertyValidator.getInstance().assertOneOrLess(Property.SEQUENCE, getProperties()); 1.34 1.35 @@ -941,7 +937,6 @@ 1.36 PropertyValidator.getInstance().assertOneOrLess(Property.SEQUENCE, getProperties()); 1.37 PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties()); 1.38 PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties()); 1.39 - PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties()); 1.40 PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties()); 1.41 PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties()); 1.42 PropertyValidator.getInstance().assertOneOrLess(Property.DTEND, getProperties()); 1.43 @@ -1034,7 +1029,6 @@ 1.44 PropertyValidator.getInstance().assertOne(Property.ORGANIZER, getProperties()); 1.45 PropertyValidator.getInstance().assertOne(Property.UID, getProperties()); 1.46 1.47 - PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties()); 1.48 PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID, getProperties()); 1.49 1.50 PropertyValidator.getInstance().assertNone(Property.ATTACH, getProperties()); 1.51 @@ -1140,7 +1134,6 @@ 1.52 PropertyValidator.getInstance().assertOneOrLess(Property.SEQUENCE, getProperties()); 1.53 PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties()); 1.54 PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties()); 1.55 - PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties()); 1.56 PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties()); 1.57 PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties()); 1.58 PropertyValidator.getInstance().assertOneOrLess(Property.DTEND, getProperties()); 1.59 @@ -1233,7 +1226,6 @@ 1.60 PropertyValidator.getInstance().assertOneOrLess(Property.SEQUENCE, getProperties()); 1.61 PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties()); 1.62 PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties()); 1.63 - PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties()); 1.64 PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties()); 1.65 PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties()); 1.66 PropertyValidator.getInstance().assertOneOrLess(Property.DTEND, getProperties()); 1.67 @@ -1456,9 +1448,19 @@ 1.68 public final DtEnd getEndDate(final boolean deriveFromDuration) { 1.69 DtEnd dtEnd = (DtEnd) getProperty(Property.DTEND); 1.70 // No DTEND? No problem, we'll use the DURATION. 1.71 - if (dtEnd == null && deriveFromDuration && getDuration() != null) { 1.72 + if (dtEnd == null && deriveFromDuration && getStartDate() != null) { 1.73 final DtStart dtStart = getStartDate(); 1.74 - final Duration vEventDuration = getDuration(); 1.75 + final Duration vEventDuration; 1.76 + if (getDuration() != null) { 1.77 + vEventDuration = getDuration(); 1.78 + } else if (dtStart.getDate() instanceof DateTime) { 1.79 + // If "DTSTART" is a DATE-TIME, then the event's duration is zero (see: RFC 5545, 3.6.1 Event Component) 1.80 + vEventDuration = new Duration(new Dur(0, 0, 0, 0)); 1.81 + } else { 1.82 + // If "DTSTART" is a DATE, then the event's duration is one day (see: RFC 5545, 3.6.1 Event Component) 1.83 + vEventDuration = new Duration(new Dur(1, 0, 0, 0)); 1.84 + } 1.85 + 1.86 dtEnd = new DtEnd(Dates.getInstance(vEventDuration.getDuration() 1.87 .getTime(dtStart.getDate()), (Value) dtStart 1.88 .getParameter(Parameter.VALUE)));