/*
 * 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 3.0.3
                    ==================

  This is an update patch for Apache Karaf 3.0.x, containing many bug fixes, dependency updates, and improvements. New features highlights include: Spring 4.1.2.Release features, and provides ready to use jpa20 and jpa21 features. It is recommended that users update their deployment after reviewing the changelog below. 


  Changelog
  ---------

** Bug
 * [KARAF-1018|https://issues.apache.org/jira/browse/KARAF-1018] - using auto-complete (TAB key) on commands that don't take Arguments/Options throws IndexOutOfBoundsException.
 * [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-2943|https://issues.apache.org/jira/browse/KARAF-2943] - Wrong polymorphism leads to null variables
 * [KARAF-2959|https://issues.apache.org/jira/browse/KARAF-2959] - JDBC commands don't properly close connection
 * [KARAF-3019|https://issues.apache.org/jira/browse/KARAF-3019] - karaf-maven-plugin cannot handle all types of mvn urls
 * [KARAF-3032|https://issues.apache.org/jira/browse/KARAF-3032] - Multi-stage boot features function does not support over 3 stages.
 * [KARAF-3085|https://issues.apache.org/jira/browse/KARAF-3085] - features:chooseurl/feature:repo-add should support "real" version range
 * [KARAF-3138|https://issues.apache.org/jira/browse/KARAF-3138] - Having eventadmin listed as a boot features cause problems in other bundles startup
 * [KARAF-3254|https://issues.apache.org/jira/browse/KARAF-3254] - Very high memory consumption with the watch command
 * [KARAF-3257|https://issues.apache.org/jira/browse/KARAF-3257] - NullPointerException on Karaf osgi shell commands
 * [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-3269|https://issues.apache.org/jira/browse/KARAF-3269] - ssh into karaf as user with no roles throws exception and user shell stays frozen
 * [KARAF-3283|https://issues.apache.org/jira/browse/KARAF-3283] - karaf.util missing as private package for bundle watcher
 * [KARAF-3284|https://issues.apache.org/jira/browse/KARAF-3284] - The shell-log bundle should not import org.apache.log4j.* package
 * [KARAF-3285|https://issues.apache.org/jira/browse/KARAF-3285] - IllegalArgumentException raised when accessing the FeaturesMBean
 * [KARAF-3287|https://issues.apache.org/jira/browse/KARAF-3287] - Bundle command waiting for BundleWatcher and BundleService services
 * [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-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-3371|https://issues.apache.org/jira/browse/KARAF-3371] - FeatureService does not refresh bundles
 * [KARAF-3375|https://issues.apache.org/jira/browse/KARAF-3375] - karaf-maven-plugin install-kars fails on paths containing spaces
 * [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-3397|https://issues.apache.org/jira/browse/KARAF-3397] - FeaturesServiceMBeanImpl throws an Exception when listening the features
 * [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-3415|https://issues.apache.org/jira/browse/KARAF-3415] - memory leak when run ssh client
 * [KARAF-3419|https://issues.apache.org/jira/browse/KARAF-3419] - pax-cdi doesn't install without the pax-http feature
 * [KARAF-3420|https://issues.apache.org/jira/browse/KARAF-3420] - Java Debug options are Pre Java 5.0
 * [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-3438|https://issues.apache.org/jira/browse/KARAF-3438] - ClassCastException on blueprint service reference interface method call
 * [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-3463|https://issues.apache.org/jira/browse/KARAF-3463] - Fix openejb feature location
 * [KARAF-3472|https://issues.apache.org/jira/browse/KARAF-3472] - karaf-maven-plugin doesn't install kar features xml in the correct directory

** Dependency upgrade
 * [KARAF-2929|https://issues.apache.org/jira/browse/KARAF-2929] - Upgrade to Aries JNDI Url 1.1
 * [KARAF-3229|https://issues.apache.org/jira/browse/KARAF-3229] - Upgrade to Felix EventAdmin 1.4.2
 * [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-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-3395|https://issues.apache.org/jira/browse/KARAF-3395] - Update to latest Pax Web version 3.1.4
 * [KARAF-3396|https://issues.apache.org/jira/browse/KARAF-3396] - Upgrade to pax-logging 1.8.1
 * [KARAF-3470|https://issues.apache.org/jira/browse/KARAF-3470] - Upgrade to Pax Exam 4.4.0

** Documentation
 * [KARAF-3439|https://issues.apache.org/jira/browse/KARAF-3439] - [Docs] karaf.lock.delay in example is set to very low number.

** Improvement
 * [KARAF-2104|https://issues.apache.org/jira/browse/KARAF-2104] - Add regex support in features:* commands
 * [KARAF-2809|https://issues.apache.org/jira/browse/KARAF-2809] - Add an option to uninstall transitive features
 * [KARAF-2919|https://issues.apache.org/jira/browse/KARAF-2919] - karaf jms:* commands works in non-transacted mode
 * [KARAF-2984|https://issues.apache.org/jira/browse/KARAF-2984] - Improve setenv script to include placeholder for extra java options
 * [KARAF-3016|https://issues.apache.org/jira/browse/KARAF-3016] - Be able to redirect child instance std out in a file
 * [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-3373|https://issues.apache.org/jira/browse/KARAF-3373] - Log lower level root cause exception in LDAPLoginModule.doLogin()
 * [KARAF-3382|https://issues.apache.org/jira/browse/KARAF-3382] - Support configuration for custom LDAP group to JAAS role mapping
 * [KARAF-3393|https://issues.apache.org/jira/browse/KARAF-3393] - Provide ready to use jpa20 and jpa21 features
 * [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-3433|https://issues.apache.org/jira/browse/KARAF-3433] - when OBR resolver to resolve the bundles in a given feature, it should also take the dependency feature bundles into account
 * [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

** New Feature
 * [KARAF-3228|https://issues.apache.org/jira/browse/KARAF-3228] - Add Spring 4.1.2.RELEASE_1 features
 * [KARAF-3432|https://issues.apache.org/jira/browse/KARAF-3432] - Be able to log console err/out

** Task
 * [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

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

                    Apache Karaf 3.0.2
                    ==================

  This is an update patch for Apache Karaf 3.0.x, containing many bug fixes, dependency updates, and improvements. New features highlights include: Support of !$ to recall the last command argument, a command to display bundle id, and automatically create data sources from configuration files. It is recommended that users update their deployment after reviewing the changelog below.

  Changelog
  ---------

** Bug
 * [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-1137|https://issues.apache.org/jira/browse/KARAF-1137] - Corrupted output for bundle:info command in 3.0.0-SNAPSHOT
 * [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-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-1894|https://issues.apache.org/jira/browse/KARAF-1894] - Framework's active start level is set to org.osgi.framework.startlevel.beginning too early when launching Karaf with empty bundle cache
 * [KARAF-2095|https://issues.apache.org/jira/browse/KARAF-2095] - Camel Route (JMS Polling) not working when installing feature "jndi"
 * [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-2420|https://issues.apache.org/jira/browse/KARAF-2420] - blueprint deployer: redeploy untouched blueprint xml in deploy folder after restart
 * [KARAF-2481|https://issues.apache.org/jira/browse/KARAF-2481] - LogService WebConsole view doesn't work with Equinox
 * [KARAF-2519|https://issues.apache.org/jira/browse/KARAF-2519] - karaf-maven-plugin ignores dependent feature repositories when building an assembly
 * [KARAF-2563|https://issues.apache.org/jira/browse/KARAF-2563] - Compilation fails with JDK 8 ea
 * [KARAF-2594|https://issues.apache.org/jira/browse/KARAF-2594] - The use of inheritable thread locals in ThreadIO can cause problems
 * [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-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-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-2742|https://issues.apache.org/jira/browse/KARAF-2742] - karaf-maven-plugin can not include filtered resources in a custom distribution
 * [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-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-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-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-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-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-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-2946|https://issues.apache.org/jira/browse/KARAF-2946] - Duplicate package exports because of accidently deployed bundles
 * [KARAF-2950|https://issues.apache.org/jira/browse/KARAF-2950] - scr:list displays no output
 * [KARAF-2957|https://issues.apache.org/jira/browse/KARAF-2957] - LDAP login module cannot handle slashes in CN
 * [KARAF-2962|https://issues.apache.org/jira/browse/KARAF-2962] - Manual doesn't compile
 * [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-2989|https://issues.apache.org/jira/browse/KARAF-2989] - rmiServerHost configruation doesn't work on Karaf 3.x
 * [KARAF-2990|https://issues.apache.org/jira/browse/KARAF-2990] - url list order for org.ops4j.pax.url.mvn.repositories property in org.ops4j.pax.url.mvn.cfg matters
 * [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-3000|https://issues.apache.org/jira/browse/KARAF-3000] -  Whitespace in feature file bundle element value causes NumberFormatException
 * [KARAF-3012|https://issues.apache.org/jira/browse/KARAF-3012] - Console only NPEs in response to all commands
 * [KARAF-3017|https://issues.apache.org/jira/browse/KARAF-3017] - Concurrency issues in FeaturesService related to add/remove/list operations
 * [KARAF-3021|https://issues.apache.org/jira/browse/KARAF-3021] - Keyboard still read after log:tail cancelled
 * [KARAF-3023|https://issues.apache.org/jira/browse/KARAF-3023] - Wrong repositories for features after "features:list -o" command in 2.3.x
 * [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-3065|https://issues.apache.org/jira/browse/KARAF-3065] - help doesn't work in subshell
 * [KARAF-3069|https://issues.apache.org/jira/browse/KARAF-3069] - Karaf is missing the osgi.ee capabilities when using equinox as framework
 * [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-3087|https://issues.apache.org/jira/browse/KARAF-3087] - can't ssh to the karaf container in latest karaf 3.0.2 snapshot kit
 * [KARAF-3091|https://issues.apache.org/jira/browse/KARAF-3091] - Maven Coordinates of org.eclipse.equinox.region
 * [KARAF-3092|https://issues.apache.org/jira/browse/KARAF-3092] - Remove ${services-${karaf.framework}} variables from org.osgi.framework.system.capabilities
 * [KARAF-3095|https://issues.apache.org/jira/browse/KARAF-3095] - itests randomly fail to get the JMXConnector
 * [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-3099|https://issues.apache.org/jira/browse/KARAF-3099] - Karaf doesn't start on some Windows 7 system
 * [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-3108|https://issues.apache.org/jira/browse/KARAF-3108] - Fix webconsole CSS
 * [KARAF-3114|https://issues.apache.org/jira/browse/KARAF-3114] - Call to ManagementFactory.getPlatformMBeanServer() fail due to RBAC
 * [KARAF-3115|https://issues.apache.org/jira/browse/KARAF-3115] - add address flag when create a child instance
 * [KARAF-3117|https://issues.apache.org/jira/browse/KARAF-3117] - The console welcome message is garbled when the console is restarted
 * [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-3137|https://issues.apache.org/jira/browse/KARAF-3137] - Karaf doesn't start due to jline constraint
 * [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-3178|https://issues.apache.org/jira/browse/KARAF-3178] - spring-struts 3.2.9.RELEASE_1 feature doesn't install correctly
 * [KARAF-3179|https://issues.apache.org/jira/browse/KARAF-3179] - aries-annotation feature doesn't install
 * [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-3221|https://issues.apache.org/jira/browse/KARAF-3221] - Wrong scr:list command used causing NPE
 * [KARAF-3224|https://issues.apache.org/jira/browse/KARAF-3224] - Support wrap URL with option
 * [KARAF-3232|https://issues.apache.org/jira/browse/KARAF-3232] - Feature installation looks for MANIFEST as first position in the jar
 * [KARAF-3244|https://issues.apache.org/jira/browse/KARAF-3244] - EntityManager Factory not available
 * [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-3258|https://issues.apache.org/jira/browse/KARAF-3258] - KarService returns immediately after Kar install
 * [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)

** 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-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-2874|https://issues.apache.org/jira/browse/KARAF-2874] - Upgrade to XBean 3.18
 * [KARAF-2906|https://issues.apache.org/jira/browse/KARAF-2906] - Upgrade to fileinstall 3.4.0
 * [KARAF-2928|https://issues.apache.org/jira/browse/KARAF-2928] - Upgrade to Aries JMX Core 1.1.2
 * [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-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-3028|https://issues.apache.org/jira/browse/KARAF-3028] - Update Pax Web dependency to 3.1.1
 * [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-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-3191|https://issues.apache.org/jira/browse/KARAF-3191] - Upgrade to Pax Web 3.1.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-3206|https://issues.apache.org/jira/browse/KARAF-3206] - Upgrade to ConfigAdmin 1.8.0
 * [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-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

** 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

** Improvement
 * [KARAF-448|https://issues.apache.org/jira/browse/KARAF-448] - Make scanning for MANIFEST.MF in jar consistent between osgi:install and feature:install
 * [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-2299|https://issues.apache.org/jira/browse/KARAF-2299] - WARN message should be logged when a boot feature installation fails
 * [KARAF-2453|https://issues.apache.org/jira/browse/KARAF-2453] - Using features to extend existing configuration
 * [KARAF-2749|https://issues.apache.org/jira/browse/KARAF-2749] - BundleSelector should be more "selective"
 * [KARAF-2803|https://issues.apache.org/jira/browse/KARAF-2803] - Set org.apache.aries.blueprint.preemptiveShutdown to false by default
 * [KARAF-2831|https://issues.apache.org/jira/browse/KARAF-2831] - Switch to pax url uber bundles
 * [KARAF-2871|https://issues.apache.org/jira/browse/KARAF-2871] - Command description for http:* commands
 * [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-2921|https://issues.apache.org/jira/browse/KARAF-2921] - bin/karaf selecting the wrong Java VM on a computer with Java 8 installed
 * [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-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-2984|https://issues.apache.org/jira/browse/KARAF-2984] - Improve setenv script to include placeholder for extra java options
 * [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-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-3041|https://issues.apache.org/jira/browse/KARAF-3041] - Provide additional helper methods in OsgiCommandSupport
 * [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-3112|https://issues.apache.org/jira/browse/KARAF-3112] - make stopTimeout of AdminService configurable
 * [KARAF-3124|https://issues.apache.org/jira/browse/KARAF-3124] - Provide shell:env command
 * [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-3143|https://issues.apache.org/jira/browse/KARAF-3143] - Refereing Pax-Web features with version range
 * [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-3256|https://issues.apache.org/jira/browse/KARAF-3256] - Duplicated classes from org.osgi.core
 * [KARAF-3268|https://issues.apache.org/jira/browse/KARAF-3268] - remove karaf.admin.role

** New Feature
 * [KARAF-2070|https://issues.apache.org/jira/browse/KARAF-2070] - Add support of !$ to recall the last command argument
 * [KARAF-2917|https://issues.apache.org/jira/browse/KARAF-2917] - Command to display bundle id
 * [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-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

** Task
 * [KARAF-3068|https://issues.apache.org/jira/browse/KARAF-3068] - Update to Spring 3.2.9.RELEASE_1


                    Apache Karaf 3.0.1
                    ==================

  This is an update patch for Apache Karaf 3.0.0, containing many bug fixes, dependency updates, and improvements. New feature highlights include: the addition of Pax CDI to Karaf enterprise feature, monitoring etc/user.properties with Felix fileInstall, and adding MSSQL datasource type. It is recommended that users update their deployment after reviewing the changelog below.

  Changelog
  ---------

** Bug
    * [KARAF-482] - Maven 3 archetypes itests issue
    * [KARAF-1074] - features-maven-plugin collects wrong artifacts
    * [KARAF-1075] - pid is set as the factorypid when creating a factory configuration instance from the feature file
    * [KARAF-1146] - features-maven-plugin collects wrong artifacts
    * [KARAF-1432] - karaf:features-validate-descriptor parses system packages incorrectly
    * [KARAF-1532] - packing with karaf-assembly error
    * [KARAF-2014] - karaf-maven-plugin uses null for karafVersion by default
    * [KARAF-2110] - karaf-maven-plugin fails to use features with bundles with "wrap" keyword
    * [KARAF-2173] - karaf-maven-plugin ci-build-profile failures
    * [KARAF-2188] - JPA bundle error out at shutdown
    * [KARAF-2260] - Overloaded put methord with List<String> comment parameter in InstallKarMojo$CommentProperties
    * [KARAF-2313] - The feature:list command does not support multiple versions of the same feature
    * [KARAF-2366] - Cannot Update Factory Configuration Not Backed By A File With The "config:" Command
    * [KARAF-2391] - Add generic capabilities provided by the framework
    * [KARAF-2395] - karaf:features-generate-descriptor fails with Maven 3.1.0 : No implementation for org.sonatype.aether.RepositorySystem was bound
    * [KARAF-2506] - MBeans attributes are "unavailable"
    * [KARAF-2592] - Keystrokes messed up after exiting log:tail with many exceptions being thrown
    * [KARAF-2635] - Deployment errors/warnings for bundles within "deploy" directory should be logged
    * [KARAF-2650] - lde alias is not correct
    * [KARAF-2663] - client fails with NullPointerException
    * [KARAF-2669] - Command Archetype uses private-package !* which leads to an empty bundle
    * [KARAF-2673] - Cannot execute single itests
    * [KARAF-2674] - Provide Spring 4.0.2.RELEASE_1 feature
    * [KARAF-2678] - txlog files locked during admin clone on windows
    * [KARAF-2679] - Blueprint and Spring url handlers are not thread safe
    * [KARAF-2683] - Fix OpenJPA features
    * [KARAF-2685] - Set the hibernate bundles start-level greater than the default one
    * [KARAF-2692] - The jdbc and jms completers shows jndi names for the delete command
    * [KARAF-2694] - NPE when use osgi:uninstall
    * [KARAF-2707] - Mistake on karaf-wrapper.conf generate to Windows 64 bits with wrapper:install
    * [KARAF-2727] - Unable to start karaf on Solaris
    * [KARAF-2729] - DerbyXA datasource (from template) is not visible with jdbc:datasources
    * [KARAF-2731] - Commands using the old Action interface with the felix package name do not work
    * [KARAF-2738] - Wrong groupId for xercesImpl
    * [KARAF-2747] - The Http-Whiteboard feature is missing a link to the http feature
    * [KARAF-2752] - Provide a way to override bundles at feature installation time
    * [KARAF-2758] - Karaf stops when updating the shell console bundle
    * [KARAF-2759] - Error in Client parameter parsing
    * [KARAF-2773] - Refreshing the console bundle closes karaf
    * [KARAF-2774] - Watched bundles are restarted twice
    * [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] - Startup bundles are installed our of order
    * [KARAF-2777] - Substitution is scattered in various place and the code has bugs
    * [KARAF-2778] - The bin/shell script is broken
    * [KARAF-2781] - Enable rat profile by default
    * [KARAF-2785] - First line of sorted input not printed in sort command
    * [KARAF-2790] - Bundle commands wrongly default to select all bundles
    * [KARAF-2797] - Allow FeaturesService to specify options during feature uninstallation
    * [KARAF-2798] - jdbc:create -i -t HSQL installs wrong db-engine
    * [KARAF-2806] - The bundle:watch commands fails when updating o.a.k.bundle.core bundle
    * [KARAF-2807] - Unable to have multiple subshells in one bundle
    * [KARAF-2819] - datasource-xxx.xml contains wrong password after jdbc:create
    * [KARAF-2820] - features-maven-plugin:add-features-to-repo adds wrong transitive feature version
    * [KARAF-2821] - features-maven-plugin:add-features-to-repo is broken in 2.3.5-SNAPSHOT
    * [KARAF-2822] - org.apache.karaf.jaas.modules.jdbc.JDBCUtils.OSGI contains "bundles:" not "osgi:" as required by the OSGi JNDI spec"
    * [KARAF-2837] - The config.properties in features-maven-plugin is out-of-data.
    * [KARAF-2838] - features-maven-plugin:add-features-to-repo can't compare SNAPSHOT versions in 2.3.5-SNAPSHOT
    * [KARAF-2839] - Conditional features are not verified correctly after installing / uninstalling a feature
    * [KARAF-2840] - Creating child container using admin service should use KARAF_OPTS
    * [KARAF-2849] - MBeanServer unregistration is not correctly handled
    * [KARAF-2850] - The karaf-maven-plugin and boot features service should be more resilient with the bootFeatures list.
    * [KARAF-2851] - The FeaturesService can sometime loose the repository list
    * [KARAF-2880] - jms:* commands don't consume messages

** Dependency upgrade
    * [KARAF-2081] - Upgrade to JUnit 4.11
    * [KARAF-2643] - Upgrade to Felix FileInstall 3.2.8
    * [KARAF-2644] - Upgrade to Felix Utils 1.4.2
    * [KARAF-2661] - Upgrade to ServiceMix Specs 2.4.0
    * [KARAF-2681] - Upgrade to Pax Web 3.0.6
    * [KARAF-2693] - Upgrade to Pax Logging 1.7.2
    * [KARAF-2695] - Upgrade to commons-codec 1.9
    * [KARAF-2697] - Upgrade to Aries Blueprint Core 1.4.0
    * [KARAF-2702] - Upgrade to bndlib 2.2.0
    * [KARAF-2703] - Upgrade to maven-assembly-plugin 2.4
    * [KARAF-2704] - Upgrade to maven-compiler-plugin 3.1
    * [KARAF-2705] - Upgrade to maven-dependency-plugin 2.8
    * [KARAF-2706] - Upgrade to maven-deploy-plugin 2.8.1
    * [KARAF-2708] - Upgrade to maven-enforcer-plugin 1.3.1
    * [KARAF-2709] - Upgrade to maven-idea-plugin 2.2.1
    * [KARAF-2710] - Upgrade to maven-install-plugin 2.5.1
    * [KARAF-2711] - Upgrade to maven-javadoc-plugin 2.9.1
    * [KARAF-2713] - Upgrade to maven-jxr-plugin 2.4
    * [KARAF-2714] - Upgrade to maven-project-info-reports-plugin 2.7
    * [KARAF-2715] - Upgrade to maven-release-plugin 2.4.2
    * [KARAF-2716] - Upgrade to maven-remote-resources-plugin 1.5
    * [KARAF-2717] - Upgrade to maven-resources-plugin 2.6
    * [KARAF-2719] - Upgrade to maven-site-plugin 3.3
    * [KARAF-2720] - Upgrade to maven-source-plugin 2.2.1
    * [KARAF-2721] - Upgrade to maven-surefire-report-plugin 2.16
    * [KARAF-2722] - Upgrade to maven-war-plugin 2.4
    * [KARAF-2723] - Upgrade to maven-rat-plugin 0.10 and fix rat issues
    * [KARAF-2724] - Upgrade to build-helper-maven-plugin 1.8
    * [KARAF-2733] - Upgrade to commons-beanutils 1.9.1
    * [KARAF-2736] - Upgrade to Aries Transaction Manager 1.1.0
    * [KARAF-2737] - Upgrade to Felix SCR 1.8.2
    * [KARAF-2769] - Upgrade to Pax CDI 0.7.0
    * [KARAF-2783] - Upgrade to Pax Web 3.0.7-SNAPSHOT
    * [KARAF-2811] - Upgrade to felix utils 1.6.0
    * [KARAF-2853] - Upgrade to Apache POM 14
    * [KARAF-2866] - Upgrade to Pax Web 3.0.7
    * [KARAF-2869] - Upgrade to Pax CDI 0.7.0
    * [KARAF-2893] - Upgrade to Pax Web 3.1.0

** Improvement
    * [KARAF-452] - Support bundle id ranges, symbolic name/version, and regex in shell start/stop etc commands
    * [KARAF-711] - Add documentation how to update Karaf
    * [KARAF-1223] - Support mvn:* urls in karaf-maven-plugin:features-create-kar
    * [KARAF-2301] - Improve shell syntax documentation
    * [KARAF-2482] - Provide equivalent to features:info in FeaturesMBean
    * [KARAF-2483] - Add -p (--persist) option to the log:set command
    * [KARAF-2503] - Allow to limit the number of entries the history command remembers
    * [KARAF-2623] - Karaf client script only returns a non zero status if there is exception
    * [KARAF-2638] - Speed up karaf startup a bit by setting the specs timeout to 0
    * [KARAF-2649] - Add Spring Security features
    * [KARAF-2657] - Support version range in feature <repository/>
    * [KARAF-2659] - Upgrade Karaf core features namespace to 1.2.0
    * [KARAF-2660] - Upgrade to javax.annotation 1.2.0
    * [KARAF-2666] - Provide hibernate features
    * [KARAF-2676] - Editing properties in configuration files managed via MangedServiceFactories leads to corrupt property file
    * [KARAF-2686] - Add DBCP datasource support
    * [KARAF-2690] - Add trailing / in osgi:service in the jndi:names command
    * [KARAF-2691] - Karaf shell info command to display the pid
    * [KARAF-2696] - Add config files to meta data
    * [KARAF-2700] - Upgrade to Felix Metatype 1.0.10
    * [KARAF-2739] - Open jansi import in shell table to allow usage in karaf 2.x
    * [KARAF-2740] - jms:create command should allow to set username and password when creating a connection factory
    * [KARAF-2741] - JMS Command Refactorings for error handling
    * [KARAF-2745] - JDBC commands improve error handling
    * [KARAF-2746] - Hibernate feature enhancements
    * [KARAF-2748] - BundleSelector should be more "selective"
    * [KARAF-2751] - Add Hibernate-Validator feature
    * [KARAF-2753] - Logging for override mechanism
    * [KARAF-2754] - all password should be encrypted when encryption.enabled is true
    * [KARAF-2791] - AddFeaturesToRepoMojo should support read version from dependency features
    * [KARAF-2801] - Fix camel-extras features repository URL
    * [KARAF-2808] - Child containers should be able to have additional libs on the classpath
    * [KARAF-2832] - Fix exception when using the features-maven-plugin with non osgi compliant features version
    * [KARAF-2842] - Add an option to feature:install to install the bundles without starting it
    * [KARAF-2855] - The config:list command should sort configurations and properties
    * [KARAF-2857] - Add Solaris x86_64 support to wrapper
    * [KARAF-2883] - Use better version range in Spring features

** New Feature
    * [KARAF-2658] - Include Pax CDI 0.6.0 repository in Karaf enterprise features
    * [KARAF-2760] - monitor etc/user.properties change with felix FileInstaller
    * [KARAF-2848] - Add MSSQL datasource type

** Task
    * [KARAF-2767] - Update to commons-fileupload 1.3.1
    * [KARAF-2844] - Sync skipTests and invoker.skip

** Test
    * [KARAF-2680] - Add new itests


                    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
