Changes in 2.2.12
-----------------
** Bug
    * [FELIX-6699] Skip parsing of repeated Service-Component entries

Changes in 2.2.8
-----------------
** Improvement
    * [FELIX-6463] Changing log levels for DS component getState and registration

** Bug
    * [FELIX-6616] Dynamic greedy 1..1 references may activate with no reference service bound
    * [FELIX-6633] Dynamic references may miss events while causing deactivation
    * [FELIX-6682] Felix SCR - 3 TestCases fail in OSGi TCK

Changes in 2.2.6
-----------------
** Bug
    * [FELIX-6581] - use system context to clean up logger domains

Changes in 2.2.4
-----------------
** Bug
    * [FELIX-6564] Fixed NPE while retrieving component descriptions from SCR

Changes in 2.2.2
-----------------
** Improvement
    * Replace use of PackageAdmin with FrameworkWiring
** Bug
    * [FELIX-6521] Stop exporting org.osgi.service.component packages
    * [FELIX-6511] Cancel the SCR Component Registry's changeCountTimer on deactivation.

Changes in 2.2.0
-----------------
** Improvement
    * Build against final OSGi SCR API artifacts
    * [FELIX-6458] Use ServiceReference.adaptTo(ServiceReferenceDTO)
** Bug
    * [FELIX-6501] Fixed issue with ConcurrentModificationException

Changes in 2.2.0-RC1
-----------------
** Improvement
    * Initial implementation of OSGi R8.  This version has all the fixes up to and including SCR version 2.1.30

Changes in 2.1.28
-----------------
** Bug
    * [FELIX-6407] - SCR Log Extension still logs using the log level of the extended bundle
    * [FELIX-6408] - SCR NPE in MultipleStaticReluctantCustomizer.modifiedService

Changes in 2.1.26
-----------------
** Bug
    * [FELIX-6352] - SCR should protect against unregistered IllegalStateException for its ConfigurationListener registrations
    * [FELIX-6361] - IllegalArgumentException possible from LoggerFactory.getLogger(Bundle, String, Class<L>)
    * [FELIX-6353] - Constructor injection: activation with optional reference fails if service not available
    * [FELIX-6351] - EventDispatcher: Error during dispatch. (java.lang.IllegalStateException: Service already unregistered.)
    * [FELIX-6349] - Possible NullPointerException on modified event in DependencyManager

Changes in 2.1.24
-----------------
** Bug
    * [FELIX-6327] - NoSuchElementException can occur with SingleDynamicCustomizer when services are removed
    * [FELIX-6315] - Factory components are eagerly deactivated
    * [FELIX-6325] - OSGi log package is mandatory but imported as optional

Changes in 2.1.22
-----------------
** Bug
    * [FELIX-6314] - NullPointerException in SingleComponentManager.disposeImplementationObject
    * [FELIX-6108] - SCR activation log-messages cannot be disabled with R7 LogService
    * [FELIX-6274] - Potential Class Space problems with multiple Log Service APIs
    * [FELIX-6317] - dynamic greedy optional/mandatory references can get wrong service ranking
    * [FELIX-6161] - SCR: Method of resolving references limits Service ListenerHook implementations
** Improvement
    * [FELIX-6307] - SCR logging uses null name for logger in LogServiceEnabledLogger.getLogger()
    * [FELIX-6293] - Apache Felix SCR Logging

Changes in 2.1.20
-----------------
** Bug
    * [FELIX-6261] - [Regression] Empty property values are treated as String arrays


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()
    * [FELIX-6251] - Possible NullPointerException when DependencyManager.m_tracker is null
    * [FELIX-6252] - Deadlock in SCR ComponentRegistry updateChangeCount
** Improvement
    * [FELIX-6107] - Logging Passwords when invoking activate Method
    * [FELIX-6215] - Cannot run scr unit tests on Java 11
    * [FELIX-6218] - Replace kxml2 with standard SAX XML parser
    * [FELIX-6220] - Refactor injection implementation
    * [FELIX-6241] - IllegalStateException can be thrown from listener if BundleContext is invalid

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
