SPRING DYNAMIC MODULES FRAMEWORK CHANGELOG ========================================== http://www.springframework.org/osgi Changes in version 1.1.0 M2 (2008-04-29) ----------------------------------------- General * Spring 2.5.4+ required * upgraded to Felix 1.0.4 * refined the web deployer API * split web functionality into web and web-extender (symbolic name:org.springframework.bundle.osgi.web.extender) bundle * added integration with Spring MVC * added 'greedy-proxying' attribute to reference collections (spring-osgi.xsd) * reduced the number of class loader instances generated internally by Spring-DM * improved proxy infrastructure to avoid type leaks or the usage of spring-aop dynamic import Package org.springframework.osgi.config * removed usage of deprecated setSource method in AbstractReferenceDefinitionParser * added support for 'greedy-proxying' attribute Package org.springframework.osgi.context * added OSGi import for Spring property editors loaded reflectively * improved loading of property editors by using Spring-DM core bundle instead of the target bundle * AbstractOsgiBundleApplicationContext uses the raw bundle as the bean class loader to avoid class leaks * improved start up NamespaceHandlerResolver look up to avoid class incompatibility problems * added getContextClassLoader() method to AbstractDelegatedExecutionApplicationContext for pluggable thread context class loader strategy * improved AbstractOsgiBundleApplicationContext behaviour if the internal resource loader is not set * improved bundle class loader creation by using an internal cache * refined AbstractOsgiBundleApplicationContext to allow customization of the OSGi service properties * AbstractDelegatedExecutionApplicationContext rethrows all exceptions occuring during refresh Package org.springframework.osgi.service * refined weaving process for service importers so that knowledge of org.springframework.osgi package is not required * fixed potential infrastructure class leak through the thread context class loader management of imported services * improved proxy class loader creation by using an internal cache * improved thread-safety of the dynamic service collections * introduced InfrastructureProxy interface to imported OSGi service proxies Package org.springframework.osgi.extender * added OsgiApplicationContextCreator interface for handling the extender contexts creation * added OsgiBeanFactoryPostProcessor interface for customizing the contexts created by the extender * changed package of the internal, private bundle activator * added filtering by type for the discovered namespace handler resolvers to avoid usage of classes with incompatible wiring * improved listener list creation by reusing the extender bundle class loader * ApplicationContextConfiguration is now public * improved osgi service dependency logs by including the depedency declaring bean name Package org.springframework.osgi.io * extended OsgiBundleResource to implement ContextResource * fixed internal PackageAdminResolver parsing of Require-Bundle entries which specify versions Package org.springframework.osgi.service * refined OsgiServiceCollectionProxyFactoryBean to allow for configurable 'greedy-proxying' behaviour * changed service collection behaviour to not perform greedy proxying by default * improved the proxy weaving process by providing the aop infrastructure dependencies internally Package org.springframework.osgi.test * improved installed bundles resolving when PackageAdmin service is available Package org.springframework.osgi.util * BundleDelegatingClassLoader constructor visibility changed from private to protected * fixed sporadic exception occuring in DebugUtils when analyzing class loading errors * fixed parsing exception in DebugUtils when dealing with version ranges Package org.springframework.osgi.web * added OsgiWarDeploymentException to the deployment interfaces * added WarDeployment for bundles deployed by the WarDeployer * added WarDeploymentContext for accessing the properties associated with a war deployment and the associated BundleContext as a ServletContext attribute * improved cleanup in case of exceptions for both TomcatWarDeployer and JettyWarDeployer * added OsgiBundleXmlWebApplicationContext as an OSGi aware XML application context * refined TomcatDeployer to rely only on Service interface rather the EmbeddedServer class * fixed casting problem occurring during war undeployment * improved weaving process for imported web container services * refined DefaultContextPathStrategy to support folders and encode unsafe characters * OsgiBundleXmlWebApplicationContext provides the servlet namespace under 'org.springframework.context.web.namespace' property of its OSGi service * moved war deployers outside the extender package * WarLoaderListener and its related classes were moved into sprig-osgi-web-extender bundle * TomcatWarDeployer Service object can be set directly by the user * JettyWarDeployer Server object can be set directly by the user * changed package of the internal, private bundle activator Changes in version 1.1.0 M1 (2008-04-07) ----------------------------------------- General * Knopflerfish 2.0.4+ required * Felix 1.0.3+ required * introduced new module dedicated to web application running on OSGi platforms (successfully tested on Equinox 3.2.2 and the upcoming Felix 1.0.4) Package org.springframework.osgi.context * AbstractDelegatedExecutionApplicationContext calls "cancelRefresh" if exceptions appear during the delegeted refresh * introduced events specific to OSGi application contexts * introduced listener interface OsgiBundleApplicationContextListener for OSGi context events * added bundle version to the application context OSGi service Package org.springframework.osgi.extender * ContextLoaderListener automatically detects and notifies OSGi services registered as OsgiBundleApplicationContextListener classes * ContextLoaderListener can be configured externally through META-INF/spring/*.xml files from fragments attached to its bundle Package org.springframework.osgi.io * added support for classpath: and classpath*: patterns Package org.springframework.osgi.test * FelixPlatform uses the Felix distribution default system packages * KnopflerfishPlatform uses the KF distribution default system packages * AbstractOnTheFlyBundleCreatorTests can now generate imports based on all classes available in the jar not just the test hierarchy Package org.springframework.osgi.util * BundleDelegatingClassLoader exposes the internal Bundle through getBundle() method Changes in version 1.0.2 (2008-03-25) ------------------------------------- General * adjusted the manifests so internal packages are not exported and the versions for both spring and spring-osgi are present Package org.springframework.osgi.context * AbstractOsgiBundleApplicationContext registers the application context as an OSGi service using just the interfaces Package org.springframework.osgi.extender * raised service dependency waiting logging level to INFO (from DEBUG) Package org.springframework.osgi.util * BundleDelegatingClassLoader relies on default hashCode/equals methods to prevent class caching on bundle updates Package org.springframework.osgi.test * Installed bundles have the location set to the backing resource URL if possible, falling back to the description Changes in version 1.0.1 (2008-02-29) ------------------------------------- General * fixed nested Eclipse classpath entry in spring-osgi bundle archetype * added log4j.properties to spring-osgi bundle archetype * added OSGi integration test to the spring-osgi bundle archetype Package org.springframework.context.support * the namespace resolver mechanism first checks the local bundle classpath before using the extender namespace service Package org.springframework.osgi.context * fixed AbstractDelegatedExecutionApplicationContext to log errors that occur during the bean factory startup Package org.springframework.osgi.io * improved OsgiBundleResource handling of jars with missing archive entries for folders * improved OsgiBundleResourcePatternResolver performance when checking for jar resources * improved detection of relative OSGi URLs Package org.springframework.osgi.test * AbstractOsgiTest provides better error messages for bundle that fail to start * custom artifact locators can be used with AbstractDependencyManagerTests * removed all internal usage of system properties by the testing infrastructure * removed the use of serialization inside the testing framework * improved automatic manifest generation by parsing only the test parents that are available in the test bundle Changes in version 1.0 final (2008-01-25) ----------------------------------------- Package org.springframework.osgi.extensions.annotation * aligned bundle symbolic name with the rest of the bundles Package org.springframework.osgi.service * refined the service proxy returned by OsgiServiceProxyFactoryBean so it doesn't allow usage after being destroyed Package org.springframework.osgi.test * removed deprecated mispelled Platforms#KNOPFLEFISH constant * KnopflerfishPlatform exports automatically system packages for JDK 1.4/1.5 * refined test bundle creation to ignore duplicate META-INF/MANIFEST.MF * optimized test bundle creation by using no compression * AbstractOnTheFlyBundleCreatorTests automatic manifest generation does not add OSGi import entries for packages contained in the test bundle Package org.springframework.osgi.util * OsgiServiceUtils#getAllServices() deprecated method has been removed * OsgiServiceUtils#getService() deprecated method has been removed * default artifact locator picks up Maven 2 ~/.m2/settings.xml localRepository configuration * DebugUtils uses a degradable logger to properly report error messages when the logging implementation is misconfigured * BundleDelegatingClassLoader uses a degradable logger to properly report error messages when the logging implementation is misconfigured or the logging classes are not loaded yet Changes in version 1.0 RC2 (2008-01-11) --------------------------------------- General * removed deprecated methods * circular references between service importers, exporter and listeners are now supported * distributable bundles include Apache 2 license (META-INF/license.txt and META-INF/notice.txt) * all integration tests have been moved under integration-test/ folder * by default, the samples and integration tests are not executed (use Maven profiles to include them) * Maven 2.0.7 is required for properly building the project under JDK 1.6 * Knopflerfish 2.0.3 is required for correctly building and running Spring-DM Package org.springframework.osgi * updated spring-osgi.xsd Tservice type to properly reflect OsgiServiceFactoryBean package * updated spring-osgi.xsd list, set elements to properly reflect OsgiServiceCollectionFactoryBean package * updated bundles symbolic name to follow Spring bundle conventions (org.springframework.bundle.osgi instead of org.springframework.osgi.bundle) Package org.springframework.osgi.bundle * removed deprecated method BundleFactoryBean#setClassloader Package org.springframework.osgi.config * OsgiConfigDefinitionParser visibility changed from public to default * OsgiDefaultsDefinition visibility changed from public to default * ParserUtils visibility changed from public to default Package org.springframework.osgi.context * AbstractDelegatedExecutionApplicationContext throws clearer exception when the mandatory BundleContext is not set Package org.springframework.osgi.extender * META-INF/spring.handlers, META-INF/spring.schemas files are searched in the bundle space instead of the class space Package org.springframework.osgi.service * fixed double negation in AutoExport.DISABLED javadoc * removed deprecated method AbstractOsgiServiceImportFactoryBean#setInterface * service reference importers receive only one event (that of the best matching service) when registered/unregistered into the OSGi space rather then events of all existing services Package org.springframework.osgi.test * AbstractOnTheFlyBundleCreatorTests rethrows actual exception when creating/loading MANIFEST.MF * fixed mispelled KNOPFLERFISH constant in Platforms class (was KNOPFLEFISH) * default settings and properties in AbstractConfigurableBundleCreatorTests are now protected * AbstractOsgiTests does not implement any more, internal interface OsgiJUnitTest * AbstractConfigurableBundleCreatorTests exposes the default jar creation settings through #getDefaultSettings() * removed method AbstractDependencyManagerTests#injectArtifactLocator * AbstractDependencyManagerTests#getLocator visibility changed from public to protected * AbstractConfigurableBundleCreatorTests jar content pattern has been changed to **/* (from **/*.class, **/*.xml, **/*.properties) * waitOnContextCreation methods visibility changed from public to protected (to be consistent with the rest of the test methods) Package org.springframework.osgi.util * deprecated OsgiServiceUtils#getAllServices() * deprecated OsgiServiceUtils#getService()