
Changes from 2.0.4 to 2.0.6
---------------------------

** Improvement
    * [FELIX-4764] - Add support to GZIP based compact index files

Changes from 2.0.2 to 2.0.4
---------------------------

** Bug
    * [FELIX-3097] - LocalRepository is not updated when bundles are
    * [FELIX-4571] - NullPointerException when using Repository impl with Aries subsystem impl
    * [FELIX-4616] - BundleRepository ResourceComparator violates comparison contract
    * [FELIX-4640] - missing (&(osgi.ee=JavaSE)(version=1.8)) when embedding in org.apache.felix.framework

** Improvement
    * [FELIX-4812] - BundleRepository can be quite CPU intensive when starting a lot of bundles

Changes from 1.6.6 to 2.0.2
---------------------------

** New Feature
    * [FELIX-4368] - Support OSGi Repository 1.0 Specification
    ** [FELIX-4369] - Support repository.xml as defined by OSGi Repository spec
    ** [FELIX-4370] - Support Repository service as defined by OSGi spec
    ** [FELIX-4371] - Pass the Repository 1.0 OSGi CT

** Bug
    * [FELIX-3257] - OBR resolver unable to pick up the highest bundle version when selecting the best candidate
    * [FELIX-2465] - system.bundle should be automatically wired to the relevant bundle
    * [FELIX-3842] - NPE in LocalRepositoryImpl

Changes from 1.6.4 to 1.6.6
---------------------------

** Bug
    * [FELIX-2612] - [OBR] Doesn't work on Java 1.4 due to use of Boolean.parseBoolean()
    * [FELIX-2884] - The multiplicity isn't taken into account by the maven bundle plugin and bundlerepository when generating the repository xml
    * [FELIX-2912] - Host name is lost in exceptions when dealing with Windows shared drives
    * [FELIX-2958] - Unable to remove previously added repository from OBR

Changes from 1.6.2 to 1.6.4
---------------------------

** Bug
    * [FELIX-2306] - ClassCastException in Wrapper.unwrap() when calling Resolver.add(x implements Resource)
    * [FELIX-2385] - Execution environment property is not correctly exposed

Changes from 1.6.0 to 1.6.2
---------------------------

** Bug
    * [FELIX-2269] - Only the higher version of a given bundle is kept in a repository
    * [FELIX-2276] - Authentication credentials for proxies are not set when retrieving resources
    * [FELIX-2304] - Single quotes need to be escaped in xml attribute values 

Changes from 1.4.3 to 1.6.0
---------------------------

** Bug
    * [FELIX-1007] - OBR search doesn't take 'categories' into account
    * [FELIX-1531] - Mandatory directive is ignored on the Export-Package when it comes to resolve the bundles
    * [FELIX-1621] - OBR fails to take bundles into account that are already available in the framework
    * [FELIX-1809] - OBR issue when using parameters with exported packages
    * [FELIX-2081] - Attribtues and directives and not used on local resources
    * [FELIX-2082] - Local resources should really be preferred over remote resources
    * [FELIX-2083] - bundlerepository should mark dependencies it includes as optional
    * [FELIX-2102] - Bad exception thrown when an obr url can not be resolved
    * [FELIX-2114] - The reasons for adding a resource may contain the same requirement several times
    * [FELIX-2126] - Dependencies of optional resources should be optional
    * [FELIX-2136] - Improve OBR speed
    * [FELIX-2138] - The resolver should prefer required resources over optional resources to minimize the set of required resources
    * [FELIX-2139] - Move extensions to a new api into the bundlerepository module as to not pollute the org.osgi.* package
    * [FELIX-2221] - DataModelHelper.filter() throws wrong Exception

** Improvement
    * [FELIX-280] - OBR should be able to confirm satisfaction of a filter, including availability of local resources
    * [FELIX-483] - Log detailed information on invalid syntax in parsed repository xml requirements
    * [FELIX-692] - OBR should provide an API for resolving bundles dependencies regardless of locally installed bundles
    * [FELIX-1492] - Add option to exclude optional dependencies during OBR deploy
    * [FELIX-2106] - Resolver scoped Repository
    * [FELIX-2115] - The api offers no way to have a timeout or cancel the resolution if it takes too long
    * [FELIX-2127] - The explanation given why a resource is include is insufficient
    * [FELIX-2134] - Change the filter implementation
    * [FELIX-2140] - The Requirement#isSatisfied() method should actually check the capability/requirement namespace
    * [FELIX-2151] - Use Strings instead of URLs in the API

** New Feature
    * [FELIX-178] - OBR should expose some way to convert a locally installed bundle to a Resource
    * [FELIX-2103] - Improve the OBR url handler to be able to access external bundles
    * [FELIX-2144] - Add global requirements and capabilities

