Changes in 2.1.18
-----------------
** Bug
    * [FELIX-6096] - SCR fails if the Java Runtime Environment does not support permissions
    * [FELIX-6206] - NPE in ComponentRegistry.getComponentHolders()
** Improvement
    * [FELIX-6107] - Logging Passwords when invoking activate Method

Changes in 2.1.16
-----------------
** Bug
    * [FELIX-6056] - SCR exports promises
    * [FELIX-6055] - NullPointerException possible because ServiceReference.getBundle() can return null
    * [FELIX-6050] - Use abstract class for PrototypeRefPair implementations for Single vs. Multiple case
    * [FELIX-6044] - Component deactivation does not cause reference services to be ungotten
    * [FELIX-6043] - ClassNotFoundException org.osgi.util.function.Function
    * [FELIX-6041] - scr gogo commands require gogo runtime to be present when scr resolves
    * [FELIX-6036] - Race condition prevents optional/greedy ref setter method from being called
    * [FELIX-6026] - SCR command problems
    * [FELIX-5989] - java.lang.IllegalArgumentException from AbstractLogger.format when logging debug message

** Improvement
    * [FELIX-5987] - Slow ServiceComponentRuntime with delivering ServiceReferenceDTOs

Changes in 2.1.14
-----------------
** Bug
    * [FELIX-5950] - NPE in MultiplePrototypeRefPair.unsetServiceObject
    * [FELIX-5974] - Prototype scope references are not released on deactivation
    
Changes in 2.1.12
-----------------
** Bug
    * [FELIX-5959] - Exception on changecount timer timeout


Changes in 2.1.10
-----------------
** Bug
    * [FELIX-4260] - IllegalStateException: The service has been unregistered
    * [FELIX-5947] - ClassLoader memory leak
** Improvement
    * [FELIX-5948] - Collection of performance and memory optimizations

Changes in 2.1.8
----------------
** Bug
    * [FELIX-5927] - Single element Annotation type does not incorporate PREFIX_
    * [FELIX-5926] - Logger instance is not set for constructor and reference injection
    * [FELIX-5929] - Failed activation state not reported in DTOs
    * [FELIX-5930] - Service reference is missing in DTO
    * [FELIX-5905] - SCR cannot access method getLogger from LogService R7
    * [FELIX-5910] - Set correct AccessControlContext when receiving configuration events


Changes in 2.1.6
----------------
** Bug
    * [FELIX-5902] - java.lang.IllegalArgumentException: Bundle org.apache.felix.scr is not resolved with R7 LogService
    * [FELIX-5904] - SCR is creating a logger instance using name "null"


Changes in 2.1.2
----------------
** Bug
    * [FELIX-5866] - SCR does not respect the log level set in LoggerAdmin
    * [FELIX-5865] - SCR R7 logging support doesn't work on equinox framework
    * [FELIX-5867] - Reference field of type Logger for service LoggerFactory is always null
    * [FELIX-5885] - SCR uses an overly restrictive import range for promises


Changes in 2.1.0
----------------
** Improvement
    * [FELIX-5354] - Implement Declarative Service Updates for OSGi R7
    * [FELIX-5454] - Service properties for ComponentFactory (OSGi R7)
    * [FELIX-5455] - Constructor Injection (OSGi R7)
    * [FELIX-5456] - Field injection of component activation objects (OSGi R7)
    * [FELIX-5457] - Logger support (OSGi R7)
    * [FELIX-5458] - Improved ConfigurationPlugin Support (OSGi R7)
    * [FELIX-5460] - DTO Updates (OSGi R7)
    * [FELIX-5557] - Updates to section 112.8.2.2 Coercing Component Property Values (OSGi R7)
    * [FELIX-5559] - Add change count property to runtime service (OSGi R7)
    * [FELIX-5590] - Add support for single value annotations and new key mapping (OSGi R7)
    * [FELIX-5695] - Use Java 7 as base version
    * [FELIX-5696] - Separate metatype provider from managed service
** Bug
    * [FELIX-5769] - SCR should not bind prototype_required reference to bundle scope service
    * [FELIX-5775] - Service properties not updated for lazy service when configuration changes
    * [FELIX-5507] - ConfigurationAdmin might not be visible to SCR implementation
    * [FELIX-5543] - Component property types must implement java.lang.annotation.Annotation methods properly


Changes from 2.0.12 to 2.0.14
-----------------------------
** Bug
    * [FELIX-5618] - Cycles in DS depending on bundle order
    * [FELIX-5704] - SCR can't be wired to recent gogo-runtime versions
    * [FELIX-5739] - Strange behaviour with Lazy-ActivationPolicy and autostart


