==================
 iCal4j - Changes
==================

1.0-beta3

 - Third beta release.
 
 - Added UidGenerator to help with creation of unique UID properties
 
 - Added timezone aliases for deprecetated timezone ids
 
 - Added support for calculating the recurrence set for components, to unify
 PeriodRule and VEvent.getConsumedTime() functionality

 - Updated timezone definitions (Olson 2007f)
 
 - Bug fixes.


1.0-beta2

 - Second beta. General bug fixes. No changes to API. Retains binary
 compatibility with previous release.
 
1.0-beta1

 - First iCal4j beta. Expect little API changes until the final release, as
 binary compatibility should be maintained from this release onwards.
 
 
0.9.20

 - Updated commons logging to 1.1
 
 - Refactored logging to use local Log instances to avoid classloader issues
 
 - Updated parser to include word chars up to 255 (was 127)
 
 - Updated PeriodRule to check if date falls within period range (exclusive of
 period start and end)
 
 - Added commons codec dependency to support QUOTED-PRINTABLE encoding
 
 - Added compatibility hint for Lotus Notes
 
 - Additional component validation from RFC2445 implemented. Additional
 Compatibility Hint for relaxed validation, which skips this extra validation.
 
 - Provide a default DTSTAMP property in VEvent, VToDo, VJournal and VFreeBusy

 - Updated timzone definitions (Olson 2006g)
 
 - More bug fixes.


0.9.19

 - Added filter package to allow for filtering of collections
 based on filtering rules
 
 - Added convenience methods to calendar, components and properties
 
 - Fixed unfolding bug
 
 - Added support for relaxed parsing
 
 - Improved use of date formats in DateTime
 
 - Added replace() method to ParameterList
 
 - Added convenience method to calculate recurrences from a period
 
 - Removed quote character from escape patterns
 
 - Applied patches: #1434747
 
 - Added CalendarComponent superclass for components added directly to a
 calendar (removed redundant Component.isCalendarComponent() method)
 
 - Improved javadoc documentation
 
 - Improved caching of timezone observance onsets
 
 - Updated timezone definitions (Olson tzdata2006b)
 
 - Bug fixes: #1460795, #1446120, #1434734, #1434291


0.9.18

 - Improved support for experimental components
 
 - Added shared cache of default timezones for TimeZoneRegistryImpl

 - Applied fixes for the following bugs: #1353378, #1338857

 - Added override build option for including version name in JAR filename
 (see build.properties.sample)
 
 - Added convenience methods for retrieving UID properties from components
 
 - Updated timezone definitions to Olson 2005q
 
 - Date/Time instances now use the default Java timezone where no timezone
 information is specified (i.e. floating time).
 
 - Re-instated fix for retrieving consumed time whereby events partially intersect
 date range (affects VEvent/VFreeBusy)


0.9.17

 - Added support for experimental components (XComponent)
 
 - Now includes default timezone definitions (based on Olson timezone database)
 
 - Applied fixes for the following bugs: #1323762, #1338857
 
 - Applied the following patches: #1326774
 
 - Added rudimentary caching of timezone observance onsets to improve performance
 
 - Updated timezone registry for improved multi-threaded support
 
 - Added Dur.negate() convenience method


0.9.16

 - Applied fixes for bugs #1297830, #1300305, #1300728, #1305610, #1305634,
 #1305655, #1305715
 
 - removed final modifiers in CalendarBuilder to allow for subclassing
 
 - added initial capacity constructors to lists for optimisations
 
 - fixed bug where DateProperty.setDate() was not correctly updating
 timezones of new date values
 
 - corrected bug in calculating negative durations
 
 - added precision rounding to date/date-time instances to fix comparisons
 and equality checking
 
 - added convenience methods for creating date/calendar instances
 
 - fixed recurrence rules to use correct timezones
 
 - Fixed potential NullPointerException in TimeZone
 
 - Fixed invalid date values in Date properties
 
 - Removed redundant methods in DateProperties and general clean up
 
 - TzId now correctly implements Escapable interface


0.9.15

 - Fixed DateProperties to correctly call super.validate() in validation
 
 - Fix applied to Recur.getMonthDayVariants() to correctly set the month of
 candidate dates. Also fixed to ignore dates prior to seed date.
 
 - Added encoding/decoding of URIs

 - Fixed parser to allow arbitrary ordering of VTIMEZONE observances/properties.
 
 - Now allows for additional whitespace between properties.
 
 - Introduced a custom timezone implementation for use with iCalendar objects
 
 - Introduced a timezone registry with support for alternative implementations


0.9.14:

 - Reimplemented ParameterFactory and PropertyFactory with improved design
 
 - Added a duration type (Dur) for represeting durations in properties Duration
 and Trigger, and type Period. (DurationFormat deprecated).
 
 - ParameterList.add() now automatically removes from the list all other parameters
 with the same name
 
 - Added serialVersionUID to all properties, parameters and types
 
 - Added utc offset type (UtcOffset) for representing utc offsets (UtcOffsetFormat
 deprecated)
 
 - Added date/date-time types (Date/DateTime) for representing date values
 (DateFormat/DateTimeFormat deprecated)
 
 - Removed DateList.setType() (use new DateList(DateList, Value) instead)
 
 - added equals()/hashcode() to Calendar, Component
 
 - refactored ComponentList/PropertyList to extend ArrayList
 
 - overridden List.add() for all lists extending ArrayList
 
 - created Escapable interface to replace setEscapable/isEscapable methods
 
 - ParameterFactory now returns constant instances where applicable
 
 - changes to VTimeZone.getVTimeZone() method signature
 
 - added Calendar.getVTimeZone()
 
 - added Constants utility class for working with constants.
 
 - CalendarBuilder replaces properties with constant instances where applicable
 
 - Checkstyle-based code clean up
 
 - Applied patches: #1234424, #1244945
 
 - Added Numbers.parseInt(), StringUtils.valueOf() utility methods.
 
 - Completed rewrite of Recur to use "candidate" dates to generate a list
 of applicable dates.
 
 - Date-based properties refactored to use superclasses.
 
 - VFreeBusy modified to only accept date-time ranges (may be revised later).
 
 