** Task
    * [FELIX-2104] - Add an optional faster stax based parser
    * [FELIX-2211] - Simplify the repository parser based on KXml2
    * [FELIX-2215] - Refactor bundlerepository and maven bundle plugin obr data model

Changes from 1.4.2 to 1.4.3
---------------------------

** Bug
    * [FELIX-1792] - Felix OBR seems to just randomly choose one of the satisifed bundles if more than one bundle meets the requirement


Changes from 1.4.1 to 1.4.2
---------------------------

** Task
    * [FELIX-1617] - Modify framework, main, shell, shell.tui, and obr to depend on official OSGi JAR files

Changes from 1.4.0 to 1.4.1
---------------------------

** Bug
    * [FELIX-1000] - Updating an bundle which was installed via OBR fails
    * [FELIX-1157] - NPE results in OBR if a resource does not have a presentation name
    * [FELIX-1433] - java.lang.NumberFormatException in Bundle-Version (org.osgi.framework.Version) due to trailing whitespace

Changes from 1.2.1 to 1.4.0
---------------------------
** Bug
    * [FELIX-973] - FilterImpl from Felix Framework does not support none LDAP operators
    * [FELIX-977] - Bundle resolving runs extreme long
    * [FELIX-999] - The OBR ResolverImpl shouldn't try to start fragment bundles

** Improvement
    * [FELIX-884] - OBR should expose registered services as capabilities of local repository
    * [FELIX-887] - Ensure BundleListeners are not forgotten about
    * [FELIX-940] - Add support for execution environment
    * [FELIX-986] - Include the symbolicname in the output of obr list -v

** New Feature
    * [FELIX-976] - OBR update-url shell command

Changes from 1.2.0 to 1.2.1
---------------------------
* [2008-10-24] Fixed potential NPE when comparing resources. (FELIX-789)
* [2008-10-24] Removed the default repository URL from OBR, so now it must 
  be configured to have a repository. (FELIX-481)
* [2008-10-24] Print message if there are no matching bundles. (FELIX-785)
* [2008-10-23] Modified the OBR shell command to hide multiple versions of 
  available artifacts to cut down on noise. It is still possible to list 
  all versions by using a new "-v" switch.
* [2008-09-29] Adapt Bundle-DocURL header to modified URL


Changes from 1.0.3 to 1.2.0
---------------------------

* [2008-08-30] Prevent issues when updating running bundles. (FELIX-701)
* [2008-08-28] Prevent NullPointerException if a locally installed bundle
  does not have a Bundle-SymbolicName or version. (FELIX-108)
* [2008-08-12] Added OBR descriptor and updated to the newest bundle plugin. (FELIX-672)
* [2008-07-31] Use LogService instead of System.err. (FELIX-482)
* [2008-07-21] Modified OBR to correctly consider the namespace attribute 
  when matching capabilities to requirements. (FELIX-638)
* [2008-06-26] Implement referral with hop count support. (FELIX-399)
* [2008-05-09] Return an empty resource array when querying with a filter
  with invalid syntax. (FELIX-480)
* [2008-05-09] Fixed improper synchronization with respect to visibility rules.
* [2008-05-09] Ignore resources with invalid filters. (FELIX-484)
* [2008-05-09] Move repository URL list initialization to a later time to 
  avoid the default repository URL if it is not desired. (FELIX-485)

Changes from 1.0.2 to 1.0.3
---------------------------

* [2008-04-21] Re-release to make bytecode executable on jre 1.3.

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

* [2008-01-27] Change the default url from sf.net to sourceforge.net.
* [2007-10-25] Add support for zipped repository files. (FELIX-410)
* [2007-10-03] Updated OBR's VersionRange to match the Framework's VersionRange
  and now accept whitespace in its version range. (FELIX-389)
* [2007-09-24] Extract OSGi OBR service API to a non-bundle jar to avoid 
  circular build problems.

Changes from 0.8.0-incubator to 1.0.0
-------------------------------------

* [2007-03-16] Correctly initialized member fields to avoid incorrectly
  assigning the source and license URLs. (FELIX-242)
* [2007-03-19] Parent POM extends Apache POM for Apache-wide policies.
  (FELIX-260)
* [2007-05-18] Improved OBR dependency resolution by searching resolving
  bundles before local bundles and to search through all available
  candidates to find one that can resolve instead of picking one and failing
  if it cannot be resolved. (FELIX-285)
* [2007-07-13] Fixed LDAP filter syntax bug when using inclusive version
  ranges. (FELIX-327)