Changes from 2.0.10 to 2.0.12
-----------------------------
** Bug
    * [FELIX-5416] - Endless loop throwing InterruptedException when shutting down framework
    * [FELIX-5627] - Class loading issues while finding fields causes an NPE
    * [FELIX-5628] - Global lock in FieldHandler.NotResolved::resolve method can cause deadlock


Changes from 2.0.8 to 2.0.10
----------------------------
** Improvement
    * [FELIX-5568] - SCR contains compact3 profile code
** Bug
    * [FELIX-5572] - Reference target filter fails when using field strategy for multiple cardinality reference with multiple component instances
    * [FELIX-5615] - Global lock in BaseMethod.NotResolved::resolve method can cause deadlock
    * [FELIX-5613] - SCR bundle fails to start without Config Admin


Changes from 2.0.6 to 2.0.8
---------------------------
** Improvement
    * [FELIX-5459] - Use Java 6 as minimum version
    * [FELIX-5374] - Reduce severity of log message from SCR when there is no metatype
    * [FELIX-5474] - Do not call no-arg Bundle.getHeaders() method
    * [FELIX-5360] - Strange loading of org.apache.felix.service.command.Descriptor


Changes from 2.0.4 to 2.0.6
---------------------------
** Bug
    * [FELIX-5315] - Unexpected release of ConfigurationAdmin service in RegionConfigurationSupport
    * [FELIX-5316] - Updating from SCR 2.0.2 to SCR 2.0.4 leads to null pointers
    * [FELIX-5318] - SCR causes startup to wait when bundle uninstall itself in activator


Changes from 2.0.2 to 2.0.4
---------------------------
** Improvement
    * [FELIX-5257] - Improve formatting of command list output
    * [FELIX-5243] - Make the code more reusable
    * [FELIX-5194] - Pay attention if configuration change count doesn't change
    * [FELIX-5174] - Logging involving Configuration should show change count
    * [FELIX-5129] - ScrInfo info should more explicitly indicatte there are no component configurations
    * [FELIX-4607] - Configure with nested annotations/interfaces

** Bug
    * [FELIX-5300] - ServiceComponentRuntime should not throw IllegalStateException
    * [FELIX-5276] - Possible hang when unbind method alters service properties
    * [FELIX-5270] - Configuration race between update and delete
    * [FELIX-5264] - Configuration updates may be missed
    * [FELIX-5256] - Object conversion should pass through unrecognized classes of the same type
    * [FELIX-5220] - Alarmist logging when bundle stops before we've activated it
    * [FELIX-5213] - ComponentContext.getServiceReference returns null though service registered
    * [FELIX-5202] - ServiceComponentRuntimeImpl NPE with subsystems/regions
    * [FELIX-5186] - Alarmist logging on asynchronous service changes
    * [FELIX-5080] - gogo info command left out Implementation-Class
    * [FELIX-5079] - Not enough configuration listeners to deal with regions
    * [FELIX-5044] - (felix-extensions) Service property changes during service registration get ignored
    * [FELIX-5040] - Get system bundle by location, not number, for global extender true
    * [FELIX-5032] - IndexOutOfBoundsException in SCR ComponentTestBase class
    * [FELIX-4538] - Problem with stale references with "triangle" of static references
    * [FELIX-4417] - Circular references detected but not resolved if one of the references in the cycle has optional cardinality
    * [FELIX-4237] - Updating a configuration may deactivate/active component multiple times
    * [FELIX-1824] - Cirular References are not currently explicitly checked and detected


Changes from 2.0.0 to 2.0.2
---------------------------
** Improvement
    * [FELIX-5001] - scr:list Gogo command should display component configurations
    * [FELIX-5020] - Don't log exception if metatype is not available

** Bug
    * [FELIX-5028] - ServiceFactory for components might return null


