                        Release Notes
                        -------------

Apache JSieve is a Java implementation of the Sieve mail filtering language defined by 
RFC 3028. jSieve is implemented as a langauge processor that can be plugged into any
internet mail application to add Sieve support.

Comments, Questions and Issues
------------------------------
jSieve is a sub-project of Apache James. Please direct your comments and questions to 
the relevant James list.

To report issues, such as bugs, go to 
http://issues.apache.org/jira/browse/JSIEVE
As jSieve comes with a fairly extensive suite of jUnit Tests, it would be most 
helpful for bug reports to be accompanied by an illustrative jUnit test case.

Licensing and legal issues
--------------------------
For legal and licensing issues, please look in the legal section of
the documentation or read the LICENSE and NOTICE files.

Version 0.5
----------- 

Changes
---------
Sub-task
    [JSIEVE-65] - Inherit plugin management
Bug
    [JSIEVE-74] - Script parsing fails when the string contains a backslash
    [JSIEVE-75] - incorrect parsing of script containing multiple multi-line forms
Improvement
    [JSIEVE-67] - Improve Documentation
    [JSIEVE-70] - Improve Validation Exceptions
    [JSIEVE-73] - Ensure Body Extension Functions As Per Specification
    [JSIEVE-78] - Add a Mail notification mechanism for when Sieve scripts fail
    [JSIEVE-80] - Add the ability to advertise the available Sieve extensions
    [JSIEVE-83] - Integrate managesieve in the current jSieve modules
    [JSIEVE-85] - Add build-helper-maven-plugin on apache-jsieve-core pom for generated src
    [JSIEVE-88] - Rename apache-jsieve-assembly to apache-jsieve-all
New Feature
    [JSIEVE-51] - Sieve-In-Xml (Full Preview)
Task
    [JSIEVE-61] - Split Parent And Aggregation Poms
    [JSIEVE-62] - Review TODOs
    [JSIEVE-64] - Improve and Standardise Build

Version 0.4
----------- 

Changes
---------
Sub-tasks Completed
 * https://issues.apache.org/jira/browse/JSIEVE-59 -  Generify MailAdapter API
 * https://issues.apache.org/jira/browse/JSIEVE-66 - Ensure SieveFactory is thread safe by default
 * https://issues.apache.org/jira/browse/JSIEVE-72 - Validate Extension Comparators 
 
 Bugs Fixed
 * https://issues.apache.org/jira/browse/JSIEVE-57 - Parse failure with multi-line form when the line begins with a dot
 
 Improvements Made
 * https://issues.apache.org/jira/browse/JSIEVE-35 - Revise MailAdapter.getContent() 
 * https://issues.apache.org/jira/browse/JSIEVE-54 - Remove Ant Build
 * https://issues.apache.org/jira/browse/JSIEVE-55 - Remove Staging Directory
 * https://issues.apache.org/jira/browse/JSIEVE-56 - Provide a way to determine if a keep action is implicit or explicit
 * https://issues.apache.org/jira/browse/JSIEVE-58 - Clarify SieveFactory thread safety
 * https://issues.apache.org/jira/browse/JSIEVE-69 - Improve Test Coverage Of Ascii Numeric Test
 
 New Features Added
 * https://issues.apache.org/jira/browse/JSIEVE-71 - Add Support For i;ascii-numeric Comparator
 
 Tasks Completed
 * https://issues.apache.org/jira/browse/JSIEVE-53 - Generify
 * https://issues.apache.org/jira/browse/JSIEVE-63 - Switch To apache-release Profile
 * https://issues.apache.org/jira/browse/JSIEVE-68 - Ensure Mailet is thread safe

Version 0.3
----------- 
This release is the first to include mailet and utility modules, in addition to the core parsing
library. The configuration API has changed significantly to replace magic singletons with POJOs
suitable for IoC. The default configuration mechanism has been retained so though calls have
changed, existing configurations should still be compatible.
 
Utilities include node serializers to xml and sieve script. The mailet module provides Sieve
in the James 3 codebase.

Java 1.5 is now the minimum version required.
 
Changes   
-------
Sub-tasks Completed
 * https://issues.apache.org/jira/browse/JSIEVE-27 - Refactor ComparatorManager
 * https://issues.apache.org/jira/browse/JSIEVE-29 - Refactor ConfigurationManager
 * https://issues.apache.org/jira/browse/JSIEVE-32 - Refactor TestManager
 * https://issues.apache.org/jira/browse/JSIEVE-37 - Push main source down a level
 * https://issues.apache.org/jira/browse/JSIEVE-38 - Modular Ant Build
 * https://issues.apache.org/jira/browse/JSIEVE-44 - Create Check Module
 * https://issues.apache.org/jira/browse/JSIEVE-45 - Extract Reusable Ant Macros
 * https://issues.apache.org/jira/browse/JSIEVE-46 - Unified Distribution
 * https://issues.apache.org/jira/browse/JSIEVE-48 - Release Quality Maven Build
    
Bugs Fixed
 * https://issues.apache.org/jira/browse/JSIEVE-49 - CPU spins when :matches expression 
                                                     contains &quot;*************&quot;
                                                     
Improvements Made
 * https://issues.apache.org/jira/browse/JSIEVE-47 - Access to script comments
 * https://issues.apache.org/jira/browse/JSIEVE-52 - Check Support For Numeric Quantifiers
    
New Features Added
 * https://issues.apache.org/jira/browse/JSIEVE-43 - Add API for generating a Sieve script from a parse tree 
 * https://issues.apache.org/jira/browse/JSIEVE-50 - Sieve-In-XML (Experimental Preview)
                
Tasks Completed
 * https://issues.apache.org/jira/browse/JSIEVE-16 - Singletons -> IoC
 * https://issues.apache.org/jira/browse/JSIEVE-24 - Include build time libraries (javacc, 
                                                     javamail, activation) in the source distribution
 * https://issues.apache.org/jira/browse/JSIEVE-33 - Remove .junit. package name from tests.
 * https://issues.apache.org/jira/browse/JSIEVE-34 - make jsieve a multimodule project