ECLIPSE GEMINI BLUEPRINT CHANGELOG
==================================
http://www.eclipse.org/gemini/blueprint


Changes in version 2.0.0 (2016-03-15)
-----------------------------------------

General:
* Bug 488009 - Update to Spring 4.2.x
* Bug 403998 - Upgrade to recent mocking and verification tools and refactor test cases accordingly
* Bug 489622 - Use the PackageAdmin service instead of the FrameworkUtil to obtain bundle references
* Bug 489623 - Update to R5 compliant framework versions


Changes in version 2.0.0.M02 (2013-03-20)
-----------------------------------------

General:
* Bug 403628 - Support optional synchronous application context shutdown
* Bug 384166 - Extend resource retrieval to both backing bundle and bridge classloader 

Changes in version 2.0.0.M01 (2013-02-12)
-----------------------------------------

The fix to bug 356683 is mildly backwards incompatible and so the version of Gemini Blueprint is bumped to 2.0.

General:
* Bug 356683 - Construct application contexts defined in extender fragments only once and share across extender instances
* Bug 393960 - Build using Java 6 instead of Java 5
* Bug 351755 - Gemini-core should export org.osgi.service.blueprint package
* Bug 373661 - SwappingServiceReferenceProxy is not thread safe
* Bug 394116 - Lazy activation by loading of class not contained in bundle depends on Equinox behavior
* Bug 392396 - Inverted class check logic in org.eclipse.gemini.blueprint.extender.internal.activator.ListListenerAdapter
* Bug 374717 - OsgiServiceFactoryBean throws NullPointerException in destroy() when no OsgiServiceRegistrationListeners are configured
* Bug 374712 - DynamicCollection toArray(T[] a) throws ClassCastException
* Bug 392500 - TypeFactory.getReifiedType(Type) throws StackOverflowError when fed recursive types
* Bug 395058 - Test with Knopflerfish 3.5

Documentation:
* Bug 355584 - Minor errors in reference documentation (up to and including Chapter 4)
* Bug 356681 - XML namespace declarations not as documented in 1.0.0.RELEASE

Changes in version 1.0.2.RELEASE (2012-08-31)
---------------------------------------------

General:
* Bug 384748 - ConcurrentModificationException in DependencyServiceManager
* Bug 388496 - ShutdownSorter produces IllegalStateException

Changes in version 1.0.1.RELEASE (2012-08-23)
---------------------------------------------

General:
* Bug 385307 - Substitutable exports
* Bug 381871 - Testcase pom error

Changes in version 1.0.1.M01 (2012-05-29)
-----------------------------------------

General
* Bug 375225: Support Spring 3.1.x.
* Bug 379384: Make optional imports of essential packages mandatory in extender


Changes in version 1.0.0 RELEASE (2011-08-22)
---------------------------------------------

General
* upgraded to Spring Framework 3.0.6
* Improved Javadoc documentation

Package org.eclipse.gemini.blueprint.extender
* fixed bug that prevented namespaces of bundles already resolved to be considered

Package org.eclipse.gemini.blueprint.service
* reintroduced Spring DM specific properties on imported services


Changes in version 1.0.0 RC1 (2011-06-20)
-----------------------------------------

General
* upgraded to Spring Framework 3.0.4
* upgraded to Equinox 3.6.2
* upgraded to Felix 2.0.5
* upgraded to Knopflerfish 3.1.0
* migrated Spring DM documentation to Eclipse Gemini Blueprint
* introduced Gemini Blueprint schemas (gemini-blueprint.xsd and gemini-blueprint-compendium.xsd)

Package org.eclipse.gemini.blueprint.context
* reintroduced Spring DM specific properties on exported services
* fixed bug occuring in context service publication when a Java security manager is enabled

Package org.eclipse.gemini.blueprint.extender
* introduced system property for filtering the state of namespace bundles scanned by the extender
* reverted the filtering of namespace bundles to RESOLVED (instead of STARTED - which can still be selected)
* fixed bug preventing custom timeouts to be configured on the extender

Package org.eclipse.gemini.blueprint.service
* reintroduced Spring DM specific properties on exported services


Changes in version 1.0.0 M1 (2010-06-30)
----------------------------------------

General
* renamed packages to reflect the move to Eclipse Gemini (org.springframework.osgi -> org.eclipse.gemini.blueprint)
* namespace definitions are still called spring-osgi.xsd/spring-osgi-compendium.xsd in this release
* upgraded to Felix 2.0.2
* upgraded to Knopflerfish 3.0.0.beta3
* upgraded to CGLib 2.2.0
* removed 'update-strategy' attribute (spring-osgi-compendium.xsd)
* improved timeout schema types to improve declaration validation
* introduced two extra attributes to 'cm-properties' element (spring-osgi-compendium.xsd)
* introduced service-properties to 'managed-service-factory' element (spring-osgi-compendium.xsd)

Package org.eclipse.gemini.blueprint.compendium
* improved configuration admin update handling by supporting both container and bean management on the same declaration
* introduced initialization timeout option to cm-properties
* introduced lazy initialization option to cm-properties
* introduced service properties option to managed-service-factory

Package org.eclipse.gemini.blueprint.io
* improved pattern matching against jar entries in the bundle classpath
* fixed pattern matching against packages imported from bundles with custom classpaths

Package org.eclipse.gemini.blueprint.test
* added check for unresolved fragments during test startup