ECLIPSE GEMINI BLUEPRINT CHANGELOG
==================================
http://www.eclipse.org/gemini/blueprint

Changes in version 3.0.0.M01 (2018-04-02)
-----------------------------------------

General:
* Bug 531535 - org.eclipse.gemini.blueprint.service.importer.support.internal.aop.StaticServiceReferenceProxy cannot be cast to org.eclipse.osgi.internal.serviceregistry.ServiceReferenceImpl
* Bug 518488 - ShutdownSorter does not take into account bundles with references to services provided by the same bundle
* Bug 518934 - Deadlock when exporting service due to target bean caching
* Bug 528188 - Update to Spring 5


Changes in version 2.1.0.RELEASE (2017-05-05)
-----------------------------------------
None - see Changes in version 2.1.0.M2


Changes in version 2.1.0.M2 (2017-03-28)
-----------------------------------------

General:
* Bug 512927 	Re-add spring-osgi extensions
* Bug 506536 	Support autoGrowNestedPaths via CMUtils
* Bug 506104 	NullPointerException in LifecycleManager maybeCreateApplicationContextFor on non-Blueprint bundle
* Bug 492769 	OsgiFilterUtils should escape filter values that come from ServiceReference properties
* Bug 475592 	fix warning in ServerOsgiBundleXmlWebApplicationContext
* Bug 452642 	Blueprint extender shutdown ordering affected by external bundles
* Bug 434148 	Virgo fails to start on Turkish Windows
* Bug 348776 	Enhanced support for custom scopes when using Blueprint (Won't fix)
* Bug 324829 	Propagate ConfigurationAdmin properties to service instance properties (Won't fix)


Changes in version 2.1.0.M1 (2017-03-17)
-----------------------------------------

General:
* Bug 512392 - Make gemini blueprint use the standard maven release process
* Bug 511911 - Update to Spring 4.3.x
* Bug 493185 - UIntroduce Maven 3.3+ support for gemini blueprint builds


Changes in version 2.0.0.RELEASE (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
* Bug 489688 - BlueprintCustomCollectionEditor fails to convert non-collection values, but must accept them

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