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)