Changes from 1.8.2 to 2.0.0
---------------------------
** Improvement
    * [FELIX-4949] - [RFC-190] Implement prototype_required
    * [FELIX-4918] - Implement searching for event methods according to 112.3.2
    * [FELIX-4916] - Provide service capability
    * [FELIX-4787] - Update DS Implementation to R6
    * [FELIX-4769  - [RFC190/212] Implement ComponentServiceObjects
    * [FELIX-4634] - [RFC212] Implement replace strategy
    * [FELIX-4633] - [RFC212] Implement update strategy
    * [FELIX-4632] - [RFC212] Make properties map passed to event methods comparable
    * [FELIX-4631] - [R6/RFC212] Implement field injection
    * [FELIX-4537] - use a bnd.bnd file for bnd configuration
    * [FELIX-4507] - "persistent" factory components
    * [FELIX-4506] - Control felix optional extensions through xml attributes in component descriptor
    * [FELIX-4467] - Option to use system bundle context for tracking bundles
    * [FELIX-4412] - Add Provide-Capability for declarative services bundle
    * [FELIX-4406] - [R6/rfc190] support 1.3 namespace
    * [FELIX-4405] - [R6rfc190] support prototype scope
    * [FELIX-4404] - [R6/rfc190] implement additional event method signature single Map
    * [FELIX-4403] - [R6/rfc190] implement configuration through annotation instances
    * [FELIX-4402] - [R6/rfc190] implement multiple pid support
    * [FELIX-4401] - [R6/rfc190] Implement runtime/introspection/console based on DTOs
    * [FELIX-4391] - R6/rfc190 Support <refname>.cardinality.minimum configuration property

** Bug
    * [FELIX-4990] - Only first factoy configuration is used
    * [FELIX-4968] - With configuration annotations, coercion exceptions are thrown at the wrong time.
    * [FELIX-4967] - Configuration annotations need to handle char and char[]
    * [FELIX-4965] - Configuration annotations with invalid members handled incorrectly
    * [FELIX-4964] - Reactivate component at most once per service event
    * [FELIX-4957] - [RFC-212] Various issues with field references
    * [FELIX-4951] - [RFC-190] Correct pid handling
    * [FELIX-4950] - [RFC-190] Within a component instance for each reference to the same service the same object needs to be injected
    * [FELIX-4883] - ServiceComponentRuntime.getComponentConfigurationDTOs NullPointerException
    * [FELIX-4843] - ScrInfo impl misses the first provided service
    * [FELIX-4835] - Use bnd 2.3 (via maven-bundle-plugin 2.5.3) to avoid java 8 import problems
    * [FELIX-4793] - Components with an empty configuration are created even if configuration is required or available
    * [FELIX-4792] - Handle Errors on component initialization
    * [FELIX-4790] - SCR MutablePropertiesTest fails when run with framework 4.6.0
    * [FELIX-4789] - SCR Felix4188Test fails when run with framework 4.4.1 or newer
    * [FELIX-4785] - Incompatible SCR API
    * [FELIX-4768] - [RFC190/212] Reference can specify both method and field
    * [FELIX-4753] - Timing issues with bundle context configuration and CM configuration taking effect.
    * [FELIX-4686] - If component is declared with 1.3 NS and ds.factory.enabled = true, validation error occors
    * [FELIX-4585] - SCR will create an additional component instance when ComponentContext.enableComponent is called
    * [FELIX-4563] - target filters in xml reference element are not turned into properties
    * [FELIX-4536] - [R6rfc190] service.pid property aggregates pids from all configurations.
    * [FELIX-4469] - shell command "scr help" does not work without parameter
    * [FELIX-4447] - Regression in ScrShellCommand (NPE caused by falsy regex)
    * [FELIX-4396] - for factory components, configuration changes should affect existing instances
    * [FELIX-4149] - Do not directly support modifying service registration properties


Changes from 1.8 to 1.8.2
---------------------------

** Bug
    * [FELIX-4309] - SCR leaves some components in DISABLED state
    * [FELIX-4313] - Bad synchronization in scr where a lock is held while ungetting a service
    * [FELIX-4322] - [DS] Prevent activation attempts until all dependency managers are set up with trackers
    * [FELIX-4323] - [DS] ScrService.getComponents may return a null array element
    * [FELIX-4325] - [DS] Synchronization issue when activating component
    * [FELIX-4326] - Possible Invalid BundleContext exception when shutting down the extender
    * [FELIX-4348] - [DS] locateService calls race with component reconfiguration
    * [FELIX-4349] - Synchronization issue in ComponentRegistry
    * [FELIX-4350] - Component wrongly activated

** Improvement
    * [FELIX-4316] - Packages imported dynamically should also be imported statically with an optional flag
    * [FELIX-4317] - SCR implementation should avoid using bundleContext.getBundle()
    * [FELIX-4343] - [DS] rationalize log levels

Changes from 1.6.2 to 1.8
---------------------------

** Bug
    * [FELIX-3536] (minor additional work) - Consider putting the non-spec ComponentFactory behavior in a separate class
    * [FELIX-3708] - [DS] use java 5
    * [FELIX-3729] - [DS] Track dependencies by imitating ServiceTracker and keeping a list of actual service references all the time
    * [FELIX-3738] - [DS] ComponentInstance.getServices(String refName) is implemented wrong for 0..1 and 1..1 refs
    * [FELIX-3754] - Services registered from within the activate method may not be bound
    * [FELIX-3787] - NPE on reference update
    * [FELIX-3790] - [DS] Services may not be bound if the events arrive during component instantiation.
    * [FELIX-3825] - [DS] make logging more useful by including component ID when known
    * [FELIX-3826] - [DS] race in enabling components with factory pid
    * [FELIX-3862] - [DS] Deadlock when service is removed during activation
    * [FELIX-3870] - [DS] confusing logic around determining if modified method can be called on config update
    * [FELIX-3875] - [DS] After configuration changes target filter on optional ref, matching services are not bound
    * [FELIX-3888] - [DS] Expose the insides of ScrCommand as a service directly and enhance it
    * [FELIX-3890] - [DS] We might try to unbind a service we couldn't get and didn't bind
    * [FELIX-3891] - [DS] synchronization around registerService can create deadlocks
    * [FELIX-3902] - [DS] Single dynamic mandatory reference problem on target filter update
    * [FELIX-3915] - [DS] Timing hole between ComponentHolder initial config and registration
    * [FELIX-3952] - [DS] service events can go missing resulting in hang
    * [FELIX-3967] - [DS] NPE in DependencyManager$AbstractCustomizer.isSatisfied
    * [FELIX-3971] - [DS] SingleDynamicCustomizer doesn't respond correctly to configuration update events. 
    * [FELIX-3975] - [DS] Give ParseException cause to move out of the stone age
    * [FELIX-3991] - [DS] component deactivation may not complete properly with enough threads
    * [FELIX-4000] - [DS] ConcurrentModificationException in AbstractComponentManager iterating through m_dependencyManagers
    * [FELIX-4004] - [DS] ConcurrentModificationException in DependencyManager.open(
    * [FELIX-4006] - [DS] While disposing a component, it's possible to unbind a reference that wasn't bound.
    * [FELIX-4011] - [DS] code refactoring/simplification
    * [FELIX-4020] - [DS] A reference being unregistered between checking for references available and actual binding may get bound anyway
    * [FELIX-4031] - [DS] Respond better to InterruptedException
    * [FELIX-4055] - [DS] Component instance unset but remains in Active state
    * [FELIX-4057] - [DS] Use Findbugs, and fix located problems
    * [FELIX-4069] - [DS] ConcurrentModificationException in ServiceFactoryComponentManager
    * [FELIX-4070] - [DS] Reduce or eliminate use of States in command pattern
    * [FELIX-4088] - [DS] NPE from SCR service unregistration
    * [FELIX-4090] - [DS] ActivateMethod.ACTIVATE_TYPES_DS11 and ACTIVATE_TYPES_DS10 should be static final
    * [FELIX-4166] - [DS] Removing required dependency before component is created leaves service registered
    * [FELIX-4171] - [DS] possible DependencyManager NPE during cleanup after failure to activate a component
    * [FELIX-4188] - [DS] If a bundle is stopped while the SCR extender is being stopped, the callback for the STOPPING event returns before full deactivation
    * [FELIX-4189] - [DS] DS should not hold any lock while calling bundleContext#getService
    * [FELIX-4223] - [DS] DependencyManager filter should be set up in enable, not activate, to avoid race conditions
    * [FELIX-4224] - [DS] Dependency manager can be active but not have m_bindMethods set
    * [FELIX-4287] - [DS] NPE when calling ComponentInstance.dispose after bundle shut down
    * [FELIX-4290] - [DS] Issue with factory components with required configuration
    * [FELIX-4293] - [DS] logic error in handling configuration LOCATION_CHANGED event
    * [FELIX-4297] - [DS] timing hole in opening a dependency manager

** Task
    * [FELIX-3584] - [DS] Handle new LOCATION_CHANGED event
    * [FELIX-3651] - [DS] Properly support configuration location binding and targeted pids
    * [FELIX-4298] - [DS] Run tests against R5 config admin and require specifying profile for R4

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

** Sub-task
    * [FELIX-3650] - Don't log a warn message for Configuration Admin LOCATION_CHANGED event

** Bug
    * [FELIX-2578] - Declarative Services bundle does not start without Configuration Admin API wired
    * [FELIX-2821] - Component service references not unbound in reverse order (breaks compendium spec 112.5.15)
    * [FELIX-2823] - Uncaught exception in case of circular service reference
    * [FELIX-2824] - Components that have a ConfigurationPolicy value of REQUIRE fail to activate
    * [FELIX-2926] - No log message on missing activate method
    * [FELIX-2944] - SCR/ spec version 1.1-felix is causing NPE in XmlHandler
    * [FELIX-2962] - SCR doesn't detect invalid XML
    * [FELIX-2992] - scr 1.6.1-SNAPSHOT: impossible to build due to obsolete dependencies
    * [FELIX-3039] - SCR cleans up delayed service components too aggressively
    * [FELIX-3086] - IllegalArgumentException in PropertyMetadata.setValues()
    * [FELIX-3087] - Given invalid value, but the property isn't invalid.
    * [FELIX-3089] - A component without ServicePermissions cannot be registered as a service
    * [FELIX-3090] - SCR factory components ignore reference target filters
    * [FELIX-3093] - SCR project does not build on machines with empty M2 repository
    * [FELIX-3108] - SCR doesn't cope when the DS xml is not encoded using the default platform encoding.
    * [FELIX-3126] - SCR activates a service component while the containing bundle is stopping.
    * [FELIX-3288] - NPE when component exposed as a service with servicefactory = true
    * [FELIX-3307] - NPE in DependencyManager.invokeBindMethod
    * [FELIX-3317] - Concurrency issue during Component Service registration
    * [FELIX-3325] - Finding activate/deactivate/modified methods has numerous problems
    * [FELIX-3409] - with permissions enabled, AbstractComponentManager.verifyDependencyManagers is wrong.
    * [FELIX-3410] - ImmediateComponentManager should use any non-ignored configuration to try to activate a component.
    * [FELIX-3456] - Component ignores required static service addition when in Activating state
    * [FELIX-3533] - Strip out . properties when a lifecycle method returns service properties
    * [FELIX-3534] - ServiceFactory components don't deal with ConfigurationAdmin updates properly
    * [FELIX-3535] - Minor DS cleanup fixes
    * [FELIX-3536] - Consider putting the non-spec ComponentFactory behavior in a separate class
    * [FELIX-3557] - Tests for DS circular dependency behavior
    * [FELIX-3559] - [DS] first register immediate components' service, then create the implementation object per spec
    * [FELIX-3625] - "officially" upgrade scr to ds 1.2 from compendium 4.3
    * [FELIX-3637] - DS bind concurrency problem
    * [FELIX-3639] - SCR "need write lock" assertion error
    * [FELIX-3645] - SCR could not obtain lock in 5000 ms
    * [FELIX-3646] - AbstractComponent.disposeInternal ignores reason
    * [FELIX-3647] - Component modification must continue if modify method throws
    * [FELIX-3648] - A component declared with DS 1.0 or DS 1.1 namespace must fail validation if Reference.updated attribute is declared
    * [FELIX-3649] - Remove ct.workaround property and support
    * [FELIX-3657] - [DS] ServiceFactory problems
    * [FELIX-3658] - [DS] disableing a component that is a dependency of another results in an IllegalStateException
    * [FELIX-3659] - [DS] Share the method objects among all the dependency managers and component managers for the same class
    * [FELIX-3675] - [DS] NPE shutting down a component due to service already removed
    * [FELIX-3676] - [DS] misleading logging on first immediate component getService call
    * [FELIX-3681] - [DS] Dependencies are not dropped when implemention object is discarded
    * [FELIX-3697] - [DS] create all the components in a bundle before enabling them
    * [FELIX-3698] - [DS] code simplification for BundleComponentActivator.getSelectedComponents
    * [FELIX-3704] - [DS] ds shutdown should wait for ComponentActorThread task queue to complete before finishing
    * [FELIX-3710] - [DS] don't try to activate for a service event for an optional reference
    * [FELIX-3717] - [DS] unbind method might not have correct parameters
    * [FELIX-3718] - [DS] deactivate might not move component state to unsatisfied
    * [FELIX-3719] - [DS]  disabling a dependency manager should not reset the service count
    * [FELIX-3723] - ClassCastException on ConfigurationAdmin service creating components 
    * [FELIX-3724] - [DS] concurrent getService calls may return null
    * [FELIX-3725] - [DS] hidden dependency on spring junit wrapper from pax exam
    * [FELIX-3726] - Reference target filters defined as component properties are ignored
    * [FELIX-3727] - [DS] NPE during shutdown
    * [FELIX-3744] - set implementation object before modifying service properties

** Improvement
    * [FELIX-2895] - Allow the use of a property to tell SCR to always discover Service Component files even if there's no wildcard in the name
    * [FELIX-3016] - Activator log level cannot be changed dynamically through Configuration Admin
    * [FELIX-3232] - Re-Import SCR Service API
    * [FELIX-3371] - update scr build to recent pax components
    * [FELIX-3377] - Allow a component to update its own service properties
    * [FELIX-3506] - SCR bind/unbind/update methods should be able to return a map of service properties like the activate/deactivate/modified methods.s
    * [FELIX-3558] - [DS] make it easier to debug tests by cribbing code from ScrService to print out DS state     * [FELIX-3569] - Improve configured method handling for ComponentFactory instances
    * [FELIX-3662] - [DS] use backport-util-concurrenct instead of concurrent for pre java 5 compatibility
    * [FELIX-3677] - [DS] in the scr command info operation, show the bound service references

** New Feature
    * [FELIX-2712] - [SCR] Add Gogo command support
    * [FELIX-3507] - scr greedy and reluctant policy options from compendium 4.3
    * [FELIX-3524] - SCR configuration-pid from compendium 4.3

** Task
    * [FELIX-2539] - Include DEPENDENCIES file in distributables
    * [FELIX-2553] - Reconsider logging/log levels
    * [FELIX-2903] - Inline required KXml classes
    * [FELIX-3158] - Upgrade to Felix parent POM 2.1 and use managed ant plugin version
    * [FELIX-3527] - Add Java API usage check
    * [FELIX-3668] - Revert Rev. 1381440 "restore previous behavior when a bind method cannot be found"
    * [FELIX-3679] - Component names need not be globally unique any more
    * [FELIX-3747] - Cleanup maven project setup

** Wish
    * [FELIX-1747] - Use Remote Resources Plugin to generate the legal files


Changes from 1.4.0 to 1.6.0
---------------------------

** Bug
    * [FELIX-1952] - Factory configured ComponentFactory instances not reconfigured when configuration updated
    * [FELIX-1997] - Actual configuration might not be reflected in the web console
    * [FELIX-2006] - If an Error is thrown instantiated a component, the component remains in the Activating state and cannot be managed any longer
    * [FELIX-2090] - Multiple concurrency issues under heavy "stop/start" load
    * [FELIX-2091] - AbstractComponentManager.getBundle() may throw NullPointerException
    * [FELIX-2213] - NPE when modifying properties of lazy (uninstantiated) service
    * [FELIX-2230] - NPE deactivating service during fw shutdown
    * [FELIX-2231] - Errors with services in Lazy bundles
    * [FELIX-2233] - ConfiguredComponentHolder tracks component enablement but not disablement
    * [FELIX-2288] - Felix SCR API problem/misunderstanding
    * [FELIX-2289] - Unsynchronized access to map of component instances may block the system
    * [FELIX-2325] - SCR says that my component is registered twice
    * [FELIX-2370] - Access to internal data structures for delayed and service factory components not thread safe
    * [FELIX-2399] - Make ScrService lenient against unexpected configuration data types
    * [FELIX-2510] - Configuration not provided to components if Configuration Admin is not active while setting up components
    * [FELIX-2518] - Modified method without arguments not supported
    * [FELIX-2519] - Declarative Services 1.0 descriptors must fail to validate if 1.1 attributes are declared
    * [FELIX-2520] - Bind method selection must not expect the component's bundle to import the service interface type
    * [FELIX-2521] - Method call failures not always handled correctly
    * [FELIX-2523] - Component must be reactivated even if modified method is declared

** Improvement
    * [FELIX-2368] - Activate components synchronously
    * [FELIX-2372] - Improve logging on IllegalStateException getting a service
    * [FELIX-2526] - Add a property to enable workarounds for CT assumptions

** Sub-task
    * [FELIX-2534] - Adapt SCR LICENSE and NOTICE files


Changes from 1.2.0 to 1.4.0
---------------------------

** Bug
    * [FELIX-1841] - SCR invokes bind method twice when dependency service properties are modified
    * [FELIX-1846] - When updated configuration of component without a previously set target filter, NullPointerException is thrown
    * [FELIX-1866] - SCR 1.1 restarts components when service properties are changed, even if "modified" attributed is specified
    * [FELIX-1922] - issue with configuration policy=require and with factory components
    * [FELIX-1923] - SCR project misses explicit Maven Bundle Plugin version
    * [FELIX-1926] - Access to internal maps in the ComponentRegistry must be guarded against concurrency issues
    * [FELIX-1927] - NPE in AbstractComponentManager if no services are provided and a SecurityManager is installed
    * [FELIX-1942] - Component Factory instances are may reactivate
    * [FELIX-1943] - Component Factory not deactivated if required reference unregistered
    * [FELIX-1944] - Reference.getServiceReferences() returns empty array if no services bound

** Improvement
    * [FELIX-1897] - Add proper Configuration Admin support for SCR configuration

** New Feature
    * [FELIX-1893] - Add "update" callback support to inform components of modified service properties

** Task
    * [FELIX-1945] - Increase org.apache.felix.scr package export to 1.4


Changes from 1.0.8 to 1.2.0
---------------------------

** Bug
    * [FELIX-1162] - Component.getReferences returns null if a component that has references is not enabled.
    * [FELIX-1166] - SCR does not rebind ConfigurationAdmin service in Sling jcrinstall tests
    * [FELIX-1173] - Concurrency Issues while containing bundle is stopping
    * [FELIX-1177] - Components must correctly be disposed off
    * [FELIX-1178] - Component may remain deactivated after a reference has been unregistered and registered again
    * [FELIX-1185] - If a static/mandatory reference to a service is unregistered, the component should be deactivated synchronously instead of asynchronously
    * [FELIX-1195] - NullPointerException in ComponentActivatorTask if component is destroyed
    * [FELIX-1238] - NPE when invoking "scr list" with no components registered
    * [FELIX-1252] - NullPointerException in "scr list" command
    * [FELIX-1413] - Newly registered services must not immediately bound for static references
    * [FELIX-1414] - Service ranking is only obeyed on first component activation
    * [FELIX-1416] - Wrong factory configuration behaviour
    * [FELIX-1436] - Descriptors with duplicate implementation and/or service elements are invalid
    * [FELIX-1437] - DS 1.1 signatures for activators and bind methods only available for declaration with new namespace
    * [FELIX-1440] - Abort method (binder, activator) method search on non-accessible suitable methods
    * [FELIX-1445] - When a component is deactivated due to the deactivation of a service to which it staticly 1..1 references, this component is not reactivated when that service is reregistered.
    * [FELIX-1503] - Component Factory instances are not let gone after dispose
    * [FELIX-1504] - ComponentInstance implementation is reused accross reactivations
    * [FELIX-1658] - Deadlocks caused by component activation and deactivation
    * [FELIX-1666] - Missing support for DS 1.1 specified lazy activation behavior
    * [FELIX-1674] - typo in scr and webconsole - "unsatisifed"
    * [FELIX-1714] - typo in scr command
    * [FELIX-1733] - Disposed components are not removed from the component registry
    * [FELIX-1825] - Configurations of delayed components are not deactivated if not used any more
    * [FELIX-1826] - ComponentException must be thrown if ComponentFactory.newInstance cannot create a component instance
    * [FELIX-1827] - Check permission before getting or registering services
    * [FELIX-1830] - Support for DS 1.1 character property type name
    * [FELIX-1832] - ServiceFactory must not be deactivated if the instances fails to be created
    * [FELIX-1833] - Stopping the Felix SCR bundle may leave traces behind thus preventing the class loader from being GC-ed

** Improvement
    * [FELIX-1186] - Defer the construction of a log message
    * [FELIX-1223] - Replace ManagedService[Factory] by ConfigurationListener based component configuration
    * [FELIX-1239] - AbstractComponentManager.getServiceReference need not be synchronized
    * [FELIX-1313] - Declarative Services bundle should not export Configuration Admin package
    * [FELIX-1314] - Restructure SCR implementation package
    * [FELIX-1443] - Unify Method lookup
    * [FELIX-1447] - Remove ComponentMetadata parameter from AbstractComponentManager.log method signature
    * [FELIX-1530] - Extend the SCR introspection API to reflect the new DS 1.1 features
    * [FELIX-1686] - Missing activate or deativate methods show up as Error in LogService
    * [FELIX-1735] - Use system property to provide bundle jar file to integration tests
    * [FELIX-1823] - Drop support for Framework API 1.3 (R4.0)

** New Feature
    * [FELIX-924] - No component instance if no Configuration
    * [FELIX-925] - Extend SCR to allow alternate activate and deactivate method signatures
    * [FELIX-927] - Allow bind and unbind methods to receive the service properties
    * [FELIX-928] - Allow use of wildcards in Service-Component header
    * [FELIX-929] - Making name attributes optional
    * [FELIX-930] - XML schema namespace change
    * [FELIX-1232] - Do not use private configuration properties as service properties
    * [FELIX-1284] - Support for the 'modified' operation (DS in OSGi 4.2 compendium)

** Task
    * [FELIX-1711] - Remove OSGi library source from SVN and depend on official R4.2 libraries


Changes from 1.0.6 to 1.0.8
---------------------------

** Bug
    * [FELIX-714] - Needless component reactivation on startup
    * [FELIX-832] - Bind method not invoked when the unbind method is unspecified after reference is changed
    * [FELIX-836] - Deadlocks caused by Declarative Services
    * [FELIX-861] - NullPointerException on stopping bundle managed by SCR
    * [FELIX-950] - service.ranking property not respected for singular service reference
    * [FELIX-993] - Reference target filters not handled correctly
    * [FELIX-1044] - DependencyManager may miss service registrations
    * [FELIX-1053] - SCR: Bound Service Replacement regression ?

** Improvement
    * [FELIX-639] - Need more logs from SCR
    * [FELIX-717] - Fix License Reference for KXml in NOTICE file
    * [FELIX-923] - Log a better message if the names of components collide
    * [FELIX-1046] - Upgrade parent pom reference to new parent pom (for repository.a.o deployment)


Changes from 1.0.4 to 1.0.6
---------------------------

** Bug
    * [FELIX-694] - NullPointerException on shutdown
    * [FELIX-695] - XML configuration file uses unqualified locals
    * [FELIX-698] - SCR logs "java.lang.IllegalStateException: Invalid BundleContext" when activating components

** Improvement
    * [FELIX-668] - SCR OBR description


Changes from 1.0.2 to 1.0.4
---------------------------

** Bug
    * [FELIX-624] - Wrong classloader is used to detect bind/unbind methods
    * [FELIX-646] - Reconfiguration of factory components is not possible


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

** Bug
    * [FELIX-490] - Deadlocks may be caused by Declarative Services
    * [FELIX-539] - Intermittent IllegalArgumentException while using declarative services   
    * [FELIX-550] - SCR registers service component twice after stopping/starting a bundle
    * [FELIX-578] - ComponentFactoryImpl.newInstance() must create the component synchronously
    * [FELIX-579] - NPE in AbstractComponentManager
    * [FELIX-591] - NPE in AbstractComponentManager
    * [FELIX-593] - Fix handling of immediate attribute of component factories
    * [FELIX-599] - Service Registration Lock: Do not release not-owned lock and don't wait so long for the lock
    * [FELIX-601] - Reactivation of a component after a configuration update should be completely asynchronous


Initial Release 1.0.0
---------------------

** Bug
    * [FELIX-105] - SCR component/reference/cardinality never used
    * [FELIX-106] - SCR doesn't support XML documents with namespaces
    * [FELIX-109] - java.lang.ClassCastException when the component descriptor contains <property> elements
    * [FELIX-112] - activate() calls do not match with deactivate() calls for a delayed component (immediate="false") and service instances are multiple (although there is no factory)
    * [FELIX-264] - Update pom to use new bundle plugin
    * [FELIX-268] - SCR module in the pom.xml
    * [FELIX-279] - Concurrency Issues when enabling components
    * [FELIX-337] - Immediate components are registered as delayed
    * [FELIX-341] - Intermittent exception during Felix shutdown
    * [FELIX-356] - DependencyManager.bind may bind to null and does not correctly check for success
    * [FELIX-357] - activation and deactivation may run concurrently
    * [FELIX-364] - 0..1 dynamic service reference does not bind properly.
    * [FELIX-366] - Bound Service Replacement incorrect
    * [FELIX-368] - Service binding odities if (un)bind methods take ServiceReferences
    * [FELIX-384] - Possible deadlock on framework startlevel change
    * [FELIX-385] - ReferenceMetadata.setTarget includes the interface name in the target filter
    * [FELIX-387] - Fix support for reference service target properties
    * [FELIX-425] - DependencyManager does not correctly handle service counting
    * [FELIX-464] - Cannot retrieve service to be unbound in unbind method taking ServiceReference
    * [FELIX-489] - Intermittent deadlock while using declarative services in Tuscany   

** Improvement
    * [FELIX-128] - Implementing missing ComponentContext methods
    * [FELIX-131] - Fix method lookup and implement enableComponet/disableComponent
    * [FELIX-132] - Integrate SCR with Felix
    * [FELIX-140] - Drop GenericActivator from SCR
    * [FELIX-243] - Add support for ServiceFactory components
    * [FELIX-254] - Add support for property values in <property> element body
    * [FELIX-258] - Support Configuration Admin configuration
    * [FELIX-259] - Add support for factory components
    * [FELIX-277] - Improve SCR packaging to make it simpler to deploy and use
    * [FELIX-373] - Log the unsatisfied dependencies of a component which prevent activation of the component
    * [FELIX-374] - Register ManagedService on behalf of components to receive Configuration
    * [FELIX-392] - Better handle unexpected issues when trying to get a activation or binding method by reflection

** New Feature
    * [FELIX-18] - Implement Declarative Services
    * [FELIX-110] - completion of the current Felix SCR implementation to take into account components <properties> elements
    * [FELIX-284] - Add Management API

** Task
    * [FELIX-144] - Change all headers and remove copyright notices