0.9.13:

 - Merged DateRange functionality into Period
 
 - Merged DateRangeNormalizer functionality into PeriodList
 
 - Removed Calendar.getEventDateRanges() (use VFreeBusy request instead)
 
 - Removed VEvent.getDateRanges() (use VEvent.getConsumedTime() instead)
 
 - Removed VEvent.getRecurringStartDates() (use Recur.getDates() instead)
 
 - Applied patches where possible: #1197119, #1191253, #1185766 - thanks tobli
 
 - Default charset for CalendarBuilder and CalendarOutputter now UTF-8 (as per
 RFC2445, section 4.1.4)
 
 - Applied patch from bug #1203990 to Recur.getAbsWeekDays()
 

0.9.12:

 - Redefined parameter and property constants to class instances rather
 than strings. This is done for efficiency where class instances are immutable
 once created. Note: this may cause incompatibilities with existing code!
 
 - fixed bug in parsing periods
 
 - fixed bug in TimeZoneUtils for non-DST timezones
 
 - added support for removal of extraneous newlines between components in the
 default parser implementation (KOrganizer generates such files)
 
 - fixed bug in parsing free time where durations are specified
 
 - Various constants reimplemented as typed instances (as opposed to strings)
 
 NOTE: This may break existing code based on earlier releases! Please check
 your usage of the following classes:
 
 	* net.fortuna.ical4j.model.WeekDay
 	* net.fortuna.ical4j.model.parameter.CuType
 	* net.fortuna.ical4j.model.parameter.Encoding
 	* net.fortuna.ical4j.model.parameter.FbType
 	* net.fortuna.ical4j.model.parameter.PartStat
 	* net.fortuna.ical4j.model.parameter.Range
 	* net.fortuna.ical4j.model.parameter.Related
 	* net.fortuna.ical4j.model.parameter.RelType
 	* net.fortuna.ical4j.model.parameter.Role
 	* net.fortuna.ical4j.model.parameter.Rsvp
 	* net.fortuna.ical4j.model.parameter.Value
 	* net.fortuna.ical4j.model.property.Action
 	* net.fortuna.ical4j.model.property.CalScale
 	* net.fortuna.ical4j.model.property.Clazz
 	* net.fortuna.ical4j.model.property.Method
 	* net.fortuna.ical4j.model.property.Priority
 	* net.fortuna.ical4j.model.property.Status
 	* net.fortuna.ical4j.model.property.Transp
 	
 
 - Applied patch #1170060 by calibre. Provides improvements to retrieval of
 date ranges represented by recurring VEvents.
 
 - documentation updated to conform to XHTML 1.0
 
 - added Base64 encoding/decoding to Attach property
 
 
0.9.11:

 - Better support and usability for recurrence rules. (see
 extensive changes to Recur class)
 
 - Convenience constructors for components VAlarm, VEvent, VFreeBusy, VJournal,
 and VToDo should make it easier to construct standard components.
 
 - Further validation fine-tuning to ensure some properties don't occur where
 not applicable.
 
 - Fixed support for TRANSP property, which was previously being ignored by the
 CalendarBuilder.
 
 
0.9.10:

 - Model classes are now Serializable
 
 - Bug fixes related to VALARMs in VTODOs (thanks twinkle!)
 
 - Added explicit serialVersionUID for Serializable implementors.
 
 - Added use of Log.isDebugEnabled() for performance reasons.
 
 - Added WeekDay class to better represent day patterns in recurrence rules.

 
0.9.9:

 - Separated the calendar parser from the builder to allow different
 parser implementations to be used with iCal4j.
 
 - All properties are now mutable with default constructors.


0.9.8:

 - Added special character escaping and parsing. NOTE: I've provided the ability
 to escape parameter values although I am unsure it is necessary (or allowed) by
 RFC2445.
 
 - Fixed bug whereby CalendarBuilder wasn't reading quoted text correctly in all
 cases.
 

0.9.7:
 
 - Added convenience constructors to model classes (Calendar, Component, Property)
 
 - Initial design of support for RFC 2446 (transform) - NOTE: Not yet functional!
 
 - Fixed bug where builder would hang if calendar streams didn't
 contain an extra whitespace char at EOF


0.9.6:

 - Fixed bug found in some property constructors where was not checking
 VALUE parameter correctly to identify DATE type for date-time values
 
 - Added validating option to CalendarOutputter to indicate whether to
 validate the Calendar before outputting
 
 - Added recurse parameter to calendar and component validate methods
 to indicate whether to validate children
 
 - Added license header to all source files (hence the increase in size
 of the distribution!)


0.9.5:

 - Added UTC flag to date-time properties indicating how date-time values are formatted
	NOTE: This is not provided for all properties as some must be in UTC format.

 - Added convenience methods for creating VTimeZone instances.
 
 
0.9.4:

 - Property and Parameter made abstract classes
 
 - Added getValue() implementation to all Property and Parameter sub-classes
 
 - Fixed FoldingWriter
 
 - Other fixes regarding string representations
 
 
0.9.3:

 - Added commons logging support
 
 - Fixed problem with parsing quoted parameters

 - Finished implementation of Period, Recur types

 - Fix date/date-time parsing to check for VALUE parameter
 
 - Added format method to DurationFormat and UtcOffsetFormat


0.9.2:

 - Interim Release


0.9.1:

 - Interim Release


0.9

 - Initial Release