Changes from 1.0.12 to 1.1.0
-----------------------------

** Improvement
    * [FELIX-4980] - Add capabilities for metatype R6
    * [FELIX-4973] - Relax exception handling when reading metatype XML


Changes from 1.0.10 to 1.0.12
-----------------------------

** Improvement
	* [FELIX-4649] - Get MetaTypeInformation while bundle is starting

** Bug
	* [FELIX-4644] - Designates with multiple Objects
	* [FELIX-4665] - Metatype service does not allow a default empty string in XML resource
	* [FELIX-4771] - Possible NPE when accessing content of attribute
        * [FELIX-4799] - Support for multiple factory designates in single MetaType file


Changes from 1.0.8 to 1.0.10
----------------------------

** Bug
	* [FELIX-4289] - Spaces within values are removed for default values


Changes from 1.0.6 to 1.0.8
---------------------------

** Bug
	* [FELIX-3756] - Optional attributes validated invalid data as correct;
	* [FELIX-3757] - If an AttributeDefinition did not specify a minimum, maximum or option values, it did not detect missing values;
	* [FELIX-3758] - AttributeDefinition.validate() did not take non-zero cardinality into consideration.
	* [FELIX-4214] - Cache in BundleResources works only for a single metatype properties file per bundle
	* [FELIX-3884] - Default value and options 


Changes from 1.0.4 to 1.0.6
---------------------------

** Bug
	* [FELIX-2094] - AttributeDefinition with an empty default value must attribute must result in a single (empty string) entry string array
	* [FELIX-2097] - DefaultMetaTypeProvider.getLocales() must not reuturn an empty string entry
	* [FELIX-2860] - getLocales() in DefaultMetaTypeProvider needs to check return of findEntries
	* [FELIX-2867] - getIcon() in LocalizedObjectClassDefinition keyset iteration incorrect
	* [FELIX-2868] - Icon only works if absolute path specified, but specification allows for relative urls
	* [FELIX-3183] - Attribute requirement is not validated
	* [FELIX-3364] - MetaDataReader exposes a private exception class on the public API
	* [FELIX-3720] - Designate's pid attribute is optional and not mandatory
	* [FELIX-3730] - AD.validate of string attributes must validate the string length
	* [FELIX-3732] - service.pid properties of ManagedServiceFactory services must be used as factory PIDs
	* [FELIX-3734] - MetaType: NPE in ServiceTracker for fragment bundle

** Improvement
	* [FELIX-3167] - Add support for new PASSWORD attribute type
	* [FELIX-3338] - Add support for optional attributes in the MetaDataReader as defined in the XML schema for metatype
	* [FELIX-3736] - Add support for MetaTypeProvider service modifications
	* [FELIX-3740] - Maintain the MetaTypeProvider service tracker on the MetaTypeService

** New Feature
	* [FELIX-2719] - Add name space support to the meta type implementation

** Task
	* [FELIX-2096] - Check MetaTypeProvider.getObjectClassDefinition(String, String) specification compliance
	* [FELIX-3182] - Update to use parent POM 2.1
	* [FELIX-3184] - Add support for metatype extension by MetatypeProvider services
	* [FELIX-3731] - Multi-Value service.pid service properties must be supported
	* [FELIX-3733] - Clarify icon location


Changes from 1.0.2 to 1.0.4
---------------------------
** Bug
	* [FELIX-1226] - The MetaType service should ignore the pid attribute of Designate elements if factoryPid is set.

** Improvement
	* [FELIX-718] - Update NOTICE file to new format
	* [FELIX-1227] - Project Descriptor Enhancement
	* [FELIX-1434] - Include service tracker in bundle instead of importing it


Changes from 1.0.0 to 1.0.2
---------------------------

** Bug
	* [FELIX-520] - MetaDataReader - ad.setMax
	* [FELIX-521] - MetaType - optionValues check
	* [FELIX-597] - Meta type service incorrectly parses attribute element content when the content is specified in value child tags
	* [FELIX-607] - Meta type localization incorrectly resolved in the meta type folder

** Improvement
	* [FELIX-666] - Metatype OBR description


Initial Release 1.0.0
---------------------

** New Feature
	* [FELIX-20] - Implement Metatype Service
