also check against premature validation errors
[ical4j.git] / CHANGELOG
blob690f33cf08ebfa58c138b575dc536f875cfd439b
1 ==================\r
2  iCal4j - Changes\r
3 ==================\r
4 \r
5  See the changelog report for further details:\r
6 \r
7         http://m2.modularity.net.au/projects/ical4j/changelog.html\r
8 \r
9 ==\r
11 1.0-beta5\r
13  - Added support for compatibility configuration via properties file\r
14  \r
15  - Numerous bug fixes\r
16  \r
17  \r
18 1.0-beta4\r
20  - Added support for VVENUE\r
21  \r
22  - Bug fixes\r
23  \r
24  \r
25 1.0-beta3\r
27  - Third beta release.\r
28  \r
29  - Added UidGenerator to help with creation of unique UID properties\r
30  \r
31  - Added timezone aliases for deprecetated timezone ids\r
32  \r
33  - Added support for calculating the recurrence set for components, to unify\r
34  PeriodRule and VEvent.getConsumedTime() functionality\r
36  - Updated timezone definitions (Olson 2007f)\r
37  \r
38  - Bug fixes.\r
41 1.0-beta2\r
43  - Second beta. General bug fixes. No changes to API. Retains binary\r
44  compatibility with previous release.\r
45  \r
46 1.0-beta1\r
48  - First iCal4j beta. Expect little API changes until the final release, as\r
49  binary compatibility should be maintained from this release onwards.\r
50  \r
51  \r
52 0.9.20\r
54  - Updated commons logging to 1.1\r
55  \r
56  - Refactored logging to use local Log instances to avoid classloader issues\r
57  \r
58  - Updated parser to include word chars up to 255 (was 127)\r
59  \r
60  - Updated PeriodRule to check if date falls within period range (exclusive of\r
61  period start and end)\r
62  \r
63  - Added commons codec dependency to support QUOTED-PRINTABLE encoding\r
64  \r
65  - Added compatibility hint for Lotus Notes\r
66  \r
67  - Additional component validation from RFC2445 implemented. Additional\r
68  Compatibility Hint for relaxed validation, which skips this extra validation.\r
69  \r
70  - Provide a default DTSTAMP property in VEvent, VToDo, VJournal and VFreeBusy\r
72  - Updated timzone definitions (Olson 2006g)\r
73  \r
74  - More bug fixes.\r
77 0.9.19\r
79  - Added filter package to allow for filtering of collections\r
80  based on filtering rules\r
81  \r
82  - Added convenience methods to calendar, components and properties\r
83  \r
84  - Fixed unfolding bug\r
85  \r
86  - Added support for relaxed parsing\r
87  \r
88  - Improved use of date formats in DateTime\r
89  \r
90  - Added replace() method to ParameterList\r
91  \r
92  - Added convenience method to calculate recurrences from a period\r
93  \r
94  - Removed quote character from escape patterns\r
95  \r
96  - Applied patches: #1434747\r
97  \r
98  - Added CalendarComponent superclass for components added directly to a\r
99  calendar (removed redundant Component.isCalendarComponent() method)\r
100  \r
101  - Improved javadoc documentation\r
102  \r
103  - Improved caching of timezone observance onsets\r
104  \r
105  - Updated timezone definitions (Olson tzdata2006b)\r
106  \r
107  - Bug fixes: #1460795, #1446120, #1434734, #1434291\r
110 0.9.18\r
112  - Improved support for experimental components\r
113  \r
114  - Added shared cache of default timezones for TimeZoneRegistryImpl\r
116  - Applied fixes for the following bugs: #1353378, #1338857\r
118  - Added override build option for including version name in JAR filename\r
119  (see build.properties.sample)\r
120  \r
121  - Added convenience methods for retrieving UID properties from components\r
122  \r
123  - Updated timezone definitions to Olson 2005q\r
124  \r
125  - Date/Time instances now use the default Java timezone where no timezone\r
126  information is specified (i.e. floating time).\r
127  \r
128  - Re-instated fix for retrieving consumed time whereby events partially intersect\r
129  date range (affects VEvent/VFreeBusy)\r
132 0.9.17\r
134  - Added support for experimental components (XComponent)\r
135  \r
136  - Now includes default timezone definitions (based on Olson timezone database)\r
137  \r
138  - Applied fixes for the following bugs: #1323762, #1338857\r
139  \r
140  - Applied the following patches: #1326774\r
141  \r
142  - Added rudimentary caching of timezone observance onsets to improve performance\r
143  \r
144  - Updated timezone registry for improved multi-threaded support\r
145  \r
146  - Added Dur.negate() convenience method\r
149 0.9.16\r
151  - Applied fixes for bugs #1297830, #1300305, #1300728, #1305610, #1305634,\r
152  #1305655, #1305715\r
153  \r
154  - removed final modifiers in CalendarBuilder to allow for subclassing\r
155  \r
156  - added initial capacity constructors to lists for optimisations\r
157  \r
158  - fixed bug where DateProperty.setDate() was not correctly updating\r
159  timezones of new date values\r
160  \r
161  - corrected bug in calculating negative durations\r
162  \r
163  - added precision rounding to date/date-time instances to fix comparisons\r
164  and equality checking\r
165  \r
166  - added convenience methods for creating date/calendar instances\r
167  \r
168  - fixed recurrence rules to use correct timezones\r
169  \r
170  - Fixed potential NullPointerException in TimeZone\r
171  \r
172  - Fixed invalid date values in Date properties\r
173  \r
174  - Removed redundant methods in DateProperties and general clean up\r
175  \r
176  - TzId now correctly implements Escapable interface\r
179 0.9.15\r
181  - Fixed DateProperties to correctly call super.validate() in validation\r
182  \r
183  - Fix applied to Recur.getMonthDayVariants() to correctly set the month of\r
184  candidate dates. Also fixed to ignore dates prior to seed date.\r
185  \r
186  - Added encoding/decoding of URIs\r
188  - Fixed parser to allow arbitrary ordering of VTIMEZONE observances/properties.\r
189  \r
190  - Now allows for additional whitespace between properties.\r
191  \r
192  - Introduced a custom timezone implementation for use with iCalendar objects\r
193  \r
194  - Introduced a timezone registry with support for alternative implementations\r
197 0.9.14:\r
199  - Reimplemented ParameterFactory and PropertyFactory with improved design\r
200  \r
201  - Added a duration type (Dur) for represeting durations in properties Duration\r
202  and Trigger, and type Period. (DurationFormat deprecated).\r
203  \r
204  - ParameterList.add() now automatically removes from the list all other parameters\r
205  with the same name\r
206  \r
207  - Added serialVersionUID to all properties, parameters and types\r
208  \r
209  - Added utc offset type (UtcOffset) for representing utc offsets (UtcOffsetFormat\r
210  deprecated)\r
211  \r
212  - Added date/date-time types (Date/DateTime) for representing date values\r
213  (DateFormat/DateTimeFormat deprecated)\r
214  \r
215  - Removed DateList.setType() (use new DateList(DateList, Value) instead)\r
216  \r
217  - added equals()/hashcode() to Calendar, Component\r
218  \r
219  - refactored ComponentList/PropertyList to extend ArrayList\r
220  \r
221  - overridden List.add() for all lists extending ArrayList\r
222  \r
223  - created Escapable interface to replace setEscapable/isEscapable methods\r
224  \r
225  - ParameterFactory now returns constant instances where applicable\r
226  \r
227  - changes to VTimeZone.getVTimeZone() method signature\r
228  \r
229  - added Calendar.getVTimeZone()\r
230  \r
231  - added Constants utility class for working with constants.\r
232  \r
233  - CalendarBuilder replaces properties with constant instances where applicable\r
234  \r
235  - Checkstyle-based code clean up\r
236  \r
237  - Applied patches: #1234424, #1244945\r
238  \r
239  - Added Numbers.parseInt(), StringUtils.valueOf() utility methods.\r
240  \r
241  - Completed rewrite of Recur to use "candidate" dates to generate a list\r
242  of applicable dates.\r
243  \r
244  - Date-based properties refactored to use superclasses.\r
245  \r
246  - VFreeBusy modified to only accept date-time ranges (may be revised later).\r
247  \r
248  \r
249 0.9.13:\r
251  - Merged DateRange functionality into Period\r
252  \r
253  - Merged DateRangeNormalizer functionality into PeriodList\r
254  \r
255  - Removed Calendar.getEventDateRanges() (use VFreeBusy request instead)\r
256  \r
257  - Removed VEvent.getDateRanges() (use VEvent.getConsumedTime() instead)\r
258  \r
259  - Removed VEvent.getRecurringStartDates() (use Recur.getDates() instead)\r
260  \r
261  - Applied patches where possible: #1197119, #1191253, #1185766 - thanks tobli\r
262  \r
263  - Default charset for CalendarBuilder and CalendarOutputter now UTF-8 (as per\r
264  RFC2445, section 4.1.4)\r
265  \r
266  - Applied patch from bug #1203990 to Recur.getAbsWeekDays()\r
267  \r
269 0.9.12:\r
271  - Redefined parameter and property constants to class instances rather\r
272  than strings. This is done for efficiency where class instances are immutable\r
273  once created. Note: this may cause incompatibilities with existing code!\r
274  \r
275  - fixed bug in parsing periods\r
276  \r
277  - fixed bug in TimeZoneUtils for non-DST timezones\r
278  \r
279  - added support for removal of extraneous newlines between components in the\r
280  default parser implementation (KOrganizer generates such files)\r
281  \r
282  - fixed bug in parsing free time where durations are specified\r
283  \r
284  - Various constants reimplemented as typed instances (as opposed to strings)\r
285  \r
286  NOTE: This may break existing code based on earlier releases! Please check\r
287  your usage of the following classes:\r
288  \r
289         * net.fortuna.ical4j.model.WeekDay\r
290         * net.fortuna.ical4j.model.parameter.CuType\r
291         * net.fortuna.ical4j.model.parameter.Encoding\r
292         * net.fortuna.ical4j.model.parameter.FbType\r
293         * net.fortuna.ical4j.model.parameter.PartStat\r
294         * net.fortuna.ical4j.model.parameter.Range\r
295         * net.fortuna.ical4j.model.parameter.Related\r
296         * net.fortuna.ical4j.model.parameter.RelType\r
297         * net.fortuna.ical4j.model.parameter.Role\r
298         * net.fortuna.ical4j.model.parameter.Rsvp\r
299         * net.fortuna.ical4j.model.parameter.Value\r
300         * net.fortuna.ical4j.model.property.Action\r
301         * net.fortuna.ical4j.model.property.CalScale\r
302         * net.fortuna.ical4j.model.property.Clazz\r
303         * net.fortuna.ical4j.model.property.Method\r
304         * net.fortuna.ical4j.model.property.Priority\r
305         * net.fortuna.ical4j.model.property.Status\r
306         * net.fortuna.ical4j.model.property.Transp\r
307         \r
308  \r
309  - Applied patch #1170060 by calibre. Provides improvements to retrieval of\r
310  date ranges represented by recurring VEvents.\r
311  \r
312  - documentation updated to conform to XHTML 1.0\r
313  \r
314  - added Base64 encoding/decoding to Attach property\r
315  \r
316  \r
317 0.9.11:\r
319  - Better support and usability for recurrence rules. (see\r
320  extensive changes to Recur class)\r
321  \r
322  - Convenience constructors for components VAlarm, VEvent, VFreeBusy, VJournal,\r
323  and VToDo should make it easier to construct standard components.\r
324  \r
325  - Further validation fine-tuning to ensure some properties don't occur where\r
326  not applicable.\r
327  \r
328  - Fixed support for TRANSP property, which was previously being ignored by the\r
329  CalendarBuilder.\r
330  \r
331  \r
332 0.9.10:\r
334  - Model classes are now Serializable\r
335  \r
336  - Bug fixes related to VALARMs in VTODOs (thanks twinkle!)\r
337  \r
338  - Added explicit serialVersionUID for Serializable implementors.\r
339  \r
340  - Added use of Log.isDebugEnabled() for performance reasons.\r
341  \r
342  - Added WeekDay class to better represent day patterns in recurrence rules.\r
344  \r
345 0.9.9:\r
347  - Separated the calendar parser from the builder to allow different\r
348  parser implementations to be used with iCal4j.\r
349  \r
350  - All properties are now mutable with default constructors.\r
353 0.9.8:\r
355  - Added special character escaping and parsing. NOTE: I've provided the ability\r
356  to escape parameter values although I am unsure it is necessary (or allowed) by\r
357  RFC2445.\r
358  \r
359  - Fixed bug whereby CalendarBuilder wasn't reading quoted text correctly in all\r
360  cases.\r
361  \r
363 0.9.7:\r
364  \r
365  - Added convenience constructors to model classes (Calendar, Component, Property)\r
366  \r
367  - Initial design of support for RFC 2446 (transform) - NOTE: Not yet functional!\r
368  \r
369  - Fixed bug where builder would hang if calendar streams didn't\r
370  contain an extra whitespace char at EOF\r
373 0.9.6:\r
375  - Fixed bug found in some property constructors where was not checking\r
376  VALUE parameter correctly to identify DATE type for date-time values\r
377  \r
378  - Added validating option to CalendarOutputter to indicate whether to\r
379  validate the Calendar before outputting\r
380  \r
381  - Added recurse parameter to calendar and component validate methods\r
382  to indicate whether to validate children\r
383  \r
384  - Added license header to all source files (hence the increase in size\r
385  of the distribution!)\r
388 0.9.5:\r
390  - Added UTC flag to date-time properties indicating how date-time values are formatted\r
391         NOTE: This is not provided for all properties as some must be in UTC format.\r
393  - Added convenience methods for creating VTimeZone instances.\r
394  \r
395  \r
396 0.9.4:\r
398  - Property and Parameter made abstract classes\r
399  \r
400  - Added getValue() implementation to all Property and Parameter sub-classes\r
401  \r
402  - Fixed FoldingWriter\r
403  \r
404  - Other fixes regarding string representations\r
405  \r
406  \r
407 0.9.3:\r
409  - Added commons logging support\r
410  \r
411  - Fixed problem with parsing quoted parameters\r
413  - Finished implementation of Period, Recur types\r
415  - Fix date/date-time parsing to check for VALUE parameter\r
416  \r
417  - Added format method to DurationFormat and UtcOffsetFormat\r
420 0.9.2:\r
422  - Interim Release\r
425 0.9.1:\r
427  - Interim Release\r
430 0.9\r
432  - Initial Release