/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

                    Apache Karaf 4.0.4
                    ==================

 This is an update patch for Apache Karaf 4.0.x, containing many bug fixes, dependency updates, and improvements. It is recommended that users update their deployment after reviewing the changelog below.

 ChangeLog:
 ----------

** Bug
    * [KARAF-3303] - "keyStoreAvailabilityTimeout" is treated as boolean in JMX configuration
    * [KARAF-3812] - Exception caused by featuresRepositories property being set incorrectly
    * [KARAF-3918] - An installed blueprint.xml has always been updated and restarted when install another unrelated feature
    * [KARAF-3985] - ArrayIndexOutOfBoundsException is thrown after configure http/https and limit access from localhost,127.0.0.1
    * [KARAF-4031] - Unresolved repository inside the feature causes Karaf freezing during startup
    * [KARAF-4083] - Reference to the invalid repository in feature file breaks commands
    * [KARAF-4118] - Command service declaration doesn't work
    * [KARAF-4119] - la outputs results twice
    * [KARAF-4132] - assembly archetype should remove runtime scope to the standard features XML
    * [KARAF-4134] - karaf-maven-plugin mixes up prerequisities
    * [KARAF-4138] - wrapper:install doesn't work on Windows due to path issues in karaf.home and karaf.data
    * [KARAF-4139] - Bundles with activation policy lazy remain in status starting when run with equinox
    * [KARAF-4142] - Allow for relative URLs from a Cave repository
    * [KARAF-4145] - KAR is created with defect maven metadata
    * [KARAF-4150] - bin/status fails if KARAF_DEBUG is set
    * [KARAF-4152] - Resolution of relative URLs from OBR repositories not working when there are multiple URLs
    * [KARAF-4155] - Fall to feature start-level
    * [KARAF-4159] - FeatureResolver: Wrong dependencies installed
    * [KARAF-4169] - Blueprint creates unnecessary prototype bean instances
    * [KARAF-4184] - ArgumentCompleter has incorrect check for enum type
    * [KARAF-4218] - JAAS boot classes are not marked serializable
    * [KARAF-4226] - Web Console is missing package exports for bundleinfo and i18n
    * [KARAF-4241] - Karaf clean doesn't work if KARAF_DATA and KARAF_BASE point to same dir
    * [KARAF-4246] - sshd 0.14.0 breaks client timeout
    * [KARAF-4247] - Issues with LDAP caching
    * [KARAF-4252] - scr feature doesn't install the WebConsole DS plugin
    * [KARAF-4254] - NPE when building karaf-assembly target with installAllFeaturesByDefault=false

** Dependency upgrade
    * [KARAF-4117] - Upgrade to Pax Web 4.2.4
    * [KARAF-4126] - Upgrade Cglib bundle to version 3.1_1
    * [KARAF-4135] - Upgrade commons-collections to version 3.2.2
    * [KARAF-4136] - Upgrade Maven-bundle-plugin to version 3.0.1
    * [KARAF-4149] - Upgrade to Derby 10.12.1.1
    * [KARAF-4151] - Upgrade Felix Coordinator to version 1.0.2
    * [KARAF-4168] - Upgrade to Pax Exam 4.7.0
    * [KARAF-4182] - Upgrade to Spring 4.2.3.RELEASE
    * [KARAF-4185] - Upgrade Pax-url to version 2.4.4
    * [KARAF-4196] - Upgrade Cglib to version 3.2.0
    * [KARAF-4197] - Upgrade to blueprint.core-1.5.0, jpa-2.3.0, transaction.blueprint-2.1.0
    * [KARAF-4220] - Upgrade to eclipselink 2.6.1
    * [KARAF-4227] - Upgrade to Pax-exam 4.8.0
    * [KARAF-4228] - Upgrade to Aries Subsystem 2.0.8
    * [KARAF-4230] - Upgrade to Aries Blueprint Core 1.5.0
    * [KARAF-4233] - Upgrade to Aries JPA Container 1.0.3
    * [KARAF-4238] - Upgrade to Pax URL 2.4.5
    * [KARAF-4239] - Upgrade to Pax-Logging 1.8.5

** Documentation
    * [KARAF-3679] - Change current documentation from Scalate to Asciidoc

** Improvement
    * [KARAF-2966] - scr:details - Sort the properties so its easier for humans to read
    * [KARAF-3100] - Add Option To Create Config Files For Feature Configs Instead Of Importing Directly Into Config Admin
    * [KARAF-3278] - Display warning message when trying to install an already installed bundle
    * [KARAF-3390] - Karaf client should allow passing arguments to command
    * [KARAF-3880] - Provide a standard feature just wrapping all boot features from the standard distribution
    * [KARAF-3982] - Be able to change standard files during distribution assembly
    * [KARAF-4082] - .kar file generated by karaf-maven-plugin does not contain all jars (no offline support)
    * [KARAF-4102] - It should be possible to change the primary feature name to be other than the artifact id
    * [KARAF-4130] - Use OSGi Resource repositories in features XML
    * [KARAF-4166] - Add karaf.lock.slave.block property to prevent a slave instance to start
    * [KARAF-4193] - Add option to dev:dump-create command (and MBean) to exclude heap and thread dumps
    * [KARAF-4198] - Support m2e incremental build in karaf-services-plugin
    * [KARAF-4242] - Add apache artemis to repo-add shorthand list
    * [KARAF-4243] - Add apache ignite to feature repo:add shorthand

** New Feature
    * [KARAF-222] - Provide karaf:run, karaf:deploy, karaf:client Maven goals
    * [KARAF-545] - Config file creation and update from features descriptor
    * [KARAF-3259] - Add support for executing of OSGi commands with karaf-maven-plugin
    * [KARAF-4240] - Provide Asciidoc command help printer

** Task
    * [KARAF-4127] - Missing license in Karaf-maven-plugin test-rename-main-feature file 

** Wish
    * [KARAF-2963] - osgi:headers - Add option to not display uses:= in exported headers as its too verbose and useless information
    * [KARAF-4146] - Add option to show only package name in Package:imports and package:exports commands 

                    Apache Karaf 4.0.3
                    ==================

 This is an update patch for Apache Karaf 4.0.x, containing many bug fixes, dependency updates, and improvements. It is recommended that users update their deployment after reviewing the changelog below.

 ChangeLog:
 ----------

** Bug
    * [KARAF-3443] - Deployed KAR files may be installed in the wrong order.
    * [KARAF-3812] - Exception caused by featuresRepositories property being set incorrectly
    * [KARAF-3879] - jdbc feature should installs pax-jdbc feature
    * [KARAF-3961] - Reference to generated featuresRepositories is invalid on Windows
    * [KARAF-3972] - can't genrate feature with prerequisite using karaf-maven-plugin
    * [KARAF-3974] - SSH :: impossible to connect through SSH after reboot clean
    * [KARAF-3994] - karaf-maven-plugin is ignoring the feature version and installing all available versions of given feature in the repository.  
    * [KARAF-4003] - Karaf jenkins build fails at apache-karaf-minimal as it can not find framework kar
    * [KARAF-4011] - karaf-maven-plugin:features-add-to-repository NPE with blueprint:file: URL
    * [KARAF-4024] - role.policy "group" ceased to function
    * [KARAF-4026] - Karaf wrapper:install produces a SPARC32 binary on Solaris x86_64
    * [KARAF-4029] - Karaf maven plugin assembly goal requires project artifact to be installed first
    * [KARAF-4058] - ssh:sshd command isn't available
    * [KARAF-4062] - Karaf client does now work after installing BouncyCastle
    * [KARAF-4065] - Standard distribution doesn't ship the ACL files in the etc folder
    * [KARAF-4066] - Features command bundle should recover if FeatureService unavailable initially
    * [KARAF-4068] - Memory leak in SessionFactoryImpl class
    * [KARAF-4069] - ConsoleSessionImpl does not close the session in function close()
    * [KARAF-4070] - Unable to install deployed features for bundle
    * [KARAF-4076] - Support Windows 10 for Bundle-NativeCode
    * [KARAF-4079] - Karaf maven plugin doesn't support overriding configuration files
    * [KARAF-4080] - Karaf 3.0.5 demo POMs contain a few invalid path references
    * [KARAF-4081] - Karaf-Command 'diag' does not provide full information for Spring-DM bundles
    * [KARAF-4086] - NPE in karaf-maven-plugin features-export-meta-data when there is no Manifest

** Dependency upgrade
    * [KARAF-4077] - Update to blueprint core 1.4.5
    * [KARAF-4085] - Upgrade to Felix Framework 5.4.0
    * [KARAF-4087] - Upgrade to Aries Subsystem 2.0.4
    * [KARAF-4088] - Upgrade to Felix Resolver 1.8.0
    * [KARAF-4089] - Upgrade to Felix WebConsole 4.2.14
    * [KARAF-4090] - Upgrade to Aries Subsystem 2.0.6
    * [KARAF-4096] - Upgrade Jolokia to version 1.3.2
    * [KARAF-4097] - Upgrade to Spring 4.2.2.RELEASE
    * [KARAF-4098] - Upgrade to Pax Web 4.2.3

** Documentation
    * [KARAF-3923] - Karaf opens RMI port even when not using the management feature

                    Apache Karaf 4.0.2
                    ==================

 This is an update patch for Apache Karaf 4.0.x, containing many bug fixes, dependency updates, and improvements. It is recommended that users update their deployment after reviewing the changelog below.

 ChangeLog:
 ----------

** Bug
    * [KARAF-1159] - Region support should be part of karaf-features-1.1.0.xsd
    * [KARAF-3638] - karaf-maven-plugin:features-add-to-repository fails with NPE
    * [KARAF-3885] - Memory leak when use interactive client shell
    * [KARAF-3893] - Unable to start offline container
    * [KARAF-3945] - Don't try and set permgen settings in Java 8
    * [KARAF-3946] - LDAP role mapping too sensitive to extra whitespace
    * [KARAF-3956] - should also add xalan into the endorse folder of distributions
    * [KARAF-3964] - cygpath call in "start" to convert CLASSPATH should first verify it's set
    * [KARAF-3965] - Calling Ctrl+D in Karaf console, when karaf asks if it is necessary to dispay all console commands, causes console not responding forever
    * [KARAF-3968] - The assembly mojo does not respect --offline
    * [KARAF-3969] - assembly goal has no way to set javase version
    * [KARAF-3971] - log:tail and pressing Ctrl-D freezes karaf shell console
    * [KARAF-3975] - Wrong start-level for eclipselink adapter in eclipselink feature
    * [KARAF-3996] - bin/karaf does not set ulimit if MAX_FD_LIMIT="unlimited"
    * [KARAF-3998] - org.apache.felix.coordinator missing in transaction 1.3.0 feature
    * [KARAF-3999] - transaction feature is missing coordinator bundle
    * [KARAF-4002] - Karaf build on jenkins always fail at karaf-maven-plugin
    * [KARAF-4005] - Different locations for KARAF_HOME and KARAF_BASE
    * [KARAF-4006] - karaf-maven-plugin does not seem to use the local repository
    * [KARAF-4012] - On MacOSX, java_home check should be on 1.8
    * [KARAF-4015] - Verification of the deployer feature fails
    * [KARAF-4020] - karaf-maven-plugin:archive doesn't respect an empty prefixPath
    * [KARAF-4022] - avoid the generated bundle file name too long in startup.properties
    * [KARAF-4028] - karaf-wrapper-main.jar generated by wrapper is corrupted
    * [KARAF-4030] - Doclint for Javadoc fails on JDK 8
    * [KARAF-4032] - Karaf maven plugin assembly goal does not use repositories declared in pom.xml
    * [KARAF-4055] - karaf-maven-plugin: feature XML with a @ character

** Dependency upgrade
    * [KARAF-3943] - Upgrade to Aries Util 1.1.1
    * [KARAF-3947] - Upgrade to Aries Blueprint Core 1.4.4 & Aries Blueprint CM 1.0.7
    * [KARAF-3948] - Upgrade to commons-compress 1.10
    * [KARAF-4009] - Upgrade to Pax URL 2.4.3
    * [KARAF-4019] - Upgrade jpa feature to 2.2.0
    * [KARAF-4023] - Upgrade to Pax Logging 1.8.4
    * [KARAF-4025] - Update scr to 2.0.0
    * [KARAF-4033] - Upgrade to Aries JMX 1.1.5
    * [KARAF-4034] - Upgrade to Aries JPA 2.2.0
    * [KARAF-4035] - Upgrade to Aries Subsystem 2.0.2
    * [KARAF-4036] - Upgrade to Aries Transaction Blueprint 2.0.0
    * [KARAF-4037] - Upgrade to maven-bundle-plugin 3.0.0
    * [KARAF-4038] - Upgrade to Felix BundleRepository 2.0.6
    * [KARAF-4039] - Upgrade to Felix ConfigAdmin 1.8.8
    * [KARAF-4040] - Upgrade to Felix EventAdmin 1.4.4
    * [KARAF-4041] - Upgrade to Felix Framework/Main 5.2.0
    * [KARAF-4042] - Upgrade to Felix Metatype 1.1.2
    * [KARAF-4043] - Upgrade to Felix Resolver 1.6.0
    * [KARAF-4044] - Upgrade to Felix SCR 2.0.2
    * [KARAF-4045] - Upgrade to Felix WebConsole 4.2.12
    * [KARAF-4046] - Upgrade to Felix WebConsole Plugins DS 2.0.2
    * [KARAF-4047] - Upgrade to Felix WebConsole Plugins Event 1.1.4
    * [KARAF-4049] - Upgrade to Easymock 3.4
    * [KARAF-4050] - Upgrade to Pax Exam 4.6.0
    * [KARAF-4051] - Upgrade to Pax Web 4.2.2
    * [KARAF-4052] - Upgrade to Pax Tinybundles 2.1.1
    * [KARAF-4053] - Upgrade to ASM 5.0.4

** Documentation
    * [KARAF-3936] - Stray TODO in production docs
    * [KARAF-3990] - Missing documentation for debugging environment variables

** Improvement
    * [KARAF-3262] - Being able to use ${karaf.etc} in feature <configfile/> element
    * [KARAF-3858] - Add systemd support in the wrapper
    * [KARAF-3882] - karaf should permit alternative host key formats
    * [KARAF-3954] - Convey terminal size changes through SSH
    * [KARAF-3962] - Client can't use properties defined in custom.properties
    * [KARAF-3963] - Some slight improvements to the doc for the feature generation mojo.
    * [KARAF-3978] - enable specify different shell.init.script env for remote shell in "exec" and "shell" mode
    * [KARAF-4007] - Use official spec bundle for jdbc
    * [KARAF-4010] - Add feature repo for eclipsesource jaxrs
    * [KARAF-4018] - Add transaction.blueprint 2.0.0 to transaction feature

** New Feature
    * [KARAF-3950] - Add feature:export-bundles command

                    Apache Karaf 4.0.1
                    ==================

 This is an update patch for Apache Karaf 4.0.x, containing many bug fixes, dependency updates, and improvements. New feature highlights include: Providing Spring 4.2.0.RELEASE, OpenJPA 2.4.0, and JTA 1.2 features. Important dependency upgrades include: Spring 4.1.7.RELEASE, Spring 3.2.14.RELEASE, transaction.blueprint 1.1.1, and Pax-Web 4.2.0. It is recommended that users update their deployment after reviewing the changelog below.

 ChangeLog:
 ----------

** Bug
    * [KARAF-969] - Feature installer should not accept different features with equal names
    * [KARAF-3362] - Version for Jetty in standard features is wrong.
    * [KARAF-3758] - Uninstalling activemq-blueprint may cause the shell to be refreshed
    * [KARAF-3805] - Distribution contains absolute path instead of mvn URL
    * [KARAF-3811] - Exception thrown when including the feature "feature" in Maven karaf:assembly goal
    * [KARAF-3813] - InvalidPathException thrown on karaf:assembly Maven goal
    * [KARAF-3819] - bundle:list command is not able to be executed from client script
    * [KARAF-3821] - dev:dump-create doesn't include feature.txt anymore
    * [KARAF-3830] - karaf-services-maven-plugin ignores certain files
    * [KARAF-3833] - Project org.apache.karaf.jpa:hibernate does not have name set in pom.xml
    * [KARAF-3837] - The installation of the activemq feature is not stable wrt to the resolver
    * [KARAF-3843] - Get rid of blueprint dependency in the web console
    * [KARAF-3846] - Version number not correct for the subsystems feature
    * [KARAF-3850] - Better support for extension fragments
    * [KARAF-3886] - should escape specify characters in ROLE names
    * [KARAF-3888] - Karaf refreshes a lot of unrelated bundles during feature installation
    * [KARAF-3894] - Still class cast exception for LazyLocalResourceImpl => LocalResourceImpl
    * [KARAF-3896] - KAR Deployer not using karaf.data property, hardcoded to "data"
    * [KARAF-3899] - PID file for child instances not getting written when dir has spaces
    * [KARAF-3906] - NPE when doing log:clear and log:display and log full=true
    * [KARAF-3908] - shell:new does not work for most classes
    * [KARAF-3910] - Client.sh references nonexistant mina-core jar
    * [KARAF-3911] - bin/client and ssh doesn't work in interactive mode (can't type only one character)
    * [KARAF-3917] - bundle:list does not work from gogo webconsole.
    * [KARAF-3926] - Several transaction manager versions are installed
    * [KARAF-3929] - Syncope LoginModule throws a StringIndexOutOfBoundsException if the user has no roles
    * [KARAF-3930] - When starting the gogo shell in the webconsole the user is not fully authenticated
    * [KARAF-3931] - Typed characters in webconsole do not show

** Dependency upgrade
    * [KARAF-3914] - Upgrade to Spring 4.1.7.RELEASE
    * [KARAF-3915] - Upgrade to Spring 3.2.14.RELEASE
    * [KARAF-3924] - Upgrade to transaction.blueprint 1.1.1
    * [KARAF-3932] - Upgrade to Pax-Web 4.2.0

** Improvement
    * [KARAF-2862] - Reenable pax-cdi integration tests
    * [KARAF-3823] - introduce karaf.secured.command.compulsory.roles system property
    * [KARAF-3860] - fix [KARAF-3373] Log lower level root cause exception in LDAPLoginModule.doLogin()
    * [KARAF-3891] - Add JTA 1.2 features
    * [KARAF-3912] - Make default client log level configurable
    * [KARAF-3919] - Upgrade to JPA 2.1.0
    * [KARAF-3934] - Update Apache Directory + make use of random port generation

** New Feature
    * [KARAF-3913] - Provide Spring 4.2.0.RELEASE feature
    * [KARAF-3920] - Provide OpenJPA 2.4.0 feature
    * [KARAF-3927] - karaf-maven-plugin:assembly goal should chmod bin shell scripts a+x
    * [KARAF-3928] - karaf-maven-plugin:archive goal should support a pathPrefix config setting to control the prefix added to each entry in the archives that are produced.

                    Apache Karaf 4.0.0
                    ==================

 Apache Karaf 4.0.0 is the first production ready version of the new 4.0.0 branch.
 It's a major step forward, including a complete new features resolver, a large set of new features, improvements, and bug fixes.

 For more information, please see the below changelog:

 ChangeLog:
 ----------

** Bug
    * [KARAF-3181|https://issues.apache.org/jira/browse/KARAF-3181] - framework-security feature doesn't install
    * [KARAF-3236|https://issues.apache.org/jira/browse/KARAF-3236] - Unable to use character @ in Karaf console
    * [KARAF-3520|https://issues.apache.org/jira/browse/KARAF-3520] - FeatureService fails to install feature in case of missing capability
    * [KARAF-3648|https://issues.apache.org/jira/browse/KARAF-3648] - should zero out instance pid in instance.properties when we shutdown an instance from shell
    * [KARAF-3663|https://issues.apache.org/jira/browse/KARAF-3663] - Unable to deploy KAR
    * [KARAF-3669|https://issues.apache.org/jira/browse/KARAF-3669] - Missing files in standard distribution
    * [KARAF-3711|https://issues.apache.org/jira/browse/KARAF-3711] - LDAP login module doesn't handle case where CN, OU, DC case doesn't match
    * [KARAF-3740|https://issues.apache.org/jira/browse/KARAF-3740] - NPE on container startup
    * [KARAF-3757|https://issues.apache.org/jira/browse/KARAF-3757] - Unable to resolve org.apache.activemq.activemq-blueprint while installing feature activemq-blueprint
    * [KARAF-3764|https://issues.apache.org/jira/browse/KARAF-3764] - Features Service Refresh
    * [KARAF-3765|https://issues.apache.org/jira/browse/KARAF-3765] - Eventadmin logs warnings about wrong values
    * [KARAF-3767|https://issues.apache.org/jira/browse/KARAF-3767] - Generic JDBC datasource should use 1 instead of WHEN_EXHAUSTED_BLOCK
    * [KARAF-3768|https://issues.apache.org/jira/browse/KARAF-3768] - Unable to start child instance
    * [KARAF-3769|https://issues.apache.org/jira/browse/KARAF-3769] - NPE in resolver when installing CXF and ActiveMQ
    * [KARAF-3783|https://issues.apache.org/jira/browse/KARAF-3783] - NPE in karaf-maven-plugin features-export-meta-data
    * [KARAF-3784|https://issues.apache.org/jira/browse/KARAF-3784] - Kar hotdeployment doesn't work
    * [KARAF-3791|https://issues.apache.org/jira/browse/KARAF-3791] - Unable to connect to an instance with instance:connect command
    * [KARAF-3793|https://issues.apache.org/jira/browse/KARAF-3793] - WebConsole installs but it's not actually available

** Dependency upgrade
    * [KARAF-3561|https://issues.apache.org/jira/browse/KARAF-3561] - Upgrade to slf4j 1.7.12
    * [KARAF-3707|https://issues.apache.org/jira/browse/KARAF-3707] - Upgrade to Felix Framework 5.0.1/Resolver 1.4.0
    * [KARAF-3792|https://issues.apache.org/jira/browse/KARAF-3792] - Upgrade to Pax Web 4.1.3
    * [KARAF-3794|https://issues.apache.org/jira/browse/KARAF-3794] - Upgrade to equinox 3.10.2.v20150203-1939
    * [KARAF-3801|https://issues.apache.org/jira/browse/KARAF-3801] - Upgrade to Pax Web 4.1.4

** Improvement
    * [KARAF-1113|https://issues.apache.org/jira/browse/KARAF-1113] - Add a web:launch command
    * [KARAF-3790|https://issues.apache.org/jira/browse/KARAF-3790] - Add comment with karaf.lock.dir property in etc/system.properties
    * [KARAF-3796|https://issues.apache.org/jira/browse/KARAF-3796] - Provide aries jpa 2.0.0 and use feature for persistence-api
    * [KARAF-3799|https://issues.apache.org/jira/browse/KARAF-3799] - Add eclipselink feature
    * [KARAF-3802|https://issues.apache.org/jira/browse/KARAF-3802] - Disabling service requirements check for "old style" features

** New Feature
    * [KARAF-3759|https://issues.apache.org/jira/browse/KARAF-3759] - Provide tooling to store a resolution attempt that failed so that it can be replayed offline for analysis


                    Apache Karaf 4.0.0.M3
                    =====================

  !! This is a technology preview release of Apache Karaf, and should NOT be considered production ready !!

  Apache Karaf 4.0.0.M3 represents a major refactoring of the project, and includes numerous new features. We ask that users provide the community with their feed back so that the full Apache Karaf 4.0.0 release can be as feature complete and stable as possible.

  For more information, please see the below changelog:

 ChangeLog:
 ----------

**Bug
 * [KARAF-132|https://issues.apache.org/jira/browse/KARAF-132] - The user name for the main console session is always "karaf"
 * [KARAF-482|https://issues.apache.org/jira/browse/KARAF-482] - Maven 3 archetypes itests issue
 * [KARAF-609|https://issues.apache.org/jira/browse/KARAF-609] - Karaf features core bundle gets stack to creating state if there is no access to the default maven repositories
 * [KARAF-677|https://issues.apache.org/jira/browse/KARAF-677] - Karaf is missing osgi/minimum from the ee defined in config.properties
 * [KARAF-1074|https://issues.apache.org/jira/browse/KARAF-1074] - features-maven-plugin collects wrong artifacts
 * [KARAF-1137|https://issues.apache.org/jira/browse/KARAF-1137] - Corrupted output for bundle:info command in 3.0.0-SNAPSHOT
 * [KARAF-1146|https://issues.apache.org/jira/browse/KARAF-1146] - features-maven-plugin collects wrong artifacts
 * [KARAF-1246|https://issues.apache.org/jira/browse/KARAF-1246] - add a version checker for karaf start script
 * [KARAF-1350|https://issues.apache.org/jira/browse/KARAF-1350] - features-maven-plugin cannot resolve a feature without an explicit descriptor
 * [KARAF-1432|https://issues.apache.org/jira/browse/KARAF-1432] - karaf:features-validate-descriptor parses system packages incorrectly
 * [KARAF-1532|https://issues.apache.org/jira/browse/KARAF-1532] - packing with karaf-assembly error
 * [KARAF-1545|https://issues.apache.org/jira/browse/KARAF-1545] - Jar files in lib directory require "karaf-" prefix in order to be loaded
 * [KARAF-1553|https://issues.apache.org/jira/browse/KARAF-1553] - Command service references should be AUTO_EXPORT_INTERFACES
 * [KARAF-1560|https://issues.apache.org/jira/browse/KARAF-1560] - config:update throws ClassCastException when used on a Configuration with boolean fields created in the web console
 * [KARAF-1561|https://issues.apache.org/jira/browse/KARAF-1561] - Restart Framework from Web Console's System Information tab results in Karaf dying
 * [KARAF-1584|https://issues.apache.org/jira/browse/KARAF-1584] - karaf-maven-plugin ignores provided scope on dependency
 * [KARAF-1627|https://issues.apache.org/jira/browse/KARAF-1627] - Remove sshd command and instead make sshd react directly to config changes
 * [KARAF-1701|https://issues.apache.org/jira/browse/KARAF-1701] - Parsing of config for a field with cardinality > 1 is incorrectlyprocessed and displayed on Admin Console
 * [KARAF-1729|https://issues.apache.org/jira/browse/KARAF-1729] - Cannot uninstall bundle, bundle xx is invalid
 * [KARAF-1823|https://issues.apache.org/jira/browse/KARAF-1823] - Memory leak on windows in SSHD ServerSession
 * [KARAF-2095|https://issues.apache.org/jira/browse/KARAF-2095] - Camel Route (JMS Polling) not working when installing feature "jndi"
 * [KARAF-2110|https://issues.apache.org/jira/browse/KARAF-2110] - karaf-maven-plugin fails to use features with bundles with "wrap" keyword
 * [KARAF-2153|https://issues.apache.org/jira/browse/KARAF-2153] - wrong path in JAVA_ENDORSED_DIRS and JAVA_EXT_DIRS in bin/karaf script from snapshots
 * [KARAF-2173|https://issues.apache.org/jira/browse/KARAF-2173] - karaf-maven-plugin ci-build-profile failures
 * [KARAF-2260|https://issues.apache.org/jira/browse/KARAF-2260] - Overloaded put methord with List<String> comment parameter in InstallKarMojo$CommentProperties
 * [KARAF-2269|https://issues.apache.org/jira/browse/KARAF-2269] - Servicemix Specs Activator/OsgiLocator Broken due to KARAF-2136
 * [KARAF-2295|https://issues.apache.org/jira/browse/KARAF-2295] - features deployer is useless for dynamic updates
 * [KARAF-2315|https://issues.apache.org/jira/browse/KARAF-2315] - The check for jvm.dll happens to early in the bat file
 * [KARAF-2390|https://issues.apache.org/jira/browse/KARAF-2390] - Fix namespace handlers provided service header
 * [KARAF-2395|https://issues.apache.org/jira/browse/KARAF-2395] - karaf:features-generate-descriptor fails with Maven 3.1.0 : No implementation for org.sonatype.aether.RepositorySystem was bound
 * [KARAF-2420|https://issues.apache.org/jira/browse/KARAF-2420] - blueprint deployer: redeploy untouched blueprint xml in deploy folder after restart
 * [KARAF-2456|https://issues.apache.org/jira/browse/KARAF-2456] - Shutdown is stuck after wrapper:install
 * [KARAF-2467|https://issues.apache.org/jira/browse/KARAF-2467] - Regression on KARAF-2037
 * [KARAF-2481|https://issues.apache.org/jira/browse/KARAF-2481] - LogService WebConsole view doesn't work with Equinox
 * [KARAF-2506|https://issues.apache.org/jira/browse/KARAF-2506] - MBeans attributes are "unavailable"
 * [KARAF-2519|https://issues.apache.org/jira/browse/KARAF-2519] - karaf-maven-plugin ignores dependent feature repositories when building an assembly
 * [KARAF-2562|https://issues.apache.org/jira/browse/KARAF-2562] - When running karaf under Java 1.8, once the console comes up to the shell, any command cause a NullPointException
 * [KARAF-2563|https://issues.apache.org/jira/browse/KARAF-2563] - Compilation fails with JDK 8 ea
 * [KARAF-2596|https://issues.apache.org/jira/browse/KARAF-2596] - install-kars goal of the karaf-maven-plugin ignores bundles listed in the features that have the "dependency" property set to "true"
 * [KARAF-2600|https://issues.apache.org/jira/browse/KARAF-2600] - Failed to get the session when running client.bat to connect karaf instance
 * [KARAF-2602|https://issues.apache.org/jira/browse/KARAF-2602] - Support Java 8
 * [KARAF-2656|https://issues.apache.org/jira/browse/KARAF-2656] - Config service doesn't create a file in etc if it doesn't exist
 * [KARAF-2674|https://issues.apache.org/jira/browse/KARAF-2674] - Provide Spring 4.0.2.RELEASE_1 feature
 * [KARAF-2678|https://issues.apache.org/jira/browse/KARAF-2678] - txlog files locked during admin clone on windows
 * [KARAF-2725|https://issues.apache.org/jira/browse/KARAF-2725] - jpa feature should install org.osgi.enterprise 5.0.0 bundle
 * [KARAF-2726|https://issues.apache.org/jira/browse/KARAF-2726] - Openjpa feature installs wrong jpa spec bundle
 * [KARAF-2728|https://issues.apache.org/jira/browse/KARAF-2728] - feature:install fails with ArrayIndexOutOfBoundsException 
 * [KARAF-2732|https://issues.apache.org/jira/browse/KARAF-2732] - Karaf doesn't start without internet connection
 * [KARAF-2743|https://issues.apache.org/jira/browse/KARAF-2743] - karaf-maven-plugin can not create custom Karaf with Apache Camel
 * [KARAF-2750|https://issues.apache.org/jira/browse/KARAF-2750] - karaf-maven-plugin install-kar doesn't include config file in the system folder
 * [KARAF-2755|https://issues.apache.org/jira/browse/KARAF-2755] - Encrypt password mechanism pollutes the group
 * [KARAF-2758|https://issues.apache.org/jira/browse/KARAF-2758] - Karaf stops when updating the shell console bundle
 * [KARAF-2759|https://issues.apache.org/jira/browse/KARAF-2759] - Error in Client parameter parsing
 * [KARAF-2773|https://issues.apache.org/jira/browse/KARAF-2773] - Refreshing the console bundle closes karaf
 * [KARAF-2774|https://issues.apache.org/jira/browse/KARAF-2774] - Watched bundles are restarted twice
 * [KARAF-2775|https://issues.apache.org/jira/browse/KARAF-2775] - webconsole gogo plugin does not work:  Exception in thread "Karaf Console Web user karaf" java.lang.SecurityException: Current user has no associated roles.
 * [KARAF-2776|https://issues.apache.org/jira/browse/KARAF-2776] - Startup bundles are installed our of order
 * [KARAF-2777|https://issues.apache.org/jira/browse/KARAF-2777] - Substitution is scattered in various place and the code has bugs
 * [KARAF-2778|https://issues.apache.org/jira/browse/KARAF-2778] - The bin/shell script is broken
 * [KARAF-2779|https://issues.apache.org/jira/browse/KARAF-2779] - wrapper feature can't be installed
 * [KARAF-2781|https://issues.apache.org/jira/browse/KARAF-2781] - Enable rat profile by default
 * [KARAF-2785|https://issues.apache.org/jira/browse/KARAF-2785] - First line of sorted input not printed in sort command
 * [KARAF-2786|https://issues.apache.org/jira/browse/KARAF-2786] - Comment the default key and document how to change/enable it
 * [KARAF-2787|https://issues.apache.org/jira/browse/KARAF-2787] - Add a way to specify the client key
 * [KARAF-2790|https://issues.apache.org/jira/browse/KARAF-2790] - Bundle commands wrongly default to select all bundles
 * [KARAF-2793|https://issues.apache.org/jira/browse/KARAF-2793] - Remove tight coupling from bundle/core and kar/core to pax-url-aether
 * [KARAF-2794|https://issues.apache.org/jira/browse/KARAF-2794] - Remove gogo-runtime and jansi bundles
 * [KARAF-2797|https://issues.apache.org/jira/browse/KARAF-2797] - Allow FeaturesService to specify options during feature uninstallation
 * [KARAF-2798|https://issues.apache.org/jira/browse/KARAF-2798] - jdbc:create -i -t HSQL installs wrong db-engine
 * [KARAF-2800|https://issues.apache.org/jira/browse/KARAF-2800] - karaf-maven-plugin only supports mvn URL
 * [KARAF-2804|https://issues.apache.org/jira/browse/KARAF-2804] - Karaf Maven Plugin throws errors when trying to install pax-web-features with compile scope
 * [KARAF-2806|https://issues.apache.org/jira/browse/KARAF-2806] - The bundle:watch commands fails when updating o.a.k.bundle.core bundle
 * [KARAF-2807|https://issues.apache.org/jira/browse/KARAF-2807] - Unable to have multiple subshells in one bundle
 * [KARAF-2819|https://issues.apache.org/jira/browse/KARAF-2819] - datasource-xxx.xml contains wrong password after jdbc:create
 * [KARAF-2820|https://issues.apache.org/jira/browse/KARAF-2820] - features-maven-plugin:add-features-to-repo adds wrong transitive feature version
 * [KARAF-2821|https://issues.apache.org/jira/browse/KARAF-2821] - features-maven-plugin:add-features-to-repo is broken in 2.3.5-SNAPSHOT
 * [KARAF-2822|https://issues.apache.org/jira/browse/KARAF-2822] - org.apache.karaf.jaas.modules.jdbc.JDBCUtils.OSGI contains "bundles:" not "osgi:" as required by the OSGi JNDI spec"
 * [KARAF-2828|https://issues.apache.org/jira/browse/KARAF-2828] - Reintroduce system as a default repository
 * [KARAF-2830|https://issues.apache.org/jira/browse/KARAF-2830] - Karaf scripts java version check should be more "flexible"
 * [KARAF-2837|https://issues.apache.org/jira/browse/KARAF-2837] - The config.properties in features-maven-plugin is out-of-data.
 * [KARAF-2838|https://issues.apache.org/jira/browse/KARAF-2838] - features-maven-plugin:add-features-to-repo can't compare SNAPSHOT versions in 2.3.5-SNAPSHOT
 * [KARAF-2839|https://issues.apache.org/jira/browse/KARAF-2839] - Conditional features are not verified correctly after installing / uninstalling a feature
 * [KARAF-2840|https://issues.apache.org/jira/browse/KARAF-2840] - Creating child container using admin service should use KARAF_OPTS
 * [KARAF-2846|https://issues.apache.org/jira/browse/KARAF-2846] - Gogo webconsole plugin is broken
 * [KARAF-2847|https://issues.apache.org/jira/browse/KARAF-2847] - Connect connect to the root instance
 * [KARAF-2849|https://issues.apache.org/jira/browse/KARAF-2849] - MBeanServer unregistration is not correctly handled
 * [KARAF-2850|https://issues.apache.org/jira/browse/KARAF-2850] - The karaf-maven-plugin and boot features service should be more resilient with the bootFeatures list.
 * [KARAF-2851|https://issues.apache.org/jira/browse/KARAF-2851] - The FeaturesService can sometime loose the repository list
 * [KARAF-2856|https://issues.apache.org/jira/browse/KARAF-2856] - Assembly archetype itest fails
 * [KARAF-2863|https://issues.apache.org/jira/browse/KARAF-2863] - Spring features are not correct
 * [KARAF-2864|https://issues.apache.org/jira/browse/KARAF-2864] - The internal logger for the felix framework is not configured
 * [KARAF-2878|https://issues.apache.org/jira/browse/KARAF-2878] - The thread reading the system input stream should exit automatically when the console bundle stops
 * [KARAF-2880|https://issues.apache.org/jira/browse/KARAF-2880] - jms:* commands don't consume messages
 * [KARAF-2890|https://issues.apache.org/jira/browse/KARAF-2890] - The env variables can't be read while running karaf as a Linux service
 * [KARAF-2895|https://issues.apache.org/jira/browse/KARAF-2895] - installation website link produces 404 not found page
 * [KARAF-2898|https://issues.apache.org/jira/browse/KARAF-2898] - Maven feature validation did not accept WAR bundle (WAB) artifacts.
 * [KARAF-2899|https://issues.apache.org/jira/browse/KARAF-2899] - NPE when running features:listUrl
 * [KARAF-2910|https://issues.apache.org/jira/browse/KARAF-2910] - Properties login module seems to leak a PropertiesInstaller reference results in OOM
 * [KARAF-2913|https://issues.apache.org/jira/browse/KARAF-2913] - JAAS JDBCBackingEngine has the wrong condition to iterate results, no users are returned
 * [KARAF-2914|https://issues.apache.org/jira/browse/KARAF-2914] - JAAS JDBCBackingEngineFactory: Wrong query from the configuration
 * [KARAF-2920|https://issues.apache.org/jira/browse/KARAF-2920] - Karaf freezes during startup
 * [KARAF-2926|https://issues.apache.org/jira/browse/KARAF-2926] - Child instance doesn't start
 * [KARAF-2931|https://issues.apache.org/jira/browse/KARAF-2931] - Webconsole plugins are broken
 * [KARAF-2943|https://issues.apache.org/jira/browse/KARAF-2943] - Wrong polymorphism leads to null variables
 * [KARAF-2947|https://issues.apache.org/jira/browse/KARAF-2947] - Karaf master does not build because of rat errors when working with eclipse
 * [KARAF-2951|https://issues.apache.org/jira/browse/KARAF-2951] - Transitive repositories and bundles are not added to system repo
 * [KARAF-2957|https://issues.apache.org/jira/browse/KARAF-2957] - LDAP login module cannot handle slashes in CN
 * [KARAF-2959|https://issues.apache.org/jira/browse/KARAF-2959] - JDBC commands don't properly close connection
 * [KARAF-2968|https://issues.apache.org/jira/browse/KARAF-2968] - Existing Datasource can not be found using aries jndi
 * [KARAF-2980|https://issues.apache.org/jira/browse/KARAF-2980] - strip off tabs/spaces around role|group names
 * [KARAF-2981|https://issues.apache.org/jira/browse/KARAF-2981] - Karaf shutdown hangs in SshServer.stop()
 * [KARAF-2982|https://issues.apache.org/jira/browse/KARAF-2982] - Command history is off by one
 * [KARAF-2991|https://issues.apache.org/jira/browse/KARAF-2991] - Shell Console throws exception when a service contains int[] as value for a property
 * [KARAF-2992|https://issues.apache.org/jira/browse/KARAF-2992] - Generate the shutdown command at first boot
 * [KARAF-2996|https://issues.apache.org/jira/browse/KARAF-2996] - shutdown +n command not work and shutdown hh:mm not been validated
 * [KARAF-2998|https://issues.apache.org/jira/browse/KARAF-2998] - When chopping long lines, less does not take tabs into account
 * [KARAF-3000|https://issues.apache.org/jira/browse/KARAF-3000] -  Whitespace in feature file bundle element value causes NumberFormatException
 * [KARAF-3019|https://issues.apache.org/jira/browse/KARAF-3019] - karaf-maven-plugin cannot handle all types of mvn urls
 * [KARAF-3021|https://issues.apache.org/jira/browse/KARAF-3021] - Keyboard still read after log:tail cancelled
 * [KARAF-3032|https://issues.apache.org/jira/browse/KARAF-3032] - Multi-stage boot features function does not support over 3 stages.
 * [KARAF-3033|https://issues.apache.org/jira/browse/KARAF-3033] - The system bundle should export and boot delegate javax.xml.crypto packages
 * [KARAF-3044|https://issues.apache.org/jira/browse/KARAF-3044] - Can't shutdown karaf via wrapper on AIX
 * [KARAF-3052|https://issues.apache.org/jira/browse/KARAF-3052] - Allow passing through custom ldap properties
 * [KARAF-3054|https://issues.apache.org/jira/browse/KARAF-3054] - client doesn't load using IBM JDK
 * [KARAF-3055|https://issues.apache.org/jira/browse/KARAF-3055] - tabbing in subshell displays more than commands of the current subshell
 * [KARAF-3056|https://issues.apache.org/jira/browse/KARAF-3056] - Upgrade to JLine 2.12
 * [KARAF-3061|https://issues.apache.org/jira/browse/KARAF-3061] - Problems with jaas:realms / jaas:manage commands when using multiple realms of the same name
 * [KARAF-3064|https://issues.apache.org/jira/browse/KARAF-3064] - SSH Console regenerates the SSH key on each restart
 * [KARAF-3071|https://issues.apache.org/jira/browse/KARAF-3071] - etc/org.ops4j.pax.url.mvn.cfg file contains replaced string in instances that should not be
 * [KARAF-3072|https://issues.apache.org/jira/browse/KARAF-3072] - Instance etc files are not sync with the root etc files
 * [KARAF-3085|https://issues.apache.org/jira/browse/KARAF-3085] - features:chooseurl/feature:repo-add should support "real" version range
 * [KARAF-3092|https://issues.apache.org/jira/browse/KARAF-3092] - Remove ${services-${karaf.framework}} variables from org.osgi.framework.system.capabilities
 * [KARAF-3096|https://issues.apache.org/jira/browse/KARAF-3096] - Karaf doesn't start with Equinox 3.9.1
 * [KARAF-3098|https://issues.apache.org/jira/browse/KARAF-3098] - Check the usage of config.properties in main module
 * [KARAF-3102|https://issues.apache.org/jira/browse/KARAF-3102] - "New" resolver leaves some bundles in resolved state and install unexpected bundles
 * [KARAF-3103|https://issues.apache.org/jira/browse/KARAF-3103] - config:edit does not correctly handle configuration visibility for --factory calls.
 * [KARAF-3105|https://issues.apache.org/jira/browse/KARAF-3105] - Cannot use LDAPLoginModule with ActiveDirectory
 * [KARAF-3115|https://issues.apache.org/jira/browse/KARAF-3115] - add address flag when create a child instance
 * [KARAF-3123|https://issues.apache.org/jira/browse/KARAF-3123] - BundleWatcherImpl tries to stop bundle fragments
 * [KARAF-3127|https://issues.apache.org/jira/browse/KARAF-3127] - bin/instance  script doesn't work
 * [KARAF-3128|https://issues.apache.org/jira/browse/KARAF-3128] - Update ops4j/oss sonatype repositories URL
 * [KARAF-3129|https://issues.apache.org/jira/browse/KARAF-3129] - RAT plugin error on ssh key files
 * [KARAF-3133|https://issues.apache.org/jira/browse/KARAF-3133] - http command doesn't show any web resources
 * [KARAF-3136|https://issues.apache.org/jira/browse/KARAF-3136] - Karaf can't start if you have whitespaces in brackets in JAVA_OPTS
 * [KARAF-3138|https://issues.apache.org/jira/browse/KARAF-3138] - Having eventadmin listed as a boot features cause problems in other bundles startup
 * [KARAF-3147|https://issues.apache.org/jira/browse/KARAF-3147] - Local JMX connect is not possible
 * [KARAF-3149|https://issues.apache.org/jira/browse/KARAF-3149] - Karaf chooseurl for jclouds is wrong
 * [KARAF-3150|https://issues.apache.org/jira/browse/KARAF-3150] - kar:install doesn't support classifier in a MVN URL
 * [KARAF-3151|https://issues.apache.org/jira/browse/KARAF-3151] - Blueprint managed-properties doesn't call the update-method
 * [KARAF-3154|https://issues.apache.org/jira/browse/KARAF-3154] - Feature repo org.ops4j.pax.cdi-0.7.0 contains broken feature
 * [KARAF-3158|https://issues.apache.org/jira/browse/KARAF-3158] - Incorrect javax.annotation version for java7
 * [KARAF-3159|https://issues.apache.org/jira/browse/KARAF-3159] - Fix feature deployer documentation about auto installation of the features
 * [KARAF-3162|https://issues.apache.org/jira/browse/KARAF-3162] - Update the security documentation as the PropertiesConverter doesn't exist anymore
 * [KARAF-3170|https://issues.apache.org/jira/browse/KARAF-3170] - Java8 packages related to JavaFX are missing
 * [KARAF-3176|https://issues.apache.org/jira/browse/KARAF-3176] - sshRole and jmxRole are not functionnal
 * [KARAF-3180|https://issues.apache.org/jira/browse/KARAF-3180] - openwebbeans feature doesn't install
 * [KARAF-3192|https://issues.apache.org/jira/browse/KARAF-3192] - Don't throw IllegalStateException when can't find attribute for a certain bean
 * [KARAF-3196|https://issues.apache.org/jira/browse/KARAF-3196] - Export sun.misc package from the system bundle
 * [KARAF-3197|https://issues.apache.org/jira/browse/KARAF-3197] - Can't type anything in the console on Windows platform
 * [KARAF-3204|https://issues.apache.org/jira/browse/KARAF-3204] - Avoid calls to Configuration#setBundleLocation(null) which are not needed
 * [KARAF-3209|https://issues.apache.org/jira/browse/KARAF-3209] - Client doesn't select the correct user
 * [KARAF-3210|https://issues.apache.org/jira/browse/KARAF-3210] - karaf:features-generate-descriptor fails with Maven 3.1.x and 3.2.x : required class was missing ... org/sonatype/aether/RepositorySystem
 * [KARAF-3211|https://issues.apache.org/jira/browse/KARAF-3211] - Error while installing transaction feature
 * [KARAF-3212|https://issues.apache.org/jira/browse/KARAF-3212] - karaf.data variable not correctly resolved while installing the pax-http feature
 * [KARAF-3213|https://issues.apache.org/jira/browse/KARAF-3213] - ConcurrentModification exception in FileInstall/Upgrade to Felix FileInstall 3.4.1
 * [KARAF-3224|https://issues.apache.org/jira/browse/KARAF-3224] - Support wrap URL with option
 * [KARAF-3230|https://issues.apache.org/jira/browse/KARAF-3230] - jndi feature doesn't install
 * [KARAF-3232|https://issues.apache.org/jira/browse/KARAF-3232] - Feature installation looks for MANIFEST as first position in the jar
 * [KARAF-3248|https://issues.apache.org/jira/browse/KARAF-3248] - bundle:refresh doesn't work without argument
 * [KARAF-3249|https://issues.apache.org/jira/browse/KARAF-3249] - Error: "usage: dirname path" when Karaf is located under path with spaces
 * [KARAF-3250|https://issues.apache.org/jira/browse/KARAF-3250] - JVM options ignored on Windows
 * [KARAF-3251|https://issues.apache.org/jira/browse/KARAF-3251] - Karaf maven plugin does not install bundles in conditional as needed
 * [KARAF-3261|https://issues.apache.org/jira/browse/KARAF-3261] - jdbc command (using JdbcConnector.java) does not honour service ranking and throws IllegalArgumentException instead
 * [KARAF-3273|https://issues.apache.org/jira/browse/KARAF-3273] - zodiac.springsource.com repo is missing from the default repository set (required for gemini-blueprint feature)
 * [KARAF-3274|https://issues.apache.org/jira/browse/KARAF-3274] - MBean itests randomly fail
 * [KARAF-3284|https://issues.apache.org/jira/browse/KARAF-3284] - The shell-log bundle should not import org.apache.log4j.* package
 * [KARAF-3288|https://issues.apache.org/jira/browse/KARAF-3288] - karaf script doesn't start on Solaris if JAVA_HOME is not set
 * [KARAF-3325|https://issues.apache.org/jira/browse/KARAF-3325] - Karaf throws SocketTimeoutException and exits after 49 days
 * [KARAF-3327|https://issues.apache.org/jira/browse/KARAF-3327] - Incorrect LC_CTYPE parsing
 * [KARAF-3329|https://issues.apache.org/jira/browse/KARAF-3329] - javax.annotation-version in jre.properties does not reflect version of Java SE
 * [KARAF-3330|https://issues.apache.org/jira/browse/KARAF-3330] - embedded Karaf web demo doesn't deploy since 3.0.2
 * [KARAF-3333|https://issues.apache.org/jira/browse/KARAF-3333] - CXF 3.0.1 feature install fails in karaf
 * [KARAF-3335|https://issues.apache.org/jira/browse/KARAF-3335] - Endorsed org.apache.karaf.exception-3.0.2 jar causes issues with Java 8 Nashorn scripts
 * [KARAF-3350|https://issues.apache.org/jira/browse/KARAF-3350] - The log:display command fails with CNFE if the pax-logging-service bundle has been refreshed
 * [KARAF-3352|https://issues.apache.org/jira/browse/KARAF-3352] - Generate html and pdf artifacts in the manual
 * [KARAF-3363|https://issues.apache.org/jira/browse/KARAF-3363] - feature:install jetty does not install org.eclipse.jetty.client packages
 * [KARAF-3365|https://issues.apache.org/jira/browse/KARAF-3365] - typo in org.ops4j.pax.url.mvn.cfg
 * [KARAF-3369|https://issues.apache.org/jira/browse/KARAF-3369] - karaf-maven-plugin 3.0.2 breaks deployment to Nexus
 * [KARAF-3370|https://issues.apache.org/jira/browse/KARAF-3370] - itests using ssh or cdi related fail
 * [KARAF-3377|https://issues.apache.org/jira/browse/KARAF-3377] - Starting Karaf on Windows changes console title
 * [KARAF-3379|https://issues.apache.org/jira/browse/KARAF-3379] - jpa feature incompatible to hibernate 4.3 feature
 * [KARAF-3383|https://issues.apache.org/jira/browse/KARAF-3383] - Avoid exception causing completion to fail if a completer class can not be loaded (because of an optional package for example)
 * [KARAF-3384|https://issues.apache.org/jira/browse/KARAF-3384] - Commands are not unregistered correctly when a bundle is stopped
 * [KARAF-3385|https://issues.apache.org/jira/browse/KARAF-3385] - MultiException stacktraces do not display inner causes
 * [KARAF-3397|https://issues.apache.org/jira/browse/KARAF-3397] - FeaturesServiceMBeanImpl throws an Exception when listening the features
 * [KARAF-3399|https://issues.apache.org/jira/browse/KARAF-3399] - The host is not refreshed if a new fragment is installed
 * [KARAF-3408|https://issues.apache.org/jira/browse/KARAF-3408] - feature:repo-refresh doesn't work
 * [KARAF-3412|https://issues.apache.org/jira/browse/KARAF-3412] - should add javax.management.builder.initial flag for Karaf child instance
 * [KARAF-3413|https://issues.apache.org/jira/browse/KARAF-3413] - should also associate the role to run executeScript
 * [KARAF-3414|https://issues.apache.org/jira/browse/KARAF-3414] - SshCommandTestBase uses some deprecated sshd APIs
 * [KARAF-3416|https://issues.apache.org/jira/browse/KARAF-3416] - AutoEncryptionSupport randomly raises NullPointerException at startup
 * [KARAF-3420|https://issues.apache.org/jira/browse/KARAF-3420] - Java Debug options are Pre Java 5.0
 * [KARAF-3423|https://issues.apache.org/jira/browse/KARAF-3423] - Can't connect to a running instance with instance:connect
 * [KARAF-3425|https://issues.apache.org/jira/browse/KARAF-3425] - Need a solution to add a "specific version" of a feature in karaf-maven-plugin 
 * [KARAF-3428|https://issues.apache.org/jira/browse/KARAF-3428] - Upgrade to Pax CDI 0.10.0
 * [KARAF-3430|https://issues.apache.org/jira/browse/KARAF-3430] - User name/password missing in connection factory created with jms:create
 * [KARAF-3441|https://issues.apache.org/jira/browse/KARAF-3441] - The admin:stop Command Does Not Zero Out Root Container PID
 * [KARAF-3459|https://issues.apache.org/jira/browse/KARAF-3459] - PropertiesLoginModule throws NPE when callbackHandler is null
 * [KARAF-3460|https://issues.apache.org/jira/browse/KARAF-3460] - NPE in AutoEncryptionSupport.run
 * [KARAF-3465|https://issues.apache.org/jira/browse/KARAF-3465] - Add pax-* projects URLs in the etc/org.apache.karaf.features.repos.cfg
 * [KARAF-3471|https://issues.apache.org/jira/browse/KARAF-3471] - Karaf can't start if etc/config.properties is not writable
 * [KARAF-3476|https://issues.apache.org/jira/browse/KARAF-3476] - ConfigManagedServiceFactoryTest fails
 * [KARAF-3477|https://issues.apache.org/jira/browse/KARAF-3477] - HeapDumpProvider should use a JMXServiceURL in order to provide username/password
 * [KARAF-3487|https://issues.apache.org/jira/browse/KARAF-3487] - config:edit '(service.factorypid=myconfig)' throws NPE
 * [KARAF-3488|https://issues.apache.org/jira/browse/KARAF-3488] - Exiting Karaf (shutdown command or CTRL-D) displays "CLOSING SESSION!" on System.out
 * [KARAF-3490|https://issues.apache.org/jira/browse/KARAF-3490] - Unresolved dependency (equinox region) when running an unmodified custom distribution
 * [KARAF-3492|https://issues.apache.org/jira/browse/KARAF-3492] - Can't connect to Karaf sshd using key authentication
 * [KARAF-3493|https://issues.apache.org/jira/browse/KARAF-3493] - CreateArchiveMojo ignores the targetFile option
 * [KARAF-3494|https://issues.apache.org/jira/browse/KARAF-3494] - client should not fail if it can't read etc/org.apache.karaf.shell.cfg file
 * [KARAF-3501|https://issues.apache.org/jira/browse/KARAF-3501] - bin/client script doesn't work in latest 4.0 SNAPSHOT kit
 * [KARAF-3506|https://issues.apache.org/jira/browse/KARAF-3506] - karaf-maven-plugin doesn't handle leading whitespace on config file locations
 * [KARAF-3514|https://issues.apache.org/jira/browse/KARAF-3514] - RuntimeException when setting system.properties -->  karaf.lock.level to a value greater 4 and starting Karaf
 * [KARAF-3515|https://issues.apache.org/jira/browse/KARAF-3515] - branding.properties file in the etc folder doesn't work
 * [KARAF-3516|https://issues.apache.org/jira/browse/KARAF-3516] - JMS: Create command -u option changes username and url
 * [KARAF-3517|https://issues.apache.org/jira/browse/KARAF-3517] - Typo in features bundle info
 * [KARAF-3526|https://issues.apache.org/jira/browse/KARAF-3526] - feature:install foo doesn't fail anymore when no feature match
 * [KARAF-3527|https://issues.apache.org/jira/browse/KARAF-3527] - Appending config from feature doesn't work
 * [KARAF-3536|https://issues.apache.org/jira/browse/KARAF-3536] - Diagnostic module won't compile with IBM JDK
 * [KARAF-3537|https://issues.apache.org/jira/browse/KARAF-3537] - More and less commands do not handle ansi escape sequences correctly
 * [KARAF-3538|https://issues.apache.org/jira/browse/KARAF-3538] - Support multiline values in ShellTable
 * [KARAF-3542|https://issues.apache.org/jira/browse/KARAF-3542] - Correctly use opened streams when parsing xml
 * [KARAF-3543|https://issues.apache.org/jira/browse/KARAF-3543] - ClassNotFoundException when running shell.sh
 * [KARAF-3544|https://issues.apache.org/jira/browse/KARAF-3544] - Spring features should have a conditional on deployer for installing the spring url handler
 * [KARAF-3562|https://issues.apache.org/jira/browse/KARAF-3562] - DefaultJDBCLock case sensitive issue
 * [KARAF-3566|https://issues.apache.org/jira/browse/KARAF-3566] - The javax.annotation package should be exported from system bundle with version 1.0 in JDK8
 * [KARAF-3567|https://issues.apache.org/jira/browse/KARAF-3567] - Branding not applied to shell
 * [KARAF-3570|https://issues.apache.org/jira/browse/KARAF-3570] - The jaas realm configuration is broken
 * [KARAF-3582|https://issues.apache.org/jira/browse/KARAF-3582] - command extension: if one class failed inspection is stopped
 * [KARAF-3585|https://issues.apache.org/jira/browse/KARAF-3585] - Snapshots are not updated by the features service
 * [KARAF-3589|https://issues.apache.org/jira/browse/KARAF-3589] - karaf-maven-plugin doesn't allow specifying a version for a boot feature in etc/org.apache.karaf.features.cfg
 * [KARAF-3625|https://issues.apache.org/jira/browse/KARAF-3625] - Password encryption doesn't work
 * [KARAF-3632|https://issues.apache.org/jira/browse/KARAF-3632] - Change transaction parameter in features
 * [KARAF-3648|https://issues.apache.org/jira/browse/KARAF-3648] - should zero out instance pid in instance.properties when we shutdown an instance from shell
 * [KARAF-3650|https://issues.apache.org/jira/browse/KARAF-3650] - diagnostic.boot should not depend to sun.misc package
 * [KARAF-3651|https://issues.apache.org/jira/browse/KARAF-3651] - The karaf client can cause a NPE in org.apache.sshd.common.util.Buffer.putString(Buffer.java:434)
 * [KARAF-3653|https://issues.apache.org/jira/browse/KARAF-3653] - Karaf can't be started in offline mode
 * [KARAF-3656|https://issues.apache.org/jira/browse/KARAF-3656] - SSH message channel closed too early
 * [KARAF-3659|https://issues.apache.org/jira/browse/KARAF-3659] - shutdown of karaf throws NullPointerException if jmx ssl keystore is not configured properly
 * [KARAF-3660|https://issues.apache.org/jira/browse/KARAF-3660] - Setting JMX SSL causes StringIndexOutOfBoundsException when setting keyPasswords without = symbol
 * [KARAF-3662|https://issues.apache.org/jira/browse/KARAF-3662] - Unable to start on Windows
 * [KARAF-3668|https://issues.apache.org/jira/browse/KARAF-3668] - ManagedServiceFactory update is not called after restart
 * [KARAF-3670|https://issues.apache.org/jira/browse/KARAF-3670] - The client may use a group definition as the default user
 * [KARAF-3672|https://issues.apache.org/jira/browse/KARAF-3672] - Commands are missing from the manual
 * [KARAF-3684|https://issues.apache.org/jira/browse/KARAF-3684] - Karaf Manual doesn't contain Package-Imports
 * [KARAF-3703|https://issues.apache.org/jira/browse/KARAF-3703] - Unable to install ActiveMQ in Karaf 4 SNAPSHOT
 * [KARAF-3704|https://issues.apache.org/jira/browse/KARAF-3704] - Command jaas:groupadd allows adding duplicite groups
 * [KARAF-3706|https://issues.apache.org/jira/browse/KARAF-3706] - Exception at Karaf startup
 * [KARAF-3709|https://issues.apache.org/jira/browse/KARAF-3709] - The assembly builder should generate mvn urls for startup bundles
 * [KARAF-3713|https://issues.apache.org/jira/browse/KARAF-3713] - JDBC generic datasource doesn't use the correct username property
 * [KARAF-3721|https://issues.apache.org/jira/browse/KARAF-3721] - Installing some features (eventadmin) restart the shell console
 * [KARAF-3722|https://issues.apache.org/jira/browse/KARAF-3722] - Feature resolver change bundles package export
 * [KARAF-3747|https://issues.apache.org/jira/browse/KARAF-3747] - jndi:alias prefix a name with a /
 * [KARAF-3753|https://issues.apache.org/jira/browse/KARAF-3753] - Child instances can't resolve libs in child system folder
 * [KARAF-3754|https://issues.apache.org/jira/browse/KARAF-3754] - Child instances should honor bundle overrides in root
 * [KARAF-3755|https://issues.apache.org/jira/browse/KARAF-3755] - shell.support.table.ShellTableTest breaked build on Windows
 * [KARAF-3760|https://issues.apache.org/jira/browse/KARAF-3760] - Can't ssh to Karaf when using the karaf-maven-plugin
 * [KARAF-3761|https://issues.apache.org/jira/browse/KARAF-3761] - Build and test fail on Windows

** Dependency upgrade
 * [KARAF-2279|https://issues.apache.org/jira/browse/KARAF-2279] - Upgrade to OSGi Core 5.0.0
 * [KARAF-2565|https://issues.apache.org/jira/browse/KARAF-2565] - Upgrade to OSGi Compendium 5.0.0
 * [KARAF-2661|https://issues.apache.org/jira/browse/KARAF-2661] - Upgrade to ServiceMix Specs 2.4.0
 * [KARAF-2769|https://issues.apache.org/jira/browse/KARAF-2769] - Upgrade to Pax CDI 0.7.0
 * [KARAF-2783|https://issues.apache.org/jira/browse/KARAF-2783] - Upgrade to Pax Web 3.0.7-SNAPSHOT
 * [KARAF-2789|https://issues.apache.org/jira/browse/KARAF-2789] - Upgrade to sshd 0.11.0
 * [KARAF-2811|https://issues.apache.org/jira/browse/KARAF-2811] - Upgrade to felix utils 1.6.0
 * [KARAF-2813|https://issues.apache.org/jira/browse/KARAF-2813] - Use EventAdmin to provide an audit trail of events, but it's lacking the authenticated Subject who performed the action
 * [KARAF-2816|https://issues.apache.org/jira/browse/KARAF-2816] - upgrade to spring 3.2.8.RELEASE
 * [KARAF-2829|https://issues.apache.org/jira/browse/KARAF-2829] - Upgrade to pax-url 2.0.0
 * [KARAF-2853|https://issues.apache.org/jira/browse/KARAF-2853] - Upgrade to Apache POM 14
 * [KARAF-2860|https://issues.apache.org/jira/browse/KARAF-2860] - Upgrade to Felix Framework 4.4.0/Felix Framework Security 2.4.0
 * [KARAF-2861|https://issues.apache.org/jira/browse/KARAF-2861] - Upgrade to ASM 5.0.3
 * [KARAF-2868|https://issues.apache.org/jira/browse/KARAF-2868] - Upgrade to aries jmx core 1.1.2
 * [KARAF-2869|https://issues.apache.org/jira/browse/KARAF-2869] - Upgrade to Pax CDI 0.7.0
 * [KARAF-2874|https://issues.apache.org/jira/browse/KARAF-2874] - Upgrade to XBean 3.18
 * [KARAF-2877|https://issues.apache.org/jira/browse/KARAF-2877] - Upgrade to Pax Web 4.0.0
 * [KARAF-2889|https://issues.apache.org/jira/browse/KARAF-2889] - Upgrade to Equinox 3.9.1-v20140110-1610
 * [KARAF-2903|https://issues.apache.org/jira/browse/KARAF-2903] - Upgrade to gemini blueprint 1.0.2
 * [KARAF-2906|https://issues.apache.org/jira/browse/KARAF-2906] - Upgrade to fileinstall 3.4.0
 * [KARAF-2907|https://issues.apache.org/jira/browse/KARAF-2907] - Upgrade to ConfigAdmin 1.8.0
 * [KARAF-2908|https://issues.apache.org/jira/browse/KARAF-2908] - Upgrade to hibernate latest 4.2.x and 4.3.x versions
 * [KARAF-2909|https://issues.apache.org/jira/browse/KARAF-2909] - Upgrade to felix gogo runtime 0.12.0
 * [KARAF-2912|https://issues.apache.org/jira/browse/KARAF-2912] - Upgrade to equinox region 1.1.0.v20120522-1841
 * [KARAF-2928|https://issues.apache.org/jira/browse/KARAF-2928] - Upgrade to Aries JMX Core 1.1.2
 * [KARAF-2929|https://issues.apache.org/jira/browse/KARAF-2929] - Upgrade to Aries JNDI Url 1.1
 * [KARAF-2932|https://issues.apache.org/jira/browse/KARAF-2932] - Upgrade to Felix WebConsole 4.2.2
 * [KARAF-2933|https://issues.apache.org/jira/browse/KARAF-2933] - Upgrade to Jasypt 1.9.2
 * [KARAF-2935|https://issues.apache.org/jira/browse/KARAF-2935] - Upgrade to Pax URL 2.0.0
 * [KARAF-2936|https://issues.apache.org/jira/browse/KARAF-2936] - Upgrade to slf4j 1.7.7 / Pax Logging 1.7.3
 * [KARAF-2937|https://issues.apache.org/jira/browse/KARAF-2937] - Upgrade to json 20140107
 * [KARAF-2945|https://issues.apache.org/jira/browse/KARAF-2945] - Upgrade to Aries Proxy 1.0.3 and Aries spifly 1.0.1 in order to support ASM5 and Java8
 * [KARAF-2954|https://issues.apache.org/jira/browse/KARAF-2954] - Upgrade to Pax Exam 3.5.0
 * [KARAF-3031|https://issues.apache.org/jira/browse/KARAF-3031] - Upgrade to Pax URL 2.1.0
 * [KARAF-3046|https://issues.apache.org/jira/browse/KARAF-3046] - Upgrade to gogo runtime 0.12.1
 * [KARAF-3049|https://issues.apache.org/jira/browse/KARAF-3049] - Upgrade to sshd 0.11
 * [KARAF-3101|https://issues.apache.org/jira/browse/KARAF-3101] - Upgrade to Spring 4.0.5.RELEASE
 * [KARAF-3106|https://issues.apache.org/jira/browse/KARAF-3106] - Upgrade to blueprint core 1.4.1
 * [KARAF-3109|https://issues.apache.org/jira/browse/KARAF-3109] - Upgrade to Pax Exam 4.0.0
 * [KARAF-3116|https://issues.apache.org/jira/browse/KARAF-3116] - Upgrade to Felix Framework 4.4.1
 * [KARAF-3120|https://issues.apache.org/jira/browse/KARAF-3120] - Upgrade to Aries JPA 1.0.2
 * [KARAF-3121|https://issues.apache.org/jira/browse/KARAF-3121] - Upgrade to Aries Blueprint Annotation 1.0.1
 * [KARAF-3131|https://issues.apache.org/jira/browse/KARAF-3131] - Upgrade to Hibernate 4.2.15.Final/4.3.6.Final
 * [KARAF-3140|https://issues.apache.org/jira/browse/KARAF-3140] - Upgrade to sshd 0.12.0
 * [KARAF-3156|https://issues.apache.org/jira/browse/KARAF-3156] - Upgrade to Pax CDI 0.8.0
 * [KARAF-3157|https://issues.apache.org/jira/browse/KARAF-3157] - Upgrade to Pax Exam 4.1.0
 * [KARAF-3171|https://issues.apache.org/jira/browse/KARAF-3171] - Upgrade to Aries Blueprint CM 1.0.4
 * [KARAF-3182|https://issues.apache.org/jira/browse/KARAF-3182] - Upgrade to Felix EventAdmin 1.4.0
 * [KARAF-3183|https://issues.apache.org/jira/browse/KARAF-3183] - Upgrade to bndlib 2.3.0
 * [KARAF-3184|https://issues.apache.org/jira/browse/KARAF-3184] - Upgrade to commons-beanutils 1.9.2
 * [KARAF-3185|https://issues.apache.org/jira/browse/KARAF-3185] - Upgrade to Felix BundleRepository 2.0.2
 * [KARAF-3186|https://issues.apache.org/jira/browse/KARAF-3186] - Upgrade to Equinox 3.10.0-v20140606-1445
 * [KARAF-3198|https://issues.apache.org/jira/browse/KARAF-3198] - Cleanup Pax Swissbox dependencies
 * [KARAF-3201|https://issues.apache.org/jira/browse/KARAF-3201] - Upgrade to pax-logging 1.7.4
 * [KARAF-3226|https://issues.apache.org/jira/browse/KARAF-3226] - Upgrade to Spring 4.0.7.RELEASE
 * [KARAF-3227|https://issues.apache.org/jira/browse/KARAF-3227] - Upgrade to Spring 3.2.11.RELEASE
 * [KARAF-3229|https://issues.apache.org/jira/browse/KARAF-3229] - Upgrade to Felix EventAdmin 1.4.2
 * [KARAF-3233|https://issues.apache.org/jira/browse/KARAF-3233] - Upgrade to Pax Exam 4.2.0
 * [KARAF-3243|https://issues.apache.org/jira/browse/KARAF-3243] - Upgrade to Pax URL 2.2.0
 * [KARAF-3265|https://issues.apache.org/jira/browse/KARAF-3265] - Upgrade to Aries Blueprint CM 1.0.5
 * [KARAF-3281|https://issues.apache.org/jira/browse/KARAF-3281] - Upgrade to Pax Logging 1.8.0 (log4j v2 support)
 * [KARAF-3291|https://issues.apache.org/jira/browse/KARAF-3291] - Upgrade to Pax Exam 4.3.0
 * [KARAF-3304|https://issues.apache.org/jira/browse/KARAF-3304] - Upgrade to Pax CDI 0.9.0
 * [KARAF-3305|https://issues.apache.org/jira/browse/KARAF-3305] - Upgrade to Aries Blueprint Core 1.4.2
 * [KARAF-3306|https://issues.apache.org/jira/browse/KARAF-3306] - Upgrade to Aries JNDI API 1.1.0
 * [KARAF-3307|https://issues.apache.org/jira/browse/KARAF-3307] - Upgrade to Aries JPA API 1.0.2/JPA Container 1.0.2/JPA Blueprint Aries 1.0.4/JPA Container Context 1.0.4
 * [KARAF-3308|https://issues.apache.org/jira/browse/KARAF-3308] - Upgade to Aries Proxy Impl 1.0.4
 * [KARAF-3309|https://issues.apache.org/jira/browse/KARAF-3309] - Upgrade to Felix Maven Bundle Plugin 2.5.3
 * [KARAF-3311|https://issues.apache.org/jira/browse/KARAF-3311] - Upgrade to Pax Tinybundles 2.1.0
 * [KARAF-3312|https://issues.apache.org/jira/browse/KARAF-3312] - Upgrade to maven-assembly-plugin 2.4.1
 * [KARAF-3313|https://issues.apache.org/jira/browse/KARAF-3313] - Upgrade to maven-compiler-plugin 3.2
 * [KARAF-3314|https://issues.apache.org/jira/browse/KARAF-3314] - Upgrade to maven-dependency-plugin 2.9
 * [KARAF-3315|https://issues.apache.org/jira/browse/KARAF-3315] - Upgrade to maven-jar-plugin 2.5
 * [KARAF-3316|https://issues.apache.org/jira/browse/KARAF-3316] - Upgrade to maven-site-plugin 3.4
 * [KARAF-3317|https://issues.apache.org/jira/browse/KARAF-3317] - Upgrade to maven-source-plugin 2.4
 * [KARAF-3318|https://issues.apache.org/jira/browse/KARAF-3318] - Upgrade to maven-surefire-plugin 2.17
 * [KARAF-3319|https://issues.apache.org/jira/browse/KARAF-3319] - Upgrade to maven-war-plugin 2.5
 * [KARAF-3320|https://issues.apache.org/jira/browse/KARAF-3320] - Upgrade to apache-rat-plugin 0.11
 * [KARAF-3321|https://issues.apache.org/jira/browse/KARAF-3321] - Upgrade to build-helper-maven-plugin 1.9.1
 * [KARAF-3322|https://issues.apache.org/jira/browse/KARAF-3322] - Upgrade to exec-maven-plugin 1.3.2
 * [KARAF-3331|https://issues.apache.org/jira/browse/KARAF-3331] - Upgrade to Aries Transaction Manager 1.1.1
 * [KARAF-3338|https://issues.apache.org/jira/browse/KARAF-3338] - Upgrade to Apache POM 15
 * [KARAF-3353|https://issues.apache.org/jira/browse/KARAF-3353] - Upgrade jandex in hibernate feature to avoid wrapping
 * [KARAF-3396|https://issues.apache.org/jira/browse/KARAF-3396] - Upgrade to pax-logging 1.8.1
 * [KARAF-3406|https://issues.apache.org/jira/browse/KARAF-3406] - Upgrade to pax-url 2.2
 * [KARAF-3407|https://issues.apache.org/jira/browse/KARAF-3407] - Upgrade to felix utils 1.6.2
 * [KARAF-3470|https://issues.apache.org/jira/browse/KARAF-3470] - Upgrade to Pax Exam 4.4.0
 * [KARAF-3473|https://issues.apache.org/jira/browse/KARAF-3473] - Upgrade to Pax Web 4.0.2
 * [KARAF-3474|https://issues.apache.org/jira/browse/KARAF-3474] - Use Pax Web 4.1.0
 * [KARAF-3548|https://issues.apache.org/jira/browse/KARAF-3548] - Upgrade to bndlib 2.4.0
 * [KARAF-3549|https://issues.apache.org/jira/browse/KARAF-3549] - Upgrade to commons-codec 1.10
 * [KARAF-3550|https://issues.apache.org/jira/browse/KARAF-3550] - Upgrade to jline 2.12.1
 * [KARAF-3552|https://issues.apache.org/jira/browse/KARAF-3552] - Upgrade to Aries Blueprint CM 1.0.6
 * [KARAF-3553|https://issues.apache.org/jira/browse/KARAF-3553] - Upgrade to Aries Blueprint Core 1.4.3
 * [KARAF-3554|https://issues.apache.org/jira/browse/KARAF-3554] - Upgrade to Aries JNDI Core 1.0.2
 * [KARAF-3556|https://issues.apache.org/jira/browse/KARAF-3556] - Upgrade to Aries Transaction Blueprint 1.0.2
 * [KARAF-3558|https://issues.apache.org/jira/browse/KARAF-3558] - Upgrade to sshd-core 0.13.0
 * [KARAF-3559|https://issues.apache.org/jira/browse/KARAF-3559] - Upgrade to Easymock 3.3.1
 * [KARAF-3560|https://issues.apache.org/jira/browse/KARAF-3560] - Upgrade to junit 4.12
 * [KARAF-3563|https://issues.apache.org/jira/browse/KARAF-3563] - Upgrade to Pax-URL-Aether 2.4.0
 * [KARAF-3586|https://issues.apache.org/jira/browse/KARAF-3586] - Upgrade to pax-logging 1.8.2
 * [KARAF-3587|https://issues.apache.org/jira/browse/KARAF-3587] - Upgrade to pax-url 2.4.0
 * [KARAF-3594|https://issues.apache.org/jira/browse/KARAF-3594] - Upgrade to Aries JMX Core 1.1.3
 * [KARAF-3595|https://issues.apache.org/jira/browse/KARAF-3595] - Upgrade to Aries Transaction JDBC 2.1.1
 * [KARAF-3598|https://issues.apache.org/jira/browse/KARAF-3598] - Upgrade to bundlerepository 2.0.4
 * [KARAF-3599|https://issues.apache.org/jira/browse/KARAF-3599] - Upgrade to configadmin 1.8.2
 * [KARAF-3600|https://issues.apache.org/jira/browse/KARAF-3600] - Upgrade to felix utils 1.8.0
 * [KARAF-3602|https://issues.apache.org/jira/browse/KARAF-3602] - Upgrade to fileinstall 3.5.0
 * [KARAF-3603|https://issues.apache.org/jira/browse/KARAF-3603] - Upgrade to gogo runtime 0.16.2
 * [KARAF-3604|https://issues.apache.org/jira/browse/KARAF-3604] - Upgrade to felix framework 4.9.0-SNAPSHOT
 * [KARAF-3657|https://issues.apache.org/jira/browse/KARAF-3657] - Upgrade to ServiceMix Specs 2.5.0
 * [KARAF-3667|https://issues.apache.org/jira/browse/KARAF-3667] - Upgrade to sshd 0.14.0
 * [KARAF-3681|https://issues.apache.org/jira/browse/KARAF-3681] - Upgrade to Aries Subsystem API 1.1.0/Core 1.2.0
 * [KARAF-3682|https://issues.apache.org/jira/browse/KARAF-3682] - Upgrade to Felix maven-bundle-plugin 2.5.4
 * [KARAF-3686|https://issues.apache.org/jira/browse/KARAF-3686] - Upgrade to Pax Exam 4.5.0
 * [KARAF-3687|https://issues.apache.org/jira/browse/KARAF-3687] - Upgrade to commons-compress 1.9
 * [KARAF-3688|https://issues.apache.org/jira/browse/KARAF-3688] - Upgrade to Pax URL 2.4.1
 * [KARAF-3691|https://issues.apache.org/jira/browse/KARAF-3691] - Upgrade to Felix Metatype 1.0.12
 * [KARAF-3692|https://issues.apache.org/jira/browse/KARAF-3692] - Upgrade to Felix WebConsole 4.2.8
 * [KARAF-3695|https://issues.apache.org/jira/browse/KARAF-3695] - Upgrade to 4.1.2
 * [KARAF-3699|https://issues.apache.org/jira/browse/KARAF-3699] - Upgrade to Felix ConfigAdmin 1.8.4
 * [KARAF-3700|https://issues.apache.org/jira/browse/KARAF-3700] - Upgrade to Felix Framework 5.0.0
 * [KARAF-3701|https://issues.apache.org/jira/browse/KARAF-3701] - Upgrade to Felix Resolver 1.2.0
 * [KARAF-3702|https://issues.apache.org/jira/browse/KARAF-3702] - Upgrade to Felix WebConsole Plugins Event 1.1.2
 * [KARAF-3731|https://issues.apache.org/jira/browse/KARAF-3731] - Upgrade to Spring 4.1.6_RELEASE
 * [KARAF-3735|https://issues.apache.org/jira/browse/KARAF-3735] - Upgrade to Pax Logging 1.8.3
 * [KARAF-3751|https://issues.apache.org/jira/browse/KARAF-3751] - Upgrade to felix connect 0.1.0
 * [KARAF-3756|https://issues.apache.org/jira/browse/KARAF-3756] - Upgrade to Pax CDI 0.12.0

** Documentation
 * [KARAF-2795|https://issues.apache.org/jira/browse/KARAF-2795] - @Option annotation class missing documentation
 * [KARAF-2958|https://issues.apache.org/jira/browse/KARAF-2958] - Use of type-converters in Karaf Security Documentation is incorrect
 * [KARAF-3066|https://issues.apache.org/jira/browse/KARAF-3066] - Improve OpenEJB documentation in manual
 * [KARAF-3167|https://issues.apache.org/jira/browse/KARAF-3167] - Document the configfile override behaviour
 * [KARAF-3439|https://issues.apache.org/jira/browse/KARAF-3439] - [Docs] karaf.lock.delay in example is set to very low number.

** Improvement
 * [KARAF-342|https://issues.apache.org/jira/browse/KARAF-342] - merge webconsole branding package with webconsole
 * [KARAF-399|https://issues.apache.org/jira/browse/KARAF-399] - Support features upgrade
 * [KARAF-452|https://issues.apache.org/jira/browse/KARAF-452] - Support bundle id ranges, symbolic name/version, and regex in shell start/stop etc commands
 * [KARAF-491|https://issues.apache.org/jira/browse/KARAF-491] - A war bundle and the war feature can't be installed as parts of a single feature.
 * [KARAF-636|https://issues.apache.org/jira/browse/KARAF-636] - Support wildcards for instance:start/stop/destroy commands
 * [KARAF-971|https://issues.apache.org/jira/browse/KARAF-971] - Add support for version ranges in features descriptor <repository/> element
 * [KARAF-1113|https://issues.apache.org/jira/browse/KARAF-1113] - Add a web:launch command
 * [KARAF-1169|https://issues.apache.org/jira/browse/KARAF-1169] - Support for hidden features
 * [KARAF-1223|https://issues.apache.org/jira/browse/KARAF-1223] - Support mvn:* urls in karaf-maven-plugin:features-create-kar
 * [KARAF-1250|https://issues.apache.org/jira/browse/KARAF-1250] - Cleanup karaf-maven-plugin
 * [KARAF-1514|https://issues.apache.org/jira/browse/KARAF-1514] - Improve feature file generation to be able to create features out of special feature poms
 * [KARAF-1698|https://issues.apache.org/jira/browse/KARAF-1698] - Add support for role-based JMX authorization
 * [KARAF-1836|https://issues.apache.org/jira/browse/KARAF-1836] - Provide a login module class name completer.
 * [KARAF-2104|https://issues.apache.org/jira/browse/KARAF-2104] - Add regex support in features:* commands
 * [KARAF-2299|https://issues.apache.org/jira/browse/KARAF-2299] - WARN message should be logged when a boot feature installation fails
 * [KARAF-2301|https://issues.apache.org/jira/browse/KARAF-2301] - Improve shell syntax documentation
 * [KARAF-2449|https://issues.apache.org/jira/browse/KARAF-2449] - Include heap dump in the zip created by dev:create-dump
 * [KARAF-2453|https://issues.apache.org/jira/browse/KARAF-2453] - Using features to extend existing configuration
 * [KARAF-2623|https://issues.apache.org/jira/browse/KARAF-2623] - Karaf client script only returns a non zero status if there is exception
 * [KARAF-2638|https://issues.apache.org/jira/browse/KARAF-2638] - Speed up karaf startup a bit by setting the specs timeout to 0
 * [KARAF-2687|https://issues.apache.org/jira/browse/KARAF-2687] - Better thread name for lock and shutdown background threads
 * [KARAF-2698|https://issues.apache.org/jira/browse/KARAF-2698] - Add -l (level) option to log:display/log:tail in order to filter messages only for a given log level (and higher)
 * [KARAF-2749|https://issues.apache.org/jira/browse/KARAF-2749] - BundleSelector should be more "selective"
 * [KARAF-2756|https://issues.apache.org/jira/browse/KARAF-2756] - Define an annotation for completers and retrieve them from the OSGi Service Registry
 * [KARAF-2791|https://issues.apache.org/jira/browse/KARAF-2791] - AddFeaturesToRepoMojo should support read version from dependency features
 * [KARAF-2801|https://issues.apache.org/jira/browse/KARAF-2801] - Fix camel-extras features repository URL
 * [KARAF-2803|https://issues.apache.org/jira/browse/KARAF-2803] - Set org.apache.aries.blueprint.preemptiveShutdown to false by default
 * [KARAF-2808|https://issues.apache.org/jira/browse/KARAF-2808] - Child containers should be able to have additional libs on the classpath
 * [KARAF-2818|https://issues.apache.org/jira/browse/KARAF-2818] - Add ECF to feature repo
 * [KARAF-2831|https://issues.apache.org/jira/browse/KARAF-2831] - Switch to pax url uber bundles
 * [KARAF-2832|https://issues.apache.org/jira/browse/KARAF-2832] - Fix exception when using the features-maven-plugin with non osgi compliant features version
 * [KARAF-2833|https://issues.apache.org/jira/browse/KARAF-2833] - Make core services independant of blueprint
 * [KARAF-2834|https://issues.apache.org/jira/browse/KARAF-2834] - Create features for aries proxy / blueprint and various karaf services
 * [KARAF-2835|https://issues.apache.org/jira/browse/KARAF-2835] - Do not include blueprint in the karaf framework
 * [KARAF-2841|https://issues.apache.org/jira/browse/KARAF-2841] - FeaturesService#listInstalledFeatures() should not return conditional features
 * [KARAF-2842|https://issues.apache.org/jira/browse/KARAF-2842] - Add an option to feature:install to install the bundles without starting it
 * [KARAF-2845|https://issues.apache.org/jira/browse/KARAF-2845] - Move SingleServiceTracker to util
 * [KARAF-2852|https://issues.apache.org/jira/browse/KARAF-2852] - Merge commands into their respective service bundle
 * [KARAF-2855|https://issues.apache.org/jira/browse/KARAF-2855] - The config:list command should sort configurations and properties
 * [KARAF-2857|https://issues.apache.org/jira/browse/KARAF-2857] - Add Solaris x86_64 support to wrapper
 * [KARAF-2859|https://issues.apache.org/jira/browse/KARAF-2859] - Decouple features/core from persistent/core
 * [KARAF-2865|https://issues.apache.org/jira/browse/KARAF-2865] - Avoid uninteresting exception stack traces while running load-test
 * [KARAF-2871|https://issues.apache.org/jira/browse/KARAF-2871] - Command description for http:* commands
 * [KARAF-2875|https://issues.apache.org/jira/browse/KARAF-2875] - Remove useless StringMap class from main
 * [KARAF-2883|https://issues.apache.org/jira/browse/KARAF-2883] - Use better version range in Spring features
 * [KARAF-2901|https://issues.apache.org/jira/browse/KARAF-2901] - Add an option to show bundle version in bundle:tree-show
 * [KARAF-2902|https://issues.apache.org/jira/browse/KARAF-2902] - Separate section for Karaf-xxx headers and sort headers
 * [KARAF-2904|https://issues.apache.org/jira/browse/KARAF-2904] - Use the osgi extender namespace for blueprint
 * [KARAF-2915|https://issues.apache.org/jira/browse/KARAF-2915] - Add flag "-bl Bundle-Level" to install command to set Bundle-Level during bundle installation.
 * [KARAF-2916|https://issues.apache.org/jira/browse/KARAF-2916] - Add fully qualified DN replacement for role search
 * [KARAF-2918|https://issues.apache.org/jira/browse/KARAF-2918] - Provide ability to set a banner prior to user login via ssh
 * [KARAF-2919|https://issues.apache.org/jira/browse/KARAF-2919] - karaf jms:* commands works in non-transacted mode
 * [KARAF-2921|https://issues.apache.org/jira/browse/KARAF-2921] - bin/karaf selecting the wrong Java VM on a computer with Java 8 installed
 * [KARAF-2927|https://issues.apache.org/jira/browse/KARAF-2927] - Allow karaf-maven-plugin integration tests to run in maven offline mode
 * [KARAF-2941|https://issues.apache.org/jira/browse/KARAF-2941] - Let jdbc be more robust against broken data sources
 * [KARAF-2944|https://issues.apache.org/jira/browse/KARAF-2944] - Add jasypt-spring31 bundle to jasypt-encryption feature
 * [KARAF-2949|https://issues.apache.org/jira/browse/KARAF-2949] - Use a jaas role to allow access to system bundles
 * [KARAF-2974|https://issues.apache.org/jira/browse/KARAF-2974] - Mentioning of version number delimiter missing in obr:deploy command help
 * [KARAF-2978|https://issues.apache.org/jira/browse/KARAF-2978] - RBAC-- recognize group configuration when use Publickey to Login
 * [KARAF-2983|https://issues.apache.org/jira/browse/KARAF-2983] - Support window size change signals in Terminal
 * [KARAF-2984|https://issues.apache.org/jira/browse/KARAF-2984] - Improve setenv script to include placeholder for extra java options
 * [KARAF-2985|https://issues.apache.org/jira/browse/KARAF-2985] - Provide a plugin to automatically generate generic requirements / dependencies for karaf internal activators
 * [KARAF-2986|https://issues.apache.org/jira/browse/KARAF-2986] - Use urls for features repository completion mapping
 * [KARAF-2988|https://issues.apache.org/jira/browse/KARAF-2988] - Add support for prerequisites on features
 * [KARAF-2994|https://issues.apache.org/jira/browse/KARAF-2994] - Use the current distribution configuration for default boot features when creating children
 * [KARAF-2995|https://issues.apache.org/jira/browse/KARAF-2995] - RBAC - the shell command acl configuration modification can't take effect unless we restart the Karaf server
 * [KARAF-3001|https://issues.apache.org/jira/browse/KARAF-3001] - RBAC - MBean Server RBAC guard should support wildcard role 
 * [KARAF-3002|https://issues.apache.org/jira/browse/KARAF-3002] - RBAC-add a jmx.acl.whitelist so that all ObjectName in this list will bypass the RBAC
 * [KARAF-3003|https://issues.apache.org/jira/browse/KARAF-3003] - Allow deployment based on generic requirements, bundles and bundle dependencies
 * [KARAF-3016|https://issues.apache.org/jira/browse/KARAF-3016] - Be able to redirect child instance std out in a file
 * [KARAF-3020|https://issues.apache.org/jira/browse/KARAF-3020] - RBAC-put "type" right after the domain when generate the PID from JMX ObjectName
 * [KARAF-3022|https://issues.apache.org/jira/browse/KARAF-3022] - RBAC - support the JMX operation match starts with a wildcard
 * [KARAF-3024|https://issues.apache.org/jira/browse/KARAF-3024] - RBAC - Support wildcard in jmx.acl.....cfg filename
 * [KARAF-3042|https://issues.apache.org/jira/browse/KARAF-3042] - Add a variable (false by default) to enable redirect to karaf.out
 * [KARAF-3045|https://issues.apache.org/jira/browse/KARAF-3045] - Simplify console branding
 * [KARAF-3073|https://issues.apache.org/jira/browse/KARAF-3073] - Add jvisualvm config in monitoring documentation
 * [KARAF-3075|https://issues.apache.org/jira/browse/KARAF-3075] - AdminService should avoid writing file in case just read instance status
 * [KARAF-3111|https://issues.apache.org/jira/browse/KARAF-3111] - Instance/Admin Service should provide more options as part of instance settings 
 * [KARAF-3112|https://issues.apache.org/jira/browse/KARAF-3112] - make stopTimeout of AdminService configurable
 * [KARAF-3119|https://issues.apache.org/jira/browse/KARAF-3119] - Do not allow empty passwords by default for ldap
 * [KARAF-3124|https://issues.apache.org/jira/browse/KARAF-3124] - Provide shell:env command
 * [KARAF-3125|https://issues.apache.org/jira/browse/KARAF-3125] - Add a possibility to cache LDAP credentials
 * [KARAF-3126|https://issues.apache.org/jira/browse/KARAF-3126] - add more specific completer for admin:start|stop command
 * [KARAF-3130|https://issues.apache.org/jira/browse/KARAF-3130] - add admin:change-ssh-host command
 * [KARAF-3134|https://issues.apache.org/jira/browse/KARAF-3134] - Log executed shell commands at debug level
 * [KARAF-3164|https://issues.apache.org/jira/browse/KARAF-3164] - Document exposing JAAS BackendEngineFactory services for the login module
 * [KARAF-3166|https://issues.apache.org/jira/browse/KARAF-3166] - Add SyncopeLoginModule (including backend)
 * [KARAF-3222|https://issues.apache.org/jira/browse/KARAF-3222] - Command description for osgi:shutdown could be improved
 * [KARAF-3246|https://issues.apache.org/jira/browse/KARAF-3246] - Rename jpa features as jpa/jpa20 and jpa21
 * [KARAF-3255|https://issues.apache.org/jira/browse/KARAF-3255] - Document jasypt property placeholder
 * [KARAF-3282|https://issues.apache.org/jira/browse/KARAF-3282] - highlight local classes/resources in "bundle:classes" command
 * [KARAF-3293|https://issues.apache.org/jira/browse/KARAF-3293] - more fine-grained way to specify the jmx.acl.whitelist.cfg 
 * [KARAF-3367|https://issues.apache.org/jira/browse/KARAF-3367] - add additional configuration options when use wrapper:install 
 * [KARAF-3368|https://issues.apache.org/jira/browse/KARAF-3368] - Support reference:file:xxx urls in startup.properties
 * [KARAF-3372|https://issues.apache.org/jira/browse/KARAF-3372] - only register HUP signal handler for non-windows platform
 * [KARAF-3373|https://issues.apache.org/jira/browse/KARAF-3373] - Log lower level root cause exception in LDAPLoginModule.doLogin()
 * [KARAF-3380|https://issues.apache.org/jira/browse/KARAF-3380] - Convert mojos to use annotations
 * [KARAF-3381|https://issues.apache.org/jira/browse/KARAF-3381] - Remove deprecated methods in InstanceService / Instance
 * [KARAF-3382|https://issues.apache.org/jira/browse/KARAF-3382] - Support configuration for custom LDAP group to JAAS role mapping
 * [KARAF-3386|https://issues.apache.org/jira/browse/KARAF-3386] - Improve InstallKarsMojo to support reference: protocol and additional feature repositories
 * [KARAF-3388|https://issues.apache.org/jira/browse/KARAF-3388] - Fix blueprint-jasypt tests
 * [KARAF-3389|https://issues.apache.org/jira/browse/KARAF-3389] - Move security configurations (for commands and jmx) to their respective features
 * [KARAF-3391|https://issues.apache.org/jira/browse/KARAF-3391] - Move Base64 into karaf util
 * [KARAF-3393|https://issues.apache.org/jira/browse/KARAF-3393] - Provide ready to use jpa20 and jpa21 features
 * [KARAF-3398|https://issues.apache.org/jira/browse/KARAF-3398] - Improve display of package:imports
 * [KARAF-3403|https://issues.apache.org/jira/browse/KARAF-3403] - bin/client Utility Throws ArrayIndexOutOfBoundsException 
 * [KARAF-3411|https://issues.apache.org/jira/browse/KARAF-3411] - windows startup scripts don't handle setenv.bat correctly
 * [KARAF-3418|https://issues.apache.org/jira/browse/KARAF-3418] - Add getFeatureRepositoryName(Uri uri) to FeatureService
 * [KARAF-3421|https://issues.apache.org/jira/browse/KARAF-3421] - Add a variable for the debug port number.
 * [KARAF-3446|https://issues.apache.org/jira/browse/KARAF-3446] - avoid Karaf client script "logout" command throwing an exception
 * [KARAF-3452|https://issues.apache.org/jira/browse/KARAF-3452] - Upgrade to maven-release-plugin 2.5.1
 * [KARAF-3453|https://issues.apache.org/jira/browse/KARAF-3453] - Create jolokia feature
 * [KARAF-3461|https://issues.apache.org/jira/browse/KARAF-3461] - bin/karaf doesn't use the provided KARAF_HOME
 * [KARAF-3478|https://issues.apache.org/jira/browse/KARAF-3478] - Switch jdbc commands to use pax-jdbc-config and pax-jdbc-config-pool
 * [KARAF-3500|https://issues.apache.org/jira/browse/KARAF-3500] - NPE throws when executing "bin/client shutdown"
 * [KARAF-3513|https://issues.apache.org/jira/browse/KARAF-3513] - JMXConnectorServer should be able to pick up the new KeystoreInstance available in container
 * [KARAF-3528|https://issues.apache.org/jira/browse/KARAF-3528] - When updating bundles, use the Bundle-UpdateLocation header
 * [KARAF-3529|https://issues.apache.org/jira/browse/KARAF-3529] - Make sure the framework resolver uses the already computed resolution
 * [KARAF-3539|https://issues.apache.org/jira/browse/KARAF-3539] - Ability to create headless shell session with a parent
 * [KARAF-3545|https://issues.apache.org/jira/browse/KARAF-3545] - The bundle:list command should display ellipsis when displaying long bundle locations
 * [KARAF-3575|https://issues.apache.org/jira/browse/KARAF-3575] - Enhance diagnostic core to allow "external" dump providers
 * [KARAF-3576|https://issues.apache.org/jira/browse/KARAF-3576] - Optimize GuardProxyCatalog#getServiceInvocationRoles
 * [KARAF-3577|https://issues.apache.org/jira/browse/KARAF-3577] - Optimize SecuredCommandConfigTransformer#generateServiceGuardConfig
 * [KARAF-3580|https://issues.apache.org/jira/browse/KARAF-3580] - FeaturesService expose register and unregister FeaturesListener methods
 * [KARAF-3581|https://issues.apache.org/jira/browse/KARAF-3581] - Optimize a bit startup time
 * [KARAF-3583|https://issues.apache.org/jira/browse/KARAF-3583] - Add option to configure log level in the client script
 * [KARAF-3584|https://issues.apache.org/jira/browse/KARAF-3584] - Add  metadata generation in the karaf-services-maven-plugin
 * [KARAF-3590|https://issues.apache.org/jira/browse/KARAF-3590] - Don't log Passwords in clear text
 * [KARAF-3619|https://issues.apache.org/jira/browse/KARAF-3619] - Add decanter feature repo to features.repo.cfg file for easier installation
 * [KARAF-3621|https://issues.apache.org/jira/browse/KARAF-3621] - Generate a more secure host key for SSH by default
 * [KARAF-3627|https://issues.apache.org/jira/browse/KARAF-3627] - Add bundle revision information to bundle:list command
 * [KARAF-3633|https://issues.apache.org/jira/browse/KARAF-3633] - Help mechanism improvements
 * [KARAF-3643|https://issues.apache.org/jira/browse/KARAF-3643] - Persistence provider features should not load aries jpa
 * [KARAF-3652|https://issues.apache.org/jira/browse/KARAF-3652] - Make RequestedState more obvious in API
 * [KARAF-3666|https://issues.apache.org/jira/browse/KARAF-3666] - Simplify Conditional#asFeature to have no arguments
 * [KARAF-3673|https://issues.apache.org/jira/browse/KARAF-3673] - Align classmate version between hibernate and hibernate-validator features
 * [KARAF-3693|https://issues.apache.org/jira/browse/KARAF-3693] - only update the instances.properties when the "read" operation detect instance pid changes
 * [KARAF-3723|https://issues.apache.org/jira/browse/KARAF-3723] - avoid the NoSuchElementException when use bin/client and there's no entry in the etc/user.properties
 * [KARAF-3738|https://issues.apache.org/jira/browse/KARAF-3738] - Karaf client should be able to read environment variables
 * [KARAF-3739|https://issues.apache.org/jira/browse/KARAF-3739] - Add eventadmin feature as featuresBoot in standard distribution

** New Feature
 * [KARAF-325|https://issues.apache.org/jira/browse/KARAF-325] - Allow features:install xyz*
 * [KARAF-365|https://issues.apache.org/jira/browse/KARAF-365] - Merge .kar files in features-maven-plugin during "add-features-to-repo" goal
 * [KARAF-413|https://issues.apache.org/jira/browse/KARAF-413] - Tab completion on path when installing bundles
 * [KARAF-502|https://issues.apache.org/jira/browse/KARAF-502] - Add the function to show wired relations of deployed bundles
 * [KARAF-522|https://issues.apache.org/jira/browse/KARAF-522] - Download from provisioning server retry
 * [KARAF-751|https://issues.apache.org/jira/browse/KARAF-751] - Provide a Timer Service in Karaf
 * [KARAF-1130|https://issues.apache.org/jira/browse/KARAF-1130] - Add profile feature
 * [KARAF-2069|https://issues.apache.org/jira/browse/KARAF-2069] - Provide a less pager command
 * [KARAF-2070|https://issues.apache.org/jira/browse/KARAF-2070] - Add support of !$ to recall the last command argument
 * [KARAF-2760|https://issues.apache.org/jira/browse/KARAF-2760] - Monitor etc/user.properties to automatically encrypt passwords
 * [KARAF-2805|https://issues.apache.org/jira/browse/KARAF-2805] - Provide a clean console and command model
 * [KARAF-2848|https://issues.apache.org/jira/browse/KARAF-2848] - Add MSSQL datasource type
 * [KARAF-2888|https://issues.apache.org/jira/browse/KARAF-2888] - New FeaturesService based on the real OSGi resolver
 * [KARAF-2900|https://issues.apache.org/jira/browse/KARAF-2900] - Allow generic requirements as condition to features
 * [KARAF-2911|https://issues.apache.org/jira/browse/KARAF-2911] - Support for Aries OSGi subsystems
 * [KARAF-2917|https://issues.apache.org/jira/browse/KARAF-2917] - Command to display bundle id
 * [KARAF-2923|https://issues.apache.org/jira/browse/KARAF-2923] - Region support in features service
 * [KARAF-2930|https://issues.apache.org/jira/browse/KARAF-2930] - Support for OSGi Repository spec in resolution
 * [KARAF-2942|https://issues.apache.org/jira/browse/KARAF-2942] - Require JDK7 for Karaf 4.x
 * [KARAF-2948|https://issues.apache.org/jira/browse/KARAF-2948] - Add su and sudo commands
 * [KARAF-2952|https://issues.apache.org/jira/browse/KARAF-2952] - Add a lifecycle for features
 * [KARAF-2961|https://issues.apache.org/jira/browse/KARAF-2961] - When a feature is generated from a bundle project, include that bundle in the feature
 * [KARAF-3006|https://issues.apache.org/jira/browse/KARAF-3006] - Provide an EventAdmin based audit trail for JAAS
 * [KARAF-3025|https://issues.apache.org/jira/browse/KARAF-3025] - Add an instance:restart command
 * [KARAF-3026|https://issues.apache.org/jira/browse/KARAF-3026] - Add a dependency="true" flag on feature dependencies
 * [KARAF-3034|https://issues.apache.org/jira/browse/KARAF-3034] - Automatically create data sources from configuration files
 * [KARAF-3058|https://issues.apache.org/jira/browse/KARAF-3058] - add backing engine serivce for org.apache.karaf.jaas.modules.publickey.PublickeyLoginModule
 * [KARAF-3059|https://issues.apache.org/jira/browse/KARAF-3059] - add a flag to bin/client so that it can read private key from a specified location
 * [KARAF-3104|https://issues.apache.org/jira/browse/KARAF-3104] - Add the connector feature from ServiceMix
 * [KARAF-3205|https://issues.apache.org/jira/browse/KARAF-3205] - Refactor create-dump to be more low level
 * [KARAF-3228|https://issues.apache.org/jira/browse/KARAF-3228] - Add Spring 4.1.2.RELEASE_1 features
 * [KARAF-3289|https://issues.apache.org/jira/browse/KARAF-3289] - Add a while loop command
 * [KARAF-3387|https://issues.apache.org/jira/browse/KARAF-3387] - Add a verify-features goal to validate the feature with a real OSGi resolution
 * [KARAF-3404|https://issues.apache.org/jira/browse/KARAF-3404] - Add a notion of profiles to karaf
 * [KARAF-3405|https://issues.apache.org/jira/browse/KARAF-3405] - Support for "mostly static" karaf instances
 * [KARAF-3410|https://issues.apache.org/jira/browse/KARAF-3410] - Add a maven proxy servlet
 * [KARAF-3434|https://issues.apache.org/jira/browse/KARAF-3434] - Support env:XXX subtitution for environment variables
 * [KARAF-3435|https://issues.apache.org/jira/browse/KARAF-3435] - Support default/alternate values for variable substitution
 * [KARAF-3455|https://issues.apache.org/jira/browse/KARAF-3455] - Support for custom command parsers
 * [KARAF-3481|https://issues.apache.org/jira/browse/KARAF-3481] - Upgrade to OSGi r6
 * [KARAF-3524|https://issues.apache.org/jira/browse/KARAF-3524] - Features on conditionals are not installed
 * [KARAF-3541|https://issues.apache.org/jira/browse/KARAF-3541] - Move Karaf boot libraries into their own folder
 * [KARAF-3546|https://issues.apache.org/jira/browse/KARAF-3546] - Provide a programmatic way to build custom karaf distributions outside of maven
 * [KARAF-3574|https://issues.apache.org/jira/browse/KARAF-3574] - Improve tooling support for karaf libraries
 * [KARAF-3592|https://issues.apache.org/jira/browse/KARAF-3592] - Add jaas commands to create group and list group
 * [KARAF-3635|https://issues.apache.org/jira/browse/KARAF-3635] - Provide a black list for features

** Question
 * [KARAF-3264|https://issues.apache.org/jira/browse/KARAF-3264] - What is the AND operator in shell:if ?

** Task
 * [KARAF-2765|https://issues.apache.org/jira/browse/KARAF-2765] - Upgrade to Spring 3.2.7.RELEASE
 * [KARAF-2767|https://issues.apache.org/jira/browse/KARAF-2767] - Update to commons-fileupload 1.3.1
 * [KARAF-2844|https://issues.apache.org/jira/browse/KARAF-2844] - Sync skipTests and invoker.skip
 * [KARAF-3068|https://issues.apache.org/jira/browse/KARAF-3068] - Update to Spring 3.2.9.RELEASE_1
 * [KARAF-3401|https://issues.apache.org/jira/browse/KARAF-3401] - Typo in users.properties
 * [KARAF-3422|https://issues.apache.org/jira/browse/KARAF-3422] - Upgrade pax-url dependency to 2.3.0
 * [KARAF-3464|https://issues.apache.org/jira/browse/KARAF-3464] - Upgrade to Pax CDI 0.11.0
 * [KARAF-3629|https://issues.apache.org/jira/browse/KARAF-3629] - Use the resolver service from the system bundle

** Test
 * [KARAF-3752|https://issues.apache.org/jira/browse/KARAF-3752] - Check that resolver does not mandate required services to be present

** Wish
 * [KARAF-3444|https://issues.apache.org/jira/browse/KARAF-3444] - ExecuteAction - consider log level INFO changing to DEBUG




                    Apache Karaf 4.0.0.M2
                    =====================

  !! This is a technology preview release of Apache Karaf, and should NOT be considered production ready !!

  Apache Karaf 4.0.0.M2 represents a major refactoring of the project, and includes numerous new features. We ask that users provide the community with their feed back so that the full Apache Karaf 4.0.0 release can be as feature complete and stable as possible.

  The 4.0.x line will ship with OSGi Rev5 support via Felix 4.4.1 and Equinox 3.9.1-v20140110-1610, and a completely refactored internal framework without Blueprint for internal usage. From a users point of view these changes will yield a smaller, more efficient Karaf core. There will be a Blueprint feature present in Karaf so that you can easily install Blueprint based applications. You will always be capable of using Blueprint in Karaf. So the main difference from a user perspective is that you’d need to depend on the Blueprint service if you need it. New features since the M1 release include: Support for custom command parsers, a verify-features goal to validate the feature with a real OSGi resolution, and a backing engine serivce for org.apache.karaf.jaas.modules.publickey.PublickeyLoginModule. 

 For more information, please see the below changelog:

 ChangeLog:
 ----------

** Bug
 * [KARAF-2153|https://issues.apache.org/jira/browse/KARAF-2153] - wrong path in JAVA_ENDORSED_DIRS and JAVA_EXT_DIRS in bin/karaf script from snapshots
 * [KARAF-3052|https://issues.apache.org/jira/browse/KARAF-3052] - Allow passing through custom ldap properties
 * [KARAF-3054|https://issues.apache.org/jira/browse/KARAF-3054] - client doesn't load using IBM JDK
 * [KARAF-3055|https://issues.apache.org/jira/browse/KARAF-3055] - tabbing in subshell displays more than commands of the current subshell
 * [KARAF-3056|https://issues.apache.org/jira/browse/KARAF-3056] - Upgrade to JLine 2.12
 * [KARAF-3061|https://issues.apache.org/jira/browse/KARAF-3061] - Problems with jaas:realms / jaas:manage commands when using multiple realms of the same name
 * [KARAF-3064|https://issues.apache.org/jira/browse/KARAF-3064] - SSH Console regenerates the SSH key on each restart
 * [KARAF-3071|https://issues.apache.org/jira/browse/KARAF-3071] - etc/org.ops4j.pax.url.mvn.cfg file contains replaced string in instances that should not be
 * [KARAF-3072|https://issues.apache.org/jira/browse/KARAF-3072] - Instance etc files are not sync with the root etc files
 * [KARAF-3085|https://issues.apache.org/jira/browse/KARAF-3085] - features:chooseurl/feature:repo-add should support "real" version range
 * [KARAF-3092|https://issues.apache.org/jira/browse/KARAF-3092] - Remove ${services-${karaf.framework}} variables from org.osgi.framework.system.capabilities
 * [KARAF-3096|https://issues.apache.org/jira/browse/KARAF-3096] - Karaf doesn't start with Equinox 3.9.1
 * [KARAF-3098|https://issues.apache.org/jira/browse/KARAF-3098] - Check the usage of config.properties in main module
 * [KARAF-3103|https://issues.apache.org/jira/browse/KARAF-3103] - config:edit does not correctly handle configuration visibility for --factory calls.
 * [KARAF-3105|https://issues.apache.org/jira/browse/KARAF-3105] - Cannot use LDAPLoginModule with ActiveDirectory
 * [KARAF-3115|https://issues.apache.org/jira/browse/KARAF-3115] - add address flag when create a child instance
 * [KARAF-3123|https://issues.apache.org/jira/browse/KARAF-3123] - BundleWatcherImpl tries to stop bundle fragments
 * [KARAF-3127|https://issues.apache.org/jira/browse/KARAF-3127] - bin/instance  script doesn't work
 * [KARAF-3128|https://issues.apache.org/jira/browse/KARAF-3128] - Update ops4j/oss sonatype repositories URL
 * [KARAF-3129|https://issues.apache.org/jira/browse/KARAF-3129] - RAT plugin error on ssh key files
 * [KARAF-3138|https://issues.apache.org/jira/browse/KARAF-3138] - Having eventadmin listed as a boot features cause problems in other bundles startup
 * [KARAF-3149|https://issues.apache.org/jira/browse/KARAF-3149] - Karaf chooseurl for jclouds is wrong
 * [KARAF-3150|https://issues.apache.org/jira/browse/KARAF-3150] - kar:install doesn't support classifier in a MVN URL
 * [KARAF-3151|https://issues.apache.org/jira/browse/KARAF-3151] - Blueprint managed-properties doesn't call the update-method
 * [KARAF-3154|https://issues.apache.org/jira/browse/KARAF-3154] - Feature repo org.ops4j.pax.cdi-0.7.0 contains broken feature
 * [KARAF-3158|https://issues.apache.org/jira/browse/KARAF-3158] - Incorrect javax.annotation version for java7
 * [KARAF-3159|https://issues.apache.org/jira/browse/KARAF-3159] - Fix feature deployer documentation about auto installation of the features
 * [KARAF-3162|https://issues.apache.org/jira/browse/KARAF-3162] - Update the security documentation as the PropertiesConverter doesn't exist anymore
 * [KARAF-3170|https://issues.apache.org/jira/browse/KARAF-3170] - Java8 packages related to JavaFX are missing
 * [KARAF-3176|https://issues.apache.org/jira/browse/KARAF-3176] - sshRole and jmxRole are not functionnal
 * [KARAF-3180|https://issues.apache.org/jira/browse/KARAF-3180] - openwebbeans feature doesn't install
 * [KARAF-3192|https://issues.apache.org/jira/browse/KARAF-3192] - Don't throw IllegalStateException when can't find attribute for a certain bean
 * [KARAF-3196|https://issues.apache.org/jira/browse/KARAF-3196] - Export sun.misc package from the system bundle
 * [KARAF-3197|https://issues.apache.org/jira/browse/KARAF-3197] - Can't type anything in the console on Windows platform
 * [KARAF-3204|https://issues.apache.org/jira/browse/KARAF-3204] - Avoid calls to Configuration#setBundleLocation(null) which are not needed
 * [KARAF-3210|https://issues.apache.org/jira/browse/KARAF-3210] - karaf:features-generate-descriptor fails with Maven 3.1.x and 3.2.x : required class was missing ... org/sonatype/aether/RepositorySystem
 * [KARAF-3211|https://issues.apache.org/jira/browse/KARAF-3211] - Error while installing transaction feature
 * [KARAF-3212|https://issues.apache.org/jira/browse/KARAF-3212] - karaf.data variable not correctly resolved while installing the pax-http feature
 * [KARAF-3213|https://issues.apache.org/jira/browse/KARAF-3213] - ConcurrentModification exception in FileInstall/Upgrade to Felix FileInstall 3.4.1
 * [KARAF-3224|https://issues.apache.org/jira/browse/KARAF-3224] - Support wrap URL with option
 * [KARAF-3230|https://issues.apache.org/jira/browse/KARAF-3230] - jndi feature doesn't install
 * [KARAF-3232|https://issues.apache.org/jira/browse/KARAF-3232] - Feature installation looks for MANIFEST as first position in the jar
 * [KARAF-3248|https://issues.apache.org/jira/browse/KARAF-3248] - bundle:refresh doesn't work without argument
 * [KARAF-3249|https://issues.apache.org/jira/browse/KARAF-3249] - Error: "usage: dirname path" when Karaf is located under path with spaces
 * [KARAF-3250|https://issues.apache.org/jira/browse/KARAF-3250] - JVM options ignored on Windows
 * [KARAF-3251|https://issues.apache.org/jira/browse/KARAF-3251] - Karaf maven plugin does not install bundles in conditional as needed
 * [KARAF-3261|https://issues.apache.org/jira/browse/KARAF-3261] - jdbc command (using JdbcConnector.java) does not honour service ranking and throws IllegalArgumentException instead
 * [KARAF-3273|https://issues.apache.org/jira/browse/KARAF-3273] - zodiac.springsource.com repo is missing from the default repository set (required for gemini-blueprint feature)
 * [KARAF-3284|https://issues.apache.org/jira/browse/KARAF-3284] - The shell-log bundle should not import org.apache.log4j.* package
 * [KARAF-3288|https://issues.apache.org/jira/browse/KARAF-3288] - karaf script doesn't start on Solaris if JAVA_HOME is not set
 * [KARAF-3325|https://issues.apache.org/jira/browse/KARAF-3325] - Karaf throws SocketTimeoutException and exits after 49 days
 * [KARAF-3327|https://issues.apache.org/jira/browse/KARAF-3327] - Incorrect LC_CTYPE parsing
 * [KARAF-3329|https://issues.apache.org/jira/browse/KARAF-3329] - javax.annotation-version in jre.properties does not reflect version of Java SE
 * [KARAF-3330|https://issues.apache.org/jira/browse/KARAF-3330] - embedded Karaf web demo doesn't deploy since 3.0.2
 * [KARAF-3333|https://issues.apache.org/jira/browse/KARAF-3333] - CXF 3.0.1 feature install fails in karaf
 * [KARAF-3335|https://issues.apache.org/jira/browse/KARAF-3335] - Endorsed org.apache.karaf.exception-3.0.2 jar causes issues with Java 8 Nashorn scripts
 * [KARAF-3350|https://issues.apache.org/jira/browse/KARAF-3350] - The log:display command fails with CNFE if the pax-logging-service bundle has been refreshed
 * [KARAF-3352|https://issues.apache.org/jira/browse/KARAF-3352] - Generate html and pdf artifacts in the manual
 * [KARAF-3365|https://issues.apache.org/jira/browse/KARAF-3365] - typo in org.ops4j.pax.url.mvn.cfg
 * [KARAF-3369|https://issues.apache.org/jira/browse/KARAF-3369] - karaf-maven-plugin 3.0.2 breaks deployment to Nexus
 * [KARAF-3370|https://issues.apache.org/jira/browse/KARAF-3370] - itests using ssh or cdi related fail
 * [KARAF-3377|https://issues.apache.org/jira/browse/KARAF-3377] - Starting Karaf on Windows changes console title
 * [KARAF-3379|https://issues.apache.org/jira/browse/KARAF-3379] - jpa feature incompatible to hibernate 4.3 feature
 * [KARAF-3383|https://issues.apache.org/jira/browse/KARAF-3383] - Avoid exception causing completion to fail if a completer class can not be loaded (because of an optional package for example)
 * [KARAF-3384|https://issues.apache.org/jira/browse/KARAF-3384] - Commands are not unregistered correctly when a bundle is stopped
 * [KARAF-3385|https://issues.apache.org/jira/browse/KARAF-3385] - MultiException stacktraces do not display inner causes
 * [KARAF-3397|https://issues.apache.org/jira/browse/KARAF-3397] - FeaturesServiceMBeanImpl throws an Exception when listening the features
 * [KARAF-3399|https://issues.apache.org/jira/browse/KARAF-3399] - The host is not refreshed if a new fragment is installed
 * [KARAF-3408|https://issues.apache.org/jira/browse/KARAF-3408] - feature:repo-refresh doesn't work
 * [KARAF-3412|https://issues.apache.org/jira/browse/KARAF-3412] - should add javax.management.builder.initial flag for Karaf child instance
 * [KARAF-3413|https://issues.apache.org/jira/browse/KARAF-3413] - should also associate the role to run executeScript
 * [KARAF-3414|https://issues.apache.org/jira/browse/KARAF-3414] - SshCommandTestBase uses some deprecated sshd APIs
 * [KARAF-3416|https://issues.apache.org/jira/browse/KARAF-3416] - AutoEncryptionSupport randomly raises NullPointerException at startup
 * [KARAF-3420|https://issues.apache.org/jira/browse/KARAF-3420] - Java Debug options are Pre Java 5.0
 * [KARAF-3423|https://issues.apache.org/jira/browse/KARAF-3423] - Can't connect to a running instance with instance:connect
 * [KARAF-3425|https://issues.apache.org/jira/browse/KARAF-3425] - Need a solution to add a "specific version" of a feature in karaf-maven-plugin 
 * [KARAF-3428|https://issues.apache.org/jira/browse/KARAF-3428] - Upgrade to Pax CDI 0.10.0
 * [KARAF-3430|https://issues.apache.org/jira/browse/KARAF-3430] - User name/password missing in connection factory created with jms:create
 * [KARAF-3441|https://issues.apache.org/jira/browse/KARAF-3441] - The admin:stop Command Does Not Zero Out Root Container PID
 * [KARAF-3459|https://issues.apache.org/jira/browse/KARAF-3459] - PropertiesLoginModule throws NPE when callbackHandler is null
 * [KARAF-3460|https://issues.apache.org/jira/browse/KARAF-3460] - NPE in AutoEncryptionSupport.run
 * [KARAF-3487|https://issues.apache.org/jira/browse/KARAF-3487] - config:edit '(service.factorypid=myconfig)' throws NPE
 * [KARAF-3488|https://issues.apache.org/jira/browse/KARAF-3488] - Exiting Karaf (shutdown command or CTRL-D) displays "CLOSING SESSION!" on System.out
 * [KARAF-3492|https://issues.apache.org/jira/browse/KARAF-3492] - Can't connect to Karaf sshd using key authentication
 * [KARAF-3499|https://issues.apache.org/jira/browse/KARAF-3499] - Missing properties on the eventadmin events for jaas 
 * [KARAF-3501|https://issues.apache.org/jira/browse/KARAF-3501] - bin/client script doesn't work in latest 4.0 SNAPSHOT kit

** Dependency upgrade
 * [KARAF-3046|https://issues.apache.org/jira/browse/KARAF-3046] - Upgrade to gogo runtime 0.12.1
 * [KARAF-3049|https://issues.apache.org/jira/browse/KARAF-3049] - Upgrade to sshd 0.11
 * [KARAF-3101|https://issues.apache.org/jira/browse/KARAF-3101] - Upgrade to Spring 4.0.5.RELEASE
 * [KARAF-3106|https://issues.apache.org/jira/browse/KARAF-3106] - Upgrade to blueprint core 1.4.1
 * [KARAF-3109|https://issues.apache.org/jira/browse/KARAF-3109] - Upgrade to Pax Exam 4.0.0
 * [KARAF-3116|https://issues.apache.org/jira/browse/KARAF-3116] - Upgrade to Felix Framework 4.4.1
 * [KARAF-3120|https://issues.apache.org/jira/browse/KARAF-3120] - Upgrade to Aries JPA 1.0.2
 * [KARAF-3121|https://issues.apache.org/jira/browse/KARAF-3121] - Upgrade to Aries Blueprint Annotation 1.0.1
 * [KARAF-3131|https://issues.apache.org/jira/browse/KARAF-3131] - Upgrade to Hibernate 4.2.15.Final/4.3.6.Final
 * [KARAF-3140|https://issues.apache.org/jira/browse/KARAF-3140] - Upgrade to sshd 0.12.0
 * [KARAF-3156|https://issues.apache.org/jira/browse/KARAF-3156] - Upgrade to Pax CDI 0.8.0
 * [KARAF-3157|https://issues.apache.org/jira/browse/KARAF-3157] - Upgrade to Pax Exam 4.1.0
 * [KARAF-3171|https://issues.apache.org/jira/browse/KARAF-3171] - Upgrade to Aries Blueprint CM 1.0.4
 * [KARAF-3182|https://issues.apache.org/jira/browse/KARAF-3182] - Upgrade to Felix EventAdmin 1.4.0
 * [KARAF-3183|https://issues.apache.org/jira/browse/KARAF-3183] - Upgrade to bndlib 2.3.0
 * [KARAF-3184|https://issues.apache.org/jira/browse/KARAF-3184] - Upgrade to commons-beanutils 1.9.2
 * [KARAF-3185|https://issues.apache.org/jira/browse/KARAF-3185] - Upgrade to Felix BundleRepository 2.0.2
 * [KARAF-3198|https://issues.apache.org/jira/browse/KARAF-3198] - Cleanup Pax Swissbox dependencies
 * [KARAF-3201|https://issues.apache.org/jira/browse/KARAF-3201] - Upgrade to pax-logging 1.7.4
 * [KARAF-3226|https://issues.apache.org/jira/browse/KARAF-3226] - Upgrade to Spring 4.0.7.RELEASE
 * [KARAF-3227|https://issues.apache.org/jira/browse/KARAF-3227] - Upgrade to Spring 3.2.11.RELEASE
 * [KARAF-3229|https://issues.apache.org/jira/browse/KARAF-3229] - Upgrade to Felix EventAdmin 1.4.2
 * [KARAF-3233|https://issues.apache.org/jira/browse/KARAF-3233] - Upgrade to Pax Exam 4.2.0
 * [KARAF-3243|https://issues.apache.org/jira/browse/KARAF-3243] - Upgrade to Pax URL 2.2.0
 * [KARAF-3265|https://issues.apache.org/jira/browse/KARAF-3265] - Upgrade to Aries Blueprint CM 1.0.5
 * [KARAF-3281|https://issues.apache.org/jira/browse/KARAF-3281] - Upgrade to Pax Logging 1.8.0 (log4j v2 support)
 * [KARAF-3290|https://issues.apache.org/jira/browse/KARAF-3290] - Upgrade to felix gogo runtime 0.14.0
 * [KARAF-3291|https://issues.apache.org/jira/browse/KARAF-3291] - Upgrade to Pax Exam 4.3.0
 * [KARAF-3304|https://issues.apache.org/jira/browse/KARAF-3304] - Upgrade to Pax CDI 0.9.0
 * [KARAF-3305|https://issues.apache.org/jira/browse/KARAF-3305] - Upgrade to Aries Blueprint Core 1.4.2
 * [KARAF-3306|https://issues.apache.org/jira/browse/KARAF-3306] - Upgrade to Aries JNDI API 1.1.0
 * [KARAF-3307|https://issues.apache.org/jira/browse/KARAF-3307] - Upgrade to Aries JPA API 1.0.2/JPA Container 1.0.2/JPA Blueprint Aries 1.0.4/JPA Container Context 1.0.4
 * [KARAF-3308|https://issues.apache.org/jira/browse/KARAF-3308] - Upgade to Aries Proxy Impl 1.0.4
 * [KARAF-3309|https://issues.apache.org/jira/browse/KARAF-3309] - Upgrade to Felix Maven Bundle Plugin 2.5.3
 * [KARAF-3311|https://issues.apache.org/jira/browse/KARAF-3311] - Upgrade to Pax Tinybundles 2.1.0
 * [KARAF-3312|https://issues.apache.org/jira/browse/KARAF-3312] - Upgrade to maven-assembly-plugin 2.4.1
 * [KARAF-3313|https://issues.apache.org/jira/browse/KARAF-3313] - Upgrade to maven-compiler-plugin 3.2
 * [KARAF-3314|https://issues.apache.org/jira/browse/KARAF-3314] - Upgrade to maven-dependency-plugin 2.9
 * [KARAF-3315|https://issues.apache.org/jira/browse/KARAF-3315] - Upgrade to maven-jar-plugin 2.5
 * [KARAF-3316|https://issues.apache.org/jira/browse/KARAF-3316] - Upgrade to maven-site-plugin 3.4
 * [KARAF-3317|https://issues.apache.org/jira/browse/KARAF-3317] - Upgrade to maven-source-plugin 2.4
 * [KARAF-3318|https://issues.apache.org/jira/browse/KARAF-3318] - Upgrade to maven-surefire-plugin 2.17
 * [KARAF-3319|https://issues.apache.org/jira/browse/KARAF-3319] - Upgrade to maven-war-plugin 2.5
 * [KARAF-3320|https://issues.apache.org/jira/browse/KARAF-3320] - Upgrade to apache-rat-plugin 0.11
 * [KARAF-3321|https://issues.apache.org/jira/browse/KARAF-3321] - Upgrade to build-helper-maven-plugin 1.9.1
 * [KARAF-3322|https://issues.apache.org/jira/browse/KARAF-3322] - Upgrade to exec-maven-plugin 1.3.2
 * [KARAF-3331|https://issues.apache.org/jira/browse/KARAF-3331] - Upgrade to Aries Transaction Manager 1.1.1
 * [KARAF-3338|https://issues.apache.org/jira/browse/KARAF-3338] - Upgrade to Apache POM 15
 * [KARAF-3353|https://issues.apache.org/jira/browse/KARAF-3353] - Upgrade jandex in hibernate feature to avoid wrapping
 * [KARAF-3396|https://issues.apache.org/jira/browse/KARAF-3396] - Upgrade to pax-logging 1.8.1
 * [KARAF-3406|https://issues.apache.org/jira/browse/KARAF-3406] - Upgrade to pax-url 2.2
 * [KARAF-3407|https://issues.apache.org/jira/browse/KARAF-3407] - Upgrade to felix utils 1.6.2
 * [KARAF-3470|https://issues.apache.org/jira/browse/KARAF-3470] - Upgrade to Pax Exam 4.4.0
 * [KARAF-3473|https://issues.apache.org/jira/browse/KARAF-3473] - Upgrade to Pax Web 4.0.2
 * [KARAF-3474|https://issues.apache.org/jira/browse/KARAF-3474] - Use Pax Web 4.1.0

** Documentation
 * [KARAF-3066|https://issues.apache.org/jira/browse/KARAF-3066] - Improve OpenEJB documentation in manual
 * [KARAF-3167|https://issues.apache.org/jira/browse/KARAF-3167] - Document the configfile override behaviour

** Improvement
 * [KARAF-1025|https://issues.apache.org/jira/browse/KARAF-1025] - Explicit Property Name in Karaf System Console
 * [KARAF-3045|https://issues.apache.org/jira/browse/KARAF-3045] - Simplify console branding
 * [KARAF-3073|https://issues.apache.org/jira/browse/KARAF-3073] - Add jvisualvm config in monitoring documentation
 * [KARAF-3075|https://issues.apache.org/jira/browse/KARAF-3075] - AdminService should avoid writing file in case just read instance status
 * [KARAF-3111|https://issues.apache.org/jira/browse/KARAF-3111] - Instance/Admin Service should provide more options as part of instance settings 
 * [KARAF-3112|https://issues.apache.org/jira/browse/KARAF-3112] - make stopTimeout of AdminService configurable
 * [KARAF-3119|https://issues.apache.org/jira/browse/KARAF-3119] - Do not allow empty passwords by default for ldap
 * [KARAF-3124|https://issues.apache.org/jira/browse/KARAF-3124] - Provide shell:env command
 * [KARAF-3125|https://issues.apache.org/jira/browse/KARAF-3125] - Add a possibility to cache LDAP credentials
 * [KARAF-3126|https://issues.apache.org/jira/browse/KARAF-3126] - add more specific completer for admin:start|stop command
 * [KARAF-3130|https://issues.apache.org/jira/browse/KARAF-3130] - add admin:change-ssh-host command
 * [KARAF-3134|https://issues.apache.org/jira/browse/KARAF-3134] - Log executed shell commands at debug level
 * [KARAF-3164|https://issues.apache.org/jira/browse/KARAF-3164] - Document exposing JAAS BackendEngineFactory services for the login module
 * [KARAF-3166|https://issues.apache.org/jira/browse/KARAF-3166] - Add SyncopeLoginModule (including backend)
 * [KARAF-3222|https://issues.apache.org/jira/browse/KARAF-3222] - Command description for osgi:shutdown could be improved
 * [KARAF-3246|https://issues.apache.org/jira/browse/KARAF-3246] - Rename jpa features as jpa/jpa20 and jpa21
 * [KARAF-3255|https://issues.apache.org/jira/browse/KARAF-3255] - Document jasypt property placeholder
 * [KARAF-3293|https://issues.apache.org/jira/browse/KARAF-3293] - more fine-grained way to specify the jmx.acl.whitelist.cfg 
 * [KARAF-3367|https://issues.apache.org/jira/browse/KARAF-3367] - add additional configuration options when use wrapper:install 
 * [KARAF-3368|https://issues.apache.org/jira/browse/KARAF-3368] - Support reference:file:xxx urls in startup.properties
 * [KARAF-3372|https://issues.apache.org/jira/browse/KARAF-3372] - only register HUP signal handler for non-windows platform
 * [KARAF-3380|https://issues.apache.org/jira/browse/KARAF-3380] - Convert mojos to use annotations
 * [KARAF-3381|https://issues.apache.org/jira/browse/KARAF-3381] - Remove deprecated methods in InstanceService / Instance
 * [KARAF-3382|https://issues.apache.org/jira/browse/KARAF-3382] - Support configuration for custom LDAP group to JAAS role mapping
 * [KARAF-3386|https://issues.apache.org/jira/browse/KARAF-3386] - Improve InstallKarsMojo to support reference: protocol and additional feature repositories
 * [KARAF-3389|https://issues.apache.org/jira/browse/KARAF-3389] - Move security configurations (for commands and jmx) to their respective features
 * [KARAF-3391|https://issues.apache.org/jira/browse/KARAF-3391] - Move Base64 into karaf util
 * [KARAF-3393|https://issues.apache.org/jira/browse/KARAF-3393] - Provide ready to use jpa20 and jpa21 features
 * [KARAF-3398|https://issues.apache.org/jira/browse/KARAF-3398] - Improve display of package:imports
 * [KARAF-3403|https://issues.apache.org/jira/browse/KARAF-3403] - bin/client Utility Throws ArrayIndexOutOfBoundsException 
 * [KARAF-3411|https://issues.apache.org/jira/browse/KARAF-3411] - windows startup scripts don't handle setenv.bat correctly
 * [KARAF-3418|https://issues.apache.org/jira/browse/KARAF-3418] - Add getFeatureRepositoryName(Uri uri) to FeatureService
 * [KARAF-3421|https://issues.apache.org/jira/browse/KARAF-3421] - Add a variable for the debug port number.
 * [KARAF-3446|https://issues.apache.org/jira/browse/KARAF-3446] - avoid Karaf client script "logout" command throwing an exception
 * [KARAF-3452|https://issues.apache.org/jira/browse/KARAF-3452] - Upgrade to maven-release-plugin 2.5.1
 * [KARAF-3500|https://issues.apache.org/jira/browse/KARAF-3500] - NPE throws when executing "bin/client shutdown"
 * [KARAF-3504|https://issues.apache.org/jira/browse/KARAF-3504] - Make instance:create less verbose in the log

** New Feature
 * [KARAF-3058|https://issues.apache.org/jira/browse/KARAF-3058] - add backing engine serivce for org.apache.karaf.jaas.modules.publickey.PublickeyLoginModule
 * [KARAF-3059|https://issues.apache.org/jira/browse/KARAF-3059] - add a flag to bin/client so that it can read private key from a specified location
 * [KARAF-3104|https://issues.apache.org/jira/browse/KARAF-3104] - Add the connector feature from ServiceMix
 * [KARAF-3205|https://issues.apache.org/jira/browse/KARAF-3205] - Refactor create-dump to be more low level
 * [KARAF-3228|https://issues.apache.org/jira/browse/KARAF-3228] - Add Spring 4.1.2.RELEASE_1 features
 * [KARAF-3289|https://issues.apache.org/jira/browse/KARAF-3289] - Add a while loop command
 * [KARAF-3387|https://issues.apache.org/jira/browse/KARAF-3387] - Add a verify-features goal to validate the feature with a real OSGi resolution
 * [KARAF-3410|https://issues.apache.org/jira/browse/KARAF-3410] - Add a maven proxy servlet
 * [KARAF-3434|https://issues.apache.org/jira/browse/KARAF-3434] - Support env:XXX subtitution for environment variables
 * [KARAF-3435|https://issues.apache.org/jira/browse/KARAF-3435] - Support default/alternate values for variable substitution
 * [KARAF-3455|https://issues.apache.org/jira/browse/KARAF-3455] - Support for custom command parsers

** Question
 * [KARAF-3264|https://issues.apache.org/jira/browse/KARAF-3264] - What is the AND operator in shell:if ?

** Task
 * [KARAF-3068|https://issues.apache.org/jira/browse/KARAF-3068] - Update to Spring 3.2.9.RELEASE_1
 * [KARAF-3401|https://issues.apache.org/jira/browse/KARAF-3401] - Typo in users.properties
 * [KARAF-3422|https://issues.apache.org/jira/browse/KARAF-3422] - Upgrade pax-url dependency to 2.3.0

** Wish
 * [KARAF-3444|https://issues.apache.org/jira/browse/KARAF-3444] - ExecuteAction - consider log level INFO changing to DEBUG


                    Apache Karaf 4.0.0.M1
                    =====================

  !! This is a technology preview release of Apache Karaf, and should NOT be considered production ready !!

  Apache Karaf 4.0.0.M1 represents a major refactoring of the project, and includes numerous new features. We ask that users provide the community with their feed back so that the full Apache Karaf 4.0.0 release can be as feature complete and stable as possible.

  The 4.0.x line will ship with OSGi Rev5 support via Felix 4.4.1 and Equinox 3.9.1-v20140110-1610, and a completely refactored internal framework without Blueprint for internal usage. From a users point of view these changes will yield a smaller, more efficient Karaf core. There will be a Blueprint feature present in Karaf so that you can easily install Blueprint based applications. You will always be capable of using Blueprint in Karaf. So the main difference from a user perspective is that you’d need to depend on the Blueprint service if you need it. 


                    Apache Karaf 3.0.0
                    ==================

  This is a major new release of Apache Karaf, containing many refactorings, OSGi rev 5 support, wide ranging dependency upgrades, and new commands. It is strongly recommended that users fully test their application on this release before migrating from Karaf 2.x.

  Migration
  ---------

  karaf-maven-plugin:
  For the goal features-add-to-repository. The karaf core features are not added automatically anymore. You have to add the needed ones in descriptors.

  Changelog
  ---------

** Sub-task
    * [KARAF-305] - New maven goal to create a kar file from a given feature / feature set
    * [KARAF-1095] - Update Branding Shell demo
    * [KARAF-1096] - Update Custom Command demo
    * [KARAF-1098] - Update Dump Provider demo
    * [KARAF-1099] - Update Web demo
    * [KARAF-1275] - Refactor bundle modules into core, command, management
    * [KARAF-1457] - Revert Aries JMX Update on SCR Management Component
    * [KARAF-1524] - Support creating a kar from the console
    * [KARAF-2228] - Karaf.webconsole uses wrong version in export-package header
    * [KARAF-2229] - Adapt karaf.webconsole package-imports/exports to felix.webconsole all-in-one bundle

** Bug
    * [KARAF-18] - features:list fails to show which bundles have been installed by featuresBoot if any exception is thrown during installation
    * [KARAF-281] - History using up arrow does not work on windows
    * [KARAF-384] - Cannot find some jar in ext directory
    * [KARAF-398] - Features schema is not correct
    * [KARAF-440] - features-maven-plugin throws NullPointerException maven 3.0.2
    * [KARAF-451] - Trunk build is broken
    * [KARAF-456] - Artifact versions named in the documentation are not replaced with the version of the current project
    * [KARAF-457] - Merge 2.2.x assemblies structure to trunk
    * [KARAF-468] - The admin InstanceImpl class should use the util properties for loading / storing rmiRegistryPort , sshPort
    * [KARAF-472] - features-maven-plugin: TAB-characters in feature-repository lead to resolution-errors in add-features-to-repo
    * [KARAF-479] - Console doesn't like it when the console window is to small - no line wrapping for commands
    * [KARAF-493] - Various site fixes
    * [KARAF-496] - Karaf prompt displayed twice
    * [KARAF-499] - Unable to load simple standalone JSF 2.0 webapp - JSF's implementation's META-INF/*.tld files are not scanned at startup
    * [KARAF-504] - Features Maven Plugin does not work with Maven 3
    * [KARAF-506] - The config shell commands offer no way to delete a command
    * [KARAF-507] - The config shell completer does not allow completion of factory based pids
    * [KARAF-508] - The config:edit create does not allow the creation of factory configs
    * [KARAF-509] - The config:update command does not save factory configurations to the correct file
    * [KARAF-512] - WebConsole installation failed due to missing jetty-jaas feature
    * [KARAF-518] - Unable to load features.xml with included schema attribute
    * [KARAF-519] - Jline behavior problem when pasting long lines
    * [KARAF-521] - Executing complex scripts is extremely difficult
    * [KARAF-525] - Bundles listed in etc/startup.properties should only installed the first time
    * [KARAF-527] - The console bundle should indicate it provides the gogo related services
    * [KARAF-528] - Error while using correct feature descriptor in features-maven-plugin
    * [KARAF-534] - Startlevel: Strange deployment behaviour
    * [KARAF-535] - Description for List command incorrectly claims Threshold default is -1
    * [KARAF-536] - Backspace no longer works in Putty after using 'connect' command to connect to other instance, and commands are printed in only 2 columns.
    * [KARAF-537] - admin.bat prints stacktraces to standard out
    * [KARAF-538] - Dependency issue with feature spring-web
    * [KARAF-546] - Null point exception when executing log:display on an empty log
    * [KARAF-547] - Missing features file in the system directory of the distribution
    * [KARAF-557] - Feature: Failed to check to not install a bundle with the symbolic name contains attributes
    * [KARAF-558] - Boot feature from configuration file, can contain some spaces; the name should be trimmed
    * [KARAF-559] - AdminService loses root flag for instances
    * [KARAF-562] - Config properties defined in <config> tag (features.xml) are loaded during each refresh
    * [KARAF-565] - junit bundle missing (required by dev commands)
    * [KARAF-568] - minimal assembly: zip and tar.gz do differ in content
    * [KARAF-569] - Installing and uninstalling the jetty feature leaves Karaf in an ususable state
    * [KARAF-575] - webconsole: branding isn't resolved, therfore the webconsole doesn't work anymore
    * [KARAF-583] - Karaf manual does not build with new karaf-maven-plugin
    * [KARAF-585] - When connected to a remote instance, Ctrl-C closes the connection instead of simply interrupting the command
    * [KARAF-600] - "Extending the console" documentation still refers to org.osgi.service.command
    * [KARAF-601] - features:list does not show features of newly installed feature file
    * [KARAF-604] - All bundles are considered as system bundle
    * [KARAF-610] - Can't input the path string completely via karaf shell
    * [KARAF-622] - Jaas Cancel command is not working
    * [KARAF-624] - admin:stop command behavior not correct
    * [KARAF-625] - Missing property 'log4j.appender.out.file' in the file org.ops4j.pax.logging.cfg caused a NPE
    * [KARAF-630] - SpringDeploymentListenerTest fails on IBM JDK builds with No Class Def Found Error
    * [KARAF-634] - README file refers an incorrect contribution URL
    * [KARAF-637] - Update branding-console documentation to include the changes to custom.properties
    * [KARAF-653] - Karaf minimal is missing the feature files.
    * [KARAF-655] - Remove http://repository.ops4j.org/maven2 from org.apache.karaf.management.cfg
    * [KARAF-656] - kar deployer service not exported
    * [KARAF-669] - Dependency artifacts should be available on the Maven central repo
    * [KARAF-670] - Missing ${karaf.base}/system cause NullPointerException
    * [KARAF-671] - http:list does not display the correct information
    * [KARAF-675] - Longer shell commands affect the shell view when using up and down arrows
    * [KARAF-686] - introduce an override flag to configfile element so that we get chance to not override the finalname if it already exist
    * [KARAF-689] - Karaf instance can wrongly obtain a lock when the locking table is empty on a Oracle DB
    * [KARAF-690] - install http feature will start both 8080 and 8181 jetty port
    * [KARAF-697] - features:list shows the features that failed installation as installed.
    * [KARAF-706] - variable substitution doesn't work for system.properties
    * [KARAF-712] - Karaf's ls command does not represent URL objects correctly
    * [KARAF-718] - Grep doesn't work when piped from features:listurl
    * [KARAF-735] - java.util.NoSuchElementException if issue the first command as an empty command
    * [KARAF-753] - commandlist --help points to help for jaas:pending
    * [KARAF-754] - shell:cat hyphen ("-") option not activating STDIN.
    * [KARAF-760] - MInor time rendering bug
    * [KARAF-766] - Wrong help for features:install
    * [KARAF-769] - Update NOTICE file to mention JSW
    * [KARAF-771] - KAR Deployer doesn't work
    * [KARAF-773] - KAR docu outdated
    * [KARAF-776] - jclouds features require OSS Sonatype repository
    * [KARAF-781] - Class RunnableServiceListener misspelled
    * [KARAF-794] - mvn eclipse:eclipse fails with maven plugin 2.8.
    * [KARAF-796] - Editing Pax Web Configuration Via Karaf Console
    * [KARAF-800] - karaf does not start when using java7
    * [KARAF-811] - Combination of wrap+mvn and instructions doesnt work any more
    * [KARAF-812] - Cannot start bundle built with org.osgi.framework v. 4.3.0
    * [KARAF-815] - Generic the Karaf manual link
    * [KARAF-816] - Wrapper feature doesn't load security libraries
    * [KARAF-820] - Karaf client.bat swallows commands to be passed to the Karaf instance
    * [KARAF-824] - Web demo folder in 2.2.2 release is missing content and README.txt has bugs
    * [KARAF-826] - KarArtifactInstaller should look for "features" classifier in place of "feature"
    * [KARAF-827] - Karaf Web deployer (Pax-Web) always tries to deploy the deploy/README file
    * [KARAF-867] - Inconsistent deployment behavior between bundle installer and feature installer
    * [KARAF-875] - Unable to define escape the event designator '!' using '\!'
    * [KARAF-883] - NPE in features-maven-plugin
    * [KARAF-889] - dev:framework commands incorrect workflow
    * [KARAF-891] - Problem with $ charact in wrap:mvn URL
    * [KARAF-892] - EventAdmin events from Gogo not being sent from Karaf's console bundle
    * [KARAF-893] - Wrong URL in release notes [1]
    * [KARAF-894] - Kar deployment failed
    * [KARAF-895] - NPE during webconsole startup
    * [KARAF-896] - Karaf webconsole exports wrong version of Felix webconsole package
    * [KARAF-902] - Jaas: Properties backing engine doesn't remove users
    * [KARAF-904] - add jetty.port=8181 to jetty.xml so that configuration for jetty connector could take effect
    * [KARAF-905] - propdel() method in the ConfigMBean didn't work
    * [KARAF-910] - Race between FeatureService and ConfigAdmin for resolving mvn: URLs?
    * [KARAF-911] - features-maven-plugin:add-features-to-repo doesn't use maven proxy setting
    * [KARAF-913] - Omitted @Command on Gogo plugin is hard to debug because of NPE
    * [KARAF-915] - KAR deployment failed in the features XML is not the first entry of the KAR archive
    * [KARAF-917] - warn instead of info when failing to install a feature
    * [KARAF-918] - pax-url prerequisites for a feature are not respected
    * [KARAF-919] - Kar redeployment failed
    * [KARAF-920] - Feature autoinstall from kar failed
    * [KARAF-921] - maven eclipse plugin 2.8 does not work correctly with karaf
    * [KARAF-922] - features-maven-plugin ignores repository tags in feature files
    * [KARAF-923] - features-maven-plugin#AddFeaturesToRepoMojo does not handle spaces in repository urls well
    * [KARAF-926] - JAAS: Properties backing engine doesn't respect encryptor prefix and suffix
    * [KARAF-932] - ConfigMBean raise a NPE when dictionnary is null
    * [KARAF-935] - Deployer bundles do not start
    * [KARAF-937] - Karaf maven plugin generates feature configuration with dublicate entries
    * [KARAF-939] - the realm set for JAASLoginService in jetty.xml should be karaf but not the default
    * [KARAF-951] - dev:create-dump raises a NullPointerException
    * [KARAF-952] - config:propdel doesn't delete the property in the cfg file
    * [KARAF-954] - Double quotes missing in generated karaf-wrapper.conf
    * [KARAF-964] - admin feature is no more available in Karaf
    * [KARAF-982] - Utils.fromMaven cant deal with both classifier and extension
    * [KARAF-985] - LDAPLoginModule generates a large number of DirContext objects
    * [KARAF-1000] - Karaf distributions shouldn't include data and local-repo folders
    * [KARAF-1008] - WebConsole raise NCDF on service page
    * [KARAF-1015] - ConfigMBean should use a different config pid than the config shell
    * [KARAF-1020] - BundleWatcher should look for SNAPSHOT
    * [KARAF-1024] - Bug generating feature.xml when dependency has no manifest
    * [KARAF-1030] - Grep command breaks existing line formating
    * [KARAF-1031] - Performance issue in the features jaxb support
    * [KARAF-1033] - Set the Features validation optional
    * [KARAF-1036] - Some MBeans don't provide attribute correctly
    * [KARAF-1040] - Commands should not catch exceptions but should rethrow them
    * [KARAF-1050] - "osgi:start xxx" doesn't print anything
    * [KARAF-1051] - addcommand / removecommand / eval should be in the shell scope
    * [KARAF-1064] - BootstrapLogManager does not reuse the instantiated Handler
    * [KARAF-1065] - TextDumpProvider.createDump(DumpDestination) does not flush OutputStreamWriter
    * [KARAF-1066] - make features xml parser more forgiving
    * [KARAF-1067] - JDK7 compile issues with OsgiCommandSupport
    * [KARAF-1068] - Multiple blueprint plans using command namespace result in multiple converter registrations
    * [KARAF-1071] - Cursor keys do not work in Karaf shell on windows
    * [KARAF-1090] - deployers feature for fileinstall deployers that used to be in full profile
    * [KARAF-1101] - Completion does not work when quiesce manager is deployed
    * [KARAF-1106] - Jetty feature should use ServiceMix Spec for activation
    * [KARAF-1110] - Archetypes don't work
    * [KARAF-1111] - Add documentation about archetypes
    * [KARAF-1114] - osgi shell blueprint bundle shouldn't use lazy default-activation
    * [KARAF-1116] - Scripts fail at resolving java jdk.
    * [KARAF-1122] - Feature <configfile/> creates an empty file if the file URL is not resolved
    * [KARAF-1124] - karaf does not work properly with closing brace in the working directory path
    * [KARAF-1126] - features-maven-plugin:validate goal raises a NPE if karafConfig configuration is not set
    * [KARAF-1127] - Boot features failed to startup when karaf started from directory with closing brace; logs also unavailable
    * [KARAF-1131] - Remove PackageMBean and move operation to BundleMBean
    * [KARAF-1133] - Error executing command 'start' when starting a child instance
    * [KARAF-1139] - Redeploy kar cause installing old feature
    * [KARAF-1140] - config:list has NPE since it uses a service after ungetting the service reference
    * [KARAF-1143] - Karaf (Config Mbean) can not recognize the features when Karaf installation path containing blank space
    * [KARAF-1144] - When running a single remote command through SSH, the SCOPE variable isn't set
    * [KARAF-1150] - admin:create command creates broken org.ops4j.pax.url.mvn.cfg file
    * [KARAF-1158] - Karaf trunk fails to build on a clean repo
    * [KARAF-1161] - The shell:new action does not support the creation of arrays
    * [KARAF-1162] - A command that can not be loaded breaks the whole completion
    * [KARAF-1174] - war feature cannot be installed after the cxf
    * [KARAF-1175] - Duplicate key exception should be handle locally to avoid to affect the whole MBean
    * [KARAF-1178] - OBR feature doesn't work
    * [KARAF-1179] - "dev:watch *" doesn't notice new bundles added to the container
    * [KARAF-1188] - Console bundle depends on aries blueprint 0.3.x but imports [0.4.0,1)
    * [KARAF-1198] - Add Maven repository metadata in the system repository
    * [KARAF-1199] - dev:watch command issues "[WATCH]" announcements only to the issuing shell
    * [KARAF-1206] - Child instance doesn't start
    * [KARAF-1207] - Karaf tooling exam regression tests failing on NoSuchMethodError com.google.common.io.Files.deleteRecursively
    * [KARAF-1209] - ServiceRecipe blueprint exception in the log
    * [KARAF-1212] - NPE during update of the FeatureFinder
    * [KARAF-1215] - Shell scripts are incompatible with /bin/sh on Solaris
    * [KARAF-1216] - add-features-to-repo goal does not reclaim file handles fast enough
    * [KARAF-1219] - Assemblies ignore some resources
    * [KARAF-1220] - o.p.karaf.management bundles must stop when its configured keystore is not available
    * [KARAF-1222] - System shell hangs after karaf integration tests had been run
    * [KARAF-1225] - Manual build fails
    * [KARAF-1226] - Karaf Client cannot run a script
    * [KARAF-1228] - application-without-isolation enterprise feature doesn't install
    * [KARAF-1241] - admin script does not pass on JAVA_OPTS to instance
    * [KARAF-1242] - org.apache.karaf.scr.command format error
    * [KARAF-1243] - Karaf JMX Config MBean behaves in unpredictable ways
    * [KARAF-1244] - Deployer Transformers Supports Manifest Element without A Supporting Schema
    * [KARAF-1247] - maven-metadata-local.xml is not generated for bundles from a boot feature
    * [KARAF-1252] - Features core bundle should not depend to shell and management bundles
    * [KARAF-1253] - No completion on some commands with scope *
    * [KARAF-1256] - Archetypes should use dynamic variables
    * [KARAF-1257] - Configuration completers should avoid using getConfiguration method of config admin
    * [KARAF-1262] - Reintroduce package:* modules
    * [KARAF-1265] - Add AIX, HP-UX, Solaris, and "custom" support in the service wrapper
    * [KARAF-1267] - Align Pax-web features with std. features
    * [KARAF-1269] - aries-annotation feature doesn't install
    * [KARAF-1270] - Allow multiple commands in karaf 3.0.x bin/karaf script
    * [KARAF-1277] - Features deployer is not in the startup.properties
    * [KARAF-1278] - Comands: History does not work, can not edit current comand
    * [KARAF-1285] - Karaf 3.x - Karaf bundle archetype maven bundle plugin configuration is missing "instructions" tags.
    * [KARAF-1287] - Check documentation consistent
    * [KARAF-1293] - feature level start-level not completely finished....
    * [KARAF-1298] - dev:watch does not work in some cases
    * [KARAF-1304] - Quick help text for features:info command is erroneous
    * [KARAF-1305] - Error with Basic HTTP Authentication when using karaf realm
    * [KARAF-1318] - User bundles are treated as system bundles
    * [KARAF-1327] - Client: can't execute alias command
    * [KARAF-1331] - Source distribution is missing
    * [KARAF-1343] - Features repo points to the old pax-wicket app
    * [KARAF-1354] - SSH Log-In failes with "Authentication failed" with valid credentials
    * [KARAF-1359] - instance:create fails with Error executing command: Unable to find resource etc/config.properties
    * [KARAF-1360] - Configration update doesn't work
    * [KARAF-1362] - Karaf web console does not work on tabs features, http and  instance
    * [KARAF-1363] - Upgrade Jetty when bugfix for the Loggging to stderr bug is available
    * [KARAF-1367] - Remove line number logging from default logging config
    * [KARAF-1369] - Shell history does not log all commands
    * [KARAF-1370] - Loading snapshots from local repository does not work and the system dir should be read only
    * [KARAF-1374] - Fileinstaller logging by default is not enabled.
    * [KARAF-1388] - SSHD authorized key provider should log in DEBUG
    * [KARAF-1389] - SSH doesn't correctly use the karaf.base variable
    * [KARAF-1391] - Top-level build is missing obr module
    * [KARAF-1392] - Removing a KAR should uninstall the shipped features
    * [KARAF-1394] - Custom login modules not seen with Equinox
    * [KARAF-1395] - Instance commands are not started at bootstrap
    * [KARAF-1402] - Order in test framework generated features.xml is wrong
    * [KARAF-1406] - scanFeatures is incompatible with editing the etc/org.apache.karaf.features.cfg file
    * [KARAF-1407] - Use useDeployFolder(false) together with scan features fail
    * [KARAF-1411] - Spec activator doesn't start correctly
    * [KARAF-1416] - Blueprint archetype instructions is missing
    * [KARAF-1418] - Instance command imports an internal package from instance core
    * [KARAF-1430] - Default child instance config is not the same as the root instance
    * [KARAF-1439] - Re-add demos to Karaf 3.0 kits
    * [KARAF-1447] - Make the three big (cxf, amq, camel) play nicely with Karaf 3 without change
    * [KARAF-1450] - System bundles could be started without problems; all other bundles need to be forced
    * [KARAF-1452] - karaf-maven-plugin does not compile using java7
    * [KARAF-1455] - PAX Url (obr & war), Felix and Karaf (trunk) fight with each other resulting in an m_bundleLock
    * [KARAF-1459] - Problem with the OBR Resolver and Pax Web
    * [KARAF-1472] - Karaf manual references wrong artifacts
    * [KARAF-1482] - NullPointerException when deploying a feature without specified "install"-attribute
    * [KARAF-1483] - Help generation does not work for commands without noargs constructor
    * [KARAF-1485] - Use ShellTable in bundle:list
    * [KARAF-1487] - Bundles in deploy are deployed before startup process had been  finished
    * [KARAF-1491] - Admin service not able to start child instances when the JDK path contains a space on OS X
    * [KARAF-1496] - Bad login when using sufficient modules but when the first fail
    * [KARAF-1510] - Deployer kar demo Jenkins build issue
    * [KARAF-1513] - SSH keystore incompatible if generated with IBM JDK
    * [KARAF-1515] - features-generate-descriptor does not set the version in generated features
    * [KARAF-1528] - Web:List command not working anymore
    * [KARAF-1529] - command-watch messes the output when used with commands that take longer than the interval
    * [KARAF-1539] - kar feature should a boot one
    * [KARAF-1540] - featuresRepositories URL are not correct
    * [KARAF-1541] - jaas:realm-manage raises a NullPointerException
    * [KARAF-1544] - Several bugs in main around locking
    * [KARAF-1547] - NullpointerException when running commands on jdk 6 update 33 or jdk 7 update 5
    * [KARAF-1549] - Child instance features cfg file looks weird
    * [KARAF-1556] - standard-feature refers to non-existing "commands"-artifacts
    * [KARAF-1564] - karaf feature validate plugin should support to load the exports packages from dependency features
    * [KARAF-1566] - instance:clone set the source instance in error
    * [KARAF-1573] - Potential ZipFile leak at KarArtifactInstaller.install()
    * [KARAF-1585] - Installing using wrap protocol fails when specifying bundle version
    * [KARAF-1587] - When executing a command through the client, no error is printed in the console in case of errors
    * [KARAF-1591] - Upgrade to XBean 3.11.1
    * [KARAF-1593] - Pressing strg+d during log:tail make everything hang
    * [KARAF-1596] - Karaf pom still refers geronimo-spec 1.0 whereas 1.1 is in use
    * [KARAF-1609] - command-watch info does not work
    * [KARAF-1617] - Blueprint deployer in combination with maven URL deployer creates wrong OSGi/blueprint/ file
    * [KARAF-1624] - Rat checks fail
    * [KARAF-1635] - config.properties should be filtered
    * [KARAF-1655] - ManagementCfg configuratoinPointers in tooling-exam are incorrect
    * [KARAF-1666] - Default configuration for jetty.xml could create problems
    * [KARAF-1675] - Wrapper service requires a shell
    * [KARAF-1682] - Custom distribution section of dev guide is outdates
    * [KARAF-1683] - "no matching cipher found" error connecting via SSH to wrapper Karaf service - on Ubuntu
    * [KARAF-1695] - startup fails on Windows with only JRE installed
    * [KARAF-1699] - MBeans should support the same flags as the commands
    * [KARAF-1702] - Stopping the console bundle should not shutdown the osgi framework
    * [KARAF-1705] - Sync features between 2.3 and trunk
    * [KARAF-1713] - Build failure at manual module
    * [KARAF-1715] - Occasional freeze on feature:install webconsole
    * [KARAF-1723] - Provide meaningful thread names for karaf console
    * [KARAF-1734] - When logging into karaf with ssh as user karaf the prompt shows admin@root
    * [KARAF-1736] - Feature spring-struts can't be installed
    * [KARAF-1738] - features-generate-descriptor should support "install" attribute
    * [KARAF-1742] - Add command to show list of threads and stack traces
    * [KARAF-1751] - Spring feature dependencies specified too tightly
    * [KARAF-1754] - updating features.xml in auto deploy folder results in duplication
    * [KARAF-1756] - No SSH connection possible on Debian 6.0.5
    * [KARAF-1759] - No Way To Start obr Dependencies By Default
    * [KARAF-1765] - The obr Shell Deploy And Start Commands Always Deploy Optional Dependencies
    * [KARAF-1797] - NPE thrown from OsgiConfiguration.unregister
    * [KARAF-1803] - Servlets attribute doesn't work on HttpMBean
    * [KARAF-1804] - SystemMBean should support name attribute
    * [KARAF-1809] - Feature spring-web-portlet can't be installed
    * [KARAF-1814] - Cursor keys do not work when using bin/client on windows
    * [KARAF-1815] - When ssh'ing from a windows box into a unix box, arrow keys are not correctly interpreted
    * [KARAF-1824] - tooling-exam contains reference to wrong commons-io artifact
    * [KARAF-1827] - Build the manual within specific profiles
    * [KARAF-1835] - NPE in jaas:realm-manage command when multiple realm with the same name are present and not login module name is provided.
    * [KARAF-1838] - PackageMBean should return List<String> and support operation with bundleId
    * [KARAF-1839] - system bundle also should export javax.xml.ws.spi.http package
    * [KARAF-1840] - should also endorse saaj-api
    * [KARAF-1843] - SystemMBean reboot(time, cleanup) operation always cleanup
    * [KARAF-1845] - Minimal distribution doesn't start
    * [KARAF-1846] - jre.properties is corrupt in 3.0.0-SNAPSHOT
    * [KARAF-1851] - inconsistent FeaturesNamespaces versions
    * [KARAF-1853] - Attached kar deploys to a different snapshot build number than the main artifact
    * [KARAF-1861] - Test failure in exam regression tests : KarafWithBundleTest
    * [KARAF-1887] - Make integration tests more reliable by making sure the boot is finished
    * [KARAF-1900] - create project for private compendium build for java 7
    * [KARAF-1905] - ASM4 causes the Proxy/Weaving of Xerces, but that then causes validation factories to fail.
    * [KARAF-1914] - SSH client authentication randomly fails
    * [KARAF-1936] - LDAPLoginModule not working in 2.3.0 due to missing import of javax.net.SocketFactory
    * [KARAF-1938] - Lock logic should wait for start level change to occur
    * [KARAF-1963] - incorrect statement in developers-guide/branding-console.html
    * [KARAF-1973] - NullPointerException when performing log:clear then log:tail
    * [KARAF-1976] - Shell attempts to execute sub-shell actions as commands
    * [KARAF-1978] - if use script to start a child instance then using karaf console admin:list can't get the instance correct status
    * [KARAF-1986] - instance.properties file doesn't get updated if karaf.name is changed
    * [KARAF-1992] - PropertiesLoginModule handles usernames with backslash not correct
    * [KARAF-2007] - features without start-level in features.xml are always started first
    * [KARAF-2008] - respectStartLvlDuringFeatureStartup does not respect feature-start-levels (only bundles)
    * [KARAF-2009] - Error on visualize Licences page
    * [KARAF-2016] - Hudson paths hard coded in assembled zip and tar.gz distributions
    * [KARAF-2019] - Wrapper doesn't display all Linux statements
    * [KARAF-2020] - log:tail blocks on ^D
    * [KARAF-2026] - Two broken links on remote console manual page
    * [KARAF-2027] - invalid password option for admin:connect command in documenation
    * [KARAF-2029] - delete.user option missing from JDBCLoginModule
    * [KARAF-2035] - Not able to clone the root instance
    * [KARAF-2051] - Duplicate definition of org.ops4j.pax.url.mvn.localRepository in org.ops4j.pax.url.mvn.cfg
    * [KARAF-2052] - Progress bar doesn't display properly on 80 char consoles
    * [KARAF-2057] - NOTICE and LICENSE files are not correct
    * [KARAF-2058] - ensure find the root instance entry when update root karaf instance name in instances.properties
    * [KARAF-2067] - instance-script terminates with NoClassDefFoundError
    * [KARAF-2074] - ensure admin service always load storage file instance.properties before each operation
    * [KARAF-2096] - Upgrade to Pax Exam 2.6.0
    * [KARAF-2115] - Sync weaving behavior between root and child instances
    * [KARAF-2117] - LDAP login module is broken
    * [KARAF-2125] - "Components" tab not shown in WebConsole
    * [KARAF-2133] - Generated title contain unresolved placeholder
    * [KARAF-2134] - Features deployer does not support mvn urls
    * [KARAF-2135] - Issue with jledit addition
    * [KARAF-2136] - ServiceMix Spec property mispelled in etc/system.properties
    * [KARAF-2137] - Unable to prevent remote JMX access
    * [KARAF-2143] - Remove Jetty JUL logger configuration
    * [KARAF-2144] - MainStartTest test fails when methods are executed in reverse order
    * [KARAF-2152] - wrong version for pax-jetty
    * [KARAF-2154] - Entering an empty command removes previous command in history
    * [KARAF-2155] - Wrapper/service does not start for karaf 3
    * [KARAF-2158] - Test InstanceServiceImplTest#testToSimulateRenameInstanceByExternalProcess fails when run isolated
    * [KARAF-2167] - org.apache.karaf.tooling.exam.container.internal.adaptions.KarafManipulatorFactory creates invalid version qualifier
    * [KARAF-2171] - Start Karaf as service shows 'Activator' error in wrapper.log
    * [KARAF-2178] - remove karaf-org.osgi.core.jar
    * [KARAF-2181] - jpa feature can't be installed "out of the box"
    * [KARAF-2189] - blueprint disable service too soon at shutdown
    * [KARAF-2191] - Karaf 3.0.x CLONE - Karaf startup fails with NullPointerException when logfile can't be written
    * [KARAF-2193] - Upgrade to Pax URL 1.5.2
    * [KARAF-2194] - Karaf regression test fails on BootClasspathLibraryOptionTest
    * [KARAF-2201] - http, war, and http-whiteboard feature should use the version of underlying pax-web feature
    * [KARAF-2206] - The container fails to start correctly with IBM Java 6
    * [KARAF-2209] - Allow overriding system properties
    * [KARAF-2215] - <packaging>kar</packaging> fails to attach artifact
    * [KARAF-2218] - Fix manual links on website
    * [KARAF-2220] - spring-jms feature shouldn't depend on spring-web
    * [KARAF-2221] - The admin service is not safe when used to create / start agents quickly
    * [KARAF-2225] - jaas PropertiesLoginModule does not complain when users.properties is not found but fails later
    * [KARAF-2226] - Properties with pathname are not correct on windows in jaas PropertiesLoginModule
    * [KARAF-2234] - Thrown Exception in shell commands should be logged as ERROR
    * [KARAF-2236] - karaf scripts fail when paths contain spaces
    * [KARAF-2237] - LDAP login module cannot look up keystore and/or truststore
    * [KARAF-2240] - Incompatible Equinox version
    * [KARAF-2244] - BundleWatcher should wait for refresh to be finished before updating another bundle
    * [KARAF-2245] - instance:connect doesn't work anymore
    * [KARAF-2246] - wrapper feature doesn't install
    * [KARAF-2248] - Karaf console wraps on Windows 7 when connecting using the client
    * [KARAF-2249] - config:property-append doesn't set a needed comma for seperation
    * [KARAF-2264] - MBean operation errors are not raised correctly
    * [KARAF-2269] - Servicemix Specs Activator/OsgiLocator Broken due to KARAF-2136
    * [KARAF-2270] - Service wrapper assumes java is on system path
    * [KARAF-2285] - Some tabs in WebConsole are blank
    * [KARAF-2297] - WebConsole should export org.json
    * [KARAF-2306] - BootClasspathLibraries should be copied before Karaf classpath settings in pax-exam container
    * [KARAF-2307] - ActiveMQ Karaf commands do not work with Karaf 3
    * [KARAF-2308] - 404 link in latest karaf documentatoin
    * [KARAF-2309] - Normal Zip file which put into the deploy folder can't be deleted anymore
    * [KARAF-2314] - Remove SNAPSHOT repositories by default in the distribution
    * [KARAF-2316] - features-maven-plugin ignore proxy settings in maven settings.xml
    * [KARAF-2323] - Package MBean fails for export
    * [KARAF-2339] - Do not install boot features asynchronously
    * [KARAF-2346] - WebConsole should export package with version 3.1.2 (and not 4.0.0)
    * [KARAF-2357] - features-create-kar goal of the karaf-maven-plugin ignores bundles listed in the features that have the "dependency" property set to "true"
    * [KARAF-2359] - DirectoryWatcher for "deploy" directory should be configured to wait until framework start level reaches 60
    * [KARAF-2363] - Second feature validation result in an Exception.
    * [KARAF-2365] - jaas:manage selects wrong configuration
    * [KARAF-2368] - Commands with more than one argument have incorrect help string
    * [KARAF-2371] - osgi:list column for Spring state stays empty for bundles started before first invocation
    * [KARAF-2378] - Shell:exec doesn't show output for commands that execute too quickly
    * [KARAF-2380] - Error deploying embedded Karaf web demo
    * [KARAF-2381] - The shell log:set command not as documented
    * [KARAF-2385] - jledit bundle isn't found by Karaf features bundle and therefore Karaf freezes at startup.
    * [KARAF-2397] - Replace usages of non-standard org.eclipse:osgi with org.eclipse:org.eclipse.osgi
    * [KARAF-2403] - NPE in log:tail after doing a log:clear
    * [KARAF-2404] - bin script is not Unix executable in the zip distribution
    * [KARAF-2407] - dev:create-dump should generate full stack traces of each thread
    * [KARAF-2416] - OverlappingFileLockException when cloning an instance
    * [KARAF-2417] - Logging doesn't work in cloned instances
    * [KARAF-2421] - FeatureFinder should prevent ArrayIndexOutOfBoundException
    * [KARAF-2423] - Avoid overlapping lock exceptions when multiple threads access the admin service
    * [KARAF-2424] - Wrapper's generated karaf-service does not work on Solaris
    * [KARAF-2427] - When using service wrapper karaf.data is wrong on child instances
    * [KARAF-2429] - It would be nice to have scr:list sort components by id.
    * [KARAF-2437] - Logs still have been printed into console after log:tail and Ctrl + C
    * [KARAF-2445] - "bin\karaf.bat clean" does not work with whitespaces in KARAF_HOME
    * [KARAF-2446] - Fix etc/config.properties for endorsed xercesImpl
    * [KARAF-2447] - Managing child instances does not work with whitespaces in KARAF_HOME
    * [KARAF-2452] - The "--force" option is not honored when designate bundle as a system bundle
    * [KARAF-2457] - Branding is not propagated to instance created with admin:create
    * [KARAF-2458] - Update to Spring 3.2.4.RELEASE
    * [KARAF-2460] - Feature file generated by karaf maven plugin does not contain the feature dependencies
    * [KARAF-2470] - maven-karaf-plugin: dependency ignored
    * [KARAF-2471] - Karaf Wrapper doesn't return the correct exit result when using RUN_AS_USER
    * [KARAF-2473] - log:set DEFAULT is not more supported
    * [KARAF-2475] - Config bound to bundle after uninstall
    * [KARAF-2476] - Special characters are dropped when generating the LDAP the user and role filters
    * [KARAF-2479] - ensure we escape \ in LDAP filter  correctly
    * [KARAF-2492] - Possible UnsatisfiedLinkError when using dev:restart with native libraries
    * [KARAF-2497] - NPE in PropertiesLoginModule
    * [KARAF-2502] - karaf-service script does not properly set the RUN_AS_GROUP variable if a primary group is not set
    * [KARAF-2505] - When clean_cache-file exists the whole data-directory is deleted
    * [KARAF-2509] - subshell interferes the execution of a command with the same name as the scope
    * [KARAF-2513] - management boot can not process MBean without implement DynamicMBean interface
    * [KARAF-2515] - Prevent NPE in log:tail
    * [KARAF-2516] - log:tail | grep foo - throws interrupted exception when using ctrl + c
    * [KARAF-2520] - Null Pointer in Dynamic-Import Command
    * [KARAF-2523] - Karaf JDBC lock doesn't work with M$ SQLServer
    * [KARAF-2524] - CLONE - Wrapper/service does not start for karaf 3
    * [KARAF-2528] - don't allow authentication = none if LDAP user or password is provided
    * [KARAF-2529] - Use connection credentials when searching for roles in LDAP
    * [KARAF-2530] - Build failure on Mac....
    * [KARAF-2531] - NPE in log:tail after a log:clear
    * [KARAF-2532] - itests are very slow because of timeouts when waiting for commands
    * [KARAF-2540] - LDAP authentication defaults to null if not specified
    * [KARAF-2541] - On Mac OS locate the JAVA_HOME
    * [KARAF-2548] - error starting 'client' under cygwin
    * [KARAF-2552] - Running log:tail on admin:console causes full CPU usage.
    * [KARAF-2558] - Unit Tests in error when building from trunk  on Windows platform
    * [KARAF-2561] - When starting karaf under JDK 1.8 Early Access, karaf will not start
    * [KARAF-2566] - StandardFeaturesTest fail on aries-annotation feature
    * [KARAF-2572] - Karaf does not start if there is no log appender named out
    * [KARAF-2573] - Child instance doesn't start
    * [KARAF-2574] - Improve message when .sshkaraf/known_hosts key changed
    * [KARAF-2577] - --help option doesn't work with command through bin/admin or bin/instance script
    * [KARAF-2595] - log:get ALL and log:set DEFAULT don't work as expected
    * [KARAF-2601] - Support Java 6 and Java 7
    * [KARAF-2603] - ConfigMBean update() operation is blocked for the admin (karaf) user
    * [KARAF-2604] - Improve the feature:repo-add arguments description
    * [KARAF-2605] - When reading user input from console, always delegate to the ConsoleReader
    * [KARAF-2606] - Add compatibility bundles for console/commands
    * [KARAF-2607] - PropertiesBackingEngine allows duplicate roles to be assigned to user
    * [KARAF-2611] - jaas:user-add doesn't actually add the user
    * [KARAF-2615] - Bundles attribute is empty in the ObrMBean
    * [KARAF-2617] - Deployed WAB are not available and stay in unknown state
    * [KARAF-2620] - Manual should use the official OSGi Web-ContextPath instead of Webapp-Context
    * [KARAF-2621] - PropertiesLoginModuleTest.testNonExistantPropertiesFile fails on windows
    * [KARAF-2622] - shouldn't encrypt public key for PublickeyLoginModule
    * [KARAF-2624] - Karaf script for AIX should use JVM option: -Xdump:heap instead of IBM_JAVA_HEAPDUMP_TEXT to control production heapdumps
    * [KARAF-2626] - Add load-test and threads commands
    * [KARAF-2628] - Fix synchronization issues in the commands completer
    * [KARAF-2631] - GenerateDescriptorMojo ignores managed scope
    * [KARAF-2633] - Prevent deadlocks with classloaders on JDK 6
    * [KARAF-2634] - Specify the alias when registering servlets to eliminate warnings
    * [KARAF-2636] - Improve security mechanism
    * [KARAF-2640] - SAXParseException when attempting to execute a dry run of Karaf release
    * [KARAF-2645] - Created instances etc folder doesn't contain all mandatory files

** Dependency upgrade
    * [KARAF-449] - Upgrade to PAX-WEB 1.1.0 (SNAPSHOT right now)
    * [KARAF-529] - Upgrade to Pax URL 1.3.2
    * [KARAF-582] - Upgrade Apache Mina to 2.0.3
    * [KARAF-590] - Upgrade to pax-logging 1.6.2
    * [KARAF-591] - Upgrade aopalliance ServiceMix bundle to 1.0_5
    * [KARAF-592] - Upgrade asm ServiceMix bundle to 3.3_2
    * [KARAF-593] - Upgrade cglib ServiceMix bundle to 2.1_3_7
    * [KARAF-594] - Upgrade commons-codec ServiceMix bundle to 1.3_4
    * [KARAF-595] - Upgrade commons-collections ServiceMix bundle to 3.2.1_2
    * [KARAF-596] - Upgrade commons-lang ServiceMix bundle to 2.4_5
    * [KARAF-597] - Upgrade jasypt ServiceMix bundle to 1.7_3
    * [KARAF-598] - Upgrade junit ServiceMix bundle to 4.7_3
    * [KARAF-607] - Upgrade felix-framework to 3.2.1
    * [KARAF-613] - Upgrade to Blueprint 0.3.1
    * [KARAF-672] - Upgrade to felix event admin 1.2.12
    * [KARAF-679] - Update jansi to version 1.6
    * [KARAF-681] - Upgrade to Pax URL 1.3.4
    * [KARAF-682] - upgrade to jetty 7.4.2.v20110526
    * [KARAF-757] - upgrade to jetty 7.4.4.v20110707
    * [KARAF-767] - Upgrade to Felix Framework 3.2.2
    * [KARAF-768] - Upgrade to Eclipse Equinox 3.6.2.R36x_v20110210
    * [KARAF-770] - Upgrade to Eclipse Equinox 3.7.1
    * [KARAF-789] - Upgrade jetty to 7.4.5.v20110725
    * [KARAF-791] - Upgrade paxurl to 1.3.5
    * [KARAF-793] - Upgrade paxrunner to 1.7.5
    * [KARAF-797] - Upgrade to Pax Web 1.1.1
    * [KARAF-834] - Upgrade to Spring 3.0.6 - in std. features.xml
    * [KARAF-854] - Upgrade to Felix Framework 4.0.1
    * [KARAF-855] - Add support for OSGi R4.3
    * [KARAF-903] - Upgrade to Pax Web 1.1.2
    * [KARAF-928] - Support of Gemini Blueprint
    * [KARAF-961] - Update Mina SSHD to version 0.6.0
    * [KARAF-962] - Update easymock to version 2.5.2
    * [KARAF-966] - Update xbean to 3.8
    * [KARAF-989] - Upgrade to Aries Application 0.4
    * [KARAF-990] - Upgrade to Aries JMX 0.4
    * [KARAF-991] - Upgrade to Aries JPA 0.4
    * [KARAF-992] - Upgrade to Aries JNDI 0.4
    * [KARAF-993] - Upgrade to Aries Proxy 0.4
    * [KARAF-994] - Upgrade to Aries Transaction 0.4
    * [KARAF-995] - Upgrade to Aries Util 0.4
    * [KARAF-998] - upgrade to jetty 7.5.4.v20111024
    * [KARAF-1028] - Upgrade to Felix Framework 4.0.2
    * [KARAF-1042] - Upgrade to jline 2.6
    * [KARAF-1092] - Upgrade to Jasypt 1.8
    * [KARAF-1107] - Karaf should use directly commons-* bundles
    * [KARAF-1120] - Upgrade to Spring 3.1.0.RELEASE
    * [KARAF-1135] - Upgrade pax exam to 2.4.0
    * [KARAF-1154] - Upgrade to eventadmin 1.2.14
    * [KARAF-1155] - Upgrade to Apache POM 10
    * [KARAF-1163] - Upgrade to Guava 11.0.1
    * [KARAF-1172] - Upgrade to Aries JNDI API 1.0.0
    * [KARAF-1177] - Upgrade to standalone tinybundle 1.0.0
    * [KARAF-1183] - Upgrade to slf4j 1.6.4
    * [KARAF-1184] - Upgrade to JUnit 4.10
    * [KARAF-1185] - Upgrade to Pax Logging 1.6.5
    * [KARAF-1192] - Upgrade to pax-web 2.0.0
    * [KARAF-1193] - Upgrade to pax-url 1.4.0.RC1
    * [KARAF-1201] - Update jline groupid in main pom and shell/console/pom
    * [KARAF-1205] - Upgrade to maven-bundle-plugin 2.3.7
    * [KARAF-1224] - Upgrade to Spring 3.1.1.RELEASE
    * [KARAF-1229] - Upgrade to jansi 1.8
    * [KARAF-1230] - Upgrade to jansi 1.8
    * [KARAF-1231] - Upgrade to EasyMock 3.1
    * [KARAF-1232] - Upgrade to Jasypt 1.9.0
    * [KARAF-1233] - Upgrade to asm 3.3.1
    * [KARAF-1258] - Upgrade to Jetty 8.1.4
    * [KARAF-1259] - Upgrade to pax-url 1.4.0
    * [KARAF-1272] - Upgrade to fileinstall 3.2.0
    * [KARAF-1346] - Upgrade to Mina 2.0.4
    * [KARAF-1378] - Upgrade to fileinstall 3.2.2
    * [KARAF-1456] - Upgrade to blueprint 1.0.0
    * [KARAF-1458] - Upgrade to ServiceMix Specs 2.0
    * [KARAF-1490] - upgrade to pax-logging 1.6.7
    * [KARAF-1517] - Upgrade to OSGi Compendium 4.3.0
    * [KARAF-1520] - Upgrade to Jansi 1.9
    * [KARAF-1526] - Upgrade to pax-url 1.4.2
    * [KARAF-1531] - Upgrade to Felix ConfigAdmin 1.4.0
    * [KARAF-1534] - Upgrade to JLine 2.7
    * [KARAF-1535] - Upgrade to Felix Utils 1.2.0
    * [KARAF-1536] - Upgrade to Felix FileInstall 3.2.4
    * [KARAF-1567] - Upgrade to pax-web 2.0.1
    * [KARAF-1568] - Upgrade to sshd 0.7.0
    * [KARAF-1577] - Upgrade to slf4j 1.6.6
    * [KARAF-1578] - Upgrade to pax-logging 1.6.9
    * [KARAF-1579] - Upgrade to commons-compress 1.4.1
    * [KARAF-1581] - Upgrade to commons-jexl 2.1.1
    * [KARAF-1582] - Upgrade to Felix BundleRepository 1.6.6
    * [KARAF-1592] - Upgrade to quiesce api 1.0.1-SNAPSHOT
    * [KARAF-1597] - Upgrade to geronimo-jaspic 1.1
    * [KARAF-1598] - Upgrade to pax-runner 1.7.6
    * [KARAF-1599] - Upgrade to pax-swissbox 1.5.1
    * [KARAF-1601] - Upgrade to maven-antrun-plugin 1.7
    * [KARAF-1603] - Upgrade to maven-surefire-plugin 2.12
    * [KARAF-1604] - Upgrade to maven-assembly-plugin 2.3
    * [KARAF-1606] - Upgrade to maven-compiler-plugin 2.5.1
    * [KARAF-1608] - Upgrade to maven-dependency-plugin 2.4
    * [KARAF-1610] - Upgrade to maven-eclipse-plugin 2.9
    * [KARAF-1611] - Upgrade to maven-enforcer-plugin 1.1
    * [KARAF-1612] - Upgrade to maven-enforcer-plugin 1.1
    * [KARAF-1613] - Upgrade to maven-jar-plugin 2.4
    * [KARAF-1615] - Upgrade to maven-javadoc-plugin 2.8.1
    * [KARAF-1616] - Upgrade to maven-release-plugin 2.3.2
    * [KARAF-1619] - Upgrade to maven-remote-resources-plugin 1.3
    * [KARAF-1620] - Upgrade to maven-shade-plugin 1.7
    * [KARAF-1621] - Upgrade to maven-site-plugin 3.1
    * [KARAF-1622] - Upgrade to maven-war-plugin 2.2
    * [KARAF-1623] - Upgrade to apache-rat-plugin 0.8
    * [KARAF-1630] - Upgrade to Aries Util 1.0.0
    * [KARAF-1631] - Upgrade to Aries Blueprint API 1.0.0
    * [KARAF-1632] - Upgrade to Aries JMX API 1.0.0
    * [KARAF-1634] - Upgrade to Felix Framework 4.0.3
    * [KARAF-1636] - Upgrade to Equinox 3.8
    * [KARAF-1638] - Upgrade to Pax Web 2.0.1
    * [KARAF-1642] - Upgrade to exec-maven-plugin 1.2.1
    * [KARAF-1643] - Upgrade to jaxb2-maven-plugin 1.3.1
    * [KARAF-1644] - Upgrade to Aries JNDI API 1.0.0
    * [KARAF-1645] - Upgrade to Aries Quiesce Manager 1.0.0
    * [KARAF-1646] - Upgrade to Pax Web 2.0.2
    * [KARAF-1649] - Upgrade to Aries JPA API 1.0.0
    * [KARAF-1650] - Upgrade to Aries Blueprint Annotation API 1.0.0
    * [KARAF-1651] - Upgrade to Aries JMX Blueprint API 1.0.0
    * [KARAF-1652] - Upgrade to Aries JMX Core 1.0.0
    * [KARAF-1653] - Upgrade to Aries JNDI Core 1.0.0
    * [KARAF-1654] - Upgrade to Aries Proxy API 1.0.0
    * [KARAF-1656] - use quiesce API 1.0.0 final instead of 1.0.1-SNAPSHOT
    * [KARAF-1658] - Upgrade to Aries JMX 1.0.0
    * [KARAF-1660] - Upgrade Aries Application API to 1.0.0
    * [KARAF-1661] - Upgrade Aries Application Utils to 1.0.0
    * [KARAF-1662] - Upgrade Aries Proxy Impl to 1.0.0
    * [KARAF-1663] - Upgrade Aries transaction manager to 1.0.0
    * [KARAF-1664] - Upgrade Aries JNDI legacy support to 1.0.0
    * [KARAF-1665] - Upgrade Aries JNDI rmi to 1.0.0
    * [KARAF-1668] - Upgrade blueprint core to 1.0.0
    * [KARAF-1669] - Upgrade Aries Application to 1.0.0
    * [KARAF-1670] - Uprade Aries Application Management to 1.0.0
    * [KARAF-1671] - Uprade Aries Application Modeller to 1.0.0
    * [KARAF-1672] - Upgrade Aries Application Deployment 1.0.0
    * [KARAF-1673] - Upgrade to Aries JPA Blueprint 1.0.0
    * [KARAF-1685] - Upgrade to Aries Blueprint Annotation Impl 1.0.0
    * [KARAF-1686] - Upgrade to Aries Blueprint CM 1.0.0
    * [KARAF-1687] - Upgrade to Aries Blueprint Core Compatibility 1.0.0
    * [KARAF-1688] - Upgrade to Aries Blueprint JEXL Evaluator 1.0.0
    * [KARAF-1689] - Upgrade to Aries JNDI URL 1.0.0
    * [KARAF-1690] - Upgrade to Aries Transaction Wrappers 1.0.0
    * [KARAF-1691] - Remove Aries Quiesce dependencies
    * [KARAF-1696] - Upgrade to Spring 3.1.2.RELEASE
    * [KARAF-1704] - Upgrade to Aries Transaction Blueprint 1.0.0
    * [KARAF-1719] - Upgrade to javax.mail 1.4.5
    * [KARAF-1722] - Upgrade to Aries JMX Blueprint Core 1.0.1
    * [KARAF-1732] - Upgrade to ServiceMix Ant bundle 1.8.4_1
    * [KARAF-1733] - Upgrade to ServiceMix aopalliance bundle  1.0_6
    * [KARAF-1737] - Upgrade to ServiceMix cglib bundle 2.2.2_1
    * [KARAF-1739] - Upgrade to Jetty 8.1.5.v20120716
    * [KARAF-1744] - Upgrade to guava 13.0
    * [KARAF-1745] - Upgrade to Felix WebConsole 4.0.0
    * [KARAF-1747] - Update to jline 2.8
    * [KARAF-1769] - Upgrade to pax-logging 1.6.10
    * [KARAF-1773] - Upgrade to pax-logging 1.6.10
    * [KARAF-1779] - Upgrade to guava 13.0.1
    * [KARAF-1781] - Upgrade to Mina 2.0.5
    * [KARAF-1787] - Upgrade to commons-fileupload 1.2.2
    * [KARAF-1788] - Upgrade to commons-io 2.4
    * [KARAF-1801] - slf4j 1.7.0
    * [KARAF-1816] - Upgrade to jline 2.9
    * [KARAF-1817] - Upgrade to sshd 0.8.0
    * [KARAF-1819] - Upgrade to Mina 2.0.5
    * [KARAF-1859] - Upgrade to ServiceMix Specs 2.1
    * [KARAF-1862] - Upgrade to Felix FileInstall 3.2.6
    * [KARAF-1863] - Upgrade to sshd 0.8.0
    * [KARAF-1865] - Upgrade to paxlogging 1.7.0
    * [KARAF-1866] - Upgrade to felix config admin 1.4.0
    * [KARAF-1867] - Upgrade to felix event admin 1.3.0
    * [KARAF-1868] - Upgrade aries bundles to 1.0.1 (blueprint-core, jmx-core, transaction-manager, jpa-container-context)
    * [KARAF-1884] - Upgrade exam to Pax Exam 2.6.0
    * [KARAF-1893] - Upgrade to Jetty 8.1.7.v20120910
    * [KARAF-1904] - Upgrade to Mina 2.0.7
    * [KARAF-1908] - Upgrade to XBean 3.12
    * [KARAF-1948] - Upgrade to Apache POM 11
    * [KARAF-1955] - Upgrade to ServiceMix Specs 2.2.0
    * [KARAF-1966] - Upgrade to Pax Web 3.0
    * [KARAF-1977] - Upgrade to OSGi 4.3.1
    * [KARAF-1981] - Upgrade to Felix ConfigAdmin 1.6.0
    * [KARAF-2012] - Upgrade to Pax Web 3.0.0.M1
    * [KARAF-2055] - Upgrade to Apache POM 12
    * [KARAF-2061] - Upgrade to commons-codec 1.7
    * [KARAF-2063] - Upgrade to Felix EventAdmin 1.3.2
    * [KARAF-2064] - Upgrade to Felix Metatype 1.0.6
    * [KARAF-2065] - Upgrade to Felix SCR 1.6.2
    * [KARAF-2068] - Upgrade to ASM 4.1
    * [KARAF-2080] - Upgrade to slf4j 1.7.2
    * [KARAF-2084] - Upgrade to Jetty 8.1.8.v20121106
    * [KARAF-2085] - Upgrade to Jetty 8.1.8.v20121106
    * [KARAF-2086] - Upgrade to Spring 3.1.3.RELEASE
    * [KARAF-2147] - Upgrade to Aries JMX 1.1.1
    * [KARAF-2148] - Upgrade to Aries Proxy 1.0.1
    * [KARAF-2149] - Upgrade to Aries Blueprint Core 1.1.0
    * [KARAF-2150] - Upgrade to Aries Blueprint CM 1.0.1
    * [KARAF-2157] - Upgrade to Aries Util 1.1.0
    * [KARAF-2176] - Upgrade to Pax URL 1.5.1
    * [KARAF-2177] - Upgrade to Felix Framework 4.2.1
    * [KARAF-2184] - Upgrade to Spring 3.1.4.RELEASE
    * [KARAF-2197] - Upgrade to JLine 2.10
    * [KARAF-2208] - Upgrade to Aries JPA Blueprint 1.0.1
    * [KARAF-2232] - Upgrade to Aries Blueprint Core 1.2.0
    * [KARAF-2247] - Upgrade to Equinox 3.8.2.v20130124-134944
    * [KARAF-2279] - Upgrade to OSGi Core 5.0.0
    * [KARAF-2292] - Upgrade to Pax Web 3.0.0
    * [KARAF-2310] - Upgrade to Spring 3.2.2.RELEASE
    * [KARAF-2319] - Upgrade to Pax Web 3.0.1
    * [KARAF-2327] - Upgrade to commons-codec 1.8
    * [KARAF-2328] - Upgrade to guava 14.0.1
    * [KARAF-2329] - Upgrade to jline 2.11
    * [KARAF-2330] - Upgrade to Aries Transaction Blueprint 1.0.1
    * [KARAF-2331] - Upgrade to XBean 3.13
    * [KARAF-2332] - Upgrade to jansi 1.11
    * [KARAF-2334] - Upgrade to slf4j 1.7.5
    * [KARAF-2335] - Upgrade to Spring 3.2.3.RELEASE
    * [KARAF-2337] - Upgrade to Apache POM 13
    * [KARAF-2351] - Upgrade to Pax-Swissbox 1.7.0(-SNAPSHOT) and bndlib 2.1.0
    * [KARAF-2358] - Upgrade to Pax URL 1.6.0
    * [KARAF-2383] - Upgrade to XBean 3.14
    * [KARAF-2389] - Upgrade to commons-compress 1.5
    * [KARAF-2393] - Upgrade to Felix Maven Bundle plugin 2.4.0
    * [KARAF-2394] - Upgrade to Felix WebConsole 4.2.0
    * [KARAF-2398] - Upgrade to ServiceMix cglib bundle 3.0_1
    * [KARAF-2399] - Upgrade to jledit 0.2.0
    * [KARAF-2405] - Upgrade to maven-assembly-plugin 2.3
    * [KARAF-2422] - Upgrade to Pax Exam 3.2.0
    * [KARAF-2436] - Upgrade to Pax Logging 1.7.1
    * [KARAF-2461] - Upgrade to Pax Web 3.0.2
    * [KARAF-2462] - Upgrade to Jetty 8.1.12.v20130726
    * [KARAF-2463] - Upgrade to easymock 3.2
    * [KARAF-2464] - Upgrade to sshd-core 0.9.0
    * [KARAF-2465] - Upgrade to jasypt 1.9.1
    * [KARAF-2510] - Upgrade to Aries Blueprint CM 1.0.2
    * [KARAF-2534] - Upgrade to aries-proxy-impl 1.0.2, blueprint-core 1.3.0 and blueprint-cm 1.0.3
    * [KARAF-2543] - Update to Pax-Web 3.0.3
    * [KARAF-2553] - Upgrade to commons-compress 1.6
    * [KARAF-2554] - Upgrade to Felix ConfigAdmin 1.8.0
    * [KARAF-2555] - Upgrade to Felix Metatype 1.0.8
    * [KARAF-2559] - Upgrade to Felix SCR 1.8.0
    * [KARAF-2560] - Upgrade to Felix Utils 1.4.0
    * [KARAF-2564] - Upgrade to Felix WebConsole Event plugin 1.1.0
    * [KARAF-2565] - Upgrade to OSGi Compendium 5.0.0
    * [KARAF-2578] - Upgrade to Pax Tinybundles 2.0.0
    * [KARAF-2579] - Upgrade to Pax Exam 3.3.0
    * [KARAF-2580] - Upgrade to XBean 3.15
    * [KARAF-2581] - Upgrade to jledit 0.2.1
    * [KARAF-2582] - Upgrade to json 20131018
    * [KARAF-2583] - Upgrade to ServiceMix Specs 2.3.0
    * [KARAF-2584] - Upgrade to XBean 3.16
    * [KARAF-2586] - Upgrade to Pax Web 3.0.4
    * [KARAF-2590] - Upgrade to Pax Exam 3.4.0
    * [KARAF-2593] - pax-logging-api, slf4j and logback package export conflict
    * [KARAF-2608] - Upgrade to Pax Web 3.0.5

** Improvement
    * [KARAF-216] - Create an admin:clone command
    * [KARAF-338] - Upgrade Karaf to version 1.0.0 of pax-web
    * [KARAF-362] - Add documentation how to build a custom karaf distribution including branding
    * [KARAF-366] - Remove sax parser code from features core
    * [KARAF-402] - Gather features and cmdhelp maven plugins into a generic karaf maven plugin
    * [KARAF-403] - Improve Bundle-Description header display
    * [KARAF-404] - Upgrade to felix maven-bundle-plugin 2.3.4
    * [KARAF-412] - Documentation: Add notes on how to make multiple configuration files available to the bundle context.
    * [KARAF-422] - If no version was found, features-maven-plugin try to create an artifact with a null version
    * [KARAF-445] - Add completion for shell aliases
    * [KARAF-447] - Add JDBC lock implementation for PostgreSQL
    * [KARAF-460] - Add commands to manipulate kar archives
    * [KARAF-461] - dev:create-dump command should generate a cleaner zip file name
    * [KARAF-465] - Merge http with war feature
    * [KARAF-469] - Remove duplicate code
    * [KARAF-470] - Move Main variables management in util
    * [KARAF-471] - would be nice for a "already exists" call to features:addurl to trigger a refresh
    * [KARAF-476] - The admin-command should be extended to handle RMI-server-port settings
    * [KARAF-483] - pax-web jetty.xml configfile should contain default security realm
    * [KARAF-484] - Upgrade to Felix Framework 3.0.9
    * [KARAF-487] - Improve --help information for obr:list
    * [KARAF-488] - obr:list should also include the bundle-symbolic-name of the packages it lists as this is used to execute other OBR commands
    * [KARAF-495] - Add a Tutorials section to the website.
    * [KARAF-513] - The ssh:ssh and admin:connect command do not allow passing a command to execute
    * [KARAF-514] - When starting a child instance, there's no way to wait until it's started
    * [KARAF-517] - Upgrade to pax-runner 1.6.1
    * [KARAF-530] - Rename org.apache.karaf.assemblies/apache-karaf to org.apache.karaf/apache-karaf
    * [KARAF-533] - Improve depdencny handling to manual
    * [KARAF-539] - Document configfile xml tag of features
    * [KARAF-540] - Add IdentificationUtils in Karaf utils
    * [KARAF-542] - Support of next line with '>' character
    * [KARAF-544] - Documentation on how to use the JMX console
    * [KARAF-551] - Implement the shell:source command
    * [KARAF-554] - Add karaf version in system properties and display in shell:info command output
    * [KARAF-560] - Modify all console log commands to receive a "logger" argument.
    * [KARAF-561] - Make obr:list output similar to osgi:list
    * [KARAF-563] - Adjustable PermSize and MaxPermSize in karaf script
    * [KARAF-564] - Allow configuring features OBR resolver to resolve optional imports as well
    * [KARAF-573] - Print out that karaf has to be restarted if using framework with new framework
    * [KARAF-574] - Re-introduce export version in packages:exports command
    * [KARAF-576] - introduce start-level attribute for feature element in features.xml
    * [KARAF-588] - Some fixes to Karaf Site
    * [KARAF-606] - JAAS: Allow LDAPLoginModule to supply role "DN" from LDAP group search
    * [KARAF-608] - Allow for multi-stage boot features installation
    * [KARAF-614] - Add warning to osgi:shutdown to avoid inadvertently shutting down the container
    * [KARAF-618] - Align Cellar major version with the Karaf one
    * [KARAF-623] - Create a shell completer for jaas realms
    * [KARAF-638] - Use the same naming convention in commands
    * [KARAF-640] - The Cellar's Hazelcast instance should be configured via Configuration Admin.
    * [KARAF-645] - Add a flag to suppress --help Option output on
    * [KARAF-651] - features-maven-plugin should "embed" the Karaf features descriptor
    * [KARAF-654] - Merge jetty feature with jetty-jaas feature
    * [KARAF-659] - correct manuall about http-whiteboard feature
    * [KARAF-661] - Typing ^D should behave as on Unix
    * [KARAF-662] - Clarify relationship of config.properties and custom.properties
    * [KARAF-663] - features-maven-plugin add-features-to-repo should embed Karaf core features descriptor
    * [KARAF-664] - Use Wiki syntax in bundle.info instead of Ansi control sequences
    * [KARAF-665] - Rename karaf-maven-plugin goals
    * [KARAF-668] - The karaf web console doesn't list web contexts
    * [KARAF-687] - Add VirtualHost support for webapp
    * [KARAF-693] - features:addurl raises "Premature end of file" when network is not available
    * [KARAF-698] - Technical edits to User's Guide
    * [KARAF-699] - Grammar fixes to source code files
    * [KARAF-700] - Updates to developer's guide
    * [KARAF-705] - Upgrade demos/web to use jdk 1.6 on the trunk.
    * [KARAF-713] - Refactor karaf main
    * [KARAF-720] - Make 3.0.x source JDK7 compliant for type handling.
    * [KARAF-725] - Read-only commands shouldn't ask for system bundle confirmation
    * [KARAF-729] - Karaf Maven Plugin source code cleanup
    * [KARAF-733] - Doc fixes to the quick start guide and overview page
    * [KARAF-737] - The Karaf WebConsole should not only list Http contexts but also web contexts as in web:list
    * [KARAF-752] - Editorial fixes to the assemblies/ configuration files
    * [KARAF-755] - Recommended improvements to help commands
    * [KARAF-756] - Add ability to have KeyStoreManager to wait for SSL keystore to be fully initialize by other bundle through timeout
    * [KARAF-762] - dev:watch should support multiple bundle IDs
    * [KARAF-764] - Correct links to ops4j in documentation
    * [KARAF-783] - Improve security docs wrt role policies
    * [KARAF-784] - Add date in the default Karaf log
    * [KARAF-786] - Add more MBeans
    * [KARAF-795] - Kar builder uses a different version for easymock then the rest of the project
    * [KARAF-802] - Upgrade mail bundle version to 1.4.4.
    * [KARAF-807] - Add a features name to the karaf-cellar features.xml
    * [KARAF-808] - Remove author attribute tags from Karaf source code
    * [KARAF-813] - Install Pax URL OBR with the OBR feature
    * [KARAF-817] - Allow to set Karaf window name via parameter
    * [KARAF-818] - Allow JAVA_MAX_MEM, JAVA_PERM_MEM, JAVA_MIN_MEM, JAVA_MAX_PERM_MEM the same way as for linux startup file
    * [KARAF-819] - Rename Karaf features name (and sub-projects features name) to use full qualified name
    * [KARAF-829] - Support of Java 7
    * [KARAF-832] - build html manual by default, use a profile for pdf generation
    * [KARAF-840] - specify javax.annotation packages version to 1.1.0 for jre-1.6 as Annotation 1.1 Spec is used for Java 6
    * [KARAF-847] - Provide Karaf features covering all Spring bundles
    * [KARAF-851] - Upgrade Maven plugins in use
    * [KARAF-864] - obr:deploy command should provide a start option
    * [KARAF-881] - Make aliases to osgi:* commands to be more clear for the users
    * [KARAF-885] - StartBundle doesn't deploy all bundles if one failed
    * [KARAF-886] - Document security properties in the relevant configuration files
    * [KARAF-888] - Add a Karaf Config Service
    * [KARAF-897] - Fixing text in bundle.info files
    * [KARAF-898] - Config delete operation should remove the pid.cfg file
    * [KARAF-899] - Upgrade to Apache Felix Gogo version 0.10.0
    * [KARAF-900] - Shutdown command should display the instance name
    * [KARAF-907] - Include 64 bits wrapper library
    * [KARAF-916] - use org.apache.aries.jmx.core instead of org.apache.aries.jmx
    * [KARAF-925] - Karaf config.properties doesn't define J2SE-1.6 and J2SE-1.7 execution environment
    * [KARAF-930] - Bundles MBean should mimic the BundleSelector like osgi:* commands
    * [KARAF-931] - Add includeTransitiveDependencies option to features-generate-descriptor Maven goal
    * [KARAF-936] - Features info command should display the start level of a bundle if available.
    * [KARAF-940] - Align various bat and sh scripts
    * [KARAF-942] - Expose Karaf RMI registry as a service
    * [KARAF-945] - Use singular for shell commands
    * [KARAF-946] - MBeans should be renamed in singular
    * [KARAF-947] - Rename admin service to instance service
    * [KARAF-948] - Apply normalized shell command format
    * [KARAF-956] - jaas module should throw generic FailedLoginException
    * [KARAF-963] - Refactoring of the modules
    * [KARAF-965] - Allow features-maven-plugin to handle multiple versions of the same feature
    * [KARAF-968] - Features file should require name attribute on features element
    * [KARAF-970] - feature <config/> tag doesn't create the cfg file
    * [KARAF-981] - Set kar as a boot feature
    * [KARAF-999] - local-repo folder shouldn't be used
    * [KARAF-1001] - Consistency between command annotation and blueprint
    * [KARAF-1002] - Switch the blueprint extender to synchronous mode
    * [KARAF-1005] - Port current karaf integration tests to new test framework
    * [KARAF-1010] - Add 64Bit ServiceWrapper to karaf
    * [KARAF-1013] - Less verbose in log when mistyped commands at INFO level
    * [KARAF-1014] - Make files specified by ${includes} optional
    * [KARAF-1017] - Use the Pax Web features.xml for Pax Web 2.0 and further
    * [KARAF-1019] - Set java memory options only when required
    * [KARAF-1021] - karaf-maven-plugin does not prefix non-bundles with the wrap: prefix when generating a feature.xml
    * [KARAF-1022] - java.io.tmpdir system property should use $KARAF_DATA/tmp in place of $KARAF_BASE/tmp
    * [KARAF-1023] - Add karaf activators for jars in the lib folder
    * [KARAF-1032] - Text improvements to Features XSD
    * [KARAF-1035] - Allow Karaf config commands to accept the pid as an option
    * [KARAF-1039] - Rename the org.apache.felix.gogo.commands package to org.apache.karaf.shell.commands
    * [KARAF-1041] - create-kar goal should handle configfile
    * [KARAF-1045] - Improved help system
    * [KARAF-1048] - make pom.xml eclipse 3.7 m2e friendly
    * [KARAF-1057] - Update the list of supported execution environments
    * [KARAF-1069] - create a ServerInfo service that Main sets up that exposes karaf home, base, data, instances, and the command line arguments
    * [KARAF-1072] - Provide man command as an alias to help
    * [KARAF-1073] - Add -r (reboot) and -h (halt) options to the system:shutdown command
    * [KARAF-1077] - New service:list command focused on services instead of bundles
    * [KARAF-1080] - Spring feature repo for spring related features
    * [KARAF-1087] - kar archetype
    * [KARAF-1088] - assembly archetype
    * [KARAF-1091] - Upgrade maven bundle plugin to 2.3.6
    * [KARAF-1093] - Make org.apache.karaf.util a bundle
    * [KARAF-1112] - shell:sleep should be in seconds
    * [KARAF-1115] - Add a jre.properties.cxf with all changes required to run cxf
    * [KARAF-1118] - Enable install of CXF into karaf with a simple command
    * [KARAF-1119] - expose rmiregistry port as a service property
    * [KARAF-1129] - Allow configuring rmi Registry host as well as port
    * [KARAF-1142] - Get rid of the code using StartLevel and PackageAdmin has they are now deprecated
    * [KARAF-1145] - Upgrade to pax-logging 1.6.4
    * [KARAF-1167] - No SCR implementation supplied with Karaf
    * [KARAF-1181] - Add tab completer to the help command
    * [KARAF-1186] - Provide a migration/update section in the manual
    * [KARAF-1191] - Switch back to millis per default on shell:sleep and introduce -s option
    * [KARAF-1197] - AdminService - Allow to provide a PrintStream so you can capture or control activity on the console
    * [KARAF-1208] - Rename features to feature
    * [KARAF-1214] - Improvement in Karaf log4j appender docs
    * [KARAF-1261] - Jaas commands should allow you to distinguish between to realms that have the same name
    * [KARAF-1271] - Feature service should log in DEBUG instead of INFO
    * [KARAF-1273] - Combine the commands and mbeans for osgi framework related stuff into one module set
    * [KARAF-1276] - Add activation="eager" to springListener bean in shell/osgi/src/main/resources/OSGI-INF/blueprint/shell-osgi.xml
    * [KARAF-1281] - New table support for shell
    * [KARAF-1282] - Remove osgi sources from karaf main
    * [KARAF-1289] - Move the standard feature definition to the feature.xml
    * [KARAF-1290] - Kar deployer should move into the kar module
    * [KARAF-1291] - Features deployer should be in the features module
    * [KARAF-1295] - serviceUrl in org.apache.karaf.management.cfg should use 0.0.0.0 but not localhost
    * [KARAF-1296] - Karaf startup without startup.properties
    * [KARAF-1299] - Make sure that all karaf archetype contain a description
    * [KARAF-1300] - features managment should be more robust if customer features descriptor file has duplicated feature name
    * [KARAF-1302] - Replace MBeanRegistrer with aries jmx whiteboard and remove .management modules
    * [KARAF-1307] - Refactor http command and mbean to new module layout and change to use jmx whiteboard
    * [KARAF-1328] - jclouds feature repo url has been changed after version 1.0
    * [KARAF-1351] - Improvements to features-generate-descriptor
    * [KARAF-1383] - Fix warning messages during bundle build
    * [KARAF-1390] - Embedded features should have POM dependencies on the projects they represent
    * [KARAF-1396] - config:list command description should be enhanced
    * [KARAF-1410] - Error in stop script if KARAF_DEBUG is enabled
    * [KARAF-1427] - Split shell console into API and impl
    * [KARAF-1438] - Simplify imports in bundle plugin for deployers
    * [KARAF-1444] - Rename shell.shell to shell.commands.impl and make packages private
    * [KARAF-1446] - Move help system and table out of console into separate modules
    * [KARAF-1448] - diag command should print the full stacktrace instead of the messages only
    * [KARAF-1449] - The InstallKarMojo fails with a nullpointer if an artifact could not be retrieved
    * [KARAF-1462] - Improvements to shell tables
    * [KARAF-1468] - Use the geronimo servlet spec instead of jetty' since it's backward compatible
    * [KARAF-1470] - Cleanup: Remove no longer required org.apache.karaf.tooling.testing project
    * [KARAF-1471] - Use project.version instead of direct version in manual
    * [KARAF-1489] - Add an itest showing how to correctly use tinybundles with provision in paxexam-karaf
    * [KARAF-1499] - InfoAction shell command should sort the properties from InfoProvider instances
    * [KARAF-1500] - Forgot a space between hours and minutes in InfoAction.java
    * [KARAF-1502] - Consolidate the feature commands about feature repositories
    * [KARAF-1506] - Check host keys when connecting to an ssh server using bin/client and ssh:ssh
    * [KARAF-1509] - Allow one step maven build by not using the lifecycle extension of the karaf-maven-plugin
    * [KARAF-1511] - Nullpointer exception when typing help test
    * [KARAF-1521] - add-features-to-repo goal should define a correct default value for repository
    * [KARAF-1551] - Kar service should not install the kar contents into the system dir
    * [KARAF-1552] - Support kars that will not be auto started
    * [KARAF-1558] - Instance clone should be able to clone the root instance
    * [KARAF-1559] - Demos should be included in the distro but not in the repository list
    * [KARAF-1562] - Improve message displayed when the JAAS login module doesn't have a backing engine
    * [KARAF-1563] - Support clean-all & clean-cache directly in karaf main jar
    * [KARAF-1565] - Clone operation should be provided by the instance MBean
    * [KARAF-1572] - JDBC Lock without using long running transactions
    * [KARAF-1574] - When two karaf containers are started locally, an exception is displayed at startup.  A nicer message would be better.
    * [KARAF-1575] - Features provided by karaf do not have any description
    * [KARAF-1580] - Demo should exclude Eclipse and IntelliJ IDEA files
    * [KARAF-1586] - wrapper:install command should be usable outside OSGi too
    * [KARAF-1600] - Avoid duplicate feature and bundle resolution when installing cascading features
    * [KARAF-1607] - Move dev commands and services to bundle, system and shell
    * [KARAF-1628] - Make client indepenent of console
    * [KARAF-1629] - Command completer should complete only on first scope level
    * [KARAF-1640] - Make sure the local console is fully working before the user can type commands
    * [KARAF-1641] - Avoid embedding jline in the console
    * [KARAF-1657] - org.ops4j.pax.url.mvn.proxySupport=false
    * [KARAF-1659] - Use dependencyManagement in features assemblies
    * [KARAF-1667] - Improve wait startup message
    * [KARAF-1676] - OBR URL's in Karaf have no simple identifier
    * [KARAF-1678] - WebConsole still use "admin" instead of "instance"
    * [KARAF-1693] - Rename command-watch to watch
    * [KARAF-1700] - update manual to reflect JDBC Lock updates
    * [KARAF-1710] - Remove @version headers from source
    * [KARAF-1712] - Use Pax-Web Features
    * [KARAF-1757] - Welcome message incorrect during ssh session or using bin/client.
    * [KARAF-1798] - Use exam framework for our itests and increase tests coverage
    * [KARAF-1811] - Remove section about console colors from manual
    * [KARAF-1818] - Improve user guide
    * [KARAF-1828] - Build src distributions within specific profiles
    * [KARAF-1834] - Make KarafTestSupport available externally
    * [KARAF-1850] - feature:list should use alphabetical order
    * [KARAF-1889] - Change logging in FeaturesServiceImpl
    * [KARAF-1903] - Refactore osgicore and osgicompendium modules
    * [KARAF-1933] - Add id for Maven repository
    * [KARAF-1951] - Remove workaround for KARAF-1117
    * [KARAF-1989] - Add CXF DOSGi feature uri to org.apache.karaf.features.repos.cfg
    * [KARAF-1990] - Add Cellar feature URI in org.apache.karaf.features.repos.cfg
    * [KARAF-2003] - Interrupt a running command in shell
    * [KARAF-2017] - Service wrapper should use and populate JAVA_HOME in conf file
    * [KARAF-2043] - Document caveats of Pax Url Wrap when used in Karaf Shell
    * [KARAF-2049] - Instructions in welcome screen is a bit misleading with hit
    * [KARAF-2053] - HTTP feature should install a default etc/org.ops4j.pax.web.cfg file
    * [KARAF-2072] - Spelling correction
    * [KARAF-2097] - endorse stax-api spec jar
    * [KARAF-2119] - upgrade pax.base to 1.4.0
    * [KARAF-2138] - Add a status check script and karaf script argument
    * [KARAF-2160] - add options to only create tar.gz or zip archive in CreateArchiveMojo
    * [KARAF-2163] - Add a jre-1.8 to jre.properties
    * [KARAF-2175] - Add the sonatype standard snapshot repository to the karaf repositories
    * [KARAF-2230] - Watch command - Add option to control if the console should clear or not
    * [KARAF-2257] - SCR Component Updates
    * [KARAF-2273] - Turn blueprint as synchronous by default
    * [KARAF-2290] - should also endorse activation-api spec jar
    * [KARAF-2291] - make rmiServerHost configurable
    * [KARAF-2298] - Karaf shell option for a "transient" bundle stop
    * [KARAF-2312] - Uninstalling a feature should respect bundle start levels
    * [KARAF-2320] - make kar deployer/service to support NoAutoRefreshBundles option
    * [KARAF-2326] - Backspace stops working after shutdown command
    * [KARAF-2344] - ensure LDAPLoginModule can retrieve multiple roles assigned to a specific user
    * [KARAF-2356] - Enable use of ANSI colors in ShellTable
    * [KARAF-2360] - Add password option to admin:connect and ssh:ssh commands
    * [KARAF-2369] - extend role.filter of LDAPLoginModule to support distinguishedName filter
    * [KARAF-2414] - Move URL handling classes to separate package
    * [KARAF-2415] - dev:create-dump: extending with environment information
    * [KARAF-2419] - karaf maven plugin: Extract docbook and wiki help generation from mojo class
    * [KARAF-2425] - Code cleanup in karaf maven plugin
    * [KARAF-2426] - Support flat repo structure and meta data export in AddToRepositoryMojo
    * [KARAF-2438] - Improve ScrServiceMBean to display more details about SCR components
    * [KARAF-2443] - bundle-level and update commands should take symbolic name as parameter
    * [KARAF-2450] - Create "service-wrapper" alias to the wrapper feature
    * [KARAF-2459] - help command should be contextual to the current subshell
    * [KARAF-2469] - karaf-maven-plugin should take dependency exclusion into account
    * [KARAF-2474] - Provide a command for dumping the System, and OSGi properties
    * [KARAF-2484] - Export Bundle-SymbolicName and Bundle-Version in karaf-maven-plugin
    * [KARAF-2491] - Create extra karaf maven plugin command for meta data export and optionally eliminate duplicates
    * [KARAF-2493] - Fixing some bugs about failed resolutions, not adding core features by default
    * [KARAF-2494] - Fixing some bugs about failed resolutions, not adding core features by default
    * [KARAF-2496] - Add a configuration to define the behaviour of the subshell completion
    * [KARAF-2499] - Karaf should exit if the data directory is deleted
    * [KARAF-2500] - Karaf should monitor the lock file existence
    * [KARAF-2501] - Break some bundle dependencies in the console
    * [KARAF-2507] - Add alias to display features installed or features uninstalled
    * [KARAF-2521] - The client script should find better default values
    * [KARAF-2526] - Adding diagnostics for spring dm errors
    * [KARAF-2527] - Move duplicate package reporting from bundle:diag to package:exports
    * [KARAF-2535] - Introduce blueprint-web feature
    * [KARAF-2539] - Add --clear option to history command
    * [KARAF-2542] - Enhance documentation and wrapper for running Karaf as service with Mac OS X
    * [KARAF-2547] - karaf/stop script should be catching 'Connection refused' and display a message
    * [KARAF-2569] - Introduce KARAF_ETC env variable
    * [KARAF-2575] - Add missing commands in bin/instance
    * [KARAF-2598] - Add "--no-format" option to commands using ShellTable
    * [KARAF-2599] - Use ShellTable in bundle:services command
    * [KARAF-2609] - Provides etc/org.apache.karaf.kar.cfg file in the distribution
    * [KARAF-2610] - Update the comments in etc/users.properties (to include changes on groups/roles)
    * [KARAF-2616] - war feature should depends to http (instead of pax-http)
    * [KARAF-2618] - Add start()/stop() operations with just bundle ID in the WebMBean
    * [KARAF-2637] - Optimize the kar deployer to not read/write the status every time a bundle changes
    * [KARAF-2639] - Provide a way to configure ciphers and macs and use only the secured one by default

** New Feature
    * [KARAF-32] - Support ssh public key authentication and agent forwarding
    * [KARAF-376] - State replication between Karaf instances
    * [KARAF-381] - Commands for inspecting blueprint bundles
    * [KARAF-401] - Provide kar goal in the karaf maven plugin
    * [KARAF-407] - Extend features:info command to display features description and details
    * [KARAF-408] - Add osgi:services related commands
    * [KARAF-426] - Manage Karaf shell.name by branding
    * [KARAF-463] - Add chapter for Pax Web and the OSGi HttpService
    * [KARAF-473] - Support version resolving in FeatureService#getFeatures(name/version)
    * [KARAF-477] - Karaf console should gracefully handle errors due to the history file being read only.
    * [KARAF-478] - Subclasses of Console should be able to change the history file.
    * [KARAF-523] - Allow maven style names in startup.properties
    * [KARAF-541] - Support JMX SSL via etc/org.apache.karaf.management.cfg
    * [KARAF-572] - Command to show all registered servlets and their contexts
    * [KARAF-581] - Also make rmiRegistryHost configurable
    * [KARAF-605] - Add param to Gogo Argument and Option to override default value with specific value
    * [KARAF-647] - Support of sub-shell
    * [KARAF-657] - kar deployer should start the feature
    * [KARAF-696] - Add a macro allowing users to identify the contents of a specific config file.
    * [KARAF-798] - Support for relocating karaf.history file
    * [KARAF-835] - Provide a spring-jms feature
    * [KARAF-845] - Add a jasypt based property placeholder to support encrypted values
    * [KARAF-866] - New dev:wait-for-service command to wait for a given osgi service
    * [KARAF-908] - Provide a way to access system properties easily in the shell
    * [KARAF-934] - Provide a way to select which features are to be installed when dropping a descriptor to the deploy folder.
    * [KARAF-977] - config propset, propappend & propdel could use some autocompletion
    * [KARAF-980] - Add demo for extending Karaf's console commands
    * [KARAF-984] - Add Kar deployer demo using karaf-maven-plugin
    * [KARAF-987] - Add scp support
    * [KARAF-1004] - Introduce paxexam-karaf into karaf tooling
    * [KARAF-1007] - Include paxexam-karaf testframework documentation into the manual
    * [KARAF-1029] - Add completer support on option values
    * [KARAF-1055] - New bundle:capabilities and bundle:requirements commands
    * [KARAF-1059] - Karaf command features:status to indicate feature loaded or not
    * [KARAF-1109] - Provide archetypes for bundle, bundle-blueprint, web-bundle, war
    * [KARAF-1196] - implement a 'watch' command so we can watch the output of a karaf command like the unix 'watch' mechanism
    * [KARAF-1203] - Make invoker in karaf testcontainer configurable
    * [KARAF-1213] - Add option to configure BundleStartLvl of automatically installed base bundles
    * [KARAF-1334] - Use the new servicemix spec to allow the use of both the JRE implementations and implementations from bundles
    * [KARAF-1380] - Add a command to easily name an instance
    * [KARAF-1475] - Support SSH agent forwarding and use the agent authentication when connecting to other instances
    * [KARAF-1519] - Support to download features for later offline usage
    * [KARAF-1546] - Add -i/--install-all option to feature:add-url
    * [KARAF-1762] - command to list bundles with the requested class
    * [KARAF-1806] - Add version attribute in the SystemMBean
    * [KARAF-2037] - karaf 3.0 with gemini blueprint
    * [KARAF-2044] - Provide the ability to edit text resources from the Karaf shell
    * [KARAF-2050] - Ability to configure ssh session idle timeout - currently hardcode as 5 minutes
    * [KARAF-2078] - Create the shell:date command
    * [KARAF-2146] - Add a log command to log from shell to the log
    * [KARAF-2159] - add option to resolve transitive feature-dependencies in InstallKarsMojo
    * [KARAF-2164] - Create shell:wc command
    * [KARAF-2185] - Provide Spring 3.2.x support
    * [KARAF-2300] - log command to list all the logging levels currently been set
    * [KARAF-2370] - Add alias command
    * [KARAF-2372] - Introduce boot features sync mode property (true|false)
    * [KARAF-2434] - Add support for JAAS groups
    * [KARAF-2435] - Add Role-based access to JMX
    * [KARAF-2439] - Karaf maven plugin should allow to export feature meta data so user can create start scripts for containers
    * [KARAF-2455] - Role-based security for OSGi Services
    * [KARAF-2545] - Add feature:repo-refresh command
    * [KARAF-2549] - Provide additional enterprise features
    * [KARAF-2576] - Add instance:status/admin:status command to check the status of an instance

** Question
    * [KARAF-806] - ProxyLoginModule should actually be on the bootclasspath classpath right?

** Task
    * [KARAF-328] - Drop support for JDK 1.5
    * [KARAF-378] - Apache Karaf 3.0.0 Release
    * [KARAF-431] - Add documentation around remote management via JMX
    * [KARAF-432] - Remove spring2 support from karaf features
    * [KARAF-433] - Add documentation about KAR archive format and deployer
    * [KARAF-434] - Add wrap deployer description in the deployer section of the Karaf user guide
    * [KARAF-435] - Add diagnostic documentation (dev:create-dump, etc) in the Karaf User Guide
    * [KARAF-437] - Document jre.properties tuning
    * [KARAF-439] - Provide documentation about the Karaf wrapper
    * [KARAF-444] - Upgrade to latest version of pax-url
    * [KARAF-454] - Upgrade Karaf to version 1.0.1 of pax-web
    * [KARAF-489] - Upgrade pax-logging to 1.6.1
    * [KARAF-500] - Upgrade to Jetty 7.3.1
    * [KARAF-501] - Upgrade to PAX Exam 1.2.4
    * [KARAF-516] - Upgrade to felix eventadmin 1.2.10
    * [KARAF-543] - Add manual section around log custom appenders
    * [KARAF-553] - Get place of jetty config with mvn url in sync
    * [KARAF-566] - Build: Remove duplicate entries from build artefacts.
    * [KARAF-567] - org.apache.karaf.jaas.config.impl accidentally exported?
    * [KARAF-584] - Upgrade Karaf build environment
    * [KARAF-619] - Add Cellar manual
    * [KARAF-620] - Cellar should use the parent Karaf POM
    * [KARAF-646] - Upgrade to Jetty 7.4.1.v20110513
    * [KARAF-694] - Upgrade to Pax-Logging 1.6.3
    * [KARAF-887] - Refer PrinceXML website in the manual
    * [KARAF-909] - Delete the copy of the felix gogo Closure class
    * [KARAF-1053] - Removed unused folders/code from Assemblies
    * [KARAF-1054] - Setup eclipse targets now deprecated assembly folder.
    * [KARAF-1086] - Create Kar for Karaf demos
    * [KARAF-1094] - Refactor Karaf Demos to new assemblies format
    * [KARAF-1097] - Update Kar documentation
    * [KARAF-1136] - Rationalize Karaf 3.0 minimal distribution
    * [KARAF-1274] - Please set svn:ignore to all eclipse's project files
    * [KARAF-1393] - Rename commands module to command
    * [KARAF-1442] - Port deployer bundle demo to Karaf 3.0
    * [KARAF-1445] - more svn:ignore are needed
    * [KARAF-2062] - Add a spring3.2 feature
    * [KARAF-2161] - Incorrect LGPL license info in Notices file
    * [KARAF-2233] - Release Apache Karaf 3.0.0.RC1
    * [KARAF-2336] - Remove karaf-pax-exam and use pax-exam for itests
    * [KARAF-2413] - Add features:chooseurl for camel-extra
    * [KARAF-2619] - Remove jetty.xml from Karaf

** Test
    * [KARAF-1870] - Add assertion to EquinoxFrameworkTest
    * [KARAF-1871] - KeepRuntimeFolderTest is named wrong and does not assert anything
    * [KARAF-1872] - Backward224Test should check for the karaf version
    * [KARAF-1873] - BaseKarafDefaultFrameworkTest should test for felix framework
    * [KARAF-1874] - Add assertion to FrameworkWithShellOffTest
    * [KARAF-1875] - Improvement of test for keeping or deleting the pax exam folder
    * [KARAF-1876] - Improve StandardFeaturesTest, EnterpriseFeaturesTest and SpringFeaturesTest using feature service
    * [KARAF-1877] - itests fail on jenkins
    * [KARAF-1896] - itests.EnterpriseFeaturesTest.installApplicationWithoutIsolationFeature fails with NotSerializableException
    * [KARAF-1916] - Make tests faster by using EagerSingleStagedReactorFactory
    * [KARAF-2087] - add a testcase to cover the scenario that the AdminService can always load latest instance status which changed by external process
    * [KARAF-2485] - Fix StandardFeaturesTest
    * [KARAF-2533] - Use PerClass for feature tests


                    Apache Karaf 3.0.0.RC1
                    ======================

  Overview
  --------

  !! This is a technology preview release of Apache Karaf, and should NOT be considered production ready !!

  Apache Karaf 3.0.0.RC1 represents a major refactoring of the project, and includes numerous new features. We ask that users provide the community with their feed back so that the full Apache Karaf 3.0.0 release can be as feature complete and stable as possible.

  Changelog
  --------- 

** Sub-task
    * [KARAF-305] - New maven goal to create a kar file from a given feature / feature set
    * [KARAF-1095] - Update Branding Shell demo
    * [KARAF-1096] - Update Custom Command demo
    * [KARAF-1098] - Update Dump Provider demo
    * [KARAF-1099] - Update Web demo
    * [KARAF-1275] - Refactor bundle modules into core, command, management
    * [KARAF-1457] - Revert Aries JMX Update on SCR Management Component
    * [KARAF-1524] - Support creating a kar from the console
    * [KARAF-2228] - Karaf.webconsole uses wrong version in export-package header
    * [KARAF-2229] - Adapt karaf.webconsole package-imports/exports to felix.webconsole all-in-one bundle


** Bug
    * [KARAF-18] - features:list fails to show which bundles have been installed by featuresBoot if any exception is thrown during installation
    * [KARAF-281] - History using up arrow does not work on windows
    * [KARAF-384] - Cannot find some jar in ext directory
    * [KARAF-398] - Features schema is not correct
    * [KARAF-440] - features-maven-plugin throws NullPointerException maven 3.0.2
    * [KARAF-451] - Trunk build is broken
    * [KARAF-456] - Artifact versions named in the documentation are not replaced with the version of the current project
    * [KARAF-457] - Merge 2.2.x assemblies structure to trunk
    * [KARAF-468] - The admin InstanceImpl class should use the util properties for loading / storing rmiRegistryPort , sshPort
    * [KARAF-472] - features-maven-plugin: TAB-characters in feature-repository lead to resolution-errors in add-features-to-repo
    * [KARAF-479] - Console doesn't like it when the console window is to small - no line wrapping for commands
    * [KARAF-493] - Various site fixes
    * [KARAF-496] - Karaf prompt displayed twice
    * [KARAF-499] - Unable to load simple standalone JSF 2.0 webapp - JSF's implementation's META-INF/*.tld files are not scanned at startup
    * [KARAF-504] - Features Maven Plugin does not work with Maven 3
    * [KARAF-506] - The config shell commands offer no way to delete a command
    * [KARAF-507] - The config shell completer does not allow completion of factory based pids
    * [KARAF-508] - The config:edit create does not allow the creation of factory configs
    * [KARAF-509] - The config:update command does not save factory configurations to the correct file
    * [KARAF-512] - WebConsole installation failed due to missing jetty-jaas feature
    * [KARAF-518] - Unable to load features.xml with included schema attribute
    * [KARAF-519] - Jline behavior problem when pasting long lines
    * [KARAF-521] - Executing complex scripts is extremely difficult
    * [KARAF-525] - Bundles listed in etc/startup.properties should only installed the first time
    * [KARAF-527] - The console bundle should indicate it provides the gogo related services
    * [KARAF-528] - Error while using correct feature descriptor in features-maven-plugin
    * [KARAF-534] - Startlevel: Strange deployment behaviour
    * [KARAF-535] - Description for List command incorrectly claims Threshold default is -1
    * [KARAF-536] - Backspace no longer works in Putty after using 'connect' command to connect to other instance, and commands are printed in only 2 columns.
    * [KARAF-537] - admin.bat prints stacktraces to standard out
    * [KARAF-538] - Dependency issue with feature spring-web
    * [KARAF-546] - Null point exception when executing log:display on an empty log
    * [KARAF-547] - Missing features file in the system directory of the distribution
    * [KARAF-557] - Feature: Failed to check to not install a bundle with the symbolic name contains attributes
    * [KARAF-558] - Boot feature from configuration file, can contain some spaces; the name should be trimmed
    * [KARAF-559] - AdminService loses root flag for instances
    * [KARAF-562] - Config properties defined in <config> tag (features.xml) are loaded during each refresh
    * [KARAF-565] - junit bundle missing (required by dev commands)
    * [KARAF-568] - minimal assembly: zip and tar.gz do differ in content
    * [KARAF-569] - Installing and uninstalling the jetty feature leaves Karaf in an ususable state
    * [KARAF-575] - webconsole: branding isn't resolved, therfore the webconsole doesn't work anymore
    * [KARAF-583] - Karaf manual does not build with new karaf-maven-plugin
    * [KARAF-585] - When connected to a remote instance, Ctrl-C closes the connection instead of simply interrupting the command
    * [KARAF-600] - "Extending the console" documentation still refers to org.osgi.service.command
    * [KARAF-601] - features:list does not show features of newly installed feature file
    * [KARAF-604] - All bundles are considered as system bundle
    * [KARAF-610] - Can't input the path string completely via karaf shell
    * [KARAF-622] - Jaas Cancel command is not working
    * [KARAF-624] - admin:stop command behavior not correct
    * [KARAF-625] - Missing property 'log4j.appender.out.file' in the file org.ops4j.pax.logging.cfg caused a NPE
    * [KARAF-630] - SpringDeploymentListenerTest fails on IBM JDK builds with No Class Def Found Error
    * [KARAF-634] - README file refers an incorrect contribution URL
    * [KARAF-637] - Update branding-console documentation to include the changes to custom.properties
    * [KARAF-653] - Karaf minimal is missing the feature files.
    * [KARAF-655] - Remove http://repository.ops4j.org/maven2 from org.apache.karaf.management.cfg
    * [KARAF-656] - kar deployer service not exported
    * [KARAF-669] - Dependency artifacts should be available on the Maven central repo
    * [KARAF-670] - Missing ${karaf.base}/system cause NullPointerException
    * [KARAF-671] - http:list does not display the correct information
    * [KARAF-675] - Longer shell commands affect the shell view when using up and down arrows
    * [KARAF-686] - introduce an override flag to configfile element so that we get chance to not override the finalname if it already exist
    * [KARAF-689] - Karaf instance can wrongly obtain a lock when the locking table is empty on a Oracle DB
    * [KARAF-690] - install http feature will start both 8080 and 8181 jetty port
    * [KARAF-697] - features:list shows the features that failed installation as installed.
    * [KARAF-706] - variable substitution doesn't work for system.properties
    * [KARAF-712] - Karaf's ls command does not represent URL objects correctly
    * [KARAF-718] - Grep doesn't work when piped from features:listurl
    * [KARAF-735] - java.util.NoSuchElementException if issue the first command as an empty command
    * [KARAF-753] - commandlist --help points to help for jaas:pending
    * [KARAF-754] - shell:cat hyphen ("-") option not activating STDIN.
    * [KARAF-760] - MInor time rendering bug
    * [KARAF-766] - Wrong help for features:install
    * [KARAF-769] - Update NOTICE file to mention JSW
    * [KARAF-771] - KAR Deployer doesn't work
    * [KARAF-773] - KAR docu outdated
    * [KARAF-776] - jclouds features require OSS Sonatype repository
    * [KARAF-781] - Class RunnableServiceListener misspelled
    * [KARAF-794] - mvn eclipse:eclipse fails with maven plugin 2.8.
    * [KARAF-796] - Editing Pax Web Configuration Via Karaf Console
    * [KARAF-800] - karaf does not start when using java7
    * [KARAF-811] - Combination of wrap+mvn and instructions doesnt work any more
    * [KARAF-812] - Cannot start bundle built with org.osgi.framework v. 4.3.0
    * [KARAF-815] - Generic the Karaf manual link
    * [KARAF-816] - Wrapper feature doesn't load security libraries
    * [KARAF-820] - Karaf client.bat swallows commands to be passed to the Karaf instance
    * [KARAF-824] - Web demo folder in 2.2.2 release is missing content and README.txt has bugs
    * [KARAF-826] - KarArtifactInstaller should look for "features" classifier in place of "feature"
    * [KARAF-827] - Karaf Web deployer (Pax-Web) always tries to deploy the deploy/README file
    * [KARAF-867] - Inconsistent deployment behavior between bundle installer and feature installer
    * [KARAF-875] - Unable to define escape the event designator '!' using '\!'
    * [KARAF-883] - NPE in features-maven-plugin
    * [KARAF-889] - dev:framework commands incorrect workflow
    * [KARAF-891] - Problem with $ charact in wrap:mvn URL
    * [KARAF-892] - EventAdmin events from Gogo not being sent from Karaf's console bundle
    * [KARAF-893] - Wrong URL in release notes [1]
    * [KARAF-894] - Kar deployment failed
    * [KARAF-895] - NPE during webconsole startup
    * [KARAF-896] - Karaf webconsole exports wrong version of Felix webconsole package
    * [KARAF-902] - Jaas: Properties backing engine doesn't remove users
    * [KARAF-904] - add jetty.port=8181 to jetty.xml so that configuration for jetty connector could take effect
    * [KARAF-905] - propdel() method in the ConfigMBean didn't work
    * [KARAF-910] - Race between FeatureService and ConfigAdmin for resolving mvn: URLs?
    * [KARAF-913] - Omitted @Command on Gogo plugin is hard to debug because of NPE
    * [KARAF-915] - KAR deployment failed in the features XML is not the first entry of the KAR archive
    * [KARAF-917] - warn instead of info when failing to install a feature
    * [KARAF-918] - pax-url prerequisites for a feature are not respected
    * [KARAF-919] - Kar redeployment failed
    * [KARAF-920] - Feature autoinstall from kar failed
    * [KARAF-921] - maven eclipse plugin 2.8 does not work correctly with karaf
    * [KARAF-922] - features-maven-plugin ignores repository tags in feature files
    * [KARAF-923] - features-maven-plugin#AddFeaturesToRepoMojo does not handle spaces in repository urls well
    * [KARAF-926] - JAAS: Properties backing engine doesn't respect encryptor prefix and suffix
    * [KARAF-932] - ConfigMBean raise a NPE when dictionnary is null
    * [KARAF-935] - Deployer bundles do not start
    * [KARAF-937] - Karaf maven plugin generates feature configuration with dublicate entries
    * [KARAF-939] - the realm set for JAASLoginService in jetty.xml should be karaf but not the default
    * [KARAF-951] - dev:create-dump raises a NullPointerException
    * [KARAF-952] - config:propdel doesn't delete the property in the cfg file
    * [KARAF-954] - Double quotes missing in generated karaf-wrapper.conf
    * [KARAF-964] - admin feature is no more available in Karaf
    * [KARAF-982] - Utils.fromMaven cant deal with both classifier and extension
    * [KARAF-985] - LDAPLoginModule generates a large number of DirContext objects
    * [KARAF-1000] - Karaf distributions shouldn't include data and local-repo folders
    * [KARAF-1008] - WebConsole raise NCDF on service page
    * [KARAF-1015] - ConfigMBean should use a different config pid than the config shell
    * [KARAF-1020] - BundleWatcher should look for SNAPSHOT
    * [KARAF-1024] - Bug generating feature.xml when dependency has no manifest
    * [KARAF-1030] - Grep command breaks existing line formating
    * [KARAF-1031] - Performance issue in the features jaxb support
    * [KARAF-1033] - Set the Features validation optional
    * [KARAF-1036] - Some MBeans don't provide attribute correctly
    * [KARAF-1040] - Commands should not catch exceptions but should rethrow them
    * [KARAF-1050] - "osgi:start xxx" doesn't print anything
    * [KARAF-1051] - addcommand / removecommand / eval should be in the shell scope
    * [KARAF-1064] - BootstrapLogManager does not reuse the instantiated Handler
    * [KARAF-1065] - TextDumpProvider.createDump(DumpDestination) does not flush OutputStreamWriter
    * [KARAF-1066] - make features xml parser more forgiving
    * [KARAF-1067] - JDK7 compile issues with OsgiCommandSupport
    * [KARAF-1068] - Multiple blueprint plans using command namespace result in multiple converter registrations
    * [KARAF-1071] - Cursor keys do not work in Karaf shell on windows
    * [KARAF-1090] - deployers feature for fileinstall deployers that used to be in full profile
    * [KARAF-1101] - Completion does not work when quiesce manager is deployed
    * [KARAF-1106] - Jetty feature should use ServiceMix Spec for activation
    * [KARAF-1110] - Archetypes don't work
    * [KARAF-1111] - Add documentation about archetypes
    * [KARAF-1114] - osgi shell blueprint bundle shouldn't use lazy default-activation
    * [KARAF-1116] - Scripts fail at resolving java jdk.
    * [KARAF-1122] - Feature <configfile/> creates an empty file if the file URL is not resolved
    * [KARAF-1124] - karaf does not work properly with closing brace in the working directory path
    * [KARAF-1126] - features-maven-plugin:validate goal raises a NPE if karafConfig configuration is not set
    * [KARAF-1127] - Boot features failed to startup when karaf started from directory with closing brace; logs also unavailable
    * [KARAF-1131] - Remove PackageMBean and move operation to BundleMBean
    * [KARAF-1133] - Error executing command 'start' when starting a child instance
    * [KARAF-1139] - Redeploy kar cause installing old feature
    * [KARAF-1140] - config:list has NPE since it uses a service after ungetting the service reference
    * [KARAF-1143] - Karaf (Config Mbean) can not recognize the features when Karaf installation path containing blank space
    * [KARAF-1144] - When running a single remote command through SSH, the SCOPE variable isn't set
    * [KARAF-1149] - Karaf MBeanServer is not usable behind firewall
    * [KARAF-1150] - admin:create command creates broken org.ops4j.pax.url.mvn.cfg file
    * [KARAF-1158] - Karaf trunk fails to build on a clean repo
    * [KARAF-1161] - The shell:new action does not support the creation of arrays
    * [KARAF-1162] - A command that can not be loaded breaks the whole completion
    * [KARAF-1174] - war feature cannot be installed after the cxf
    * [KARAF-1175] - Duplicate key exception should be handle locally to avoid to affect the whole MBean
    * [KARAF-1178] - OBR feature doesn't work
    * [KARAF-1179] - "dev:watch *" doesn't notice new bundles added to the container
    * [KARAF-1188] - Console bundle depends on aries blueprint 0.3.x but imports [0.4.0,1)
    * [KARAF-1198] - Add Maven repository metadata in the system repository
    * [KARAF-1199] - dev:watch command issues "[WATCH]" announcements only to the issuing shell
    * [KARAF-1206] - Child instance doesn't start
    * [KARAF-1207] - Karaf tooling exam regression tests failing on NoSuchMethodError com.google.common.io.Files.deleteRecursively
    * [KARAF-1209] - ServiceRecipe blueprint exception in the log
    * [KARAF-1212] - NPE during update of the FeatureFinder
    * [KARAF-1215] - Shell scripts are incompatible with /bin/sh on Solaris
    * [KARAF-1216] - add-features-to-repo goal does not reclaim file handles fast enough
    * [KARAF-1219] - Assemblies ignore some resources
    * [KARAF-1220] - o.p.karaf.management bundles must stop when its configured keystore is not available
    * [KARAF-1222] - System shell hangs after karaf integration tests had been run
    * [KARAF-1225] - Manual build fails
    * [KARAF-1226] - Karaf Client cannot run a script
    * [KARAF-1228] - application-without-isolation enterprise feature doesn't install
    * [KARAF-1241] - admin script does not pass on JAVA_OPTS to instance
    * [KARAF-1242] - org.apache.karaf.scr.command format error
    * [KARAF-1243] - Karaf JMX Config MBean behaves in unpredictable ways
    * [KARAF-1244] - Deployer Transformers Supports Manifest Element without A Supporting Schema
    * [KARAF-1247] - maven-metadata-local.xml is not generated for bundles from a boot feature
    * [KARAF-1250] - Cleanup karaf-maven-plugin
    * [KARAF-1252] - Features core bundle should not depend to shell and management bundles
    * [KARAF-1253] - No completion on some commands with scope *
    * [KARAF-1256] - Archetypes should use dynamic variables
    * [KARAF-1257] - Configuration completers should avoid using getConfiguration method of config admin
    * [KARAF-1262] - Reintroduce package:* modules
    * [KARAF-1265] - Add AIX, HP-UX, Solaris, and "custom" support in the service wrapper
    * [KARAF-1267] - Align Pax-web features with std. features
    * [KARAF-1269] - aries-annotation feature doesn't install
    * [KARAF-1270] - Allow multiple commands in karaf 3.0.x bin/karaf script
    * [KARAF-1277] - Features deployer is not in the startup.properties
    * [KARAF-1278] - Comands: History does not work, can not edit current comand
    * [KARAF-1285] - Karaf 3.x - Karaf bundle archetype maven bundle plugin configuration is missing "instructions" tags.
    * [KARAF-1287] - Check documentation consistent
    * [KARAF-1293] - feature level start-level not completely finished....
    * [KARAF-1298] - dev:watch does not work in some cases
    * [KARAF-1304] - Quick help text for features:info command is erroneous
    * [KARAF-1305] - Error with Basic HTTP Authentication when using karaf realm
    * [KARAF-1318] - User bundles are treated as system bundles
    * [KARAF-1327] - Client: can't execute alias command
    * [KARAF-1331] - Source distribution is missing
    * [KARAF-1343] - Features repo points to the old pax-wicket app
    * [KARAF-1354] - SSH Log-In failes with "Authentication failed" with valid credentials
    * [KARAF-1359] - instance:create fails with Error executing command: Unable to find resource etc/config.properties
    * [KARAF-1360] - Configration update doesn't work
    * [KARAF-1362] - Karaf web console does not work on tabs features, http and  instance
    * [KARAF-1363] - Upgrade Jetty when bugfix for the Loggging to stderr bug is available
    * [KARAF-1367] - Remove line number logging from default logging config
    * [KARAF-1369] - Shell history does not log all commands
    * [KARAF-1370] - Loading snapshots from local repository does not work and the system dir should be read only
    * [KARAF-1374] - Fileinstaller logging by default is not enabled.
    * [KARAF-1388] - SSHD authorized key provider should log in DEBUG
    * [KARAF-1389] - SSH doesn't correctly use the karaf.base variable
    * [KARAF-1391] - Top-level build is missing obr module
    * [KARAF-1392] - Removing a KAR should uninstall the shipped features
    * [KARAF-1394] - Custom login modules not seen with Equinox
    * [KARAF-1395] - Instance commands are not started at bootstrap
    * [KARAF-1402] - Order in test framework generated features.xml is wrong
    * [KARAF-1406] - scanFeatures is incompatible with editing the etc/org.apache.karaf.features.cfg file
    * [KARAF-1407] - Use useDeployFolder(false) together with scan features fail
    * [KARAF-1411] - Spec activator doesn't start correctly
    * [KARAF-1416] - Blueprint archetype instructions is missing
    * [KARAF-1418] - Instance command imports an internal package from instance core
    * [KARAF-1430] - Default child instance config is not the same as the root instance
    * [KARAF-1439] - Re-add demos to Karaf 3.0 kits
    * [KARAF-1447] - Make the three big (cxf, amq, camel) play nicely with Karaf 3 without change
    * [KARAF-1450] - System bundles could be started without problems; all other bundles need to be forced
    * [KARAF-1452] - karaf-maven-plugin does not compile using java7
    * [KARAF-1455] - PAX Url (obr & war), Felix and Karaf (trunk) fight with each other resulting in an m_bundleLock
    * [KARAF-1459] - Problem with the OBR Resolver and Pax Web
    * [KARAF-1472] - Karaf manual references wrong artifacts
    * [KARAF-1482] - NullPointerException when deploying a feature without specified "install"-attribute
    * [KARAF-1483] - Help generation does not work for commands without noargs constructor
    * [KARAF-1485] - Use ShellTable in bundle:list
    * [KARAF-1487] - Bundles in deploy are deployed before startup process had been  finished
    * [KARAF-1491] - Admin service not able to start child instances when the JDK path contains a space on OS X
    * [KARAF-1496] - Bad login when using sufficient modules but when the first fail
    * [KARAF-1510] - Deployer kar demo Jenkins build issue
    * [KARAF-1513] - SSH keystore incompatible if generated with IBM JDK
    * [KARAF-1515] - features-generate-descriptor does not set the version in generated features
    * [KARAF-1528] - Web:List command not working anymore
    * [KARAF-1529] - command-watch messes the output when used with commands that take longer than the interval
    * [KARAF-1539] - kar feature should a boot one
    * [KARAF-1540] - featuresRepositories URL are not correct
    * [KARAF-1541] - jaas:realm-manage raises a NullPointerException
    * [KARAF-1544] - Several bugs in main around locking
    * [KARAF-1547] - NullpointerException when running commands on jdk 6 update 33 or jdk 7 update 5
    * [KARAF-1549] - Child instance features cfg file looks weird
    * [KARAF-1553] - Command service references should be AUTO_EXPORT_INTERFACES
    * [KARAF-1556] - standard-feature refers to non-existing "commands"-artifacts
    * [KARAF-1560] - config:update throws ClassCastException when used on a Configuration with boolean fields created in the web console
    * [KARAF-1561] - Restart Framework from Web Console's System Information tab results in Karaf dying
    * [KARAF-1564] - karaf feature validate plugin should support to load the exports packages from dependency features
    * [KARAF-1566] - instance:clone set the source instance in error
    * [KARAF-1571] - InstallKarsMojo fails to compile with jdk-7
    * [KARAF-1573] - Potential ZipFile leak at KarArtifactInstaller.install()
    * [KARAF-1585] - Installing using wrap protocol fails when specifying bundle version
    * [KARAF-1587] - When executing a command through the client, no error is printed in the console in case of errors
    * [KARAF-1591] - Upgrade to XBean 3.11.1
    * [KARAF-1596] - Karaf pom still refers geronimo-spec 1.0 whereas 1.1 is in use
    * [KARAF-1609] - command-watch info does not work
    * [KARAF-1617] - Blueprint deployer in combination with maven URL deployer creates wrong OSGi/blueprint/ file
    * [KARAF-1618] - Exception when restarting Karaf with shutdown -r . Can not delete jansi.dll
    * [KARAF-1624] - Rat checks fail
    * [KARAF-1635] - config.properties should be filtered
    * [KARAF-1655] - ManagementCfg configuratoinPointers in tooling-exam are incorrect
    * [KARAF-1666] - Default configuration for jetty.xml could create problems
    * [KARAF-1675] - Wrapper service requires a shell
    * [KARAF-1682] - Custom distribution section of dev guide is outdates
    * [KARAF-1683] - "no matching cipher found" error connecting via SSH to wrapper Karaf service - on Ubuntu
    * [KARAF-1695] - startup fails on Windows with only JRE installed
    * [KARAF-1699] - MBeans should support the same flags as the commands
    * [KARAF-1702] - Stopping the console bundle should not shutdown the osgi framework
    * [KARAF-1705] - Sync features between 2.3 and trunk
    * [KARAF-1713] - Build failure at manual module
    * [KARAF-1715] - Occasional freeze on feature:install webconsole
    * [KARAF-1723] - Provide meaningful thread names for karaf console
    * [KARAF-1734] - When logging into karaf with ssh as user karaf the prompt shows admin@root
    * [KARAF-1736] - Feature spring-struts can't be installed
    * [KARAF-1738] - features-generate-descriptor should support "install" attribute
    * [KARAF-1742] - Add command to show list of threads and stack traces
    * [KARAF-1746] - karaf github contributions rules
    * [KARAF-1751] - Spring feature dependencies specified too tightly
    * [KARAF-1754] - updating features.xml in auto deploy folder results in duplication
    * [KARAF-1756] - No SSH connection possible on Debian 6.0.5
    * [KARAF-1759] - No Way To Start obr Dependencies By Default
    * [KARAF-1765] - The obr Shell Deploy And Start Commands Always Deploy Optional Dependencies
    * [KARAF-1797] - NPE thrown from OsgiConfiguration.unregister
    * [KARAF-1803] - Servlets attribute doesn't work on HttpMBean
    * [KARAF-1804] - SystemMBean should support name attribute
    * [KARAF-1809] - Feature spring-web-portlet can't be installed
    * [KARAF-1814] - Cursor keys do not work when using bin/client on windows
    * [KARAF-1815] - When ssh'ing from a windows box into a unix box, arrow keys are not correctly interpreted
    * [KARAF-1824] - tooling-exam contains reference to wrong commons-io artifact
    * [KARAF-1827] - Build the manual within specific profiles
    * [KARAF-1835] - NPE in jaas:realm-manage command when multiple realm with the same name are present and not login module name is provided.
    * [KARAF-1838] - PackageMBean should return List<String> and support operation with bundleId
    * [KARAF-1839] - system bundle also should export javax.xml.ws.spi.http package
    * [KARAF-1840] - should also endorse saaj-api
    * [KARAF-1843] - SystemMBean reboot(time, cleanup) operation always cleanup
    * [KARAF-1845] - Minimal distribution doesn't start
    * [KARAF-1846] - jre.properties is corrupt in 3.0.0-SNAPSHOT
    * [KARAF-1851] - inconsistent FeaturesNamespaces versions
    * [KARAF-1853] - Attached kar deploys to a different snapshot build number than the main artifact
    * [KARAF-1861] - Test failure in exam regression tests : KarafWithBundleTest
    * [KARAF-1887] - Make integration tests more reliable by making sure the boot is finished
    * [KARAF-1900] - create project for private compendium build for java 7
    * [KARAF-1905] - ASM4 causes the Proxy/Weaving of Xerces, but that then causes validation factories to fail.
    * [KARAF-1914] - SSH client authentication randomly fails
    * [KARAF-1936] - LDAPLoginModule not working in 2.3.0 due to missing import of javax.net.SocketFactory
    * [KARAF-1938] - Lock logic should wait for start level change to occur
    * [KARAF-1963] - incorrect statement in developers-guide/branding-console.html
    * [KARAF-1978] - if use script to start a child instance then using karaf console admin:list can't get the instance correct status
    * [KARAF-1986] - instance.properties file doesn't get updated if karaf.name is changed
    * [KARAF-1992] - PropertiesLoginModule handles usernames with backslash not correct
    * [KARAF-2007] - features without start-level in features.xml are always started first
    * [KARAF-2008] - respectStartLvlDuringFeatureStartup does not respect feature-start-levels (only bundles)
    * [KARAF-2009] - Error on visualize Licences page
    * [KARAF-2011] - dev:watch looks in an incorrect local maven repository
    * [KARAF-2014] - karaf-maven-plugin uses null for karafVersion by default
    * [KARAF-2016] - Hudson paths hard coded in assembled zip and tar.gz distributions
    * [KARAF-2019] - Wrapper doesn't display all Linux statements
    * [KARAF-2026] - Two broken links on remote console manual page
    * [KARAF-2027] - invalid password option for admin:connect command in documenation
    * [KARAF-2029] - delete.user option missing from JDBCLoginModule
    * [KARAF-2035] - Not able to clone the root instance
    * [KARAF-2037] - karaf 3.0 with gemini blueprint
    * [KARAF-2051] - Duplicate definition of org.ops4j.pax.url.mvn.localRepository in org.ops4j.pax.url.mvn.cfg
    * [KARAF-2052] - Progress bar doesn't display properly on 80 char consoles
    * [KARAF-2057] - NOTICE and LICENSE files are not correct
    * [KARAF-2058] - ensure find the root instance entry when update root karaf instance name in instances.properties
    * [KARAF-2067] - instance-script terminates with NoClassDefFoundError
    * [KARAF-2074] - ensure admin service always load storage file instance.properties before each operation
    * [KARAF-2095] - Camel Route (JMS Polling) not working when installing feature "jndi"
    * [KARAF-2096] - Upgrade to Pax Exam 2.6.0
    * [KARAF-2115] - Sync weaving behavior between root and child instances
    * [KARAF-2117] - LDAP login module is broken
    * [KARAF-2133] - Generated title contain unresolved placeholder
    * [KARAF-2134] - Features deployer does not support mvn urls
    * [KARAF-2135] - Issue with jledit addition
    * [KARAF-2136] - ServiceMix Spec property mispelled in etc/system.properties
    * [KARAF-2143] - Remove Jetty JUL logger configuration
    * [KARAF-2144] - MainStartTest test fails when methods are executed in reverse order
    * [KARAF-2152] - wrong version for pax-jetty
    * [KARAF-2154] - Entering an empty command removes previous command in history
    * [KARAF-2155] - Wrapper/service does not start for karaf 3
    * [KARAF-2158] - Test InstanceServiceImplTest#testToSimulateRenameInstanceByExternalProcess fails when run isolated
    * [KARAF-2167] - org.apache.karaf.tooling.exam.container.internal.adaptions.KarafManipulatorFactory creates invalid version qualifier
    * [KARAF-2171] - Start Karaf as service shows 'Activator' error in wrapper.log
    * [KARAF-2178] - remove karaf-org.osgi.core.jar
    * [KARAF-2181] - jpa feature can't be installed "out of the box"
    * [KARAF-2188] - JPA bundle error out at shutdown
    * [KARAF-2189] - blueprint disable service too soon at shutdown
    * [KARAF-2191] - Karaf 3.0.x CLONE - Karaf startup fails with NullPointerException when logfile can't be written
    * [KARAF-2193] - Upgrade to Pax URL 1.5.2
    * [KARAF-2194] - Karaf regression test fails on BootClasspathLibraryOptionTest
    * [KARAF-2209] - Allow overriding system properties
    * [KARAF-2215] - <packaging>kar</packaging> fails to attach artifact
    * [KARAF-2220] - spring-jms feature shouldn't depend on spring-web
    * [KARAF-2221] - The admin service is not safe when used to create / start agents quickly
    * [KARAF-2225] - jaas PropertiesLoginModule does not complain when users.properties is not found but fails later
    * [KARAF-2226] - Properties with pathname are not correct on windows in jaas PropertiesLoginModule

** Dependency upgrade
    * [KARAF-449] - Upgrade to PAX-WEB 1.1.0 (SNAPSHOT right now)
    * [KARAF-529] - Upgrade to Pax URL 1.3.2
    * [KARAF-582] - Upgrade Apache Mina to 2.0.3
    * [KARAF-590] - Upgrade to pax-logging 1.6.2
    * [KARAF-591] - Upgrade aopalliance ServiceMix bundle to 1.0_5
    * [KARAF-592] - Upgrade asm ServiceMix bundle to 3.3_2
    * [KARAF-593] - Upgrade cglib ServiceMix bundle to 2.1_3_7
    * [KARAF-594] - Upgrade commons-codec ServiceMix bundle to 1.3_4
    * [KARAF-595] - Upgrade commons-collections ServiceMix bundle to 3.2.1_2
    * [KARAF-596] - Upgrade commons-lang ServiceMix bundle to 2.4_5
    * [KARAF-597] - Upgrade jasypt ServiceMix bundle to 1.7_3
    * [KARAF-598] - Upgrade junit ServiceMix bundle to 4.7_3
    * [KARAF-607] - Upgrade felix-framework to 3.2.1
    * [KARAF-613] - Upgrade to Blueprint 0.3.1
    * [KARAF-672] - Upgrade to felix event admin 1.2.12
    * [KARAF-679] - Update jansi to version 1.6
    * [KARAF-681] - Upgrade to Pax URL 1.3.4
    * [KARAF-682] - upgrade to jetty 7.4.2.v20110526
    * [KARAF-757] - upgrade to jetty 7.4.4.v20110707
    * [KARAF-767] - Upgrade to Felix Framework 3.2.2
    * [KARAF-768] - Upgrade to Eclipse Equinox 3.6.2.R36x_v20110210
    * [KARAF-770] - Upgrade to Eclipse Equinox 3.7.1
    * [KARAF-789] - Upgrade jetty to 7.4.5.v20110725
    * [KARAF-791] - Upgrade paxurl to 1.3.5
    * [KARAF-793] - Upgrade paxrunner to 1.7.5
    * [KARAF-797] - Upgrade to Pax Web 1.1.1
    * [KARAF-834] - Upgrade to Spring 3.0.6 - in std. features.xml
    * [KARAF-854] - Upgrade to Felix Framework 4.0.1
    * [KARAF-855] - Add support for OSGi R4.3
    * [KARAF-903] - Upgrade to Pax Web 1.1.2
    * [KARAF-928] - Support of Gemini Blueprint
    * [KARAF-961] - Update Mina SSHD to version 0.6.0
    * [KARAF-962] - Update easymock to version 2.5.2
    * [KARAF-966] - Update xbean to 3.8
    * [KARAF-989] - Upgrade to Aries Application 0.4
    * [KARAF-990] - Upgrade to Aries JMX 0.4
    * [KARAF-991] - Upgrade to Aries JPA 0.4
    * [KARAF-992] - Upgrade to Aries JNDI 0.4
    * [KARAF-993] - Upgrade to Aries Proxy 0.4
    * [KARAF-994] - Upgrade to Aries Transaction 0.4
    * [KARAF-995] - Upgrade to Aries Util 0.4
    * [KARAF-998] - upgrade to jetty 7.5.4.v20111024
    * [KARAF-1028] - Upgrade to Felix Framework 4.0.2
    * [KARAF-1042] - Upgrade to jline 2.6
    * [KARAF-1092] - Upgrade to Jasypt 1.8
    * [KARAF-1107] - Karaf should use directly commons-* bundles
    * [KARAF-1120] - Upgrade to Spring 3.1.0.RELEASE
    * [KARAF-1135] - Upgrade pax exam to 2.4.0
    * [KARAF-1154] - Upgrade to eventadmin 1.2.14
    * [KARAF-1155] - Upgrade to Apache POM 10
    * [KARAF-1163] - Upgrade to Guava 11.0.1
    * [KARAF-1172] - Upgrade to Aries JNDI API 1.0.0
    * [KARAF-1177] - Upgrade to standalone tinybundle 1.0.0
    * [KARAF-1183] - Upgrade to slf4j 1.6.4
    * [KARAF-1184] - Upgrade to JUnit 4.10
    * [KARAF-1185] - Upgrade to Pax Logging 1.6.5
    * [KARAF-1192] - Upgrade to pax-web 2.0.0
    * [KARAF-1193] - Upgrade to pax-url 1.4.0.RC1
    * [KARAF-1201] - Update jline groupid in main pom and shell/console/pom
    * [KARAF-1205] - Upgrade to maven-bundle-plugin 2.3.7
    * [KARAF-1224] - Upgrade to Spring 3.1.1.RELEASE
    * [KARAF-1229] - Upgrade to jansi 1.8
    * [KARAF-1230] - Upgrade to jansi 1.8
    * [KARAF-1231] - Upgrade to EasyMock 3.1
    * [KARAF-1232] - Upgrade to Jasypt 1.9.0
    * [KARAF-1233] - Upgrade to asm 3.3.1
    * [KARAF-1258] - Upgrade to Jetty 8.1.4
    * [KARAF-1259] - Upgrade to pax-url 1.4.0
    * [KARAF-1272] - Upgrade to fileinstall 3.2.0
    * [KARAF-1346] - Upgrade to Mina 2.0.4
    * [KARAF-1378] - Upgrade to fileinstall 3.2.2
    * [KARAF-1456] - Upgrade to blueprint 1.0.0
    * [KARAF-1458] - Upgrade to ServiceMix Specs 2.0
    * [KARAF-1490] - upgrade to pax-logging 1.6.7
    * [KARAF-1517] - Upgrade to OSGi Compendium 4.3.0
    * [KARAF-1518] - Avoid to depend to OSGi Compendium
    * [KARAF-1520] - Upgrade to Jansi 1.9
    * [KARAF-1526] - Upgrade to pax-url 1.4.2
    * [KARAF-1531] - Upgrade to Felix ConfigAdmin 1.4.0
    * [KARAF-1534] - Upgrade to JLine 2.7
    * [KARAF-1535] - Upgrade to Felix Utils 1.2.0
    * [KARAF-1536] - Upgrade to Felix FileInstall 3.2.4
    * [KARAF-1567] - Upgrade to pax-web 2.0.1
    * [KARAF-1568] - Upgrade to sshd 0.7.0
    * [KARAF-1570] - Upgrade maven-external-dependency-plugin to 0.5
    * [KARAF-1577] - Upgrade to slf4j 1.6.6
    * [KARAF-1578] - Upgrade to pax-logging 1.6.9
    * [KARAF-1579] - Upgrade to commons-compress 1.4.1
    * [KARAF-1581] - Upgrade to commons-jexl 2.1.1
    * [KARAF-1582] - Upgrade to Felix BundleRepository 1.6.6
    * [KARAF-1592] - Upgrade to quiesce api 1.0.1-SNAPSHOT
    * [KARAF-1597] - Upgrade to geronimo-jaspic 1.1
    * [KARAF-1598] - Upgrade to pax-runner 1.7.6
    * [KARAF-1599] - Upgrade to pax-swissbox 1.5.1
    * [KARAF-1601] - Upgrade to maven-antrun-plugin 1.7
    * [KARAF-1603] - Upgrade to maven-surefire-plugin 2.12
    * [KARAF-1604] - Upgrade to maven-assembly-plugin 2.3
    * [KARAF-1606] - Upgrade to maven-compiler-plugin 2.5.1
    * [KARAF-1608] - Upgrade to maven-dependency-plugin 2.4
    * [KARAF-1610] - Upgrade to maven-eclipse-plugin 2.9
    * [KARAF-1611] - Upgrade to maven-enforcer-plugin 1.1
    * [KARAF-1612] - Upgrade to maven-enforcer-plugin 1.1
    * [KARAF-1613] - Upgrade to maven-jar-plugin 2.4
    * [KARAF-1615] - Upgrade to maven-javadoc-plugin 2.8.1
    * [KARAF-1616] - Upgrade to maven-release-plugin 2.3.2
    * [KARAF-1619] - Upgrade to maven-remote-resources-plugin 1.3
    * [KARAF-1620] - Upgrade to maven-shade-plugin 1.7
    * [KARAF-1621] - Upgrade to maven-site-plugin 3.1
    * [KARAF-1622] - Upgrade to maven-war-plugin 2.2
    * [KARAF-1623] - Upgrade to apache-rat-plugin 0.8
    * [KARAF-1630] - Upgrade to Aries Util 1.0.0
    * [KARAF-1631] - Upgrade to Aries Blueprint API 1.0.0
    * [KARAF-1632] - Upgrade to Aries JMX API 1.0.0
    * [KARAF-1634] - Upgrade to Felix Framework 4.0.3
    * [KARAF-1636] - Upgrade to Equinox 3.8
    * [KARAF-1638] - Upgrade to Pax Web 2.0.1
    * [KARAF-1642] - Upgrade to exec-maven-plugin 1.2.1
    * [KARAF-1643] - Upgrade to jaxb2-maven-plugin 1.3.1
    * [KARAF-1644] - Upgrade to Aries JNDI API 1.0.0
    * [KARAF-1645] - Upgrade to Aries Quiesce Manager 1.0.0
    * [KARAF-1646] - Upgrade to Pax Web 2.0.2
    * [KARAF-1649] - Upgrade to Aries JPA API 1.0.0
    * [KARAF-1650] - Upgrade to Aries Blueprint Annotation API 1.0.0
    * [KARAF-1651] - Upgrade to Aries JMX Blueprint API 1.0.0
    * [KARAF-1652] - Upgrade to Aries JMX Core 1.0.0
    * [KARAF-1653] - Upgrade to Aries JNDI Core 1.0.0
    * [KARAF-1654] - Upgrade to Aries Proxy API 1.0.0
    * [KARAF-1656] - use quiesce API 1.0.0 final instead of 1.0.1-SNAPSHOT
    * [KARAF-1658] - Upgrade to Aries JMX 1.0.0
    * [KARAF-1660] - Upgrade Aries Application API to 1.0.0
    * [KARAF-1661] - Upgrade Aries Application Utils to 1.0.0
    * [KARAF-1662] - Upgrade Aries Proxy Impl to 1.0.0
    * [KARAF-1663] - Upgrade Aries transaction manager to 1.0.0
    * [KARAF-1664] - Upgrade Aries JNDI legacy support to 1.0.0
    * [KARAF-1665] - Upgrade Aries JNDI rmi to 1.0.0
    * [KARAF-1668] - Upgrade blueprint core to 1.0.0
    * [KARAF-1669] - Upgrade Aries Application to 1.0.0
    * [KARAF-1670] - Uprade Aries Application Management to 1.0.0
    * [KARAF-1671] - Uprade Aries Application Modeller to 1.0.0
    * [KARAF-1672] - Upgrade Aries Application Deployment 1.0.0
    * [KARAF-1673] - Upgrade to Aries JPA Blueprint 1.0.0
    * [KARAF-1685] - Upgrade to Aries Blueprint Annotation Impl 1.0.0
    * [KARAF-1686] - Upgrade to Aries Blueprint CM 1.0.0
    * [KARAF-1687] - Upgrade to Aries Blueprint Core Compatibility 1.0.0
    * [KARAF-1688] - Upgrade to Aries Blueprint JEXL Evaluator 1.0.0
    * [KARAF-1689] - Upgrade to Aries JNDI URL 1.0.0
    * [KARAF-1690] - Upgrade to Aries Transaction Wrappers 1.0.0
    * [KARAF-1691] - Remove Aries Quiesce dependencies
    * [KARAF-1696] - Upgrade to Spring 3.1.2.RELEASE
    * [KARAF-1704] - Upgrade to Aries Transaction Blueprint 1.0.0
    * [KARAF-1711] - Upgrade to pax-web 2.1.0
    * [KARAF-1719] - Upgrade to javax.mail 1.4.5
    * [KARAF-1722] - Upgrade to Aries JMX Blueprint Core 1.0.1
    * [KARAF-1732] - Upgrade to ServiceMix Ant bundle 1.8.4_1
    * [KARAF-1733] - Upgrade to ServiceMix aopalliance bundle  1.0_6
    * [KARAF-1737] - Upgrade to ServiceMix cglib bundle 2.2.2_1
    * [KARAF-1739] - Upgrade to Jetty 8.1.5.v20120716
    * [KARAF-1744] - Upgrade to guava 13.0
    * [KARAF-1745] - Upgrade to Felix WebConsole 4.0.0
    * [KARAF-1747] - Update to jline 2.8
    * [KARAF-1769] - Upgrade to pax-logging 1.6.10
    * [KARAF-1773] - Upgrade to pax-logging 1.6.10
    * [KARAF-1774] - Upgrade to pax-url 1.5.0
    * [KARAF-1779] - Upgrade to guava 13.0.1
    * [KARAF-1781] - Upgrade to Mina 2.0.5
    * [KARAF-1787] - Upgrade to commons-fileupload 1.2.2
    * [KARAF-1788] - Upgrade to commons-io 2.4
    * [KARAF-1801] - slf4j 1.7.0
    * [KARAF-1816] - Upgrade to jline 2.9
    * [KARAF-1817] - Upgrade to sshd 0.8.0
    * [KARAF-1819] - Upgrade to Mina 2.0.5
    * [KARAF-1859] - Upgrade to ServiceMix Specs 2.1
    * [KARAF-1862] - Upgrade to Felix FileInstall 3.2.6
    * [KARAF-1863] - Upgrade to sshd 0.8.0
    * [KARAF-1865] - Upgrade to paxlogging 1.7.0
    * [KARAF-1866] - Upgrade to felix config admin 1.4.0
    * [KARAF-1867] - Upgrade to felix event admin 1.3.0
    * [KARAF-1868] - Upgrade aries bundles to 1.0.1 (blueprint-core, jmx-core, transaction-manager, jpa-container-context)
    * [KARAF-1884] - Upgrade exam to Pax Exam 2.6.0
    * [KARAF-1893] - Upgrade to Jetty 8.1.7.v20120910
    * [KARAF-1904] - Upgrade to Mina 2.0.7
    * [KARAF-1908] - Upgrade to XBean 3.12
    * [KARAF-1948] - Upgrade to Apache POM 11
    * [KARAF-1955] - Upgrade to ServiceMix Specs 2.2.0
    * [KARAF-1966] - Upgrade to Pax Web 3.0
    * [KARAF-1977] - Upgrade to OSGi 4.3.1
    * [KARAF-1981] - Upgrade to Felix ConfigAdmin 1.6.0
    * [KARAF-2012] - Upgrade to Pax Web 3.0.0.M1
    * [KARAF-2055] - Upgrade to Apache POM 12
    * [KARAF-2061] - Upgrade to commons-codec 1.7
    * [KARAF-2063] - Upgrade to Felix EventAdmin 1.3.2
    * [KARAF-2064] - Upgrade to Felix Metatype 1.0.6
    * [KARAF-2065] - Upgrade to Felix SCR 1.6.2
    * [KARAF-2068] - Upgrade to ASM 4.1
    * [KARAF-2080] - Upgrade to slf4j 1.7.2
    * [KARAF-2081] - Upgrade to JUnit 4.11
    * [KARAF-2084] - Upgrade to Jetty 8.1.8.v20121106
    * [KARAF-2085] - Upgrade to Jetty 8.1.8.v20121106
    * [KARAF-2086] - Upgrade to Spring 3.1.3.RELEASE
    * [KARAF-2147] - Upgrade to Aries JMX 1.1.1
    * [KARAF-2148] - Upgrade to Aries Proxy 1.0.1
    * [KARAF-2149] - Upgrade to Aries Blueprint Core 1.1.0
    * [KARAF-2150] - Upgrade to Aries Blueprint CM 1.0.1
    * [KARAF-2157] - Upgrade to Aries Util 1.1.0
    * [KARAF-2176] - Upgrade to Pax URL 1.5.1
    * [KARAF-2177] - Upgrade to Felix Framework 4.2.0
    * [KARAF-2184] - Upgrade to Spring 3.1.4.RELEASE
    * [KARAF-2197] - Upgrade to JLine 2.10
    * [KARAF-2208] - Upgrade to Aries JPA Blueprint 1.0.1
    * [KARAF-2227] - Upgrade to Pax-Web 3.0.0.M3 and Jetty 8.1.9.v20130131
    * [KARAF-2232] - Upgrade to Aries Blueprint Core 1.1.1

** Improvement
    * [KARAF-216] - Create an admin:clone command
    * [KARAF-338] - Upgrade Karaf to version 1.0.0 of pax-web
    * [KARAF-362] - Add documentation how to build a custom karaf distribution including branding
    * [KARAF-366] - Remove sax parser code from features core
    * [KARAF-402] - Gather features and cmdhelp maven plugins into a generic karaf maven plugin
    * [KARAF-403] - Improve Bundle-Description header display
    * [KARAF-404] - Upgrade to felix maven-bundle-plugin 2.3.4
    * [KARAF-412] - Documentation: Add notes on how to make multiple configuration files available to the bundle context.
    * [KARAF-422] - If no version was found, features-maven-plugin try to create an artifact with a null version
    * [KARAF-445] - Add completion for shell aliases
    * [KARAF-447] - Add JDBC lock implementation for PostgreSQL
    * [KARAF-460] - Add commands to manipulate kar archives
    * [KARAF-461] - dev:create-dump command should generate a cleaner zip file name
    * [KARAF-465] - Merge http with war feature
    * [KARAF-469] - Remove duplicate code
    * [KARAF-470] - Move Main variables management in util
    * [KARAF-471] - would be nice for a "already exists" call to features:addurl to trigger a refresh
    * [KARAF-476] - The admin-command should be extended to handle RMI-server-port settings
    * [KARAF-483] - pax-web jetty.xml configfile should contain default security realm
    * [KARAF-484] - Upgrade to Felix Framework 3.0.9
    * [KARAF-487] - Improve --help information for obr:list
    * [KARAF-488] - obr:list should also include the bundle-symbolic-name of the packages it lists as this is used to execute other OBR commands
    * [KARAF-495] - Add a Tutorials section to the website.
    * [KARAF-513] - The ssh:ssh and admin:connect command do not allow passing a command to execute
    * [KARAF-514] - When starting a child instance, there's no way to wait until it's started
    * [KARAF-517] - Upgrade to pax-runner 1.6.1
    * [KARAF-530] - Rename org.apache.karaf.assemblies/apache-karaf to org.apache.karaf/apache-karaf
    * [KARAF-533] - Improve depdencny handling to manual
    * [KARAF-539] - Document configfile xml tag of features
    * [KARAF-540] - Add IdentificationUtils in Karaf utils
    * [KARAF-542] - Support of next line with '>' character
    * [KARAF-544] - Documentation on how to use the JMX console
    * [KARAF-551] - Implement the shell:source command
    * [KARAF-554] - Add karaf version in system properties and display in shell:info command output
    * [KARAF-560] - Modify all console log commands to receive a "logger" argument.
    * [KARAF-561] - Make obr:list output similar to osgi:list
    * [KARAF-563] - Adjustable PermSize and MaxPermSize in karaf script
    * [KARAF-564] - Allow configuring features OBR resolver to resolve optional imports as well
    * [KARAF-573] - Print out that karaf has to be restarted if using framework with new framework
    * [KARAF-574] - Re-introduce export version in packages:exports command
    * [KARAF-576] - introduce start-level attribute for feature element in features.xml
    * [KARAF-588] - Some fixes to Karaf Site
    * [KARAF-606] - JAAS: Allow LDAPLoginModule to supply role "DN" from LDAP group search
    * [KARAF-608] - Allow for multi-stage boot features installation
    * [KARAF-614] - Add warning to osgi:shutdown to avoid inadvertently shutting down the container
    * [KARAF-618] - Align Cellar major version with the Karaf one
    * [KARAF-623] - Create a shell completer for jaas realms
    * [KARAF-638] - Use the same naming convention in commands
    * [KARAF-640] - The Cellar's Hazelcast instance should be configured via Configuration Admin.
    * [KARAF-645] - Add a flag to suppress --help Option output on
    * [KARAF-651] - features-maven-plugin should "embed" the Karaf features descriptor
    * [KARAF-654] - Merge jetty feature with jetty-jaas feature
    * [KARAF-659] - correct manuall about http-whiteboard feature
    * [KARAF-661] - Typing ^D should behave as on Unix
    * [KARAF-662] - Clarify relationship of config.properties and custom.properties
    * [KARAF-663] - features-maven-plugin add-features-to-repo should embed Karaf core features descriptor
    * [KARAF-664] - Use Wiki syntax in bundle.info instead of Ansi control sequences
    * [KARAF-665] - Rename karaf-maven-plugin goals
    * [KARAF-668] - The karaf web console doesn't list web contexts
    * [KARAF-693] - features:addurl raises "Premature end of file" when network is not available
    * [KARAF-698] - Technical edits to User's Guide
    * [KARAF-699] - Grammar fixes to source code files
    * [KARAF-700] - Updates to developer's guide
    * [KARAF-705] - Upgrade demos/web to use jdk 1.6 on the trunk.
    * [KARAF-713] - Refactor karaf main
    * [KARAF-720] - Make 3.0.x source JDK7 compliant for type handling.
    * [KARAF-725] - Read-only commands shouldn't ask for system bundle confirmation
    * [KARAF-729] - Karaf Maven Plugin source code cleanup
    * [KARAF-733] - Doc fixes to the quick start guide and overview page
    * [KARAF-737] - The Karaf WebConsole should not only list Http contexts but also web contexts as in web:list
    * [KARAF-752] - Editorial fixes to the assemblies/ configuration files
    * [KARAF-755] - Recommended improvements to help commands
    * [KARAF-756] - Add ability to have KeyStoreManager to wait for SSL keystore to be fully initialize by other bundle through timeout
    * [KARAF-762] - dev:watch should support multiple bundle IDs
    * [KARAF-764] - Correct links to ops4j in documentation
    * [KARAF-772] - Cleanup Karaf assemblies
    * [KARAF-783] - Improve security docs wrt role policies
    * [KARAF-784] - Add date in the default Karaf log
    * [KARAF-786] - Add more MBeans
    * [KARAF-795] - Kar builder uses a different version for easymock then the rest of the project
    * [KARAF-802] - Upgrade mail bundle version to 1.4.4.
    * [KARAF-807] - Add a features name to the karaf-cellar features.xml
    * [KARAF-808] - Remove author attribute tags from Karaf source code
    * [KARAF-813] - Install Pax URL OBR with the OBR feature
    * [KARAF-817] - Allow to set Karaf window name via parameter
    * [KARAF-818] - Allow JAVA_MAX_MEM, JAVA_PERM_MEM, JAVA_MIN_MEM, JAVA_MAX_PERM_MEM the same way as for linux startup file
    * [KARAF-819] - Rename Karaf features name (and sub-projects features name) to use full qualified name
    * [KARAF-829] - Support of Java 7
    * [KARAF-832] - build html manual by default, use a profile for pdf generation
    * [KARAF-840] - specify javax.annotation packages version to 1.1.0 for jre-1.6 as Annotation 1.1 Spec is used for Java 6
    * [KARAF-847] - Provide Karaf features covering all Spring bundles
    * [KARAF-851] - Upgrade Maven plugins in use
    * [KARAF-864] - obr:deploy command should provide a start option
    * [KARAF-881] - Make aliases to osgi:* commands to be more clear for the users
    * [KARAF-885] - StartBundle doesn't deploy all bundles if one failed
    * [KARAF-886] - Document security properties in the relevant configuration files
    * [KARAF-888] - Add a Karaf Config Service
    * [KARAF-897] - Fixing text in bundle.info files
    * [KARAF-898] - Config delete operation should remove the pid.cfg file
    * [KARAF-899] - Upgrade to Apache Felix Gogo version 0.10.0
    * [KARAF-900] - Shutdown command should display the instance name
    * [KARAF-907] - Include 64 bits wrapper library
    * [KARAF-916] - use org.apache.aries.jmx.core instead of org.apache.aries.jmx
    * [KARAF-925] - Karaf config.properties doesn't define J2SE-1.6 and J2SE-1.7 execution environment
    * [KARAF-930] - Bundles MBean should mimic the BundleSelector like osgi:* commands
    * [KARAF-931] - Add includeTransitiveDependencies option to features-generate-descriptor Maven goal
    * [KARAF-936] - Features info command should display the start level of a bundle if available.
    * [KARAF-940] - Align various bat and sh scripts
    * [KARAF-942] - Expose Karaf RMI registry as a service
    * [KARAF-945] - Use singular for shell commands
    * [KARAF-946] - MBeans should be renamed in singular
    * [KARAF-947] - Rename admin service to instance service
    * [KARAF-948] - Apply normalized shell command format
    * [KARAF-956] - jaas module should throw generic FailedLoginException
    * [KARAF-963] - Refactoring of the modules
    * [KARAF-965] - Allow features-maven-plugin to handle multiple versions of the same feature
    * [KARAF-968] - Features file should require name attribute on features element
    * [KARAF-970] - feature <config/> tag doesn't create the cfg file
    * [KARAF-981] - Set kar as a boot feature
    * [KARAF-999] - local-repo folder shouldn't be used
    * [KARAF-1001] - Consistency between command annotation and blueprint
    * [KARAF-1002] - Switch the blueprint extender to synchronous mode
    * [KARAF-1005] - Port current karaf integration tests to new test framework
    * [KARAF-1010] - Add 64Bit ServiceWrapper to karaf
    * [KARAF-1013] - Less verbose in log when mistyped commands at INFO level
    * [KARAF-1014] - Make files specified by ${includes} optional
    * [KARAF-1017] - Use the Pax Web features.xml for Pax Web 2.0 and further
    * [KARAF-1019] - Set java memory options only when required
    * [KARAF-1021] - karaf-maven-plugin does not prefix non-bundles with the wrap: prefix when generating a feature.xml
    * [KARAF-1022] - java.io.tmpdir system property should use $KARAF_DATA/tmp in place of $KARAF_BASE/tmp
    * [KARAF-1023] - Add karaf activators for jars in the lib folder
    * [KARAF-1032] - Text improvements to Features XSD
    * [KARAF-1035] - Allow Karaf config commands to accept the pid as an option
    * [KARAF-1039] - Rename the org.apache.felix.gogo.commands package to org.apache.karaf.shell.commands
    * [KARAF-1041] - create-kar goal should handle configfile
    * [KARAF-1045] - Improved help system
    * [KARAF-1048] - make pom.xml eclipse 3.7 m2e friendly
    * [KARAF-1057] - Update the list of supported execution environments
    * [KARAF-1069] - create a ServerInfo service that Main sets up that exposes karaf home, base, data, instances, and the command line arguments
    * [KARAF-1072] - Provide man command as an alias to help
    * [KARAF-1073] - Add -r (reboot) and -h (halt) options to the system:shutdown command
    * [KARAF-1077] - New service:list command focused on services instead of bundles
    * [KARAF-1080] - Spring feature repo for spring related features
    * [KARAF-1087] - kar archetype
    * [KARAF-1088] - assembly archetype
    * [KARAF-1091] - Upgrade maven bundle plugin to 2.3.6
    * [KARAF-1093] - Make org.apache.karaf.util a bundle
    * [KARAF-1112] - shell:sleep should be in seconds
    * [KARAF-1115] - Add a jre.properties.cxf with all changes required to run cxf
    * [KARAF-1118] - Enable install of CXF into karaf with a simple command
    * [KARAF-1119] - expose rmiregistry port as a service property
    * [KARAF-1129] - Allow configuring rmi Registry host as well as port
    * [KARAF-1142] - Get rid of the code using StartLevel and PackageAdmin has they are now deprecated
    * [KARAF-1145] - Upgrade to pax-logging 1.6.4
    * [KARAF-1167] - No SCR implementation supplied with Karaf
    * [KARAF-1181] - Add tab completer to the help command
    * [KARAF-1186] - Provide a migration/update section in the manual
    * [KARAF-1191] - Switch back to millis per default on shell:sleep and introduce -s option
    * [KARAF-1197] - AdminService - Allow to provide a PrintStream so you can capture or control activity on the console
    * [KARAF-1208] - Rename features to feature
    * [KARAF-1214] - Improvement in Karaf log4j appender docs
    * [KARAF-1245] - blueprint deployer and spring deployer should get started before features.core bundle
    * [KARAF-1261] - Jaas commands should allow you to distinguish between to realms that have the same name
    * [KARAF-1271] - Feature service should log in DEBUG instead of INFO
    * [KARAF-1273] - Combine the commands and mbeans for osgi framework related stuff into one module set
    * [KARAF-1276] - Add activation="eager" to springListener bean in shell/osgi/src/main/resources/OSGI-INF/blueprint/shell-osgi.xml
    * [KARAF-1281] - New table support for shell
    * [KARAF-1282] - Remove osgi sources from karaf main
    * [KARAF-1289] - Move the standard feature definition to the feature.xml
    * [KARAF-1290] - Kar deployer should move into the kar module
    * [KARAF-1291] - Features deployer should be in the features module
    * [KARAF-1295] - serviceUrl in org.apache.karaf.management.cfg should use 0.0.0.0 but not localhost
    * [KARAF-1296] - Karaf startup without startup.properties
    * [KARAF-1299] - Make sure that all karaf archetype contain a description
    * [KARAF-1300] - features managment should be more robust if customer features descriptor file has duplicated feature name
    * [KARAF-1302] - Replace MBeanRegistrer with aries jmx whiteboard and remove .management modules
    * [KARAF-1307] - Refactor http command and mbean to new module layout and change to use jmx whiteboard
    * [KARAF-1328] - jclouds feature repo url has been changed after version 1.0
    * [KARAF-1351] - Improvements to features-generate-descriptor
    * [KARAF-1383] - Fix warning messages during bundle build
    * [KARAF-1385] - Be able to disable the default PropertiesLoginModule
    * [KARAF-1390] - Embedded features should have POM dependencies on the projects they represent
    * [KARAF-1396] - config:list command description should be enhanced
    * [KARAF-1410] - Error in stop script if KARAF_DEBUG is enabled
    * [KARAF-1427] - Split shell console into API and impl
    * [KARAF-1438] - Simplify imports in bundle plugin for deployers
    * [KARAF-1444] - Rename shell.shell to shell.commands.impl and make packages private
    * [KARAF-1446] - Move help system and table out of console into separate modules
    * [KARAF-1448] - diag command should print the full stacktrace instead of the messages only
    * [KARAF-1449] - The InstallKarMojo fails with a nullpointer if an artifact could not be retrieved
    * [KARAF-1462] - Improvements to shell tables
    * [KARAF-1468] - Use the geronimo servlet spec instead of jetty' since it's backward compatible
    * [KARAF-1470] - Cleanup: Remove no longer required org.apache.karaf.tooling.testing project
    * [KARAF-1471] - Use project.version instead of direct version in manual
    * [KARAF-1489] - Add an itest showing how to correctly use tinybundles with provision in paxexam-karaf
    * [KARAF-1499] - InfoAction shell command should sort the properties from InfoProvider instances
    * [KARAF-1500] - Forgot a space between hours and minutes in InfoAction.java
AF-1574] - When two karaf containers are started locally, an exception is displayed at startup.  A nicer message would be better.
    * [KARAF-1575] - Features provided by karaf do not have any description
    * [KARAF-1580] - Demo should exclude Eclipse and IntelliJ IDEA files
    * [KARAF-1586] - wrapper:install command should be usable outside OSGi too
    * [KARAF-1600] - Avoid duplicate feature and bundle resolution when installing cascading features
    * [KARAF-1607] - Move dev commands and services to bundle, system and shell
    * [KARAF-1628] - Make client indepenent of console
    * [KARAF-1629] - Command completer should complete only on first scope level
    * [KARAF-1640] - Make sure the local console is fully working before the user can type commands
    * [KARAF-1641] - Avoid embedding jline in the console
    * [KARAF-1657] - org.ops4j.pax.url.mvn.proxySupport=false
    * [KARAF-1659] - Use dependencyManagement in features assemblies
    * [KARAF-1667] - Improve wait startup message
    * [KARAF-1676] - OBR URL's in Karaf have no simple identifier
    * [KARAF-1678] - WebConsole still use "admin" instead of "instance"
    * [KARAF-1693] - Rename command-watch to watch
    * [KARAF-1700] - update manual to reflect JDBC Lock updates
    * [KARAF-1710] - Remove @version headers from source
    * [KARAF-1712] - Use Pax-Web Features
    * [KARAF-1752] - hard coded features uri in features deployer feature discovery
    * [KARAF-1757] - Welcome message incorrect during ssh session or using bin/client.
    * [KARAF-1798] - Use exam framework for our itests and increase tests coverage
    * [KARAF-1811] - Remove section about console colors from manual
    * [KARAF-1818] - Improve user guide
    * [KARAF-1828] - Build src distributions within specific profiles
    * [KARAF-1834] - Make KarafTestSupport available externally
    * [KARAF-1836] - Provide a login module class name completer.
    * [KARAF-1850] - feature:list should use alphabetical order
    * [KARAF-1878] - Feature bundle start up order by startLvl
    * [KARAF-1889] - Change logging in FeaturesServiceImpl
    * [KARAF-1903] - Refactore osgicore and osgicompendium modules
    * [KARAF-1933] - Add id for Maven repository
    * [KARAF-1940] - admin/instance should be provided as a feature
    * [KARAF-1951] - Remove workaround for KARAF-1117
    * [KARAF-1952] - Allow Karaf monitoring using host:port
    * [KARAF-1989] - Add CXF DOSGi feature uri to org.apache.karaf.features.repos.cfg
    * [KARAF-1990] - Add Cellar feature URI in org.apache.karaf.features.repos.cfg
    * [KARAF-2003] - Interrupt a running command in shell
    * [KARAF-2017] - Service wrapper should use and populate JAVA_HOME in conf file
    * [KARAF-2043] - Document caveats of Pax Url Wrap when used in Karaf Shell
    * [KARAF-2049] - Instructions in welcome screen is a bit misleading with hit
    * [KARAF-2053] - HTTP feature should install a default etc/org.ops4j.pax.web.cfg file
    * [KARAF-2072] - Spelling correction
    * [KARAF-2017] - Service wrapper should use and populate JAVA_HOME in conf file
    * [KARAF-2094] - Include howto add additional jvm configurations (if using the wrapper) to the documentation
    * [KARAF-2097] - endorse stax-api spec jar
    * [KARAF-2104] - Add wildcard support in features:refreshurl
    * [KARAF-2119] - upgrade pax.base to 1.4.0
    * [KARAF-2138] - Add a status check script and karaf script argument
    * [KARAF-2160] - add options to only create tar.gz or zip archive in CreateArchiveMojo
    * [KARAF-2163] - Add a jre-1.8 to jre.properties
    * [KARAF-2175] - Add the sonatype standard snapshot repository to the karaf repositories
    * [KARAF-2219] - Add option to jaas LoginModules to skip checking the credentials

** New Feature
    * [KARAF-32] - Support ssh public key authentication and agent forwarding
    * [KARAF-222] - mvn karaf:run plugin, like jetty:run
    * [KARAF-376] - State replication between Karaf instances
    * [KARAF-401] - Provide kar goal in the karaf maven plugin
    * [KARAF-407] - Extend features:info command to display features description and details
    * [KARAF-408] - Add osgi:services related commands
    * [KARAF-426] - Manage Karaf shell.name by branding
    * [KARAF-463] - Add chapter for Pax Web and the OSGi HttpService
    * [KARAF-473] - Support version resolving in FeatureService#getFeatures(name/version)
    * [KARAF-477] - Karaf console should gracefully handle errors due to the history file being read only.
    * [KARAF-478] - Subclasses of Console should be able to change the history file.
    * [KARAF-523] - Allow maven style names in startup.properties
    * [KARAF-541] - Support JMX SSL via etc/org.apache.karaf.management.cfg
    * [KARAF-572] - Command to show all registered servlets and their contexts
    * [KARAF-581] - Also make rmiRegistryHost configurable
    * [KARAF-605] - Add param to Gogo Argument and Option to override default value with specific value
    * [KARAF-647] - Support of sub-shell
    * [KARAF-657] - kar deployer should start the feature
    * [KARAF-696] - Add a macro allowing users to identify the contents of a specific config file.
    * [KARAF-798] - Support for relocating karaf.history file
    * [KARAF-835] - Provide a spring-jms feature
    * [KARAF-845] - Add a jasypt based property placeholder to support encrypted values
    * [KARAF-866] - New dev:wait-for-service command to wait for a given osgi service
    * [KARAF-908] - Provide a way to access system properties easily in the shell
    * [KARAF-934] - Provide a way to select which features are to be installed when dropping a descriptor to the deploy folder.
    * [KARAF-977] - config propset, propappend & propdel could use some autocompletion
    * [KARAF-980] - Add demo for extending Karaf's console commands
    * [KARAF-984] - Add Kar deployer demo using karaf-maven-plugin
    * [KARAF-987] - Add scp support
    * [KARAF-1004] - Introduce paxexam-karaf into karaf tooling
    * [KARAF-1007] - Include paxexam-karaf testframework documentation into the manual
    * [KARAF-1029] - Add completer support on option values
    * [KARAF-1055] - New bundle:capabilities and bundle:requirements commands
    * [KARAF-1059] - Karaf command features:status to indicate feature loaded or not
    * [KARAF-1109] - Provide archetypes for bundle, bundle-blueprint, web-bundle, war
    * [KARAF-1196] - implement a 'watch' command so we can watch the output of a karaf command like the unix 'watch' mechanism
    * [KARAF-1203] - Make invoker in karaf testcontainer configurable
    * [KARAF-1213] - Add option to configure BundleStartLvl of automatically installed base bundles
    * [KARAF-1254] - Jasypt config admin property with reload strategy.
    * [KARAF-1334] - Use the new servicemix spec to allow the use of both the JRE implementations and implementations from bundles
    * [KARAF-1379] - Provide exit alias and improve shell:logout command
    * [KARAF-1380] - Add a command to easily name an instance
    * [KARAF-1475] - Support SSH agent forwarding and use the agent authentication when connecting to other instances
    * [KARAF-1512] - enhancement: add self to generated feature in "features-generate-descriptor" goal
    * [KARAF-1519] - Support to download features for later offline usage
    * [KARAF-1546] - Add -i/--install-all option to feature:add-url
    * [KARAF-1762] - command to list bundles with the requested class
    * [KARAF-1806] - Add version attribute in the SystemMBean
    * [KARAF-1886] - Create transaction-jdbc and transaction-jms enterprise features
    * [KARAF-2044] - Provide the ability to edit text resources from the Karaf shell
    * [KARAF-2050] - Ability to configure ssh session idle timeout - currently hardcode as 5 minutes
    * [KARAF-2069] - Provide less command
    * [KARAF-2070] - Add support of !$ to recall the last command argument
    * [KARAF-2078] - Create the shell:date command
    * [KARAF-2159] - add option to resolve transitive feature-dependencies in InstallKarsMojo
    * [KARAF-2164] - Create shell:wc command
    * [KARAF-2185] - Provide Spring 3.2.x support

** Task
    * [KARAF-328] - Drop support for JDK 1.5
    * [KARAF-431] - Add documentation around remote management via JMX
    * [KARAF-432] - Remove spring2 support from karaf features
    * [KARAF-433] - Add documentation about KAR archive format and deployer
    * [KARAF-434] - Add wrap deployer description in the deployer section of the Karaf user guide
    * [KARAF-435] - Add diagnostic documentation (dev:create-dump, etc) in the Karaf User Guide
    * [KARAF-437] - Document jre.properties tuning
    * [KARAF-439] - Provide documentation about the Karaf wrapper
    * [KARAF-444] - Upgrade to latest version of pax-url
    * [KARAF-454] - Upgrade Karaf to version 1.0.1 of pax-web
    * [KARAF-489] - Upgrade pax-logging to 1.6.1
    * [KARAF-500] - Upgrade to Jetty 7.3.1
    * [KARAF-501] - Upgrade to PAX Exam 1.2.4
    * [KARAF-516] - Upgrade to felix eventadmin 1.2.10
    * [KARAF-543] - Add manual section around log custom appenders
    * [KARAF-553] - Get place of jetty config with mvn url in sync
    * [KARAF-566] - Build: Remove duplicate entries from build artefacts.
    * [KARAF-567] - org.apache.karaf.jaas.config.impl accidentally exported?
    * [KARAF-584] - Upgrade Karaf build environment
    * [KARAF-619] - Add Cellar manual
    * [KARAF-620] - Cellar should use the parent Karaf POM
    * [KARAF-646] - Upgrade to Jetty 7.4.1.v20110513
    * [KARAF-694] - Upgrade to Pax-Logging 1.6.3
    * [KARAF-887] - Refer PrinceXML website in the manual
    * [KARAF-909] - Delete the copy of the felix gogo Closure class
    * [KARAF-1053] - Removed unused folders/code from Assemblies
    * [KARAF-1054] - Setup eclipse targets now deprecated assembly folder.
    * [KARAF-1086] - Create Kar for Karaf demos
    * [KARAF-1094] - Refactor Karaf Demos to new assemblies format
    * [KARAF-1097] - Update Kar documentation
    * [KARAF-1136] - Rationalize Karaf 3.0 minimal distribution
    * [KARAF-1274] - Please set svn:ignore to all eclipse's project files
    * [KARAF-1357] - Document features-generator
    * [KARAF-1393] - Rename commands module to command
    * [KARAF-1440] - Port deployer wrap demo to Karaf 3.0
    * [KARAF-1441] - Port deployer feature demo to Karaf 3.0
    * [KARAF-1442] - Port deployer bundle demo to Karaf 3.0
    * [KARAF-1445] - more svn:ignore are needed
    * [KARAF-2124] - Adapt the chapter about extending the console to changes made by KARAF-1001
    * [KARAF-2161] - Incorrect LGPL license info in Notices file
    * [KARAF-2222] - Add hawtio to features.repos

** Test
    * [KARAF-1530] - Create integration tests for karaf-maven-plugin
    * [KARAF-1537] - Additional integration tests for karaf-maven-plugin
    * [KARAF-1870] - Add assertion to EquinoxFrameworkTest
    * [KARAF-1871] - KeepRuntimeFolderTest is named wrong and does not assert anything
    * [KARAF-1872] - Backward224Test should check for the karaf version
    * [KARAF-1873] - BaseKarafDefaultFrameworkTest should test for felix framework
    * [KARAF-1874] - Add assertion to FrameworkWithShellOffTest
    * [KARAF-1875] - Improvement of test for keeping or deleting the pax exam folder
    * [KARAF-1876] - Improve StandardFeaturesTest, EnterpriseFeaturesTest and SpringFeaturesTest using feature service
    * [KARAF-1877] - itests fail on jenkins
    * [KARAF-1896] - itests.EnterpriseFeaturesTest.installApplicationWithoutIsolationFeature fails with NotSerializableException
    * [KARAF-1897] - Use dynamic port allocation of integration tests
    * [KARAF-1916] - Make tests faster by using EagerSingleStagedReactorFactory
    * [KARAF-2087] - add a testcase to cover the scenario that the AdminService can always load latest instance status which changed by external process

                    Apache Karaf 2.0.0
                    ==================

  Overview
  --------

 The Apache Karaf 2.0.0 is the first release since the move of Apache Felix Karaf to Apache Karaf.
 This release brings new features, improvements and bug fixes. The changelog below contains the whole
 list of changes.

  Changelog
  ---------

 The following list shows the bug fixes and enhancements included in this release:

** New Feature
    * [KARAF-31] - Use OBR if available to compute the transitive closure of karaf features
    * [KARAF-110] - Provide a placeholder for overriding the configuration properties
    * [KARAF-111] - Allow includes of additional configuration files through a custom property when loading the main configuration files

** Improvement
    * [KARAF-45] - Improve war deployer in order to provide the WebApp-context
    * [KARAF-54] - Minimum default properties
    * [KARAF-59] - Introduce a ${karaf.data} system property to be able to easily move the data directory to a different location
    * [KARAF-67] - Change the webconsole config in the features descriptor to specifiy the realm and not the username/password which aren't used anymore
    * [KARAF-95] - Upgrade Spring to 3.x
    * [KARAF-96] - Enhance the features to support the start level
    * [KARAF-97] - Upgrade to Felix framework 3.x
    * [KARAF-98] - Upgrade to equinox 3.6.0
    * [KARAF-103] - add a spring-dm feature which use spring 2.5.6 inside
    * [KARAF-105] - Remove dependencies on the preference service
    * [KARAF-107] - Improve default log configuration with a rolling file appender
    * [KARAF-108] - Change 'storage.location' system property to 'karaf.instances' for better homogeneity
    * [KARAF-109] - Split the JVM packages from the main config.properties file for easier maintenance
    * [KARAF-112] - Free the org.osgi.framework.system.packages.extra property for users
    * [KARAF-117] - refactor tooling/testing/Helper to accomodate recent changes in config.properties
    * [KARAF-118] - Update Pax Url Wrap to version 1.1.3
    * [KARAF-120] - Some jars are not included in our system repository
    * [KARAF-121] - Better exception handling in JaasSecurityProvider
    * [KARAF-127] - Enahnce features mechanism to allow to stop/start bundle

** Bug
    * [KARAF-4] - [Karaf] If features:refreshUrl reads an incorrect <features> definition, it deletes the old version
    * [KARAF-16] - The JRE provided ciphers are not used on ubuntu server
    * [KARAF-65] - NPE in StandardEmitterMBean on JDK 6
    * [KARAF-99] - new spring 3.0.3.RELEASE feature miss some bundles
    * [KARAF-100] - The list of OBR repositories is not persisted
    * [KARAF-101] - features:refreshUrl doesn't auto complete!
    * [KARAF-102] - The client jar does not work when given a command to execute on the command line
    * [KARAF-122] - Webconsole login doesn't work with karaf.framework set to equinox
    * [KARAF-123] - File jre.properties is not copied and so it is not possible to start a second karaf instance
    * [KARAF-124] - Karaf start script doesn't correctly include jre/lib/ext directory
    * [KARAF-126] - Password: Error executing command: Failed to get the session.
    * [KARAF-128] - java.lang.IndexOutOfBoundsException during generation of User Guide pdf blocking release build.

** Task
    * [KARAF-113] - Change the namespace of the two blueprint schemas

** Sub-task
    * [KARAF-115] - Document Karaf Release Guide
    * [KARAF-119] - Establish KEYS file.


                    Apache Felix Karaf 1.6.0
                    ========================

  Changelog
  ---------

 The following list shows the bug fixes and enhancements included in this release:

** Bug
    * [FELIX-2129] - [Karaf] Possible hang with slave instances of Karaf when using Oracle JDBC lock.
    * [FELIX-2130] - [Karaf] Failover Clustering Mechanism - Database shutdown / loss results in all Karaf instances becoming Active on restart of that DB
    * [FELIX-2169] - Improve dev:show-tree performance and avoid NPE for installed bundle
    * [FELIX-2191] - Drop-in deployment of feature descriptor with spring-dm bundles fails
    * [FELIX-2196] - Karaf uses old version of Aries artifacts
    * [FELIX-2270] - Don't install jaas.boot bundle, its in the startup classpath
    * [FELIX-2295] - Referenced service throws UndeclaredThrowableException instead of real one
    * [FELIX-2311] - Remove the Bootstrap class which is not needed anymore
    * [FELIX-2319] - The order of the list of boot features is not used when installing the features
    * [FELIX-2326] - NullPointerException thrown from PropertiesLoginModule if a user doesn't exist in the properties file
    * [FELIX-2343] - Features maven plugin does not honor local and remote repository overrides
    * [FELIX-2347] - Configurations on features should not override existing configurations

** Improvement
    * [FELIX-1921] - Provide a way to configure the host used for karaf ssh server
    * [FELIX-2058] - The Oracle, MySql and default jdbc lock classes should inherit from a common base class
    * [FELIX-2109] - OBR should support matching resources for a given requirement
    * [FELIX-2110] - The resolver should be able to resolve for some requirements in addition to resources
    * [FELIX-2113] - Add obr:find and obr:resolve to find matching resources and show the resolution output
    * [FELIX-2193] - add-features-to-repo goal of features-maven-plugin should be able to download dependencies if necessary
    * [FELIX-2237] - ^C should interrupt the thread
    * [FELIX-2239] - features-maven-plugin validate goal should be able to use configurable config.properties
    * [FELIX-2278] - refactor features-maven-plugin to use Parser/Clause/VersionRange from utils
    * [FELIX-2280] - To much code duplication in DefaultJDBCLock, OracleJDBCLock and MySQLJDBCLock
    * [FELIX-2293] - features-maven-plugin validate should support  specify the feature repositories from the maven plugin configure
    * [FELIX-2297] - features-maven-plugin validate goal should be able to use configurable jre version
    * [FELIX-2312] - Support for ext and endorsed directories
    * [FELIX-2314] - Improve logging support
    * [FELIX-2315] - Upgrade to felix web console 3.0.0
    * [FELIX-2320] - Override default Karaf shell prompt
    * [FELIX-2327] - Disable and delay Jline terminal initialization
    * [FELIX-2329] - Improve the URL handling in features-maven-plugin regarding the add-features-to-repo goal
    * [FELIX-2330] - Uninstall, refresh, and resolve osgi shell commands do not support multiple bundle ids

** Task
    * [FELIX-1990] - Use aries blueprint / jmx


                    Apache Felix Karaf 1.4.0
                    ========================

  Changelog
  ---------

 The following list shows the bug fixes and enhancements included in this release:


** Bug
    * [FELIX-1768] - should catch exception for FeaturesServiceImpl.internalAddRepository per uri
    * [FELIX-1843] - Karaf shell doens't work properly under windows
    * [FELIX-1932] - Possible NullPointerException when itest fails
    * [FELIX-1939] - [karaf] Ssh client out put is poorly formatted.
    * [FELIX-1964] - Unable to choose the framework using system properties
    * [FELIX-1970] - The stop script should always work even if the default user / password / host has been changed
    * [FELIX-1994] - Web Console admin,features and gogo plugins do not work with Equinox
    * [FELIX-1995] - Spring status does not show properly after osgi:list command
    * [FELIX-2012] - NullPointerException when some links clicked if karaf.framework=equinox
    * [FELIX-2025] - grep -v doesn't filter linefeed on Windows
    * [FELIX-2026] - Remove org.ops4j.pax.logging.DefaultServiceLog.level from system.properties
    * [FELIX-2027] - The custom deployers leveraging url handlers must not be registered before the url handler is actually registered in the osgi framework
    * [FELIX-2032] - file host.key is not correctly written for a new instance(s)
    * [FELIX-2043] - When launching Karaf with equinox, the osgi framework state is not written until 30s after the boot
    * [FELIX-2044] - System bundles are started out of order if the karaf.lock.level is > 1
    * [FELIX-2045] - Restarting the framework from the web console (or using update on the system bundle) does not work
    * [FELIX-2053] - Completion does not reprint previous characters in some circumstances
    * [FELIX-2054] - Logo is garbled when connecting using putty
    * [FELIX-2063] - [karaf] hardcoding org.ops4j.pax.exam.rbc.rmi.port property in raw pax runner --vmOptions is problematic when 1099 is not the next free port
    * [FELIX-2065] - BootstrapLogManager doesn't load etc/org.ops4j.pax.logging.cfg file
    * [FELIX-2072] - [Karaf]  OracleJDBCLock filling UNDO segment.
    * [FELIX-2074] - Bring back the history command

** Improvement
    * [FELIX-1914] - Add a development subshell to ease troubleshooting classloading/resolution issues
    * [FELIX-1947] - [Karaf] Remove import java.util.* from karaf.main.StringMap and replace with proper import list.
    * [FELIX-2001] - Add more info to log and console when feature bundles fail to resolve
    * [FELIX-2018] - features-maven-plugin add-features-to-repo should suport the bundle start with wrap: in features.xml
    * [FELIX-2028] - Upgrade to preferences services 1.0.4
    * [FELIX-2046] - Upgrade web bundles to their latest version (jetty, pax-web, felix console)
    * [FELIX-2049] - extend org.apache.felix.karaf.testing.Helper to emit a karaf-specific execution environment file for pax-runner
    * [FELIX-2055] - Use a nicer shutdown mechanism when stopping a managed instance
    * [FELIX-2061] - [karaf] use waitForFrameworkStartup pax-exam option in the integration tests
    * [FELIX-2070] - Upgrade to felix framework 2.0.3
    * [FELIX-2075] - Add a "new" command to create java objects from the command line
    * [FELIX-2084] - Make the display of exception stack traces available through a variable in the shell
    * [FELIX-2182] - An improved "list" command implementation that correctly displays Spring column status

** New Feature
    * [FELIX-1815] - Introduce 'shell:logout' command to close the current shell
    * [FELIX-1975] - [Karaf] Add oracle database support to Karaf jdbc locking feature.
    * [FELIX-2033] - Provide an easy to use layer for writing pax-exam test for Karaf
    * [FELIX-2047] - Support for WAR files

** Task
    * [FELIX-1902] - [karaf] sanitize web demo README of references to FUSE SNAPSHOT version
    * [FELIX-1915] - [karaf] allow overridding of etc/system.properties via environment


                    Apache Felix Karaf 1.2.0
                    ========================

  Overview
  --------

 This release is mostly a bug fix release and contains a lot of bug fixes and improvements in the console,
 commands, features service, instance administration.  The binary distribution now also includes the user's
 manual in pdf and html formats.

  Changelog
  ---------

 The following list shows the bug fixes and enhancements included in this release:

** Sub-task
    * [FELIX-1701] - Aggregate all the Karaf related pages in one single Confluence page using the include macro

** Bug
    * [FELIX-1620] - Script for running the created Karaf instances with a console
    * [FELIX-1626] - Configuration loaded from the etc/ directory are only available after a delay
    * [FELIX-1638] - [karaf] The branding properties load can't find the external branding file
    * [FELIX-1642] - osgi:shutdown just hang when use karaf-client.jar
    * [FELIX-1660] - karaf should not hardcode the "system" location of its maven-like repository
    * [FELIX-1681] - Bundles of webconsole feature are not assembled into distribution packages
    * [FELIX-1705] - [Karaf] Hot undeploy does not work after a Karaf restart
    * [FELIX-1715] - osgi:update on xml deployments will cause ZIPExceptions
    * [FELIX-1717] - osgi:list column for spring is sometimes filled and sometimes not
    * [FELIX-1723] - [Karaf] Slave instances on same host as Master instance does not properly lock.
    * [FELIX-1728] - Karaf itest fail on IBM JDK due to Pax Exam annotations not found
    * [FELIX-1730] - When displaying help for commands, arguments are not ordered correctly
    * [FELIX-1745] - Unable to alter/unset a log level after it has been set from the console
    * [FELIX-1751] - [karaf] admin:start silently fails to launch new instance
    * [FELIX-1766] - Refactor and enable AdminServiceMBean
    * [FELIX-1768] - should catch exception for FeaturesServiceImpl.internalAddRepository per uri
    * [FELIX-1771] - Feature deployer is broken on windows
    * [FELIX-1777] - Hitting backspace beyond last character causes LOUD BEEP
    * [FELIX-1778] - instances/myinst/bin/karaf.bat leaks environment variables to shell
    * [FELIX-1779] - The port for the jmx server needs to be configured at two locations
    * [FELIX-1784] - install one feature failed in org.apache.felix.karaf.features.cfg featuresBoot list shouldn't block install other features in this list
    * [FELIX-1786] - The features deployment listener tacks installed bundles and force their resolution
    * [FELIX-1793] - ensure launch karaf java process from KARAF_BASE folder
    * [FELIX-1799] - Hot-deployment does not work on admin:create'd instances
    * [FELIX-1801] - Case insensitive grep outputs all uppercase in match results
    * [FELIX-1802] - Grep command line prefix (-n) not working properly
    * [FELIX-1803] - Unable to edit or backspace on multiline commands
    * [FELIX-1805] - Upgrade equinox to 3.5.1
    * [FELIX-1817] - Backspace does not work anymore when connecting from the karaf-client
    * [FELIX-1818] - Ctrl-C kills the karaf-client, but it should be sent to the server
    * [FELIX-1855] - exec command eats first keystroke of subsequent commands
    * [FELIX-1857] - Backspace not working when using admin:connect
    * [FELIX-1858] - Remote commands via ssh only work once per restart
    * [FELIX-1869] - Need better UI feedback when features commands fail
    * [FELIX-1877] - karaf.main.BootstrapLogManager possible resource leak and ignored exception in open method.
    * [FELIX-1878] - karaf.main.Main possible resource leaks and ignored exceptions from mkdirs().
    * [FELIX-1887] - The stop script can't be used if the user or password has been changed
    * [FELIX-1888] - The karaf client hangs if the authentication fails
    * [FELIX-1899] - Karaf itest (CoreTest) fails on slower CI machines

** Improvement
    * [FELIX-1064] - New goal for the features-maven-plugin: validate a features xml file
    * [FELIX-1207] - [PATCH] Ignore files generated by mvn:eclipse
    * [FELIX-1643] - Improvements / Fixes for Karaf commands and their helps
    * [FELIX-1655] - Provide an additional argument to the Karaf admin:create command that specifies the featuresBoot
    * [FELIX-1675] - karaf web demo README references old servicemix-client.jar
    * [FELIX-1682] - The newly installed bundles for a feature should be uninstalled when feature install failed
    * [FELIX-1689] - When deploying a feature, we need to refresh some bundles to cope with newly resolved optional dependencies
    * [FELIX-1693] - [karaf][shell] Make "system bundles" start level configurable via properties
    * [FELIX-1694] - [karaf][shell] Do not print stack traces on exceptions
    * [FELIX-1700] - Create quality PDF manual for Karaf
    * [FELIX-1706] - Highlight grep matches
    * [FELIX-1707] - Add OSGi framework information to InfoAction
    * [FELIX-1718] - karaf shell config:update command should persist / override configurations from the etc/ folder
    * [FELIX-1729] - The if / each commands are not available in the console
    * [FELIX-1737] - Upgrade to fileinstall 2.0.4
    * [FELIX-1744] - Add a -C/--context option to shell:grep
    * [FELIX-1748] - Make the command history persistent across restarts
    * [FELIX-1749] - Improve log:set command - add auto-completion for log levels and support lower case level
    * [FELIX-1752] - [Karaf] Extend DefaultJDBCLock to support MySQL out of the box.
    * [FELIX-1755] - Provide a script file that would be loaded when starting a new shell (to create closures, etc...)
    * [FELIX-1757] - Completer for session scopes
    * [FELIX-1759] - Upgrade to latest webconsole
    * [FELIX-1772] - Upgrade to felix framework 2.0.1
    * [FELIX-1791] - Update to the karaf web demo readme.
    * [FELIX-1810] - Improvements to Main startup class
    * [FELIX-1882] - [karaf] karaf-client should have the option to retry connection establishment

** New Feature
    * [FELIX-1656] - new Shell command: shell:clear

** Task
    * [FELIX-1091] - Re-enable gshell integration tests on windows
    * [FELIX-1761] - Include felix as a platform for the karaf integration tests
    * [FELIX-1762] - Upgrade to pax-web 0.7.1
    * [FELIX-1763] - Upgrade to latest pax-url
    * [FELIX-1848] - Include instance name in the JMX ObjectName for AdminService and FeaturesService MBeans
    * [FELIX-1849] - Provide Instance details for root instance via AdminServiceMBean.getInstances() attribute
    * [FELIX-1850] - Expose additional isRoot attribute on AdminServiceMBean
    * [FELIX-1892] - Upgrade to sshd-0.3.0, mina-2.0.0-RC1, gogo-0.2.2, jansi-1.1



                    Apache Felix Karaf 1.0.0
                    ========================

  Overview
  --------

 The Apache Felix Karaf 1.0.0 release is the first release since the move of ServiceMix Kernel to Apache Felix.
 This release brings a lot of new features:
  * Switch from Spring-DM to Blueprint for the default Dependency Injection container (Spring-DM is still
       fully supported and easy to install through the features service)
  * Switch from Geronimo GShell to Felix Gogo
      This changes is a bit disruptive for the command line syntax, but offers much more features such
      as closures
  * Integration with the Felix Web Console (easily installed using the features service).
  * Built-in support for Equinox
  * Upgrade to OSGi 4.2 frameworks (both Felix and Equinox)
 This release also contains a lot of small improvements and bug fixes.  The changelog below contains the whole
 list of changes.


  Changelog
  ---------

 The following list shows the bug fixes and enhancements included in this release:

 ** Bug
     * [FELIX-1087] - Unable to log into ServiceMix Kernel using Windows putty SSH client
     * [FELIX-1097] - ServiceMix -> Karaf in base directory notices
     * [FELIX-1100] - Cat Command fails to display ?wsdl files
     * [FELIX-1125] - "features/list -i" returns "ERROR CommandLineExecutionFailed: org.apache.geronimo.gshell.command.CommandException: java.lang.ArrayStoreException: org.apache.servicemix.kernel.gshell.features.internal.FeatureImpl"
     * [FELIX-1128] - Features installed via the deploy directory aren't listed by the "features/list" command
     * [FELIX-1152] - wrapper scripts fail to start Karaf
     * [FELIX-1153] - change parent artifact id from kernel to karaf in some modules to make the build pass from clean local maven repo
     * [FELIX-1161] - Stange classloading issues when using compendium services
     * [FELIX-1192] - KARAF: Locking error in DefaultJDBCLock, also contains an eventual OutOfMemory error on locked processes.
     * [FELIX-1199] - Karaf: closing IO stream, removal of minor file descriptor leak.
     * [FELIX-1212] - Possible infinit loop when a remote ssh connection is closed
     * [FELIX-1218] - Existing configurations are not retrieved when installing a feature
     * [FELIX-1222] - [features-maven-plugin:add-features-to-repo] Incorrect parsing of pax mvn url string
     * [FELIX-1243] - Change the default port for the OSGI HTTP Service from 8080 to 8181
     * [FELIX-1253] - Cursor is blocked when the correct syntax is not displaed
     * [FELIX-1265] - The command refreshUrl does not work if the features.xml file is embedded in a Jar. The JVM caches jar entries
     * [FELIX-1274] - Spring deployer fails when bean class is from java.* packages
     * [FELIX-1315] - Karaf console is garbled on Windows
     * [FELIX-1320] - Authentication failed connecting via ssh on Windows
     * [FELIX-1361] - Issue with import/export version of the package : org.osgi.util.tracker in Apache Felix Karaf
     * [FELIX-1373] - featuresBoot in etc/org.apache.felix.karaf.featues no longer works
     * [FELIX-1375] - [Karaf] There's no 'help' command
     * [FELIX-1378] - Optional branding does not work in new gogo console
     * [FELIX-1391] - Unable to create new ConfigAdmin PID through karaf console
     * [FELIX-1423] - karaf fails to start in cygwin bash
     * [FELIX-1431] - Add a web console plugin to have access to the gogo shell
     * [FELIX-1449] - Tab completion doesn't work on Windows
     * [FELIX-1454] - install --help throws exception
     * [FELIX-1458] - 'servicemix server' and servicemix client' not working properly on windows
     * [FELIX-1459] - bin/karaf may fail to start when CDPATH is set (on POSIX shells)
     * [FELIX-1465] - Make symbolic names of Karaf webconsole bundles consistent with other bundles
     * [FELIX-1466] - org.apache.felix.karaf.features.FeaturesServiceTest fails
     * [FELIX-1468] - wrapper:install and admin:create prints old ansi output that need to be converted to real ansi
     * [FELIX-1472] - Better handling of configurations from the deployer and feature service
     * [FELIX-1515] - Entering an illegal command has an unusual effect
     * [FELIX-1517] - Manually deleting an instance breaks admin:list
     * [FELIX-1519] - Karaf Failover does not work with PostgreSQL and Oracle
     * [FELIX-1529] - The console does not work anymore when connecting to another karaf instance
     * [FELIX-1564] - Authentication failed when using admin:connect to connect to a newly created instance
     * [FELIX-1566] - Possible NPE when uninstalling a feature
     * [FELIX-1567] - When dropping an empty xml file (i.e. just an empty file with an xml extension) in the deploy folder, errors are printed to the console
     * [FELIX-1575] - The JMX connector can not be registered because of a clash in the name in the RMI registry
     * [FELIX-1576] - The features service should do a PackageAdmin.refresh() after uninstalling a feature
     * [FELIX-1602] - Unable to configure boot features on admin:create-d instance
     * [FELIX-1618] - in spring-dm feature, optional imports in spring-context won't get resolved

 ** Improvement
     * [FELIX-1062] - Upgrade to latest Felix Runtime
     * [FELIX-1063] - Upgrade to latest Felix Bundle Repository
     * [FELIX-1092] - The client jar / ssh deamon should support direct commands
     * [FELIX-1102] - Make gshell-core really independant of the MainService
     * [FELIX-1104] - Allow osgi/stop command to specify more than one bundle per command entry.
     * [FELIX-1107] - Make org.apache.servicemix.kernel.gshell.features dependency on org.apache.servicemix.kernel.filemonitor optional
     * [FELIX-1110] - Refactor filemonitor / deployers inside a deployer sub module
     * [FELIX-1112] - [PATCH] Allow osgi/start command to specify more than one bundle per command entry
     * [FELIX-1115] - Use better version ranges for imports
     * [FELIX-1121] - Add feature for installing Felix Web Console
     * [FELIX-1126] - No errors are generated for a bad URL passed to the "features/addUrl", "features/refreshUrl", or "features/list" commands.
     * [FELIX-1127] - Add a name for a repository
     * [FELIX-1133] - Allow usage of fragments in Karaf features
     * [FELIX-1149] - Describe ConfigAdmin configurations using metatype
     * [FELIX-1150] - Upgrade to SpringDM and SpringFramework
     * [FELIX-1172] - Rebrand Karaf locking mechanism.
     * [FELIX-1180] - Improve Karaf DefaultJDBCLock to use proper logging mechanism instead of System err prints.
     * [FELIX-1196] - Felix Web Console can't list Karaf features
     * [FELIX-1204] - Fix the karaf client to allow direct execution of commands
     * [FELIX-1220] - Remove unnecssary parts of a filter
     * [FELIX-1276] - There is no way to get all the Feature information from the FeaturesService
     * [FELIX-1303] - add an osgi/imports and osgi/exports to show a pretty-printed output of the imports/exports packages for a bundle
     * [FELIX-1450] - Karaf branding and plugins for Felix webconsole
     * [FELIX-1455] - OSGi Storage is hardcoded to be data/cache
     * [FELIX-1457] - Externalize and refactory management layer for FeatureService to be more scalable and more consistent with the OSGi management (using open mbeans)
     * [FELIX-1463] - Switch to Felix Fileinstall instead of our own file deployer
     * [FELIX-1467] - Add Karaf to top-level build files
     * [FELIX-1469] - Add svn:ignore property to a few Karaf projects
     * [FELIX-1528] - [karaf] Use a defined location for storing the list of managed instances create by the admin service
     * [FELIX-1555] - The osgi:list command should print spring-dm bundle state if spring-dm has been deployed
     * [FELIX-1558] - use com.sun.* instead of com.sun.management* for boot delegation
     * [FELIX-1594] - include blueprint bundle in karaf kit system folder

 ** New Feature
     * [FELIX-1109] - Deployer for blueprint applications
     * [FELIX-1111] - Ability to run Karaf on Equinox
     * [FELIX-1206] - [PATCH] config/propappend
     * [FELIX-1261] - Install/Uninstall Karaf Features from Felix WebConsole
     * [FELIX-1485] - Admin commands support in Karaf webconsole
     * [FELIX-1524] - Implement a better tac command
     * [FELIX-1547] - OS shell level admin commands for Karaf

 ** Task
     * [FELIX-1098] - Switch from spring-dm to blueprint
     * [FELIX-1099] - Switch from spring-dm integration tests to pax-exam
     * [FELIX-1116] - Rename to Apache Felix Karaf
     * [FELIX-1200] - Move features-maven-plugin into Karaf
     * [FELIX-1312] - Switch from gshell to gogo
     * [FELIX-1523] - Fix Karaf version to 0.9.0-SNAPSHOT as next release will be 1.0.0

 ** Sub-task
     * [FELIX-1117] - Update branding
     * [FELIX-1118] - Update shell scripts
     * [FELIX-1132] - Get rid of the JMX spring stuff in gshell-features




                    Apache ServiceMix Kernel 1.1.0
                    ==============================

  Overview
  --------

 The Apache ServiceMix Kernel 1.1.0 release brings a lot of new features enhancements and bug fixes:
  * remote connection using SSH protocol
  * provisioning enhancements: versioning / hot deployment of features
  * new commands, including OSGi related commands for the Configuration Admin and Package Admin services
  * improved spring integration: upgrade to spring 2.5.6 and spring-dm 1.2.0-m2, the osgi/list command
       now displays spring applications status
  * container level locking for master / slave deployments
  * support for JAXP 1.4 on all platforms
  * improved JMX support for managing the OSGi framework and features
 Note that the commands syntax has changed due to the upgrade to the latest gshell version.

  Known issues
  ============

     * [SMX4KNL-141] - The config/edit command changes does not takes precedence over configuration files in the etc folder at restart
     * [SMX4KNL-183] - features/uninstall behaves different in version selection than features/install
     * [SMX4KNL-189] - Shell completion works only in the root shell
     * [SMX4KNL-200] - The client jar / ssh daemon should support direct commands
     * [SMX4KNL-227] - Full support of fragment bundles
     * [SMX4KNL-228] - Warning messages when using OpenSSH 5.1 to connect to ServiceMix Kernel
     * [SMX4KNL-231] - Unable to log into ServiceMix Kernel using OpenSolaris SSH client
     * [SMX4KNL-232] - Unable to log into ServiceMix Kernel using Windows putty SSH client

  Changelog
  ---------

  The following list shows the bug fixes and enhancements included in this release:

 ** Bug
     * [SMX4KNL-72] - If there is no etc/startup.properties, the kernel hangs without displaying any error
     * [SMX4KNL-79] - When starting the kernel, a log entry states "Can not install feature ''"
     * [SMX4KNL-86] - When running integration tests, the container classpath contains all the test bundles which may cause problems
     * [SMX4KNL-87] - Problems with batch files on windows
     * [SMX4KNL-95] - kernel build failed in testing/itests
     * [SMX4KNL-96] - package missing for felix.config.properties
     * [SMX4KNL-97] - Dissociate the name and the location of ServiceMix Kernel instances managed by the admin shell
     * [SMX4KNL-100] - The client does not close when running "osgi shutdown" command
     * [SMX4KNL-102] - The file monitor should use ${servicemix.base} for default polling locations
     * [SMX4KNL-104] - When using a remote connection, errors are not reported correctly
     * [SMX4KNL-105] - Features are reinstalled on restart of servicemix
     * [SMX4KNL-112] - gshell pom needs to include gshell-config and gshell-packages modules
     * [SMX4KNL-115] - config.properties for SMX-Kernel needs to be updated
     * [SMX4KNL-117] - The Smx testing platform should take into account the boot delegation packages specified in the configuration file
     * [SMX4KNL-118] - The configuration file for felix comes from 3 different places in the svn tree, only one copy should be used
     * [SMX4KNL-122] - When using the client and trying to connect to another instance using the "admin connect" command, the console hangs
     * [SMX4KNL-123] - XML parsing does not work on non Sun JVMs and Sun's SAAJ bundle requires Sun's JAXP implementation
     * [SMX4KNL-124] - Issuing command "log d" fails with NullPointerException on AIX.
     * [SMX4KNL-126] - The user is no more authenticated with the new gshell integration
     * [SMX4KNL-128] - Remove OBR support from default distribution
     * [SMX4KNL-132] - osgi/list command should display the spring application state
     * [SMX4KNL-133] - jaxp-ri bundle miss javax.xml.datatype.DatatypeFactory factoryId under META-INF/services
     * [SMX4KNL-134] - XPathFactoryFinder in jaxp api should use factoryId to load the spi class in osgi enviroment
     * [SMX4KNL-135] - Remote shell missing help resources
     * [SMX4KNL-138] - No command history with Shell console
     * [SMX4KNL-140] - Shell commands references not cleaned up when bundle uninstalled
     * [SMX4KNL-142] - Starting a new instance that was created with admin on windows fails to start
     * [SMX4KNL-145] - java.lang.IllegalStateException: Streams not registered for thread
     * [SMX4KNL-148] - OPS4J maven repo missing form default search list
     * [SMX4KNL-149] - Build failure due to new sshd snapshot
     * [SMX4KNL-150] - Shell group name variable doesn't resolve
     * [SMX4KNL-151] - Update displayed version in Shell to be 1.1.0-SNAPSHOT for trunk
     * [SMX4KNL-153] - Stopping one of the "core" bundles of the servicemix engine block the server
     * [SMX4KNL-155] - Error changing manifest while bundle is deployed
     * [SMX4KNL-162] - The default jaas realm uses the config admin to store clear password
     * [SMX4KNL-164] - features/removeUrl does not remove the repository
     * [SMX4KNL-165] - Initial provisioning using features is very slow especially when using snapshots
     * [SMX4KNL-170] - Unknown protoc
