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-3720] - Designate's pid attribute is optional and not mandatory

** 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

** 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


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
