Changes from 1.0.0 to 1.0.2
---------------------------
** Bug
    * [FELIX-5536] - ConfigSpiOSGi may end with incomplete realm due to race conditions

** Improvement
    * [FELIX-5537] - ConfigSpiOsgi should not try to unregister provider if not registered

Changes from 0.0.4 to 1.0.0
---------------------------
** Bug
    * [FELIX-5502] - Startup logs from ConfigSpiOsgi may get dropped due to race condition
    * [FELIX-5505] - ConfigSpiOSGi may miss out on registering some LoginModuleFactory due to race condition

** Task
    * [FELIX-3981] - Create a sample project for demonstrating Felix JAAS main features

Changes from 0.0.2 to 0.0.4
---------------------------
** Bug
    * [FELIX-4827] - Improve logging on LoginModule registration

** Improvement
    * [FELIX-4978] - Enable name hint for JAAS Config entries
    * [FELIX-5083] - Set webconsole.configurationFactory.nameHint for JAAS configurations

Initial Release 0.0.2
---------------------

** Task
    * [FELIX-3935] - Add testcases for validating the JAAS Feature implementation
    * [FELIX-3980] - Add documentation related to usage of Felix JAAS Bundle
    * [FELIX-3981] - Create a sample project for demonstrating Felix JAAS main features
    * [FELIX-3989] - Add support for determining code coverage with integration testcases
    * [FELIX-4318] - prepare for initial release of JAAS Bundle

** Bug
    * [FELIX-3985] - ConfigSpiOsgi should be registered by default
    * [FELIX-3998] - Updating JAAS config leads to registration of duplicate LoginModules
    * [FELIX-4387] - JAAS config fields are initialized too late in the ConfigSpiOsgi constructor
    * [FELIX-4390] - Login modules registered via LMF not updated if LMF service config changes

** Improvement
    * [FELIX-3983] - Use inlined Sling commons PropertiesUtil for reading config values
    * [FELIX-3984] - Use default application/realm name of 'other' if none specified
    * [FELIX-4389] - Configuration ranking for LMF services should also use "jaas.ranking" property
    * [FELIX-4414] - Empty string value in jaas.realm should also trigger default

** New Feature
    * [FELIX-3705] - Bundle to simplify JAAS usage in OSGi

