diff --git a/.asf.yaml b/.asf.yaml index 9420e0abc70..33013a8d0da 100644 --- a/.asf.yaml +++ b/.asf.yaml @@ -15,5 +15,68 @@ # limitations under the License. # +github: + description: "Apache Karaf, the enterprise modulith runtime" + homepage: https://karaf.apache.org + labels: + - apache + - karaf + - osgi + - modulith + - runtime + + enabled_merge_buttons: + merge: false + rebase: true + squash: true + + del_branch_on_merge: true + + protected_branches: + main: + required_pull_request_reviews: + require_code_owner_reviews: false + required_approving_review_count: 0 + required_linear_history: true + required_status_checks: + strict: false + contexts: + - "build (ubuntu-24.04)" + - "build (windows-latest)" + - "build (macos-latest)" + - "test (ubuntu-24.04)" + - "test (windows-latest)" + - "test (macos-latest)" + karaf-4.4.x: + required_pull_request_reviews: + require_code_owner_reviews: false + required_approving_review_count: 0 + required_linear_history: true + required_status_checks: + strict: false + contexts: + - "build (ubuntu-24.04)" + - "build (windows-latest)" + - "build (macos-latest)" + - "test (ubuntu-24.04)" + - "test (windows-latest)" + - "test (macos-latest)" + + features: + wiki: false + issues: true + projects: true + discussions: true + + dependabot_alerts: true + dependabot_updates: true + + autolink_jira: + - KARAF + notifications: + commits: commits@karaf.apache.org + issues: issues@karaf.apache.org + discussions: dev@karaf.apache.org pullrequests: commits@karaf.apache.org + jira_options: link label diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000000..686695e99a8 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,36 @@ +# +# 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. +# + +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" + ignore: + - dependency-name: "*" + update-types: ["version-update:semver-major"] + - package-ecosystem: "maven" + directory: "/" + schedule: + interval: "daily" + open-pull-requests-limit: 50 + ignore: + - dependency-name: "*" + update-types: ["version-update:semver-major"] diff --git a/.github/workflows/ci-test-results.yml b/.github/workflows/ci-test-results.yml new file mode 100644 index 00000000000..76622a521e2 --- /dev/null +++ b/.github/workflows/ci-test-results.yml @@ -0,0 +1,66 @@ +# +# 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. +# + +name: CI Test Results + +on: + workflow_run: + workflows: ["CI"] + types: + - completed + +permissions: + contents: read + checks: write + pull-requests: write + actions: read + +jobs: + test-results: + name: Publish Test Results + runs-on: ubuntu-24.04 + if: github.event.workflow_run.conclusion != 'skipped' + + steps: + - name: Download Test Results + uses: dawidd6/action-download-artifact@v24 + with: + run_id: ${{ github.event.workflow_run.id }} + name: test-results-.* + name_is_regexp: true + path: artifacts + + - name: Download Event File + uses: dawidd6/action-download-artifact@v24 + with: + run_id: ${{ github.event.workflow_run.id }} + name: event-file-.* + name_is_regexp: true + path: event + + - name: Publish Test Results + uses: EnricoMi/publish-unit-test-result-action@v2 + with: + commit: ${{ github.event.workflow_run.head_sha }} + event_file: event/event.json + event_name: ${{ github.event.workflow_run.event }} + large_files: true + report_individual_runs: true + report_suite_logs: error + files: 'artifacts/**/*.xml' diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000000..a18d5dac0e3 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,102 @@ +# +# 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. +# + +name: CI + +on: + push: + branches: [ "karaf-4.4.x" ] + pull_request: + branches: [ "karaf-4.4.x" ] + +jobs: + build: + name: build (${{ matrix.os }}) + + permissions: + contents: read + + strategy: + fail-fast: false + matrix: + os: [ ubuntu-24.04, windows-latest, macos-latest ] + + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout + uses: actions/checkout@v7 + - name: Set up JDK 11 + uses: actions/setup-java@v6 + with: + java-version: '11' + distribution: 'temurin' + cache: 'maven' + - name: Build + run: mvn -U -B -e clean install -Prat -DskipTests "-Dinvoker.skip=true" + - name: Save Maven Local Repository + uses: actions/upload-artifact@v7 + with: + name: maven-local-repo-${{ matrix.os }} + path: ~/.m2/repository + retention-days: 1 + + test: + name: test (${{ matrix.os }}) + needs: build + + permissions: + contents: read + + strategy: + fail-fast: false + matrix: + os: [ ubuntu-24.04, windows-latest, macos-latest ] + + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout + uses: actions/checkout@v7 + - name: Set up JDK 11 + uses: actions/setup-java@v6 + with: + java-version: '11' + distribution: 'temurin' + cache: 'maven' + - name: Restore Maven Local Repository + uses: actions/download-artifact@v8 + with: + name: maven-local-repo-${{ matrix.os }} + path: ~/.m2/repository + - name: Test + run: mvn -B -e install -Ptest ${{ runner.os == 'Windows' && '-pl !itests/test' || '' }} + timeout-minutes: 180 + - name: Upload Test Results + if: always() + uses: actions/upload-artifact@v7 + with: + name: test-results-${{ matrix.os }} + path: '**/target/surefire-reports/*.xml' + - name: Upload Event File + if: always() + uses: actions/upload-artifact@v7 + with: + name: event-file-${{ matrix.os }} + path: ${{ github.event_path }} diff --git a/.gitignore b/.gitignore index 18a15299806..f28388e9274 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,4 @@ atlassian-ide-plugin.xml bin dependency-reduced-pom.xml .apt_generated_tests - +.vscode diff --git a/.mvn/README b/.mvn/README new file mode 100644 index 00000000000..bd829fe1321 --- /dev/null +++ b/.mvn/README @@ -0,0 +1 @@ +required by Maven 4 to detect root dir; adding root=true to pom is not compatible with Maven 3 diff --git a/Jenkinsfile b/Jenkinsfile deleted file mode 100644 index 76deecb42d8..00000000000 --- a/Jenkinsfile +++ /dev/null @@ -1,200 +0,0 @@ -#!groovy - -/* - * - * 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. - * - */ - -pipeline { - - agent { - node { - label 'ubuntu' - } - } - - environment { - // ... setup any environment variables ... - MVN_LOCAL_REPO_OPT = '-Dmaven.repo.local=.repository' - MVN_TEST_FAIL_IGNORE = '-Dmaven.test.failure.ignore=true' - } - - tools { - // ... tell Jenkins what java version, maven version or other tools are required ... - maven 'maven_3_latest' - jdk 'jdk_11_latest' - } - - options { - // Configure an overall timeout for the build of one hour. - timeout(time: 5, unit: 'HOURS') - // When we have test-fails e.g. we don't need to run the remaining steps - skipStagesAfterUnstable() - buildDiscarder(logRotator(numToKeepStr: '5', artifactNumToKeepStr: '5')) - } - - stages { - stage('Initialization') { - steps { - echo 'Building branch ' + env.BRANCH_NAME - echo 'Using PATH ' + env.PATH - } - } - - stage('Cleanup') { - steps { - echo 'Cleaning up the workspace' - deleteDir() - } - } - - stage('Checkout') { - steps { - echo 'Checking out branch ' + env.BRANCH_NAME - checkout scm - } - } - - stage('Build JDK 20') { - tools { - jdk "jdk_20_latest" - } - steps { - echo 'Building JDK 20' - sh 'java -version' - sh 'mvn -version' - sh 'mvn -U -B -e clean install -DskipTests' - } - } - - stage('Build JDK 17') { - tools { - jdk "jdk_17_latest" - } - steps { - echo 'Building JDK 17' - sh 'java -version' - sh 'mvn -version' - sh 'mvn -U -B -e clean install -DskipTests' - } - } - - stage('Build JDK 11') { - tools { - jdk "jdk_11_latest" - } - steps { - echo 'Building JDK 11' - sh 'java -version' - sh 'mvn -version' - sh 'mvn -U -B -e clean install -DskipTests -Dinvoker.skip=true -Prat' - } - } - - stage('Tests') { - steps { - echo 'Running tests' - sh 'mvn -B -e -fae test -Ptest' - } - post { - always { - junit(testResults: '**/surefire-reports/*.xml', allowEmptyResults: true) - junit(testResults: '**/failsafe-reports/*.xml', allowEmptyResults: true) - } - } - } - - // stage('Code Quality') { - // steps { - // echo 'Checking Code Quality on SonarCloud' - // withCredentials([string(credentialsId: 'sonarcloud-key-apache-karaf', variable: 'SONAR_TOKEN')]) { - // sh 'mvn sonar:sonar -Dsonar.host.url=https://sonarcloud.io -Dsonar.organization=apache -Dsonar.projectKey=apache_karaf -Dsonar.branch.name=${BRANCH_NAME} -Dsonar.login=${SONAR_TOKEN}' - // } - // } - //} - - stage('Deploy') { - when { - expression { - env.BRANCH_NAME ==~ /(karaf-4.3.x|main)/ - } - } - steps { - echo 'Deploying' - sh 'mvn -B -e deploy -Pdeploy -DskipTests' - } - } - } - - // Do any post build stuff ... such as sending emails depending on the overall build result. - post { - // If this build failed, send an email to the list. - failure { - script { - if(env.BRANCH_NAME == "karaf-4.3.x" || env.BRANCH_NAME == "main") { - emailext( - subject: "[BUILD-FAILURE]: Job '${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]'", - body: """ -BUILD-FAILURE: Job '${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]': -Check console output at "${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]" -""", - to: "commits@karaf.apache.org", - recipientProviders: [[$class: 'DevelopersRecipientProvider']] - ) - } - } - } - - // If this build didn't fail, but there were failing tests, send an email to the list. - unstable { - script { - if(env.BRANCH_NAME == "karaf-4.3.x" || env.BRANCH_NAME == "main") { - emailext( - subject: "[BUILD-UNSTABLE]: Job '${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]'", - body: """ -BUILD-UNSTABLE: Job '${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]': -Check console output at "${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]" -""", - to: "commits@karaf.apache.org", - recipientProviders: [[$class: 'DevelopersRecipientProvider']] - ) - } - } - } - - // Send an email, if the last build was not successful and this one is. - success { - // Cleanup the build directory if the build was successful - // (in this cae we probably don't have to do any post-build analysis) - deleteDir() - script { - if ((env.BRANCH_NAME == "karaf-4.3.x" || env.BRANCH_NAME == "main") && (currentBuild.previousBuild != null) && (currentBuild.previousBuild.result != 'SUCCESS')) { - emailext ( - subject: "[BUILD-STABLE]: Job '${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]'", - body: """ -BUILD-STABLE: Job '${env.JOB_NAME} [${env.BRANCH_NAME}] [${env.BUILD_NUMBER}]': -Is back to normal. -""", - to: "commits@karaf.apache.org", - recipientProviders: [[$class: 'DevelopersRecipientProvider']] - ) - } - } - } - } - -} diff --git a/LICENSE b/LICENSE index b36a53db890..f3344e31003 100644 --- a/LICENSE +++ b/LICENSE @@ -201,275 +201,12 @@ See the License for the specific language governing permissions and limitations under the License. -For asm: -Copyright (c) 2000-2011 INRIA, France Telecom -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holders nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. - -For equinox: -Eclipse Public License - v 1.0 - -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). -ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS - -"Contribution" means: - -a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and - -b) in the case of each subsequent Contributor: - -i) changes to the Program, and - -ii) additions to the Program; - -where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. -A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone -acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate -modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not -derivative works of the Program. - -"Contributor" means any person or entity that distributes the Program. - -"Licensed Patents" mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale -of its Contribution alone or when combined with the Program. - -"Program" means the Contributions distributed in accordance with this Agreement. - -"Recipient" means anyone who receives the Program under this Agreement, including all Contributors. - -2. GRANT OF RIGHTS - -a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, -royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, -distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code -and object code form. - -b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, -royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer -the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to -the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such -addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall -not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. - -c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no -assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property -rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity -based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses -granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights -needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, -it is Recipient's responsibility to acquire that license before distributing the Program. - -d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, -to grant the copyright license set forth in this Agreement. - -3. REQUIREMENTS - -A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: - -a) it complies with the terms and conditions of this Agreement; and - -b) its license agreement: - -i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including -warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and -fitness for a particular purpose; - -ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, -incidental and consequential damages, such as lost profits; - -iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any -other party; and - -iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain -it in a reasonable manner on or through a medium customarily used for software exchange. - -When the Program is made available in source code form: - -a) it must be made available under this Agreement; and - -b) a copy of this Agreement must be included with each copy of the Program. - -Contributors may not remove or alter any copyright notices contained within the Program. - -Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably -allows subsequent Recipients to identify the originator of the Contribution. - -4. COMMERCIAL DISTRIBUTION - -Commercial distributors of software may accept certain responsibilities with respect to end users, business partners -and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who -includes the Program in a commercial product offering should do so in a manner which does not create potential -liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, -such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor -("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, -lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused -by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a -commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any -actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly -notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and -cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The -Indemnified Contributor may participate in any such claim at its own expense. - -For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is -then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties -related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. -Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to -those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, -the Commercial Contributor must pay those damages. - -5. NO WARRANTY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR -CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, -NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for -determining the appropriateness of using and distributing the Program and assumes all risks associated with its -exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, -compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption -of operations. - -6. DISCLAIMER OF LIABILITY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST -PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS -GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. GENERAL - -If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity -or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, -such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. - -If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) -alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes -such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date -such litigation is filed. - -All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or -conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of -such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and -distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement -and any licenses granted by Recipient relating to the Program shall continue and survive. - -Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the -Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right -to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement -Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse -Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new -version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may -always be distributed subject to the version of the Agreement under which it was received. In addition, after a new -version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) -under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or -licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, -estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. - -This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States -of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the -cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. - -For Java Service Wrapper: -Copyright (c) 1999, 2006 Tanuki Software, Inc. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of the Java Service Wrapper and associated -documentation files (the "Software"), to deal in the Software -without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sub-license, -and/or sell copies of the Software, and to permit persons to -whom the Software is furnished to do so, subject to the -following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - - -Portions of the Software have been derived from source code -developed by Silver Egg Technology under the following license: - -BEGIN Silver Egg Techology License ----------------------------------- - - Copyright (c) 2001 Silver Egg Technology - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sub-license, and/or - sell copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following - conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - -END Silver Egg Techology License ------------------------------------- - -For slf4j -Copyright (c) 2004-2011 QOS.ch -All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file +Codehaus Jackson (https://github.com/codehaus/jackson) +* audit/src/main/java/org/apache/karaf/audit/util/NumberOutput.java + +Apache Logging Log4j (https://logging.apache.org/log4j) +* log/src/main/java/org/apache/karaf/log/core/internal/layout/DateTimeDateFormat.java +* log/src/main/java/org/apache/karaf/log/core/internal/layout/FormattingInfo.java +* log/src/main/java/org/apache/karaf/log/core/internal/layout/PatternParser.java +* log/src/main/java/org/apache/karaf/log/core/internal/layout/AbsoluteTimeDateFormat.java +* log/src/main/java/org/apache/karaf/log/core/internal/layout/ISO8601DateFormat.java diff --git a/NOTICE b/NOTICE index 535ac654677..4489adba4d0 100644 --- a/NOTICE +++ b/NOTICE @@ -1,65 +1,5 @@ Apache Karaf -Copyright 2010-2023 The Apache Software Foundation - -I. Included Software +Copyright 2025 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). -Licensed under the Apache License 2.0. - -This product includes software developed at -The OSGi Alliance (http://www.osgi.org/). -Copyright (c) OSGi Alliance (2000, 2010). -Licensed under the Apache License 2.0. - -This product includes software developed at -OW2 (http://www.ow2.org/). -Licensed under the BSD License. - -This product includes software developed at -OPS4J (http://www.ops4j.org/). -Licensed under the Apache License 2.0. - -This product includes software developed at -Eclipse Foundation (http://www.eclipse.org/). -Licensed under the EPL. - -This product includes software written by -Antony Lesuisse. -Licensed under Public Domain. - -II. Used Software - -This product uses software developed at -FUSE Source (http://www.fusesource.org/). -Licensed under the Apache License 2.0. - -This product uses software developed at -AOP Alliance (http://aopalliance.sourceforge.net/). -Licensed under the Public Domain. - -This product uses software developed at -Tanuki Software (http://www.tanukisoftware.com/). -Licensed under the Apache License 2.0. - -This product uses software developed at -Jasypt (http://jasypt.sourceforge.net/). -Licensed under the Apache License 2.0. - -This product uses software developed at -JLine (https://github.com/jline/). -Licensed under the BSD License. - -This product uses software developed at -SLF4J (http://www.slf4j.org/). -Licensed under the MIT License. - -This product uses software developed at -SpringSource (http://www.springsource.org/). -Licensed under the Apache License 2.0. - -III. License Summary -- Apache License 2.0 -- BSD License -- EPL License -- MIT License diff --git a/README.md b/README.md index b3df6551bcf..003bed90f62 100644 --- a/README.md +++ b/README.md @@ -49,9 +49,6 @@ It provides turnkey features that you can directly leverage without effort, pack For an Apache Karaf source distribution, please read [BUILDING.md](https://github.com/apache/karaf/blob/main/BUILDING.md) for instructions on building Apache Karaf. -For an Apache Karaf binary distribution, please read [RELEASE-NOTES.md](https://github.com/apache/karaf/blob/main/RELEASE-NOTES.md) for installation instructions and list of supported -and unsupported features. - The PDF manual is the right place to find any information about Karaf. The [examples](https://github.com/apache/karaf/tree/main/examples) provide a bunch of turnkey minimal applications that you can deploy in Apache Karaf and extend/template as you want. @@ -67,7 +64,7 @@ To get involved in Apache Karaf: * [Subscribe](mailto:user-subscribe@karaf.apache.org) or [mail](mailto:user@karaf.apache.org) the [user@karaf.apache.org](https://mail-archives.apache.org/mod_mbox/karaf-user/) list. * [Subscribe](mailto:dev-subscribe@karaf.apache.org) or [mail](mailto:dev@karaf.apache.org) the [dev@karaf.apache.org](https://mail-archives.apache.org/mod_mbox/karaf-dev/) list. -* Report issues on [JIRA](https://issues.apache.org/jira/browse/KARAF). +* Report issues on [GitHub](https://github.com/apache/karaf/issues). We also have a [contributor's guide](https://karaf.apache.org/community.html#contribute). diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md deleted file mode 100644 index ca7227a0bea..00000000000 --- a/RELEASE-NOTES.md +++ /dev/null @@ -1,1877 +0,0 @@ - - -## Apache Karaf 4.4.4 - -This is a maintenance release on the 4.4.x series. It includes a bunch of dependency updates and fixes. - -### ChangeLog - -#### Bug - * [KARAF-6074] - Race condition between the FeaturesService and FeatureDeploymentListener - * [KARAF-7669] - Fix --patch-module on Instance startup - * [KARAF-7678] - ShellTable erroneously clips out text from multi-line column contents - * [KARAF-7690] - jdk.net package is not exposed - * [KARAF-7710] - Fix CVE-2023-33201 in BouncyCastle - * [KARAF-7711] - Fix CVE-2023-24998 in FileUpload - * [KARAF-7712] - Fix CVE-2023-33008 in Johnzon - -#### Improvement - * [KARAF-5421] - Better error while installing non OSGi bundles - * [KARAF-6538] - Add exec:groovy command - * [KARAF-7637] - remove timestamp from generated service metadata - * [KARAF-7677] - Log the offending bundle if a bundle refresh occurs during assembly - * [KARAF-7708] - Test and example of JSON configuration - * [KARAF-7733] - Upgrade to pax-jms 1.1.3 - * [KARAF-7736] - Service PID for a JSON configuration - * [KARAF-7746] - Improve JVM version check in the shell script - -#### Task - * [KARAF-7681] - Add JDK20 packages in etc/jre.properties - * [KARAF-7696] - Add support for JDK 20 - -#### Dependency upgrade - * [KARAF-7693] - Upgrade to Spring 5.3.29 - * [KARAF-7698] - Upgrade SSHD to 2.10.0 - * [KARAF-7699] - Upgrade commons-io to 2.13.0 - * [KARAF-7701] - Upgrade XBean to 4.23 - * [KARAF-7702] - Upgrade commons-compress to 1.23.0 - * [KARAF-7709] - Upgrade to org.eclipse.equinox.region 1.5.300 - * [KARAF-7714] - Upgrade to Pax Logging 2.2.3 - * [KARAF-7715] - Upgrade to easymock 5.2.0 - * [KARAF-7716] - Upgrade to JNA 5.13.0 - * [KARAF-7717] - Upgrade to Felix Framework Security 2.8.4 - * [KARAF-7719] - Upgrade to Felix SCR 2.2.6 - * [KARAF-7720] - Upgrade to Felix WebConsole 4.8.10 - * [KARAF-7724] - Upgrade to ASM 9.5 - * [KARAF-7725] - Upgrade to org.osgi.service.component* 1.5.1 - * [KARAF-7726] - Upgrade to org.osgi.service.jdbc 1.1.0, Pax Transx 0.5.4, Pax JDBC 1.5.6 - * [KARAF-7727] - Upgrade to org.osgi.util.promise 1.3.0 - * [KARAF-7729] - Upgrade to Aries SpiFly 1.3.6 - * [KARAF-7730] - Upgrade to maven-bundle-plugin 5.1.9 - * [KARAF-7731] - Upgrade to Felix ConfigAdmin plugin interpolation 1.2.8 - * [KARAF-7740] - Upgrade pax-url to 2.6.14 - * [KARAF-7743] - Upgrade to commons-lang 3.13.0 - * [KARAF-7744] - Upgrade to org.eclipse.equinox.coordinator 1.5.200 - * [KARAF-7745] - Upgrade to Pax Web 8.0.22 & Jetty 9.4.52.v20230823 - * [KARAF-7748] - Upgrade to JAXB 2.3.8 and use jaxb-bom - -#### Documentation - * [KARAF-7670] - Some example READMEs use old versions - -## Apache Karaf 4.4.3 - -This is a maintenance release on the 4.4.x series. It includes a bunch of dependency updates and important fixes. - -### ChangeLog - -#### Bug - * [KARAF-6697] - karaf-maven-plugin verify goal leaks threads - * [KARAF-7443] - JMX: rmiRegistryHost=0.0.0.0 Runtime IO exception: no such object in table - * [KARAF-7583] - shell:alias command not found in Apache Karaf 4.4.1 - * [KARAF-7605] - Karaf BoM causes import of org.osgi.service.log to have lower bound 1.5.0 but only version 1.4.0 is available - * [KARAF-7607] - bin/client fails with SSHD IllegalArgumentException - * [KARAF-7608] - Override config option by environment variable not possible - * [KARAF-7610] - JMX: rmiRegistryHost=0.0.0.0 not working - -#### New Feature - * [KARAF-1717] - Add markdown format support in the command helper plugin - * [KARAF-7068] - Add instance:package command - -#### Improvement - * [KARAF-7601] - Remove two default ssh algorithms no longer available - -#### Wish - * [KARAF-7624] - Enable debug port on all interface - -#### Dependency upgrade - * [KARAF-7411] - Upgrade to easymock 5.0.1 - * [KARAF-7455] - Upgrade to Aries JAX-RS whiteboard 2.0.2 - * [KARAF-7599] - Upgrade to jackson 2.14.1 - * [KARAF-7600] - Upgrade to Pax JDBC 1.5.5 - * [KARAF-7609] - Upgrade to sshd 2.9.2 - * [KARAF-7611] - Upgrade to commons-compress 1.22 - * [KARAF-7613] - Upgrade to Felix ConfigAdmin 1.9.26 - * [KARAF-7615] - Upgrade to Felix WebConsole DS plugin 2.2.0 - * [KARAF-7616] - Upgrade to maven-dependency-tree 3.2.1 - * [KARAF-7617] - Upgrade to xbean 4.22 - * [KARAF-7619] - Upgrade to narayana 5.13.1.Final - * [KARAF-7620] - Upgrade to Apache POM 28 - * [KARAF-7621] - Upgrade to eclipselink 2.7.11 - * [KARAF-7622] - Upgrade to Pax Logging 2.2.0 - * [KARAF-7625] - Upgrade to CXF 3.5.5 - * [KARAF-7628] - Upgrade to Apache POM 29 - * [KARAF-7630] - Upgrade to Pax Web 8.0.15 - -#### Documentation - * [KARAF-7626] - Websocket example references the command http:list instead of web:servlet-list - -## Apache Karaf 4.4.2 - -This is a maintenance release on the 4.4.x series. It includes a bunch of dependency updates and important fixes and new features. - -### ChangeLog - -#### Sub-task - * [KARAF-7554] - Add feature:status command - * [KARAF-7567] - Add GraphQL example - -#### Bug - * [KARAF-6769] - censor parameter does not work when using alias. - * [KARAF-7362] - Override of shellPort by environment variable sometime failed during clean start - * [KARAF-7522] - Duplicate feature name and version cause stack overflow errors - * [KARAF-7535] - Mis-aligned artifacts for el-api - * [KARAF-7538] - Assembly Mojo parameter translatedUrls is unusable - * [KARAF-7550] - MBeanInvocationHandler should throw the cause of InvocationTargetException, not ITE itself - * [KARAF-7556] - pax-jdbc has mismatched pax-transx feature version - * [KARAF-7580] - StringIndexOutOfBoundsException in ShellTable - -#### New Feature - * [KARAF-1381] - Use a history file per instance when possible - * [KARAF-7551] - Extend KarService.install() with noAutoRefreshBundles as Parameter - * [KARAF-7571] - Create feature for Spring Security 5.7.3 - -#### Improvement - * [KARAF-4542] - Add an option to feature:list to list features provided by a given repository - * [KARAF-5194] - Add feature status to feature:version-list command - * [KARAF-6110] - Add an option to shutdown Karaf if a boot features fails or repositories not found - * [KARAF-6319] - Add allowing to define the early stage boot features - * [KARAF-6321] - Be able to "control/enable/disable" CTRL-D and logout in the shell - * [KARAF-7423] - Add logback configuration option - * [KARAF-7546] - Add jdk19 section in jre.properties - * [KARAF-7552] - Improving test coverage for feature commands - * [KARAF-7568] - Verify scheme in JAAS JDBCUtils - * [KARAF-7574] - Upgrade to jakarta.el-api 3.0.3 - -#### Wish - * [KARAF-7537] - Password displayed in console using repo-list - -#### Task - * [KARAF-7553] - Add additional dependencies to karaf-bom - -#### Dependency upgrade - * [KARAF-7223] - Upgrade maven artifacts to mitigate CVE-2021-26291 - * [KARAF-7523] - Upgrade to jackson 2.13.3 - * [KARAF-7524] - Upgrade to maven-bundle-plugin 5.1.8 - * [KARAF-7525] - Upgrade to Spring 5.3.22 - * [KARAF-7527] - Upgrade to JNA 5.12.1 - * [KARAF-7528] - Upgrade to sshd 2.9.0 - * [KARAF-7529] - Upgrade to maven-javadoc-plugin 3.3.2 - * [KARAF-7530] - Upgrade to maven-project-info-reports-plugin 3.4.0 - * [KARAF-7531] - Upgrade to maven-remote-resources-plugin 3.0.0 - * [KARAF-7532] - Upgrade to exec-maven-plugin 3.1.0 - * [KARAF-7539] - Upgrade to Felix eventadmin 1.6.4 - * [KARAF-7540] - Upgrade to maven-dependency-tree 3.2.0 - * [KARAF-7542] - Upgrade to narayana 5.13.0.Final - * [KARAF-7557] - Upgrade to Aries SpiFly 1.3.5 - * [KARAF-7558] - Upgrade to Felix ConfigAdmin plugin interpolation 1.2.6 - * [KARAF-7559] - Upgrade to Felix configurator 1.0.16 - * [KARAF-7560] - Upgrade to Felix inventory 1.1.0 - * [KARAF-7561] - Upgrade to Felix WebConsole 4.8.4 - * [KARAF-7562] - Upgrade to sshd 2.9.1 - * [KARAF-7564] - Upgrade to ASM 9.4 - * [KARAF-7566] - Upgrade to Pax Web 8.0.11 - * [KARAF-7569] - Upgrade to Spring 5.3.23 - * [KARAF-7570] - Upgrade to Spring Security 5.6.3 - * [KARAF-7572] - Upgrade to Felix SCR 2.2.4 - * [KARAF-7573] - Upgrade to Aries Proxy 1.1.13 - * [KARAF-7575] - Upgrade to Pax transx 0.5.3 - * [KARAF-7576] - Upgrade to Pax JDBC 1.5.4 - * [KARAF-7578] - Upgrade to maven resolver 1.8.2 - * [KARAF-7579] - Upgrade to Pax URL 2.6.12 - * [KARAF-7581] - Upgrade to commons-pool2 2.11.1 - * [KARAF-7582] - Upgrade to Pax JMS 1.1.1 - * [KARAF-7584] - Upgrade to Felix Http 4.2.2 - * [KARAF-7586] - Upgrade to Pax JMS 1.1.2 - * [KARAF-7589] - Upgrade to maven-assembly-plugin 3.4.2 - * [KARAF-7590] - Upgrade to maven-deploy-plugin 3.0.0 - * [KARAF-7591] - Upgrade to maven-javadoc-plugin 3.4.1 - * [KARAF-7592] - Upgrade to maven-jar-plugin 3.3.0 - * [KARAF-7593] - Upgrade to maven-install-plugin 3.0.1 - * [KARAF-7594] - Upgrade to maven-resources-plugin 3.3.0 - * [KARAF-7595] - Upgrade to maven-antrun-plugin 3.1.0 - * [KARAF-7596] - Upgrade to maven-site-plugin 3.12.1 - * [KARAF-7597] - Upgrade to maven-jxr-plugin 3.3.0 - * [KARAF-7598] - Upgrade to maven-project-info-reports-plugin 3.4.1 - -## Apache Karaf 4.4.1 - -This is a maintenance release on the 4.4.x series. It includes a bunch of dependency updates and important fixes especially about config installation embedded in features. - -### ChangeLog - -#### Bug - * [KARAF-7389] - Problem installing features with embedded config - * [KARAF-7431] - Missing package exports for java.net.http and others - * [KARAF-7444] - java.lang.runtime export is missing - * [KARAF-7453] - Race condition in threaded ConnectorServerFactory - * [KARAF-7502] - not possible to install camel-jetty - -#### Improvement - * [KARAF-7451] - Rename config json file extension to cfg.json by default - -#### Task - * [KARAF-6703] - Spec features and cleanup - * [KARAF-7427] - pax-war pulls in pax-url-war version different from karaf base - * [KARAF-7432] - Remove unsupported jre.properties - -#### Dependency upgrade - * [KARAF-7434] - Upgrade to maven-bundle-plugin 5.1.6 - * [KARAF-7440] - Upgrade to Felix ConfigAdmin plugin interpolation 1.2.4 - * [KARAF-7441] - Upgrade to Felix Framework 7.0.4 - * [KARAF-7442] - Upgrade to Felix WebConsole 4.8.2 - * [KARAF-7445] - Upgrade to Felix Framework 7.0.5 - * [KARAF-7446] - Upgrade to Spring 5.3.19 - * [KARAF-7447] - Add env variable/system property to change json extension handled by the json config installer - * [KARAF-7449] - Upgrade to Pax Web 8.0.4 - * [KARAF-7452] - Upgrade to jackson 2.13.3 - * [KARAF-7456] - Upgrade to Felix SCR 2.2.2 - * [KARAF-7457] - Upgrade to maven 3.8.6 - * [KARAF-7458] - Upgrade to maven-dependency-tree 3.1.1 - * [KARAF-7459] - Upgrade to maven wagon 3.5.1 - * [KARAF-7460] - Upgrade to ServiceMix jaxb-runtime 2.3.2_3 - * [KARAF-7461] - Upgrade to ServiceMix jaxb-xjc 2.3.2_2 - * [KARAF-7462] - Upgrade to ServiceMix Spec jaxws-api-2.3 2.3_3 - * [KARAF-7463] - Upgrade to equinox 3.18.0 - * [KARAF-7464] - Upgrade to narayana 5.12.7.Final - * [KARAF-7465] - Upgrade to geronimo-json_1.1_spec 1.5 - * [KARAF-7467] - Upgrade to org.osgi.util.converter 1.0.9 - * [KARAF-7468] - Upgrade to bouncycastle 1.70 - * [KARAF-7470] - Upgrade to javax.jms-api 2.0.1 and ActiveMQ 5.17.1 - * [KARAF-7472] - Upgrade to bndlib 6.3.1 - * [KARAF-7473] - Upgrade to maven-plugin-annotations 3.6.4 - * [KARAF-7475] - Upgrade to maven-filtering 3.3.0 - * [KARAF-7477] - Upgrade to plexus-utils 3.4.2 - * [KARAF-7478] - Upgrade to xmlunit 1.6 - * [KARAF-7479] - Upgrade to disruptor 1.2.20 - * [KARAF-7480] - Upgrade to org.osgi.service.cdi 1.0.1 - * [KARAF-7483] - Upgrade to maven-assembly-plugin 3.3.0 - * [KARAF-7484] - Upgrade to maven-dependency-plugin 3.3.0 - * [KARAF-7485] - Upgrade to maven-enforcer-plugin 3.1.0 - * [KARAF-7486] - Upgrade to maven-gpg-plugin 3.0.1 - * [KARAF-7487] - Upgrade to maven-jar-plugin 3.2.2 - * [KARAF-7488] - Upgrade to maven-javadoc-plugin 3.3.1 - * [KARAF-7489] - Upgrade to maven-jxr-plugin 3.2.0 - * [KARAF-7490] - Upgrade to maven-project-info-reports-plugin 3.2.2 - * [KARAF-7491] - Upgrade to maven-resources-plugin 3.2.0 - * [KARAF-7492] - Upgrade to maven-site-plugin 3.11.0 - * [KARAF-7493] - Upgrade to maven-war-plugin 3.3.2 - * [KARAF-7494] - Upgrade to build-helper-maven-plugin 3.3.0 - * [KARAF-7495] - Upgrade to exec-maven-plugin 3.0.0 - * [KARAF-7496] - Upgrade to maven-compiler-plugin 3.10.1 - * [KARAF-7497] - Upgrade to modello-maven-plugin 2.0.0 - * [KARAF-7500] - Upgrade stax2-api to 4.2.1 - * [KARAF-7501] - Update woodstox to 6.2.8 - * [KARAF-7503] - Upgrade to Pax Web 8.0.5 - * [KARAF-7504] - Upgrade to Pax Web 8.0.6 - * [KARAF-7507] - Upgrade to Pax URL 2.6.11 - * [KARAF-7509] - Upgrade to maven-assembly-plugin 3.4.0 - * [KARAF-7510] - Upgrade to maven wagon 3.5.2 - * [KARAF-7511] - Upgrade to Pax Logging 2.1.3 - * [KARAF-7513] - Upgrade to Spring 5.3.21 - * [KARAF-7514] - Upgrade to Spring 5.2.22.RELEASE - -## Apache Karaf 4.4.0 - -Apache Karaf 4.4.0 is a major new milestone. It brings: -- OSGi R8 -- Pax Web 8.x -- Pax Logging 2.1.x -- JDK 11+ -- and much more! - -### ChangeLog - -#### Bug - * [KARAF-7248] - java.time.format export is missing - * [KARAF-7255] - KARAF JsonInstaller throw error on Null dictionary configuration - * [KARAF-7259] - Karaf Server can't start if space in path (KARAF_HOME) - * [KARAF-7271] - Upgrade to org.ops4j.pax.url 2.6.8 (BND tools 5.2.0) leads to big memory overhead - * [KARAF-7276] - LinkageError when receiving SOAP message with attachments - * [KARAF-7282] - global autoRefresh logic does not work as expected - * [KARAF-7288] - Karaf client often hangs when executing multiple operations from the command line - * [KARAF-7295] - CVE-2021-45046 update - * [KARAF-7306] - Hot deployment (deploy directory) does not work for provisioned blueprints - * [KARAF-7316] - Fallback distribution in verify mojo always fail to resolve - * [KARAF-7317] - Support spaces in boot features path - * [KARAF-7326] - Fix potential partial path traversal - * [KARAF-7389] - Problem installing features with embedded config - * [KARAF-7393] - Karaf server SSH connection not happing via ssh.net dll - * [KARAF-7401] - Java 17 is not supported is minimum javase version - * [KARAF-7404] - NPE in JaasHelper - -#### New Feature - * [KARAF-7070] - Add kill command to kill a running thread - * [KARAF-7367] - support Reproducible Builds project.build.outputTimestamp - -#### Improvement - * [KARAF-7278] - Speedup calculating distances on Feature Resource digraph - * [KARAF-7289] - Provide config property name completion using MetaType information - * [KARAF-7290] - Set autoRefresh true by default in etc/org.apache.karaf.features.cfg file - * [KARAF-7304] - Add cleanall supports in Karaf Main - * [KARAF-7312] - Add support for JMX RMI credentials filter pattern - * [KARAF-7363] - Allow restriction of signature algorithms in SSH server config - -#### Task - * [KARAF-7266] - JDK 18 support - * [KARAF-7365] - Upgrade sling-commons-johnzon to 1.2.14 - * [KARAF-7406] - Document Pax Web 8 changes in Karaf manual - -#### Dependency upgrade - * [KARAF-6913] - Upgrade to jansi 2.4.0 - * [KARAF-7051] - Upgrade to sshd 2.8.0 - * [KARAF-7143] - Upgrade to jline 3.21.0 - * [KARAF-7172] - Upgrade to Hibernate 5.6.7.Final - * [KARAF-7198] - Upgrade to Spring Security 5.5.2 - * [KARAF-7249] - Use individual api/impl bundles instead of cmpn - * [KARAF-7262] - Upgrade to Pax Logging 2.0.11 - * [KARAF-7265] - Upgrade to Felix FileInstall 3.7.2 - * [KARAF-7269] - Upgrade to Pax Exam 4.13.5 - * [KARAF-7270] - Upgrade to Pax Web 7.3.23 - * [KARAF-7272] - Upgrade to commons-pool2 2.9.0 - * [KARAF-7273] - Upgrade to OpenJPA 3.2.2 - * [KARAF-7274] - Upgrade to javax.annotation-api 1.3.2 - * [KARAF-7275] - Upgrade to Spring 5.3.12 - * [KARAF-7279] - Upgrade to Pax URL 2.6.8 - * [KARAF-7281] - Upgrade to org.osgi.util.function 1.2.0 and org.osgi.util.promise 1.2.0 - * [KARAF-7283] - Upgrade to Pax URL 2.6.10 - * [KARAF-7284] - Upgrade to Pax Swissbox 1.8.5 - * [KARAF-7285] - Upgrade to bndlib 6.1.0 - * [KARAF-7293] - Upgrade to Pax Logging 2.0.12 - * [KARAF-7294] - Upgrade to maven-bundle-plugin 5.1.3 - * [KARAF-7296] - Upgrade Jolokia to 1.7.1 - * [KARAF-7300] - Upgrade to Pax Logging 2.0.13 - * [KARAF-7309] - Upgrade to Pax Logging 2.0.14 - * [KARAF-7313] - Upgrade to Aries Proxy Impl 1.1.12 - * [KARAF-7315] - Upgrade to Felix FileInstall 3.7.4 - * [KARAF-7318] - Upgrade to Spring 5.3.14 - * [KARAF-7319] - Upgrade to Spring Security 5.6.1 - * [KARAF-7320] - Upgrade to maven-bundle-plugin 5.1.4 - * [KARAF-7323] - Upgrade to xbean 4.21 - * [KARAF-7324] - Upgrade to Aries SpiFly 1.3.4 - * [KARAF-7368] - Upgrade to Pax Logging 2.1.2 - * [KARAF-7372] - Upgrade to JNA 5.10.0 - * [KARAF-7373] - Upgrade to Felix ConfigAdmin plugin interpolation 1.2.2 - * [KARAF-7374] - Upgrade to Felix Framework 7.0.3 - * [KARAF-7375] - Upgrade to Felix Framework Security 2.8.3 - * [KARAF-7376] - Upgrade to Felix Http 4.2.0 - * [KARAF-7378] - Upgrade to Felix WebConsole 4.7.2 - * [KARAF-7380] - Upgrade to narayana 5.12.5.Final - * [KARAF-7382] - Upgrade to org.osgi.service.cm 1.6.1 - * [KARAF-7383] - Upgrade to org.osgi.service.component* 1.5.0 - * [KARAF-7384] - Upgrade to org.osgi.service.event 1.4.1 - * [KARAF-7385] - Upgrade to org.osgi.service.http 1.2.2 - * [KARAF-7386] - Upgrade to org.osgi.service.jdbc 1.0.1 - * [KARAF-7387] - Upgrade to org.osgi.service.log 1.5.0 - * [KARAF-7388] - Upgrade to org.osgi.service.metatype 1.4.1 - * [KARAF-7392] - Upgrade to Pax Web 8.0.2 - * [KARAF-7394] - Upgrade to equinox 3.17.100 - * [KARAF-7395] - Upgrade to Apache POM 25 - * [KARAF-7405] - Upgrade to Felix SCR 2.2.0 - * [KARAF-7407] - Upgrade to equinox 3.17.200 - * [KARAF-7408] - Upgrade to Pax JDBC 1.5.3 - * [KARAF-7410] - Upgrade to Spring 5.2.20.RELEASE - * [KARAF-7413] - Upgrade to jackson 2.13.2 - * [KARAF-7414] - Upgrade to Jetty 9.4.46.v20220331 - * [KARAF-7415] - Upgrade to Hibernate Validator 7.0.2.Final - * [KARAF-7416] - Upgrade to ASM 9.3 - * [KARAF-7417] - Upgrade to JNA 5.11.0 - * [KARAF-7418] - Upgrade to Felix ConfigAdmin 1.9.24 - * [KARAF-7419] - Upgrade to Felix Gogo runtime 1.1.6 - * [KARAF-7420] - Upgrade to sling commons johnzon 1.2.14 - * [KARAF-7421] - Upgrade to narayana 5.12.6.Final - -## Apache Karaf 4.3.3 - -Apache Karaf 4.3.3 is a maintenance release on 4.3.x series. It contains major fixes and updates, we encourage users to update to this version. - -### ChangeLog - -#### Bug - * [KARAF-6877] - Itest doesn't see alias command - * [KARAF-7148] - Full start/build with JDK17 - * [KARAF-7152] - Narayana unable to create object store due to ClassNotFoundException on javax.security.cert.X509Certificate - * [KARAF-7153] - Narayana object store fails to start due to FELIX-6416 - * [KARAF-7157] - Editing a factory config lacking a FILEINSTALL_FILE_NAME prop. produces a file with incorrect filename - * [KARAF-7164] - Pax-Exam failure to Start Karaf container Java > 8 - * [KARAF-7165] - config:meta doesn't work for factory PIDs - * [KARAF-7176] - java.* packages export incomplete - * [KARAF-7190] - SSH session not properly closed by Karaf - * [KARAF-7231] - High memory consumption in BluePrintServiceState - * [KARAF-7234] - JMX - exceptions are ignored - -#### Improvement - * [KARAF-7106] - Add OSGi/Aries Transaction Control Service bundles to Karaf transaction feature - * [KARAF-7146] - Clean argument should not remove log folder by default - * [KARAF-7181] - Add NOTICE file in src distribution - * [KARAF-7182] - Upgrade LICENSE file mentioning 3rd party software - * [KARAF-7183] - Avoid binary files in source release artifact - * [KARAF-7186] - Optionally avoid to fail the verify goal on bundle uninstall/update - * [KARAF-7219] - Document improved password encryption algorithms - -#### Task - * [KARAF-7225] - ensure karaf can build and run with JDK17 - -#### Dependency upgrade - * [KARAF-7158] - Upgrade to Felix ConfigAdmin plugin interpolation 1.1.4 - * [KARAF-7159] - Upgrade to Felix FileInstall 3.7.0 - * [KARAF-7160] - Upgrade to xbean 4.20 - * [KARAF-7161] - Upgrade to Pax Web 7.3.17 / Jetty 9.4.41.v20210516 - * [KARAF-7167] - Upgrade to commons-io 2.10.0 - * [KARAF-7171] - Upgrade to hibernate 5.4.32.Final - * [KARAF-7173] - Upgrade to openjpa 3.2.0 - * [KARAF-7179] - Upgrade to Pax Web 7.3.18 / Jetty 9.4.42.v20210604 - * [KARAF-7188] - Upgrade to equinox 3.16.300 - * [KARAF-7191] - Upgrade to Felix Http Jetty 4.1.10 - * [KARAF-7192] - Upgrade to Felix Resolver 2.0.4 - * [KARAF-7193] - Upgrade to Felix SCR 2.1.28 - * [KARAF-7194] - Upgrade to Felix WebConsole 4.6.2 - * [KARAF-7195] - Upgrade to narayana 5.12.0.Final - * [KARAF-7196] - Upgrade to ASM 9.2 - * [KARAF-7197] - Upgrade to Spring 5.3.8 - * [KARAF-7218] - Upgrade to Felix Framework 6.0.5 - * [KARAF-7220] - Upgrade commons-compress to 1.21 - * [KARAF-7222] - Upgrade commons io to 2.11.0 - * [KARAF-7228] - Upgrade to Aries Transaction Blueprint 2.3.0 - * [KARAF-7229] - Upgrade to Aries JPA 2.7.3 - * [KARAF-7230] - Upgrade to Aries Proxy 1.1.11 - * [KARAF-7232] - Upgrade to Spring 5.3.9 - * [KARAF-7233] - Upgrade to Apache POM 24 - * [KARAF-7235] - Upgrade to Pax Web 7.3.19 - * [KARAF-7237] - Upgrade sjf4j to 1.7.32 - * [KARAF-7238] - Upgrade jolokia to 1.7.0 - * [KARAF-7240] - Upgrade bcprov 1.68 artifacts to mitigate CVE-2020-28052 - * [KARAF-7242] - Upgrade to Pax Logging 2.0.10 - * [KARAF-7243] - Upgrade to bouncycastle 1.69 - * [KARAF-7244] - Upgrade to jackson 2.12.5 - -## Apache Karaf 4.3.2 - -Apache Karaf 4.3.2 is a maintenance release on 4.3.x series. - -### ChangeLog - -#### Bug - * [KARAF-5362] - NPE creating session with a null "in" parameter from a SessionFactory - * [KARAF-6696] - importing a regular war file containing a module-info.class file in an embedded jar causes a NullPointerException - * [KARAF-6849] - ShellTable no format rendering is not the same on Windows and Unix - * [KARAF-6964] - Running bin/shell wrapper:install bug - * [KARAF-7075] - Enable/disable log:tail command - * [KARAF-7086] - disable default user karaf in etc/user.properties by default to make the karaf installation more secure - * [KARAF-7090] - pax-logging default pattern is not fully correct - * [KARAF-7091] - Missing eecap-16 in config.properties - * [KARAF-7093] - Console should use karaf.history instead of karaf41.history file name - * [KARAF-7095] - JDK11+: we should use full lib path when patch-module - * [KARAF-7096] - When rmiServerHost is 127.0.0.1, RMIServerImpl_Stub still uses hostname's IP - * [KARAF-7097] - JsonConfigInstaller is continuously updating configurations - * [KARAF-7098] - JsonConfigInstaller ignores R7 factory configurations - * [KARAF-7101] - maven cmd: NPE guard for the case that there's no ~/.m2/settings.xml - * [KARAF-7113] - Scheduler should deal with array service pid - * [KARAF-7114] - Cannot logon webconsole - * [KARAF-7129] - Fix race condition in org.apache.karaf.shell.ssh.Activator - -#### Improvement - * [KARAF-7094] - Karaf should provide etc/org.apache.karaf.features.xml by default (even empty) - * [KARAF-7099] - Provide util for Configuration PIDs - * [KARAF-7131] - etc/host.key is readable by anyone - * [KARAF-7132] - Use maven properties in distributionManagement repositories and scm - * [KARAF-7133] - Allow karaf commands to have return codes - -#### Dependency upgrade - * [KARAF-7087] - Upgrade to Jetty 9.4.39.v20210325 - * [KARAF-7088] - Upgrade to jackson 2.11.4 - * [KARAF-7092] - Upgrade aries-proxy to 1.1.10 - * [KARAF-7103] - Upgrade to xbean 4.19 - * [KARAF-7116] - Upgrade to Pax Web 7.3.14 - * [KARAF-7119] - Upgrade to Jetty 9.4.40.v20210413 - * [KARAF-7120] - Upgrade to Pax Web 7.3.15 - * [KARAF-7122] - Upgrade to Pax Logging 2.0.9 - * [KARAF-7123] - Upgrade to Spring 5.3.5 - * [KARAF-7124] - Upgrade to Spring Security 5.4.5 - * [KARAF-7125] - Upgrade to Spring Security 5.3.3 - * [KARAF-7135] - Upgrade to Pax Web 7.3.16 - * [KARAF-7139] - Upgrade to Spring 5.3.6 - * [KARAF-7140] - Upgrade to easymock 4.3 - * [KARAF-7141] - Upgrade to Felix Http Jetty 4.1.8 - * [KARAF-7142] - Upgrade to narayana 5.11.2.Final - * [KARAF-7144] - Upgrade to Felix ConfigAdmin 1.9.22 - -## Apache Karaf 4.3.1 - -Apache Karaf 4.3.1 is a maintenance release on 4.3.x series. - -### ChangeLog - -#### Bug - * [KARAF-6654] - Remote JMX connection not working with security manager - * [KARAF-6772] - Removing JAASLoginService entry in jetty.xml causes an error (workaround for camel-servlet basic auth) in Karaf 4.2.9 - * [KARAF-6845] - Cannot read resource files with hash sign in the name with Felix Framework - * [KARAF-6878] - Fix WARNING: package org.apache.karaf.specs.locator not in java.base - * [KARAF-6895] - ssh-commands not properly return - * [KARAF-6897] - .kar generated by karaf-maven-plugin does not contain conditional bundles (no offline support) - * [KARAF-6918] - Karaf server SSH connection not happing via ssh.net dll - * [KARAF-6923] - Avoid potential XML entity injection in MavenConfigService - * [KARAF-6924] - Configurations created via web console are always persisted as JSON - * [KARAF-6948] - Session does not close when using client with command - * [KARAF-6949] - HTTP proxy service can throw NullPointerException - * [KARAF-6955] - JMX: With rmiRegistryHost = 127.0.0.1, Karaf should listen only on 127.0.0.1 - * [KARAF-6963] - Stopping Karaf daemon invokes kill -9, resulting in failed systemd service - * [KARAF-6980] - client/ssh session is not closed anymore until the idleTimeout - * [KARAF-6988] - Error installing json-flattener with wrap command - * [KARAF-6989] - Update wrap and classpath pax url features name in the distribution assembly - * [KARAF-6992] - karaf-maven-plugin does not work with decanter boot feature - * [KARAF-6998] - Karaf 4.3 Configurations with array property values calls @modified every 2 seconds - * [KARAF-7008] - client ignores env-variable ORG_APACHE_KARAF_SSH_SSHPORT - * [KARAF-7012] - Bundles don't resolve due to java.* package imports - * [KARAF-7030] - Karaf client does not exit/return when directly executing command - * [KARAF-7032] - JTA specification/package versions and exports are still not perfect - * [KARAF-7071] - KARAF-6887 Dropped support for JAVA_MAX_MEM - * [KARAF-7074] - Resolver parallelism can fail on kubernetes as the resolverParallelism is not accurate - -#### New Feature - * [KARAF-6479] - Add features repository JSON format - * [KARAF-6904] - Add Pax URL Classpath - * [KARAF-6953] - Globally Prevent AutoRefresh Cascade on Feature Install - -#### Improvement - * [KARAF-6888] - Sort out JMXMP authentication - * [KARAF-6917] - Remove -Dcom.sun.management.jmxremote by default - * [KARAF-6925] - Support stronger JAAS Encryption algorithms via spring-security-crypto - * [KARAF-6951] - Add regex support in features selection in add-features-to-repo goal - * [KARAF-6956] - Upgrade to Spring 5.2.9.RELEASE_2 - * [KARAF-6957] - Add Spring 5.3.1 support - * [KARAF-6958] - client.bat - Message "Failed to get the session" shown only for 1ms - * [KARAF-7061] - Add default message escaping for Log4J2 configuration to help prevent log injection attacks - * [KARAF-7073] - Upgrade to commons-lang 3.12.0 - * [KARAF-7077] - Add "verbose" option to bundle:find-class command - -#### Wish - * [KARAF-6434] - Add CDI examples - -#### Task - * [KARAF-6894] - Create jetty alias feature - * [KARAF-7013] - Add OSGi resolvers in Camel example - -#### Dependency upgrade - * [KARAF-6870] - Upgrade to Felix Framework 6.0.4 - * [KARAF-6901] - Upgrade example to use CXF 3.4.0 and Camel 3.6.0 - * [KARAF-6912] - Upgrade to jline 3.17.1 - * [KARAF-6914] - Upgrade to Pax Web 7.3.10 - * [KARAF-6922] - Upgrade to Jetty 9.4.35.v20201120 - * [KARAF-6960] - Upgrade to Pax Web 7.3.11 - * [KARAF-6961] - Upgrade to org.osgi.util.promise 1.1.1 - * [KARAF-6965] - Upgrade to Hibernate 5.4.26.Final - * [KARAF-6966] - Upgrade to Hibernate Validator 6.1.7.Final - * [KARAF-6970] - Upgrade to Felix EventAdmin 1.6.0 - * [KARAF-6971] - Upgrade to Felix WebConsole 4.6.0 - * [KARAF-6972] - Upgrade to Felix Utils 1.11.6 - * [KARAF-6973] - Upgrade to Felix Http 4.1.4 - * [KARAF-6974] - Upgrade to Felix Gogo Jline 1.1.8 - * [KARAF-6976] - Upgrade to Felix Resolver 2.0.2 - * [KARAF-6977] - Remove ant bundle from bom - * [KARAF-6978] - Upgrade to equinox 3.16.100 - * [KARAF-6979] - Upgrade to jline 3.18.0 - * [KARAF-6993] - bndlib cleanup and upgrade to bndlib 5.2.0 - * [KARAF-6994] - Upgrade to Pax Swissbox 1.8.4 - * [KARAF-6995] - Upgrade to Pax URL 2.6.7 - * [KARAF-7009] - Upgrade to Pax Logging 2.0.8 - * [KARAF-7017] - Upgrade to Pax Web 7.3.12 - * [KARAF-7031] - Upgrade to Jetty 9.4.36.v20210114 - * [KARAF-7033] - Upgrade to commons-codec 1.15 - * [KARAF-7034] - Upgrade to Pax CDI 1.1.4 - * [KARAF-7036] - Upgrade to Aries Proxy 1.1.9 - * [KARAF-7037] - Upgrade to Aries Blueprint Core 1.10.3 and Blueprint CM 1.3.2 - * [KARAF-7039] - Upgrade to jackson-databind 2.10.5.1 - * [KARAF-7041] - Upgrade to ASM 9.1 - * [KARAF-7043] - Upgrade to junit 4.13.2 - * [KARAF-7044] - Upgrade to JNA 5.7.0 - * [KARAF-7045] - Upgrade to Felix CM JSON 1.0.6 - * [KARAF-7046] - Upgrade to Felix ConfigAdmin 1.9.20 - * [KARAF-7047] - Upgrade to Felix ConfigAdmin plugin interpolation 1.1.2 - * [KARAF-7048] - Upgrade to Felix EventAdmin 1.6.2 - * [KARAF-7049] - Upgrade to Felix Metatype 1.2.4 - * [KARAF-7050] - Upgrade to Felix SCR 2.1.26 - * [KARAF-7052] - Upgrade to jline 3.19.0 - * [KARAF-7053] - Upgrade to Jetty 9.4.38.v20210224 - * [KARAF-7054] - Upgrade to Pax Web 7.3.13 - * [KARAF-7057] - Update Pax Transx, Pax JMS and Pax JDBC - * [KARAF-7058] - Upgrade to Hibernate 5.4.29.Final - * [KARAF-7059] - Upgrade to Hibernate Validator 7.0.1.Final - * [KARAF-7060] - Upgrade to eclipselink 2.7.8 - * [KARAF-7062] - Upgrade to Spring 4.3.30.RELEASE - * [KARAF-7063] - Upgrade to Spring 5.2.13.RELEASE - * [KARAF-7064] - Upgrade to Spring 5.3.4 - * [KARAF-7067] - Provide Spring Security 5.4.2_1 feature - * [KARAF-7078] - Upgrade to maven-bundle-plugin 5.1.2 - * [KARAF-7079] - Upgrade to JNA 5.8.0 - * [KARAF-7080] - Upgrade to Felix Configurator 1.0.14 - * [KARAF-7081] - Upgrade to Felix Http Jetty 4.1.6 - * [KARAF-7082] - Upgrade to narayana 5.11.0.Final - * [KARAF-7083] - Upgrade to equinox 3.16.200 - * [KARAF-7085] - Upgrade to Felix Utils 1.11.8 - -## Apache Karaf 4.3.0 - -Apache Karaf 4.3.0 is the first release on the 4.3.x series. This release is JDK 11+ compliant, OSGi R7 -compliant and brings bunch of fixes and new features. - -### ChangeLog - -#### Sub-task - * [KARAF-6591] - Upgrade to Pax Logging 2.0.2 - * [KARAF-6595] - Upgrade to Pax CDI 1.1.3 - -#### Bug - * [KARAF-5628] - Corrupt gc.log due to unseparated VM settings - * [KARAF-5753] - Karaf won't start correctly on HP-UX - * [KARAF-5990] - Blacklisted dependent features should be skipped during assembly generation - * [KARAF-6024] - Blacklisted dependent repositories should be skipped during assembly generation - * [KARAF-6039] - maven-resources-plugin in same pom twice - * [KARAF-6085] - karaf-maven-plugin verify mojo builds invalid repository URL on Windows - * [KARAF-6119] - karaf-maven-plugin assembly goal doesn't handle locked snapshots - * [KARAF-6143] - Subshell and first complete modes don't work - * [KARAF-6144] - Some bundle:* commands doesn't output on System.out - * [KARAF-6153] - Instance fails to start - * [KARAF-6156] - Support extending Karaf JAAS Principal classes - * [KARAF-6160] - NPE when setting configCfgStore=false in the org.apache.karaf.features.cfg - * [KARAF-6170] - karaf-maven-plugin doesn't support "https" remoteRepos URI accembly - * [KARAF-6171] - batch command line mode does not work - * [KARAF-6186] - Downgrade to wagon 3.2.0 - * [KARAF-6189] - Don't overwrite JAVA_HOME on gentoo system - * [KARAF-6197] - Dot at the end of PATH_WITH_JAVA in karaf-wrapper.conf break PATH variable - * [KARAF-6198] - Spaces in the path stored in KARAF_ETC will prohibit service start-up - * [KARAF-6199] - Upgrade Hibernate feature to work with Java 11 - * [KARAF-6201] - Karaf staticcm should export org.osgi.service.cm package with version 1.6 - * [KARAF-6202] - Update to osgi specification new coordinates - * [KARAF-6205] - bin\client.bat only passes 8 or 9 arguments to java - * [KARAF-6207] - bootFeatures sometimes being ignored - * [KARAF-6208] - Fix scr:* commands - * [KARAF-6224] - Race condition in BaseActivator on first launch - * [KARAF-6226] - config core: ConfigRepository requires access to TypedProperties - * [KARAF-6229] - karaf-maven-plugin (>= 4.2.2) deploy/install zip twice - * [KARAF-6232] - the karaf-maven-plugin features-add-to-repository goal creates fixed snapshot versions for bundles referenced via -SNAPSHOT version in a feature descriptor - * [KARAF-6235] - Date.getTime() can be changed to System.currentTimeMillis() - * [KARAF-6237] - Karaf Scheduler reschedule failed because the function lost the job reference (After reschedule job is null) - * [KARAF-6238] - org.apache.karaf.profile.assembly.Builder#downloadLibraries is not synchronized - * [KARAF-6239] - Duplicated Resource have been added to the Set bundlesInRegion during compute - * [KARAF-6252] - NPE when trying to remove repo - * [KARAF-6253] - Typo in documentation - * [KARAF-6254] - Karaf shell scripts don't work on Solaris 10 - * [KARAF-6256] - Parsing string arrays in org.apache.karaf.management.cfg doesn't ignore spaces - * [KARAF-6257] - client.bat no longer working on Windows due to KARAF-6205 - * [KARAF-6258] - Do not print error for user interrupted script - * [KARAF-6259] - SCR feature fails to install when using Equinox framework - * [KARAF-6270] - client could be more verbose on config error - * [KARAF-6274] - Karaf 4.2.5 maven plugin breaks if no archives are generated - * [KARAF-6276] - Bundle update results in leaking update*.jar files - * [KARAF-6279] - Upgrade to Pax Web 7.2.10 - * [KARAF-6290] - Karaf Wrapper does not properly manage process on Solaris - * [KARAF-6299] - JDK11: don't expose javax.activation package from system bundle 0 - * [KARAF-6325] - Jetty client issue? - * [KARAF-6326] - instance:start does not work under jdk-11 - * [KARAF-6329] - NPE on shutdown - * [KARAF-6337] - ConcurrentModificationException when executing commands - * [KARAF-6341] - Karaf does not start if TERM=linux - * [KARAF-6344] - AsyncLogger fails due to bug in pax-logging - * [KARAF-6351] - The classes command fails with package-less classes - * [KARAF-6356] - Using instance commands corrupts org.apache.karaf.shell.cfg - * [KARAF-6357] - client sh/bat no longer working in case of specify encryption.enabled = true - * [KARAF-6358] - jre.properties exports javax.annotation packages as 1.0 vs 1.3 - * [KARAF-6359] - Clients can log in with encrypted passwords - * [KARAF-6361] - jre.properties lists CORBA packages for jre-11 - * [KARAF-6362] - [karaf-maven-plugin] client goal:only the fist command in script file could be executed - * [KARAF-6363] - ConfigRepository.update changes configuration file location - * [KARAF-6365] - KARAF_LOG fails if directory doesn't exist - * [KARAF-6369] - Upgrade to pax-logging 1.11.0 - * [KARAF-6382] - Upgrade to pax-jdbc 1.4.0, pax-jms 1.0.5 and pax-transx 0.4.4 - * [KARAF-6385] - WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance. - * [KARAF-6386] - Race condition in initialization of Activators (Port already in use: 1099) - * [KARAF-6393] - Make sure extracted data from OBR source stays in destination directory - * [KARAF-6410] - FeatureProcessor selects wrong override bundle - * [KARAF-6413] - Windows Service fails to start initially - * [KARAF-6417] - AutoEncryptionSupport has hardcoded users.properties - * [KARAF-6444] - karaf-maven-plugin:client goal doesn't work due to missing setter - * [KARAF-6445] - [karaf-maven-plugin] client goal: ensure commands in script file will be executed in expected order - * [KARAF-6449] - karaf-service.sh does not work until executed from its folder - * [KARAF-6450] - Upgrade to Jackson 2.9.10 - * [KARAF-6451] - Upgrade to Jackson 2.10.0 - * [KARAF-6456] - KarafTestSupport should check if etc/org.ops4j.pax.logging.cfg resource exists - * [KARAF-6457] - KarafTestSupport should not "force" the version variables - * [KARAF-6462] - Unresolvable dependency to org.knopflerfish.kf6:log-API:jar:5.0.0 using karaf-maven-plugin: - * [KARAF-6472] - Blacklisted features may be processed wrong with different blacklist ranges - * [KARAF-6476] - ClassLoader and Memory leak - * [KARAF-6480] - Permgen JVM options still being used on Windows - * [KARAF-6498] - StaticCM doesn't work with SCR - * [KARAF-6501] - Restoring the wiring of fragment bundles with multiple hosts - * [KARAF-6505] - Unable to override bundle's dependency attribute by specifying it in the source feature.xml descriptor - * [KARAF-6510] - Change wrap URL handler bundle start level to 10 - * [KARAF-6517] - LDAPLoginModule + SSL + connection timeout problem - * [KARAF-6519] - Config MBean update operation should "really" update (not just add properties) - * [KARAF-6523] - Cleanly destroy the CXF server in the REST/SOAP examples - * [KARAF-6525] - bin/shell.bat|sh could not find org.osgi.framework.FrameworkUtil - * [KARAF-6535] - in bin/client script JAVA_OPTS are never populated to default values - * [KARAF-6542] - Refreshing sshd cause the ssh service to be unavailable - * [KARAF-6543] - Upgrade jline to 3.13.2 (Bug: Cannot run program "infocmp": CreateProcess error=2) - * [KARAF-6593] - Assembly bundles unused/unneeded slf4j-api - * [KARAF-6596] - Bad line ending in karaf.bat affecting Windows startup with JDK9+ - * [KARAF-6597] - MutiPartInputStreamParser usage causes CNFE - * [KARAF-6598] - Upgrade to CXF 3.3.5 - * [KARAF-6600] - Change default Maven repository to use https - * [KARAF-6602] - History shell command is broken - * [KARAF-6604] - Remove dependency opendmk_jmxremote_optional_jar dependency - * [KARAF-6613] - Paste doesn't work in ssh terminal - * [KARAF-6614] - man command leads to java.lang.reflect.InvocationTargetException - * [KARAF-6624] - Error starting on JDK 13 & JDK 14 - * [KARAF-6649] - Documentation uses wrong markup in section 5.9.1. and 5.9.2. - * [KARAF-6650] - Error parsing the bundle.info file, if 'h' is last character in line - * [KARAF-6715] - Wrong exports of javax.transaction package from jre.properties - * [KARAF-6716] - Change in KAR installation behaviour - * [KARAF-6731] - Align hibernate bundle version with feature version and upgrade to hibernate 5.4.17.Final - * [KARAF-6763] - Disallow calling getMBeansFromURL - * [KARAF-6764] - Compilation with OpenJDK 11 failed because of Unit tests with JPM - * [KARAF-6776] - scheduler doesn't work in featuresBoot - * [KARAF-6784] - Karaf docker images not stopped correctly - * [KARAF-6822] - “NoSuchMethodErrors” due to multiple versions of org.codehaus.plexus:plexus-utils:jar - * [KARAF-6836] - Restart issue with subsystem runtime - * [KARAF-6852] - RmiServerPort (44444) does not rise at startup - * [KARAF-6879] - Fix log:display/log:tail commands - -#### New Feature - * [KARAF-2925] - Add JMXMP support - * [KARAF-6182] - Add override property to in feature - * [KARAF-6236] - Add karaf:dockerfile & karaf:docker Maven goals - * [KARAF-6247] - Add web:install command - * [KARAF-6277] - Upgrade to felix-http 4.0.8 - * [KARAF-6289] - Add spring-messaging feature - * [KARAF-6378] - Add OSGi R7 Configurator (Felix) bundle in config feature - * [KARAF-6418] - Add flag to mark transitive dependencies with dependency="true" - * [KARAF-6574] - Upgrade pax-logging to 1.11.4 - * [KARAF-6611] - Add gitpod.yml for better onboarding experience - * [KARAF-6676] - Support OSGi R7 factory configurations with factory PID and name - * [KARAF-6680] - Support OSGi R7 JSON configuration format - -#### Improvement - * [KARAF-2894] - Add option to feature:uninstall to cleanup feature configs/configfiles - * [KARAF-3467] - Create a BOM (Bill of Material) for Karaf - * [KARAF-4609] - Be able to override ConfigAdmin properties with System/JVM properties - * [KARAF-5772] - HTTP proxy should be able to support several addresses with balancing policies - * [KARAF-6157] - ensure karaf-maven-plugin can honor start-level for bootBundles - * [KARAF-6159] - Allow to override/blacklist some features for VerifyMojo - * [KARAF-6167] - Add skip option to karaf-maven-plugin - * [KARAF-6177] - improve shell:exit help message - * [KARAF-6183] - FeaturesProcessorImpl improvement for bundle override - * [KARAF-6209] - Add SortedProperties class to karaf tooling - * [KARAF-6220] - add principal info to audit logs - * [KARAF-6222] - add MAX_CONCURRENT_SESSIONS option to Karaf ssh server - * [KARAF-6230] - Prevent relative path in config install command and ConfigMBean - * [KARAF-6234] - Handle null reference in MetaServiceCaller.withMetaTypeService() - * [KARAF-6241] - introduce new property EnabledProtocals for org.apache.karaf.management.cfg - * [KARAF-6245] - Update war example README.md - * [KARAF-6296] - Upgrade to Jasypt 1.9.3 - * [KARAF-6301] - Please log remote socket address/port in ShutdownSocketThread - * [KARAF-6323] - Add jetty-proxy bundle in http/jetty feature - * [KARAF-6340] - Add filter attribute on command @Reference annotation - * [KARAF-6346] - Support FATAL level for log console commands - * [KARAF-6350] - Add support for elliptic keys in the PublicKeyLoginModule - * [KARAF-6353] - Sanitize ShutdownSocketThread command log - * [KARAF-6370] - StaticInstallSupport should log update/uninstall bundle when throwing UnsupportedOperationException - * [KARAF-6381] - Update Commons BeanUtils - * [KARAF-6383] - Replace not-yet-commons-ssl with BouncyCastle - * [KARAF-6384] - Add support for encrypted key password for SSH - * [KARAF-6388] - Update default encryption algorithm to SHA-256 - * [KARAF-6402] - ConfigMBean should reflect config:edit command for factory - * [KARAF-6420] - Disable JAAS deployer by default - * [KARAF-6421] - Trim JAAS config values before they are used - * [KARAF-6428] - bin/status should display only "Running ..." or "Not Running ..." - * [KARAF-6431] - Maven plugin feature to define custom bundle location prefixes - * [KARAF-6447] - Added more information to the thrown exception for malformed url. - * [KARAF-6452] - Add a CXF (SOAP/REST) example with SCR - * [KARAF-6458] - Add option to ignore PartialResultExceptions from Active Directory - * [KARAF-6570] - Be able to override the Karaf distribution in KarafTestSupport - * [KARAF-6579] - Improve the jaas command to be able to add a new realm - * [KARAF-6580] - Provide Spring Security 5.3.x feature - * [KARAF-6594] - introduce new property enabledCipherSuites for org.apache.karaf.management.cfg - * [KARAF-6634] - Prevent JMX rebinding - * [KARAF-6660] - Update to Commons Lang 3.10 - * [KARAF-6672] - Update to Commons Compress 1.20 - * [KARAF-6675] - Upgrade Apache RAT plugin to 0.13 - * [KARAF-6698] - VerifyMojo performance improvement - * [KARAF-6722] - Spring cleaning — remove unsupported Spring versions - * [KARAF-6737] - Disallow calling getMBeansFromURL - * [KARAF-6795] - Add feature:upgrade alias - * [KARAF-6812] - example name depth really long, causes problems on win64 - * [KARAF-6816] - Add activation-api bundle in the static-framework feature - * [KARAF-6856] - Make webconsole feature independent of Pax Web - * [KARAF-6869] - Upgrade to Pax Logging 2.0.6 - * [KARAF-6887] - Remove setting JAVA_MAX_MEM defaults in bin/inc - -#### Task - * [KARAF-6154] - Add a example with direct features generate, custom distro and docker image all in a row - * [KARAF-6155] - Add an itest to check startup using equinox - * [KARAF-6219] - Add MDC/Sift example (commented) in provided etc/org.ops4j.pax.logging.cfg - * [KARAF-6298] - master can't build with JDK11 again - * [KARAF-6327] - Build using JDK 12 - * [KARAF-6331] - Move Spring 5.0.x features in spring-legacy features repository - * [KARAF-6333] - Add Karaf jaas based authentication example - * [KARAF-6544] - Use atomic CXF features in examples - * [KARAF-6575] - Upgrade Aries JAX-RS Whiteboard to 1.0.6 - * [KARAF-6826] - update to aries.spi 1.2.4 - * [KARAF-6828] - Ensure karaf:run (maven goal) can find a pre-built artifact - * [KARAF-6829] - JDK15 support - * [KARAF-6832] - Upgrade to Aries Proxy 1.1.8 - * [KARAF-6838] - bin\start.bat doesn't work if no data directory in Karaf kit - * [KARAF-6847] - Update examples to be R7 focus (annotations, ...) - * [KARAF-6855] - JMX over SSL doesn't work anymore - -#### Dependency upgrade - * [KARAF-5770] - Support OSGi R7 - * [KARAF-5820] - Upgrade to Felix Resolver 2.0.0 - * [KARAF-5823] - Upgrade to sshd 2.5.1 - * [KARAF-5825] - Upgrade to equinox 3.15.100 - * [KARAF-5949] - Upgrade to Felix Framework 6.0.3 - * [KARAF-5951] - Upgrade to Felix Resolver 2.0.0 - * [KARAF-5957] - Upgrade to equinox 3.13.200 - * [KARAF-6188] - Upgrade to Felix ConfigAdmin 1.9.14 - * [KARAF-6190] - Upgrade to Spring 5.1.5.RELEASE - * [KARAF-6191] - Upgrade to Spring 4.3.22.RELEASE - * [KARAF-6192] - Upgrade to Aries JPA 2.7.2 - * [KARAF-6193] - Upgrade to Felix SCR 2.1.16 - * [KARAF-6194] - Upgrade to awaitility 3.1.6 - * [KARAF-6195] - Upgrade to ASM 7.1 - * [KARAF-6196] - Upgrade to jline 3.10.0 - * [KARAF-6212] - Upgrade to hibernate-validator 6.0.16.Final - * [KARAF-6213] - Upgrade to pax-jdbc 1.3.5 / pax-transx 0.4.3 - * [KARAF-6214] - Upgrade to Aries Blueprint Core 1.10.2 - * [KARAF-6216] - Upgrade to equinox 3.13.300 - * [KARAF-6217] - Upgrade to narayana 5.9.4.Final - * [KARAF-6218] - Upgrade to Geronimo Connector 3.1.4 - * [KARAF-6228] - Upgrade to Felix maven-bundle-plugin 4.2.0 - * [KARAF-6248] - Upgrade to Quartz 2.3.1 - * [KARAF-6260] - Upgrade to XBean 4.13 - * [KARAF-6261] - Upgrade to Felix WebConsole MemoryUsage plugin 1.0.10 - * [KARAF-6262] - Upgrade to Maven 3.6.1 - * [KARAF-6263] - Upgrade to jansi 1.18 - * [KARAF-6264] - Upgrade to narayana 5.9.5.Final - * [KARAF-6265] - Upgrade to jline 3.11.0 - * [KARAF-6266] - Upgrade to commons-lang3 3.9 - * [KARAF-6272] - Upgrade to Pax Web 7.2.9 and Jetty 9.4.18 - * [KARAF-6280] - Upgrade to Spring 4.3.23.RELEASE - * [KARAF-6281] - Upgrade to Spring 5.0.13.RELEASE - * [KARAF-6282] - Upgrade to Spring 5.1.6.RELEASE - * [KARAF-6283] - Upgrade to Spring Security 5.1.5.RELEASE - * [KARAF-6286] - Upgrade to Apache Felix Webconsole 4.3.12 - * [KARAF-6287] - Downgrade to equinox 3.12.100 - * [KARAF-6293] - Upgrade to XBean 4.14 - * [KARAF-6300] - Upgrade to Pax Logging 1.10.2 - * [KARAF-6302] - Upgrade to ActiveMQ 5.15.9 - * [KARAF-6303] - Upgrade to aspectj 1.9.4 - * [KARAF-6304] - Upgrade to ant 1.10.5 - * [KARAF-6305] - Upgrade to cglib 3.2.9 - * [KARAF-6306] - Upgrade to JNA 5.3.1 - * [KARAF-6307] - Upgrade to commons-beanutils 1.9.3 - * [KARAF-6308] - Upgrade to commons-codec 1.12 - * [KARAF-6309] - Upgrade to commons-fileupload 1.4 - * [KARAF-6310] - Upgrade to commons-pool2 2.6.2 - * [KARAF-6311] - Upgrade to jolokia 1.6.1 - * [KARAF-6312] - Upgrade to serp 1.15.1 - * [KARAF-6313] - Upgrade to Pax JMS 1.0.4 - * [KARAF-6314] - Upgrade to bndlib 3.5.0 - * [KARAF-6315] - Upgrade to Spring 4.3.24.RELEASE - * [KARAF-6316] - Upgrade to Spring 5.0.14.RELEASE - * [KARAF-6317] - Upgrade to Spring 5.1.7.RELEASE - * [KARAF-6324] - Upgrade to Pax Web 7.2.11 - * [KARAF-6332] - Upgrade to Spring 5.1.8.RELEASE - * [KARAF-6335] - Upgrade to Aries Proxy 1.1.5 - * [KARAF-6338] - Upgrade to Aries Spi Fly 1.2.2 - * [KARAF-6339] - Upgrade to javax.annotation-api 1.3.1 - * [KARAF-6347] - Upgrade to Felix ConfigAdmin 1.9.16 - * [KARAF-6348] - Upgrade to Felix HTTP 4.0.10 - * [KARAF-6349] - Upgrade to ant 1.10.6 - * [KARAF-6371] - Upgrade to Jetty 9.4.20.v20190813 - * [KARAF-6372] - Upgrade to jline 3.12.1 - * [KARAF-6373] - Upgrade to CXF 3.3.2 - * [KARAF-6391] - Update Commons Compress - * [KARAF-6394] - Upgrade to JNA 5.4.0 - * [KARAF-6395] - Upgrade to maven-bundle-plugin 4.2.1 - * [KARAF-6396] - Upgrade to Felix WebConsole 4.3.16 - * [KARAF-6398] - Upgrade to narayana 5.9.7.Final - * [KARAF-6403] - Upgrade to Pax Logging 1.11.2 - * [KARAF-6406] - Upgrade to Spring 5.1.9.RELEASE - * [KARAF-6407] - Upgrade to Spring 5.0.15.RELEASE - * [KARAF-6408] - Upgrade to Spring 4.3.25.RELEASE - * [KARAF-6409] - Upgrade to ant 1.10.7 - * [KARAF-6411] - Upgrade to commons-codec 1.13 - * [KARAF-6415] - Upgrade to Aries Proxy 1.1.6 - * [KARAF-6423] - Upgrade JAXB to 2.3.3 - * [KARAF-6426] - Upgrade to hibernate-validator 6.0.17.Final - * [KARAF-6446] - Upgrade to Jetty 9.4.22 and Pax Web 7.2.12 - * [KARAF-6461] - Upgrade to Pax JDBC 1.4.2 - * [KARAF-6464] - Upgrade to Aries SPI Fly 1.2.3 - * [KARAF-6465] - Upgrade to istack-commons-runtime 3.0.9 - * [KARAF-6466] - Upgrade to Felix HTTP Jetty 4.0.14 - * [KARAF-6467] - Upgrade to Maven 3.6.2 - * [KARAF-6468] - Upgrade to narayana 5.9.8.Final - * [KARAF-6469] - Upgrade to jline 3.13.0 - * [KARAF-6470] - Upgrade to ASM 7.2 - * [KARAF-6471] - Upgrade to Pax Logging 1.11.3 - * [KARAF-6489] - Upgrade to CXF 3.3.4 & Camel 2.24.2 - * [KARAF-6497] - Upgrade to XBean 4.15 - * [KARAF-6499] - Upgrade to narayana 5.10.0.Final - * [KARAF-6502] - Upgrade to Hibernate 5.2.18.Final - * [KARAF-6503] - Upgrade to hibernate-validator 6.0.18.Final - * [KARAF-6504] - Upgrade to Hibernate 5.4.8.Final - * [KARAF-6506] - Provide Spring 5.2.0.RELEASE features - * [KARAF-6520] - Upgrade to Jackson 2.10.1 - * [KARAF-6545] - Upgrade to OpenJPA 3.1.1 - * [KARAF-6546] - Upgrade to JNA 5.5.0 - * [KARAF-6547] - Upgrade to Felix Utils 1.11.4 - * [KARAF-6548] - Upgrade to maven 3.6.3 - * [KARAF-6549] - Upgrade to hibernate-validator 6.1.0.Final - * [KARAF-6550] - Upgrade to narayana 5.10.1.Final - * [KARAF-6551] - Upgrade to ops4j-base 1.5.1 - * [KARAF-6552] - Upgrade to PAX JDBC 1.4.4 - * [KARAF-6553] - Upgrade to PAX CDI 1.1.2 - * [KARAF-6554] - Upgrade to PAX URL 2.6.2 - * [KARAF-6555] - Upgrade to PAX JMS 1.0.6 - * [KARAF-6556] - Upgrade to istack-commons-runtime 3.0.10 - * [KARAF-6557] - Upgrade to maven-assembly-plugin 3.2.0 - * [KARAF-6558] - Upgrade to maven-compiler-plugin 3.8.1 - * [KARAF-6559] - Upgrade to maven-jar-plugin 3.2.0 - * [KARAF-6560] - Upgrade to maven-javadoc-plugin 3.1.1 - * [KARAF-6561] - Upgrade to maven-jxr-plugin 3.0.0 - * [KARAF-6562] - Upgrade to maven-remote-resources-plugin 1.6.0 - * [KARAF-6563] - Upgrade to maven-site-plugin 3.8.2 - * [KARAF-6564] - Upgrade to maven-source-plugin 3.2.0 - * [KARAF-6565] - Upgrade to maven-surefire-plugin 2.22.2 - * [KARAF-6566] - Upgrade to maven-war-plugin 3.2.3 - * [KARAF-6567] - Upgrade to maven-invoker-plugin 3.2.1 - * [KARAF-6568] - Upgrade to maven-plugin-plugin 3.6.0 - * [KARAF-6569] - Upgrade to maven-archetype-plugin 3.1.2 - * [KARAF-6578] - Upgrade to Pax Web 7.2.13 - * [KARAF-6581] - Upgrade to ActiveMQ 5.15.11 - * [KARAF-6582] - Upgrade to aspectj bundle 1.9.6_1 - * [KARAF-6583] - Upgrade to camel 2.24.3 - * [KARAF-6584] - Upgrade to jackson 2.10.2 - * [KARAF-6585] - Upgrade to eclipselink 2.7.5 - * [KARAF-6586] - Upgrade to jolokia 1.6.2 - * [KARAF-6587] - Upgrade to easymock 4.1 - * [KARAF-6588] - Upgrade to Felix Inventory 1.0.6 - * [KARAF-6589] - Upgrade to Spring 5.2.2.RELEASE - * [KARAF-6603] - Upgrade to Pax Web 7.2.14 - * [KARAF-6609] - Upgrade to Pax Web 7.2.15 and Jetty 9.4.28.v20200408 - * [KARAF-6622] - Upgrade to PAX Exam 4.13.2 - * [KARAF-6628] - Upgrade to jline 3.14.1 - * [KARAF-6630] - Upgrade to junit 4.13 - * [KARAF-6663] - Upgrade to Felix Gogo jline 1.1.6 - * [KARAF-6664] - Upgrade to Felix HTTP jetty 4.0.16 - * [KARAF-6665] - Upgrade to XBean 4.16 - * [KARAF-6666] - Upgrade to easymock 4.2 - * [KARAF-6667] - Upgrade to equinox 3.15.200 - * [KARAF-6668] - Upgrade to narayana 5.10.4.Final - * [KARAF-6669] - Upgrade to Pax Exam 4.13.3 - * [KARAF-6670] - Upgrade to ASM 8.0.1 - * [KARAF-6681] - Upgrade to Felix Fileinstall 3.6.6 - * [KARAF-6682] - Upgrade to Felix Http Jetty 4.0.18 - * [KARAF-6683] - Upgrade to Felix SCR 2.1.20 - * [KARAF-6684] - Upgrade to Felix WebConsole 4.5.0 - * [KARAF-6685] - Upgrade to maven-antrun-plugin 3.0.0 - * [KARAF-6686] - Upgrade to maven-dependency-plugin 3.1.2 - * [KARAF-6687] - Upgrade to maven-javadoc-plugin 3.2.0 - * [KARAF-6688] - Upgrade to maven-remote-resources-plugin 1.7.0 - * [KARAF-6689] - Upgrade to maven-site-plugin 3.9.0 - * [KARAF-6690] - Upgrade to maven-source-plugin 3.2.1 - * [KARAF-6691] - Upgrade to build-helper-maven-plugin 3.1.0 - * [KARAF-6692] - Upgrade to modello-maven-plugin 1.11 - * [KARAF-6693] - Upgrade to jacoco-maven-plugin 0.8.5 - * [KARAF-6701] - Upgrade to xbean 4.17 - * [KARAF-6707] - Upgrade to PAX JMS 1.0.7 - * [KARAF-6709] - Upgrade to Apache pom parent 23 - * [KARAF-6713] - Upgrade to Felix WebConsole 4.5.2 - * [KARAF-6719] - Upgrade to jackson 2.10.4 - * [KARAF-6721] - Upgrade to Spring 5.1.14.RELEASE and 5.2.5.RELEASE due to CVE-2020-5398 - * [KARAF-6723] - Upgrade to commons-codec 1.14 - * [KARAF-6724] - Upgrade to hibernate-validator 6.1.5.Final - * [KARAF-6725] - Upgrade to Hibernate 5.4.15.Final - * [KARAF-6726] - Upgrade to eclipselink 2.7.7 - * [KARAF-6728] - Upgrade to Aries Proxy API 1.1.1 & Aries Proxy 1.1.7 - * [KARAF-6729] - Upgrade to Pax Web 7.2.16 - * [KARAF-6730] - Upgrade to Hibernate 5.4.16.Final - * [KARAF-6785] - Upgrade to Pax Web 7.2.18 - * [KARAF-6788] - Upgrade to Felix FileInstall 3.6.8 - * [KARAF-6798] - Upgrade to commons-io 2.7 - * [KARAF-6799] - Upgrade to JNA 5.6.0 - * [KARAF-6800] - Upgrade to commons-lang 3.11 - * [KARAF-6801] - Upgrade to Felix ConfigAdmin 1.9.18 - * [KARAF-6802] - Upgrade to Felix HTTP Jetty 4.0.20 - * [KARAF-6803] - Upgrade to Felix WebConsole 4.5.4 - * [KARAF-6804] - Upgrade to geronimo-atinject_1.0_spec 1.2 - * [KARAF-6805] - Upgrade to Jetty 9.4.30.v20200611 - * [KARAF-6806] - Upgrade to Jackson Databind 2.10.5 - * [KARAF-6809] - Upgrade to Pax Logging 2.0.5 - * [KARAF-6815] - Upgrade to maven-bundle-plugin - * [KARAF-6817] - Upgrade to Equinox 3.15.300 - * [KARAF-6818] - Upgrade to narayana 5.10.5.Final - * [KARAF-6819] - Upgrade to jline 3.16.0 - * [KARAF-6825] - Upgrade to bouncycastle 1.66 - * [KARAF-6833] - Upgrade to Felix SCR 2.1.22 - * [KARAF-6841] - Upgrade to ant 1.10.8 - * [KARAF-6842] - Upgrade to Pax Web 7.3.9 - * [KARAF-6843] - Upgrade to SCR 2.1.24 - * [KARAF-6844] - Upgrade to Camel 3.5.0 - * [KARAF-6857] - Upgrade to Spring 5.2.9.RELEASE - * [KARAF-6859] - Upgrade to Spring 4.3.29.RELEASE - * [KARAF-6860] - Upgrade to Pax Exam 4.13.4 - * [KARAF-6863] - Upgrade to ASM 9.0 - * [KARAF-6871] - Upgrade to XBean 4.18 - * [KARAF-6875] - Upgrade to Felix Gogo Runtime 1.1.4 - * [KARAF-6876] - Upgrade to Felix Http 4.1.2 - * [KARAF-6880] - Upgrade to commons-io 2.8.0 - * [KARAF-6881] - Upgrade to Equinox 3.16.0 - * [KARAF-6882] - Upgrade to narayana 5.10.6.Final - * [KARAF-6884] - Upgrade to Hibernate Validator 6.1.6.Final - * [KARAF-6885] - Upgrade to Hibernate 5.4.22.Final - * [KARAF-6886] - Upgrade to junit 4.13.1 - * [KARAF-6889] - Upgrade to Aries SpiFly 1.3.2 - * [KARAF-6890] - Upgrade to HTTP Client 4.5.13 (CVE-2020-13956) - -#### Documentation - * [KARAF-6516] - Broken links to examples - * [KARAF-6652] - Some links in README.md broken - * [KARAF-6821] - Command jdbc:ds-factories is not documented - * [KARAF-6850] - Type-o in JDNI vs JNDI in datasource description of JDBCLoginModule - - -## Apache Karaf 4.3.0.RC1 - -Apache Karaf 4.3.0.RC1 is the first release candidate on the 4.3.x series. It upgrades to OSGi R7 support. -4.3.0.RC1 is not GA. The purpose is to allow users to test and review the runtime, preparing the 4.3.0 GA -release. - -### ChangeLog - -As it's a 4.3.0.RC1 and the Release Notes will be updated with the 4.3.0 GA, you can find content of 4.3.0.RC1 -on Jira: - -https://issues.apache.org/jira/sr/jira.issueviews:searchrequest-printable/temp/SearchRequest.html?jqlQuery=project+%3D+KARAF+AND+status+in+%28Resolved%2C+Closed%29+AND+fixVersion+%3D+4.3.0+ORDER+BY+priority+DESC%2C+updated+DESC&tempMax=1000 - -## Apache Karaf 4.2.3 - -Apache Karaf 4.2.3 is a major update on the 4.2.x series. It brings several fixes, updates and improvements. - -### ChangeLog - -#### Bug - * [KARAF-5086] - Java 8 default methods cause IncompatibleClassChangeError in blueprint - * [KARAF-6005] - Resolve of bundle with version range in a feature only works with ".m2" and not with "system" directory - * [KARAF-6037] - DB connection and acquire lock to be retried few times before giving up - * [KARAF-6050] - package org.apache.karaf.specs.locator not in java.base - * [KARAF-6052] - Don't use cellar to illustreate provisioning commands (feature:*) in documentation - * [KARAF-6057] - karaf-plugin breaks with maven-install-plugin-2.5.2 - * [KARAF-6058] - Even key based auth enabled, ssh still prompt for password - * [KARAF-6066] - Karaf Client doesn't respond to some keystrokes on Windows - * [KARAF-6069] - Distribution pom is not uploaded on Central - * [KARAF-6074] - Race condition between the FeaturesService and FeatureDeploymentListener - * [KARAF-6076] - Blueprint loading fails with Saxon or Xalan - * [KARAF-6077] - Feature verify fails with UnsupportedOperationException on some features - * [KARAF-6080] - Duplicate configuration randomly created on the first start in ConfigurationAdmin - * [KARAF-6084] - Startup bundles do not resolve correctly when compiled with Java 11 during assembly - * [KARAF-6086] - Profile builder should use ${karaf.etc} instead of ${karaf.home}/etc - * [KARAF-6089] - Deadlock with FeatureDeploymentListener - * [KARAF-6093] - Error putting an attachment on a SOAP message via CXF due to javax.xml.soap - * [KARAF-6103] - When doing a "mvn compile" the karaf-maven-plugin causes a IOException - * [KARAF-6106] - LinkageError due to javax.activation not in kernel anymore - * [KARAF-6107] - client doesn't find JAVA_HOME on Windows - * [KARAF-6112] - Table rendering is not correct on client on windows - * [KARAF-6116] - karaf-maven-plugin adds incorrect snapshot version to repository - * [KARAF-6120] - Karaf Profiles don't parse on Windows - * [KARAF-6123] - Karaf scheduler can't be easily configured with a JDBC job store - * [KARAF-6124] - Instance Creation on Windows fails due to unsupported operation - * [KARAF-6125] - Audit library creates incorrect dates due to timezones - * [KARAF-6130] - Documentation points to wrong examples location - -#### New Feature - * [KARAF-5873] - Add spring-security 5.0.7.RELEASE feature - -#### Improvement - * [KARAF-6051] - Add operation to get features contained in a feature repository - * [KARAF-6062] - CLASSPATH error when using KARAF with JDK11 on windows - * [KARAF-6090] - kar extract should ignore path containing .. relative path - * [KARAF-6108] - Service wrapper should add selected JAVA_HOME also to the PATH variable. - * [KARAF-6109] - Enhance bundle report to reflect effective installed features for custom distributions - -#### Test - * [KARAF-6139] - JmsTest is failing - -#### Wish - * [KARAF-6060] - shell:wc -l should only print line count, without leading spaces - -#### Task - * [KARAF-5901] - Create Aries JAXRS whiteboard example - * [KARAF-6100] - Align narayana version with pax-* projects - -#### Dependency upgrade - * [KARAF-6071] - Upgrade to pax-transx 0.4.1 - * [KARAF-6079] - Upgrade to pax-url 2.6.1 - * [KARAF-6087] - Upgrade to Aries Proxy Impl 1.1.4 - * [KARAF-6088] - Upgrade to pax-web 7.2.7 - * [KARAF-6091] - upgrade jaxb 2.3.2 - * [KARAF-6094] - Upgrade to itstack-commons-runtime 3.0.8 - * [KARAF-6095] - Upgrade to Aries JPA 2.7.1 - * [KARAF-6096] - Upgrade to Felix Gogo 1.1.4 - * [KARAF-6097] - Upgrade to Maven Wagon 3.3.1 - * [KARAF-6098] - Upgrade to awaitility 3.1.5 - * [KARAF-6099] - Upgrade to Narayana 5.9.2.Final - * [KARAF-6101] - Release train: pax-cdi 1.1.0, pax-jms 1.0.3, pax-jdbc 1.3.2, pax-transx 0.4.2, pax-web 7.2.7 - * [KARAF-6102] - Align some minor dependencies with pax-* projects - * [KARAF-6105] - Upgrade to Hibernate 5.2.17.Final - * [KARAF-6127] - Upgrade to Felix Framework 5.6.12 - * [KARAF-6128] - Upgrade to javax.annotation 1.3 - * [KARAF-6129] - Upgrade to Pax JDBC 1.3.3 - * [KARAF-6131] - Upgrade to Pax JDBC 1.3.4 - * [KARAF-6132] - Upgrade to Pax CDI 1.1.1 - * [KARAF-6133] - Upgrade to Pax Web 7.2.8 - * [KARAF-6134] - Upgrade to Spring 5.1.4.RELEASE - * [KARAF-6135] - Upgrade to Spring 5.0.12.RELEASE - * [KARAF-6137] - Upgrade to eclipselink 2.7.4 - * [KARAF-6138] - Upgrade to hibernate-validator 6.0.14.Final - -## Apache Karaf 4.2.2 - -Apache Karaf 4.2.2 is a major update on the 4.2.x series. It brings lot of fixes, updates and improvements -especially about Java 11 support and much more. - -### ChangeLog - -#### Bug - * [KARAF-4819] - System Property karaf.clean.all Doesn't Work - * [KARAF-5469] - Installation of a non blueprint feature triggers the installation of the blueprint compatibility bundle - * [KARAF-5509] - http-whiteboard resources are not published properly - * [KARAF-5567] - Trying to access ServerInfo service results in bundle wiring issue - * [KARAF-5703] - pax jdbc config 1.2.0 fails to register XA Datasource - * [KARAF-5886] - Improve LD_LIBRARY_PATH loading - * [KARAF-5887] - NPE when starting karaf using bin/shell - * [KARAF-5897] - ensure javax.xml.stream api works for both JDK8 and 11 - * [KARAF-5902] - Fix example itests - * [KARAF-5908] - Service Wrapper fails to start on Windows when JAVA_HOME contains whitespace - * [KARAF-5909] - Starting Karaf 4.2.1 won't start as Windows service - * [KARAF-5911] - Restrict XML entity on provided XMLFactoryInput - * [KARAF-5912] - Don't need to use jaxb jars for JDK8 - * [KARAF-5916] - ssh terminal rendering is not correct using ssh client - * [KARAF-5917] - EventLoggerTest is broken for some timezones. - * [KARAF-5931] - More than one Datrasource Configuration does not work - * [KARAF-5932] - karaf-maven-plugin doesn't use user-supplied settings.xml - * [KARAF-5939] - karaf-assembly packaging fails with m-i-p 3.0.0-M1 - * [KARAF-5962] - Regression when installing some features containing fragments 4.2.0 -> 4.2.1 - * [KARAF-5980] - SSH output broken - * [KARAF-5983] - Default ssh port (in the activator) should be 8101 - * [KARAF-5989] - Error while sending email because of javax.activation - * [KARAF-5990] - Blacklisted dependent features should be skipped during assembly generation - * [KARAF-5997] - Build fails with Java11 because exam 4.13-SNAPSHOT unavailable - * [KARAF-6003] - IllegalStateException: Need active coordination - cannot use JPA and Jasypt - * [KARAF-6004] - karaf-maven-plugin:assembly results in ArrayIndexOutOfBoundsException - * [KARAF-6020] - Command feature:info fails showing conditional dependencies - * [KARAF-6021] - Running karaf-maven-plugin in java 11 fails - * [KARAF-6024] - Blacklisted dependent repositories should be skipped during assembly generation - * [KARAF-6027] - `log:get` does not report the right log level for loggers that contain numbers - * [KARAF-6033] - Command "shell wrapper:install" fails - * [KARAF-6039] - maven-resources-plugin in same pom twice - * [KARAF-6041] - Upgrade to Aries Proxy Impl 1.1.3 - * [KARAF-6042] - WebSocketExampleTest is flaky - * [KARAF-6044] - KARAF_LOG env variable generates stack trace in test cases - * [KARAF-6048] - Camel Test case prone to endless loop - -#### New Feature - * [KARAF-5789] - Add Felix HTTP feature - * [KARAF-6001] - Upgrade to Pax Web 7.2.4 / Jetty 9.4.12.v20180830 - * [KARAF-6036] - Add Spring 5.1.3.RELEASE support - -#### Improvement - * [KARAF-4095] - Introduce KARAF_LOG env variable - * [KARAF-4336] - Add support for ordering of CLI scripts and commands in karaf-maven-plugin - * [KARAF-5232] - Give meaningful names to threads - * [KARAF-5263] - org.apache.karaf.shell.cfg et al still reference obsolete 'karaf.admin.role' - * [KARAF-5906] - Update to Apache Felix Webconsole 4.3.8 and latest jQuery UI 1.12.1 - * [KARAF-5919] - Be able to store Http Proxy list in order to keep configuration after restart - * [KARAF-5937] - karaf-maven-plugin verify doesn't explain why verification failed - * [KARAF-5940] - Assembly and feature archetype itest is failing - * [KARAF-5979] - SSH role types should be configurable - * [KARAF-5981] - Docker build.sh should support exploded distribution - * [KARAF-5982] - Add additional running mode in the docker-entrypoint.sh - * [KARAF-5988] - add javax.annotation api when using JDK11 - * [KARAF-5991] - add jaxb api into Karaf specs - * [KARAF-5995] - ensure there is a way to quit bin/client "cmd" - * [KARAF-6014] - Improve jdbc:* commands - * [KARAF-6022] - Add times support in Karaf scheduler - -#### Test - * [KARAF-5845] - JMXSecurityTest.testJMXSecurityAs[Admin|Manager] is flaky - * [KARAF-5929] - fix several itests failed with JDK11 - * [KARAF-5933] - use JAXB2.3 with JDK 9/10/11 - -#### Task - * [KARAF-5882] - ensure karaf-soap-example can build and run with JDK11 - * [KARAF-5893] - Add Camel examples - * [KARAF-5913] - Add config management exemple - * [KARAF-5985] - ensure we can see up-to-the-minute log when using bin/client "log:tail" - * [KARAF-5987] - don't use java.security.acl classes since they will be removed from java12 - * [KARAF-6011] - Add websocket example - * [KARAF-6018] - use org.glassfish.jaxb instead of com.sun.xml.bind - * [KARAF-6023] - upgrade to pax-exam 4.13.0 - -#### Dependency upgrade - * [KARAF-5806] - Upgrade to easymock 4.0.1 - * [KARAF-5927] - Upgrade to XBean 4.12 - * [KARAF-5934] - Upgrade to maven-bundle-plugin 4.1.0 - * [KARAF-5935] - Upgrade to maven-invoker-plugin 3.1.0 and maven-plugin-plugin 3.5.2 - * [KARAF-5936] - Upgrade to maven-scm-publish-plugin 3.0.0 and asciidoctor-maven-plugin 1.5.6 - * [KARAF-5941] - Upgrade to JNA 4.5.2 - * [KARAF-5942] - Upgrade to Aries Blueprint Core 1.10.1 - * [KARAF-5943] - Upgrade to Aries Blueprint CM 1.3.1 - * [KARAF-5945] - Upgrade to commons-compress 1.18 - * [KARAF-5946] - Upgrade to commons-lang3 3.8.1 - * [KARAF-5947] - Upgrade to Felix ConfigAdmin 1.9.6 - * [KARAF-5948] - Upgrade to Felix Framework Security 2.6.1 - * [KARAF-5950] - Upgrade to Felix Metatype 1.2.2 - * [KARAF-5952] - Upgrade to Felix SCR 2.1.8 - * [KARAF-5953] - Upgrade to Felix WebConsole Plugin DS 2.1.0 - * [KARAF-5954] - Upgrade to geronimo-atinject_1.0_spec 1.1 - * [KARAF-5955] - Upgrade to maven-dependency-tree 3.0.1 - * [KARAF-5956] - Upgrade to Maven Wagon 3.2.0 - * [KARAF-5958] - Upgrade to hibernate-validator 6.0.13.Final - * [KARAF-5959] - Upgrade to Ant ServiceMix bundle 1.10.3_1 - * [KARAF-5960] - Upgrade to Apache POM 21 - * [KARAF-5961] - Upgrade to ASM 7.0 - * [KARAF-6015] - Upgrade to Aries SpiFly 1.2 - * [KARAF-6028] - Upgrade to Felix ConfigAdmin 1.9.10 - * [KARAF-6029] - Upgrade to Felix SCR 2.1.14 - * [KARAF-6030] - Upgrade to awaitility 3.1.3 - * [KARAF-6031] - Upgrade to easymock 4.0.2 - * [KARAF-6032] - Upgrade to pax-jms 1.0.2 - * [KARAF-6034] - Upgrade to Spring 4.3.21.RELEASE - * [KARAF-6035] - Upgrade to Spring 5.0.10.RELEASE - * [KARAF-6043] - Upgrade to Pax Exam 4.13.1 - * [KARAF-6045] - Upgrade to Pax Web 7.2.5 - * [KARAF-6046] - Upgrade to Felix Utils 1.11.2 - -#### Documentation - * [KARAF-5900] - Use the asciidoctor-maven-plugin and custom ASF theme for the manual generation - -## Apache Karaf 4.2.1 - -Apache Karaf 4.2.1 is a major update on the 4.2.x series. It brings bunch of fixes, dependencies updates -and new features, especially: - -* new assembly tooling to create Karaf Docker images -* new Docker feature allowing you to manipulate Docker directly from a Karaf instance -* Better Java 9/10/11 support -* new examples directly as part of the Karaf distribution -* improved KarafTestSupport allowing you to easily implement your itests - -### ChangeLog - -#### Bug - * [KARAF-4996] - Missing packages in created instances - * [KARAF-5422] - Feature Repository with Spaces in Path - * [KARAF-5683] - Completion is "weird" on Windows 8 - * [KARAF-5689] - Console is broken after Ctrl+C - * [KARAF-5690] - Add missing jaxb endorsed / osgi classes - * [KARAF-5692] - Alias not honoured in config:edit --factory --alias - * [KARAF-5694] - strip url to ensure it's a valid one which could download - * [KARAF-5695] - Starting Karaf Container 4.2.0 in Ubuntu 17.10 with OpenJDK 9 fails - * [KARAF-5696] - Java detection is broken on windows - * [KARAF-5697] - feature:start and feature:stop should be able to select multiple features - * [KARAF-5699] - Upgrade to jolokia 1.5.0 - * [KARAF-5701] - feature installation: Crash and ResolutionException - * [KARAF-5705] - Java 10 issues with jetty - * [KARAF-5729] - Karaf won't start on Solaris 11 and AIX 7.2 - * [KARAF-5748] - Command results are not printed anymore unless they are strings - * [KARAF-5749] - Possible shell crash when executing malformed script - * [KARAF-5750] - Karaf console not calling Converter for custom gogo commands - * [KARAF-5753] - Karaf won't start correctly on HP-UX - * [KARAF-5760] - VerifyMojo should allow blacklisting feature repositories - * [KARAF-5765] - karaf-service script not working on HP-UX - * [KARAF-5768] - karaf-service script not working on AIX platforms - * [KARAF-5781] - Properties edit doesn't conserve the existing ones - * [KARAF-5791] - need to check the blacklist when we add feature repo through JMX - * [KARAF-5798] - Karaf slave instance does not write pid or port file until it becomes master - * [KARAF-5809] - 'simple' host.key files no longer work - * [KARAF-5840] - Karaf specs activator is missing when used with wrapper - * [KARAF-5842] - Console unusable in docker - * [KARAF-5850] - JPA features should provide the engine capability - * [KARAF-5851] - Remove heading spaces in the cfg files - * [KARAF-5862] - org.apache.karaf.specs.java.xml doesn't work with IBM JDK - -#### New Feature - * [KARAF-5761] - Print better usage of commands in karaf shell - * [KARAF-5867] - Provide openjpa 3.0.0 support - * [KARAF-5870] - Upgrade to Hibernate Validator 6.0.12.Final - * [KARAF-5871] - Upgrade to ASM 6.2.1 - * [KARAF-5872] - Upgrade to Spring 5.0.8.RELEASE - -#### Improvement - * [KARAF-3235] - Provide karaf itest common bundle - * [KARAF-5363] - Add --no-start option to kar:install, kar cfg and kar MBean - * [KARAF-5644] - Add docker feature - * [KARAF-5685] - Add ProfileMBean - * [KARAF-5700] - handle \* scope specifically for ACL match - * [KARAF-5706] - Upgrade to Felix Utils 1.11.0 - * [KARAF-5742] - Possibility to configure colors for karaf shell - * [KARAF-5752] - Add bundle ID in bundle:classes output - * [KARAF-5759] - Add an option to config:list to list only the PIDs - * [KARAF-5778] - NPE in the ssh client if TERM is null - * [KARAF-5787] - Improve scheduler whiteboard to avoid ClassCastException - * [KARAF-5796] - Heap dump needs to end in .hprof w/ newer JDK - * [KARAF-5804] - FastDateFormatTest fails on EDT (jdk 1.8.0_151) - * [KARAF-5805] - Add feature required item field to JmxFeature CompositeData - * [KARAF-5839] - Add assertServiceAvailable() in KarafTestSupport - * [KARAF-5847] - org.apache.felix.coordinator could be installed with configadmin, to prevent its refreshes - * [KARAF-5868] - be able to remove properties during distribution assembly - -#### Test - * [KARAF-5845] - JMXSecurityTest.testJMXSecurityAsManager is flaky - * [KARAF-5846] - ConfigManagedServiceFactoryTest.updateProperties is flacky - -#### Task - * [KARAF-2511] - Review and update documentation - * [KARAF-5764] - ensure we can build and run Karaf master with JDK11 - -#### Dependency upgrade - * [KARAF-5698] - Upgrade to Felix Gogo Runtime / JLine 1.0.12 - * [KARAF-5710] - Upgrade to Felix Resolver 1.16.0 - * [KARAF-5713] - Upgrade to Maven API 3.5.3 - * [KARAF-5714] - Upgrade to ServiceMix Spec Locator 2.10 - * [KARAF-5715] - Upgrade to XBean 4.8 - * [KARAF-5716] - Upgrade to awaitability 3.1.0 - * [KARAF-5717] - Upgrade to easymock 3.6 - * [KARAF-5718] - Upgrade to Equinox 3.12.100 - * [KARAF-5719] - Upgrade to Jansi 1.17.1 - * [KARAF-5720] - Upgrade to JLine 3.7.1 - * [KARAF-5721] - Upgrade to Pax JMS 1.0.1 - * [KARAF-5722] - Upgrade to ASM 6.2 & Aries Proxy Impl 1.1.2 - * [KARAF-5723] - Upgrade to Pax JDBC 1.3.0 - * [KARAF-5726] - Upgrade to Aries Proxy version Java 10 compliant - * [KARAF-5728] - Upgrade to Pax Web 7.1.1 & Jetty 9.4.10.v20180503 - * [KARAF-5732] - Upgrade to Felix ConfigAdmin 1.9.0 - * [KARAF-5733] - Upgrade to Felix EventAdmin 1.5.0 - * [KARAF-5734] - Upgrade to Felix Metatype 1.2.0 - * [KARAF-5735] - Upgrade to Felix SCR 2.1.0 - * [KARAF-5736] - Upgrade to Narayana 5.8.1.Final - * [KARAF-5737] - Upgrade to Aries JPA 2.7.0 - * [KARAF-5738] - Upgrade to maven-resources-plugin 3.1.0 - * [KARAF-5745] - Upgrade to Spring 5.0.5.RELEASE - * [KARAF-5758] - Update to Hibernate Validator 6.0.10.Final - * [KARAF-5766] - Upgrade to Felix Connect 0.2.0 - * [KARAF-5771] - Upgrade to Pax Transx 0.3.0 - * [KARAF-5779] - Upgrade to Spring 4.3.17.RELEASE and 5.0.6.RELEASE - * [KARAF-5800] - Upgrade to Felix Gogo 1.1.0 - * [KARAF-5807] - Upgrade to Pax Exam 4.12.0 - * [KARAF-5812] - Upgrade to Spring 4.3.18.RELEASE - * [KARAF-5813] - Upgrade to Spring 5.0.7.RELEASE - * [KARAF-5815] - Upgrade to commons-compress 1.17 - * [KARAF-5816] - Upgrade to Aries Transaction Blueprint 2.2.0 - * [KARAF-5817] - Upgrade to maven-bundle-plugin 3.5.1 - * [KARAF-5818] - Upgrade to Felix ConfigAdmin 1.9.2 - * [KARAF-5821] - Upgrade to Maven API 3.5.4 - * [KARAF-5822] - Upgrade to Maven Wagon 3.1.0 - * [KARAF-5824] - Upgrade to awaitility 3.1.1 - * [KARAF-5826] - Upgrade to narayana 5.9.0.Final - * [KARAF-5827] - Upgrade to jline 3.9.0 - * [KARAF-5829] - Upgrade to Xerces 2.12.0 - * [KARAF-5830] - Upgrade to tagsoup 1.2.1 - * [KARAF-5831] - Upgrade to maven-enforcer-plugin 3.0.0-M2 - * [KARAF-5832] - Upgrade to maven-jar-plugin 3.1.0 - * [KARAF-5833] - Upgrade to maven-project-info-reports-plugin 3.0.0 - * [KARAF-5834] - Upgrade to maven-site-plugin 3.7.1 - * [KARAF-5835] - Upgrade to maven-surefire-plugin 2.22.0 - * [KARAF-5836] - Upgrade to maven-war-plugin 3.2.2 - * [KARAF-5837] - Upgrade to maven-jacoco-plugin 0.8.1 - * [KARAF-5838] - Upgrade to eclipselink 2.7.2 - * [KARAF-5841] - Upgrade to Pax Web 7.2.1 - * [KARAF-5849] - Upgrade to Pax Transx 0.4.0 - * [KARAF-5856] - Upgrade to Pax Web 7.2.2 - * [KARAF-5857] - Upgrade to maven-compiler-plugin 3.8.0 - * [KARAF-5858] - Upgrade to Felix ConfigAdmin 1.9.4 - * [KARAF-5859] - Upgrade to Hibernate Validator 6.0.11.Final - * [KARAF-5861] - Upgrade to Pax Web 7.2.3 / Jetty 9.4.11.v20180605 - * [KARAF-5865] - Upgrade to eclipselink 2.7.3 - * [KARAF-5866] - Upgrade to Felix SCR 2.1.2 - * [KARAF-5869] - Upgrade to awaitility 3.1.2 - -## Apache Karaf 4.2.0 - -Apache Karaf 4.2.0 is the first GA release on the 4.2.x series. We encourage all users to upgrade to this - new stable series, bringing a lot of fixes, improvements and new features. - -### ChangeLog - -#### Bug - * [KARAF-5342] - No reference to branding-ssh.properties in console branding section - * [KARAF-5384] - Optional dependencies in MINA SSHD Core cause system bundle refreshes - * [KARAF-5473] - Karaf SSH session timing out - * [KARAF-5554] - the karaf.secured.command.compulsory.roles shouldn't apply for alias commands - * [KARAF-5559] - log:tail kills ssh & karaf when root logger is in DEBUG - * [KARAF-5563] - Enf-of-line display problem with the ShellTable on windows - * [KARAF-5566] - Features installed through prerequisites lead to errors when uninstalling features - * [KARAF-5569] - Cannot pass commands to client script when sftpEnabled=false - * [KARAF-5573] - Karaf on Windows does not pass the version check when JAVA_HOME contains whitespace - * [KARAF-5581] - bin/client -u karaf -p karaf can login if we enable jasypt for jaas - * [KARAF-5585] - Verify mojo configure pax-url-mvn with non existent settings.xml - * [KARAF-5591] - Blacklisted features should be considered as dependencies and/or conditionals - * [KARAF-5592] - Karaf shell unexpected exit when Ctrl + C during log:display or select text then press Enter - * [KARAF-5610] - Build problems with JDK9 - * [KARAF-5611] - karaf.bat still uses endorsed dirs with Java 9 install - * [KARAF-5634] - karaf/karaf.bat scripts do not handle lib.next->lib update correctly - * [KARAF-5639] - NPE during instance:start - * [KARAF-5641] - Karaf boot scripts need to deal with JDK10 version patterns - * [KARAF-5642] - karaf:deploy goal broken - * [KARAF-5645] - Karaf crashes when using the character ']' in the console - * [KARAF-5646] - Support env:XXX subtitution missing for system.properties - * [KARAF-5647] - start, stop, shell, status and client fail on Solaris Sparc 11 - * [KARAF-5657] - client.bat doesn't work on Windows - * [KARAF-5667] - Installing the audit-log feature never ends - * [KARAF-5670] - pax-web throws an exception when running with a security manager - * [KARAF-5671] - Demo profiles still use "old style" pax-logging configuration - * [KARAF-5672] - Servlets urls are displayed without the http context path - * [KARAF-5673] - karaf-maven-plugin can be very long to apply profile - * [KARAF-5678] - Existing configfiles (in kar) may be overwritten when building assembly - * [KARAF-5688] - XML parsing fails when xerces is installed on JDK 8 - -#### New Feature - * [KARAF-1677] - Unpacked KAR deployment - * [KARAF-5614] - Add HttpRedirect/Proxy service with http:redirect/proxy command & MBean - * [KARAF-5629] - Add new karaf commands shell:elif and shell:else - * [KARAF-5635] - Integrate WebConsole Memory Usage plugin - * [KARAF-5665] - Sometimes the command description does not show when listing commands with "TAB" - * [KARAF-5680] - Provide support for xml parsers deployed as bundle on Java 9 - -#### Improvement - * [KARAF-2688] - Karaf info - Add memory details about perm gen pool - * [KARAF-4496] - UserPrincipal lookup in the JAAS' BackingEngine - * [KARAF-5448] - Fix Java 9 warnings - * [KARAF-5558] - Be able to configure the Quartz Scheduler - * [KARAF-5568] - Karaf Commands cannot have return codes - * [KARAF-5578] - Add repo URL for sling - * [KARAF-5588] - Increase max number of threads in the scheduler by default - * [KARAF-5604] - karaf:features-generate-descriptor takes long when faced with complex feature dependencies - * [KARAF-5627] - Upgrade to PAX-JMS 0.3.0 - * [KARAF-5677] - deploy goal throws NPE with artifactLocations is not provided - * [KARAF-5679] - Upgrade to Hibernate Validator 6.0.9.Final - -#### Task - * [KARAF-5586] - Upgrade to Hibernate-validator 5.4.2 - -#### Dependency upgrade - * [KARAF-5574] - Upgrade to Pax Web 7.0.0/Jetty 9.4.6 - * [KARAF-5584] - Upgrade to SSHD 1.7.0 - * [KARAF-5595] - Upgrade toJLine 3.6.0 and Jansi 1.17 - * [KARAF-5596] - Upgrade to Spring 5.0.3.RELEASE - * [KARAF-5597] - Upgrade to Spring 4.3.14.RELEASE - * [KARAF-5599] - Upgrade Narayana to version 5.7.2.Final - * [KARAF-5602] - Upgrade to Spring Security 4.2.4.RELEASE - * [KARAF-5605] - Upgrade to OpenJPA 2.4.2 - * [KARAF-5606] - Upgrade to EclipseLink 2.7.1 - * [KARAF-5607] - Upgrade to Hibernate 5.2.9.Final - * [KARAF-5612] - Upgrade to blueprint-core 1.9.0, blueprint-cm-1.2.0, blueprint-spring-0.6.0 and blueprint-spring-extender-0.4.0 - * [KARAF-5616] - Upgrade to SCR 2.0.14 - * [KARAF-5617] - Upgrade to JNA 4.5.1 - * [KARAF-5618] - Upgrade to Aries JMX Blueprint 1.2.0 - * [KARAF-5619] - Upgrade to Aries JMX Core 1.1.8 & JMX Whiteboard 1.2.0 - * [KARAF-5622] - Upgrade to commons-compress 1.16.1 - * [KARAF-5623] - Upgrade to maven-bundle-plugin 3.5.0 - * [KARAF-5624] - Upgrade to jline 3.6.1 - * [KARAF-5625] - Upgrade to Pax Swissbox 1.8.3 - * [KARAF-5631] - Upgrade to PAX-CDI 1.0.0 - * [KARAF-5658] - Upgrade to Spring 5.0.4.RELEASE - * [KARAF-5668] - Upgrade to JLine 3.6.2 - * [KARAF-5675] - Upgrade to XBean 4.7 - -## Apache Karaf 4.2.0.M2 - - Apache Karaf 4.2.0.M2 is a the second technical preview of the 4.2.x series. It's not yet a GA release. It - brings a lot of improvements and new features, in preparation for the first 4.2.0 GA release. - -### ChangeLog - -#### Bug - * [KARAF-2792] - shared cm-properties empty for second bundle - * [KARAF-3875] - Karaf scheduler should wrap QuartzException in exported SchedulerException - * [KARAF-3976] - Broken compatibility with 3.x jdbc DataSources - * [KARAF-4181] - blacklist.properties and overrides.properties are not properties file - * [KARAF-4662] - Unable to create Karaf Cave 4.0.0 Kar file - * [KARAF-4684] - karaf-maven-plugin assembly goal fails to find nested features with explicit version containing qualifier - * [KARAF-4912] - Cannot register Servlet via http-whiteboard under Java 9 - * [KARAF-5203] - KAR:Create missing bundles that are marked conditional - * [KARAF-5210] - Seemingly random NPEs from Aether resolver - * [KARAF-5372] - startup.properties doesn't respect overrides - * [KARAF-5446] - Fragment bundles are not resolved properly when installing/restarting the container - * [KARAF-5452] - [SCR] Karaf can't activate/deactivate SCR components via JMX - * [KARAF-5455] - remove redundant sshRole comment - * [KARAF-5458] - karaf-maven-plugin fails to assemble artifacts if only available within local reactor - * [KARAF-5461] - incorrect filter in EncryptionSupport of jaas modules - * [KARAF-5464] - karaf.bat file is missing KARAF_SYSTEM_OPTS property - * [KARAF-5466] - Karaf does not start on JDK 9.0.1 - * [KARAF-5467] - Karaf doesn't recognize Java 9 on Ubuntu 16.04 - * [KARAF-5470] - Karaf fails build with Java 9.0.1 - * [KARAF-5472] - Karaf RmiRegistryFactory throws a warning with Java 9 - * [KARAF-5478] - Provide a Version class to check Karaf version used. - * [KARAF-5480] - The webconsole gogo plugin is broken - * [KARAF-5495] - Upgrade SyncopeBackingEngineFactory to support Syncope 2.x - * [KARAF-5496] - NPEs in SyncopeLoginModule if "version" is not specified - * [KARAF-5498] - SyncopeLoginModule parses roles instead of groups for Syncope 2.0.x - * [KARAF-5505] - Jetty version out of date - * [KARAF-5508] - Error using OSGi JAX RS Connector in Java 9 - * [KARAF-5527] - the karaf.secured.command.compulsory.roles should only affect command ACL rules - * [KARAF-5528] - Karaf feature deployer should stop refreshed bundles together with the updated ones - * [KARAF-5533] - KarArtifactInstaller does not properly detect already installed KAR files - * [KARAF-5541] - ensure check the compulsory.roles even there's no ACL for a specific command scope - * [KARAF-5542] - Installing a feature triggers restarting previous ones - * [KARAF-5546] - incorrect acl rules for system:start-level - * [KARAF-5547] - Blueprint namespace handlers cause warning to be printed - -#### Dependency upgrade - * [KARAF-5412] - Upgrade to ASM 6.0 - * [KARAF-5488] - Upgrade to Felix Framework 5.6.10 - * [KARAF-5489] - Upgrade to commons-io 2.6 - * [KARAF-5490] - Upgrade to JNA 4.5.0 - * [KARAF-5491] - Upgrade to commons-compress 1.15 - * [KARAF-5516] - Upgrade to commons-lang3 3.7 - * [KARAF-5517] - Upgrade to Apache Felix Metatype 1.1.6 - * [KARAF-5518] - Upgrade to Apache Felix WebConsole DS plugin 2.0.8 - * [KARAF-5519] - Upgrade to Apache Felix WebConsole EventAdmin plugin 1.1.8 - * [KARAF-5520] - Upgrade to Maven dependencies 3.5.2 - * [KARAF-5521] - Upgrade to Maven Wagon 3.0.0 - * [KARAF-5522] - Upgrade to easymock 3.5.1 - * [KARAF-5523] - Upgrade to Equinox 3.12.50 - * [KARAF-5524] - Upgrade to maven-dependency-tree 3.0.1 - * [KARAF-5525] - Upgrade to PAX tinybundle 3.0.0 - * [KARAF-5531] - Upgrade to maven-compiler-plugin 3.7.0 - * [KARAF-5532] - Upgrade to maven-dependency-plugin 3.0.2 - * [KARAF-5535] - Upgrade to maven-javadoc-plugin 3.0.0 - * [KARAF-5536] - Upgrade to maven-war-plugin 3.2.0 - * [KARAF-5537] - Upgrade to modello-maven-plugin 1.9.1 - * [KARAF-5538] - Upgrade to maven-invoker-plugin 3.0.1 - * [KARAF-5539] - Upgrade to maven-archetype-plugin 3.0.1 - * [KARAF-5549] - Upgrade to JLine 3.5.4 - * [KARAF-5550] - Upgrade to pax-url 2.5.4 - * [KARAF-5551] - Upgrade to Pax Web 6.1.0 - -#### Improvement - * [KARAF-3674] - Document and improve scheduler feature - * [KARAF-4329] - Consider bundles from override.properties while creating the assembly - * [KARAF-5273] - karaf-maven-plugin assembly should take feature wildcards - * [KARAF-5323] - Set multi-location for created configurations - * [KARAF-5339] - Allow to define blacklisted bundles in a profile - * [KARAF-5418] - SSH public key authentication from LDAP - * [KARAF-5448] - Fix Java 9 warnings - * [KARAF-5456] - introduce a property karaf.shell.history.file.maxSize to configure the history file size on disk - * [KARAF-5476] - Reduce number of logins when using the webconsole - * [KARAF-5486] - Add a command to change job scheduling - * [KARAF-5494] - Fix performance issue generating service metadata, change logging - * [KARAF-5506] - ensure we also check the ACL for alias cmds before auto-completer - * [KARAF-5511] - Proper Provide-Capability for org.apache.karaf.jaas.modules.EncryptionService - * [KARAF-5529] - Rewrite SCR management layer to more closely follow the real object model - * [KARAF-5544] - Provide bundle consistency report from custom Karaf distribution - * [KARAF-5548] - Improve the find-class command to support package names - -#### New Feature - * [KARAF-5307] - Add SchedulerMBean to mimic scheduler shell commands - * [KARAF-5447] - Support Spring 5.0.x - * [KARAF-5475] - Provide a security audit log - * [KARAF-5485] - Be able to disable the sftp server - -#### Proposal - * [KARAF-5376] - Processor mechanism for feature definitions (a.k.a. "better overrides") - -#### Task - * [KARAF-5468] - Clean up AssemblyMojo - -## Apache Karaf 4.2.0.M1 - - Apache Karaf 4.2.0.M1 is a technical preview of the 4.2.x series. It's not yet a GA release. It - brings a lot of improvements and new features, including Java 9 support. - -### ChangeLog - -#### Bug - * [KARAF-3347] - 'LATEST' placeholder is not resolved correctly for descriptors and repositories - * [KARAF-3429] - always use proxy server listed in maven settings.xml when installing features - * [KARAF-3531] - SimpleMavenResolver does not handle wrap: prefix in mvn urls - * [KARAF-3875] - Karaf scheduler should wrap QuartzException in exported SchedulerException - * [KARAF-4174] - NullPointerException when running obr:info on a bundle served by cave - * [KARAF-4380] - Remove blueprint feature in standard distribution - * [KARAF-4490] - LDAPLoginModule use authentication to check user password - * [KARAF-4603] - Nashorn support in Karaf - * [KARAF-4655] - karaf-maven-plugin add-features-to-repo goal can't add Camel feature - * [KARAF-4985] - Karaf does not start with JDK 9 in Windows - * [KARAF-4988] - Refreshing a feature repository from webconsole fails - * [KARAF-5031] - Subshell doesn't show in prompt - * [KARAF-5051] - Command "shell wrapper:install" fails - * [KARAF-5073] - OpenSSHGeneratorFileKeyProvider is unable to write SSH keys - * [KARAF-5078] - Shell crash - * [KARAF-5091] - log:get does not show correct level - * [KARAF-5094] - Remove -server option in Karaf scripts - * [KARAF-5096] - Karaf 4.1.1 Console Issues Over SSH (PuTTY) - * [KARAF-5103] - Quick start fails at the step "feature:install camel-spring" - * [KARAF-5105] - Issue with bin/shell command in karaf 4.1.1 - * [KARAF-5106] - karaf-maven-plugin hangs the build (probably when having cyclic deps in the features def) - * [KARAF-5109] - endorsed and ext directories are not set properly when using instance start - * [KARAF-5115] - Error while installing cxf - * [KARAF-5116] - Defining karaf.log.console as a log4j2 log level causes exceptions - * [KARAF-5119] - log:tail on OSX does not display updates without user input and exits shell on ctrl + c - * [KARAF-5120] - etc/org.apache.karaf.shell.cfg is "raw", all comments are lost in the distribution - * [KARAF-5121] - blueprint created by jms:create is not correct - * [KARAF-5123] - Executing feature:repo-remove can leave karaf in an invalid state - * [KARAF-5124] - NPE when location information is included in console logging pattern - * [KARAF-5128] - Upgrade to aries.proxy 1.1.1 - * [KARAF-5134] - Instance org.apache.karaf.features.cfg refers to 4.1.1-SNAPSHOT - * [KARAF-5138] - CTRL-D on a connected instance exits from the root one - * [KARAF-5143] - Command cannot be executed via SSH when property "karaf.shell.init.script" (etc/system.properties) has its default value - * [KARAF-5144] - java.lang.RuntimeException: Command name evaluates to null: $.jline.terminal - * [KARAF-5147] - Upgrade to pax-web-6.0.4 - * [KARAF-5164] - karaf-maven-plugin fails to verify artifacts if only available within local reactor - * [KARAF-5165] - Custom Distributions: Pax-Web gets installed twice - * [KARAF-5167] - Instance etc folder is not sync automatically - * [KARAF-5171] - Upgrade to ServiceMix Specs 2.9.0 - * [KARAF-5174] - Uninstalling feature using liquibase-slf4j crashes karaf - * [KARAF-5176] - Fix support for characters entered while executing a command - * [KARAF-5179] - Setting the karaf.restart.jvm property to true causes system halt commands to behave as reboots - * [KARAF-5180] - The framework is restarted and sometimes spits an exception when refreshing a fragment - * [KARAF-5181] - NPE while running "threads --tree" command from console - * [KARAF-5182] - Console command log:list returns "null" - * [KARAF-5184] - ClassLoader leak when org.apache.karaf.shell.core bundle is refreshed - * [KARAF-5196] - Strongly consider removing -XX:+UnsyncloadClass from start scripts - * [KARAF-5197] - Features deployed from a KAR file do not respect the feature's install setting - * [KARAF-5199] - Karaf installs both version of the feature (old and new) in case if referencing feature contains wrapped bundle with package import - * [KARAF-5206] - Karaf doesn't start after not clean reboot, because stored PID corresponds to running process - * [KARAF-5207] - Features 1.4 namespace not supported by the features deployer - * [KARAF-5211] - NPE in StoredWiringResolver if BundleEvent.UNRESOLVED handled before BundleEvent.RESOLVED event - * [KARAF-5216] - Exiting karaf shell, mess the bash shell - * [KARAF-5218] - bin/client exists when typing CTRL-C - * [KARAF-5221] - karaf-maven-plugin's pidsToExtract handled incorrectly - * [KARAF-5223] - "Error in initialization script" messages printed to the main console when clients connect through ssh - * [KARAF-5229] - The download manager may generate wrong jar with custom urls - * [KARAF-5234] - Update BUILDING file to reference Java 8 - * [KARAF-5245] - Running karaf.bat inside a "Program Files (x86)" directory - * [KARAF-5247] - java.lang.InterruptedException after logout command in shell - * [KARAF-5250] - SNAPSHOT metadata doesn't match SNAPSHOT artifacts after mvn deploy - * [KARAF-5252] - Upgrade Narayana to version 5.6.3.Final - * [KARAF-5255] - Upgrade to pax-web-6.0.6 - * [KARAF-5259] - Duplicate log entries displayed when using log:tail - * [KARAF-5260] - log:tail default should start at the end of the file - * [KARAF-5264] - Clean up maven dependencies - * [KARAF-5267] - Karaf does not work correctly after log:tail - * [KARAF-5271] - Improve JDBC generic lock to better support network glitches - * [KARAF-5276] - Do not use right prompt by default - * [KARAF-5279] - InterruptedException when updating the shell.core bundle - * [KARAF-5283] - Karaf in offline (no internet) environment - NamespaceHandler bugs - * [KARAF-5298] - config:update doesn't create the cfg file in the etc folder - * [KARAF-5304] - checkRootInstance function in karaf script fails under AIX - * [KARAF-5305] - FeatureConfigInstaller writes incorrect config if append=true and file already exists - * [KARAF-5311] - NPE in karaf-maven-plugin when specifying descriptor by file url - * [KARAF-5312] - bin/stop script output some unwanted message on mac - * [KARAF-5313] - Exception when deleting a .cfg file from hot deploy directory - * [KARAF-5314] - The performance of profile builder used by karaf maven plugin has reduced significantly in 4.1 compared to 4.0 - * [KARAF-5315] - Race condition during shutdown using SIGTERM - * [KARAF-5317] - "Exception in thread "SIGWINCH handler" java.lang.UnsupportedOperationException" occurs when resizing the console while `log:tail` is run - * [KARAF-5320] - Karaf Command Arguments escapes backslash characters - * [KARAF-5326] - variables in cfg files are expanded - * [KARAF-5327] - Threads not stopped on karaf.restart + bundle(0).stop() - * [KARAF-5328] - NPE is thrown when execute source command from client/ssh - * [KARAF-5330] - Require a specific role to access the SSH console - * [KARAF-5331] - Use shell command access control lists during command completion - * [KARAF-5332] - bin/stop script fails when KARAF_DEBUG is set - * [KARAF-5333] - UnsupportedCharsetException: cp65001 and unprintable characters from karaf 4.1.2 console - * [KARAF-5334] - Fix broken shell.support.table.ShellTableTest on Windows - * [KARAF-5337] - karaf-maven-plugin generates an "override.properties" instead of "overrides.properties" - * [KARAF-5338] - Unable to access the local JMX server on OSX - * [KARAF-5340] - A "Set" cannot contain a "Artifact" in Dependency31Helper - * [KARAF-5343] - Upgrade to pax-web-6.0.7 - * [KARAF-5344] - Remote shell *really* doesn't like you resizing the console window - * [KARAF-5352] - KARAF_ETC envvar ignored - * [KARAF-5355] - The scripts triggered with {{scheduler::schedule}} command fail to execute - * [KARAF-5361] - shell:watch is broken - * [KARAF-5371] - Race condition between FeatureService and Fileinstall - * [KARAF-5373] - Karaf-maven-plugin fails to create feature file - * [KARAF-5374] - karaf-maven-plugin can't configure the start-level for the startupBundles - * [KARAF-5375] - feature:stop command does not stop the bundles - * [KARAF-5377] - Speed up repository loading - * [KARAF-5382] - Karaf shell session.readLine consumes backslashes - * [KARAF-5385] - shutdown -f command can't exit the karaf - * [KARAF-5387] - Build fail on JLineTerminal - * [KARAF-5388] - create dump doesn't include log file anymore - * [KARAF-5390] - tar.gz archives contains invalid data in demos\web\src\main\webapp\WEB-INF\karaf\system\org\apache\felix - * [KARAF-5394] - maven-metadata-local.xml in KARs cause SAXParseException - * [KARAF-5395] - Improve memory consumption during resolution - * [KARAF-5398] - The "cd" command should not attempt to complete multiple directories - * [KARAF-5404] - CLI autocompletion issue - * [KARAF-5406] - CLI error on window resize on Linux(Wayland) - * [KARAF-5411] - Client doesn't prompt for user if no user.properties file - * [KARAF-5413] - Missing explicit version in features - * [KARAF-5414] - Features mentioned in feature.xml stubs aren't taken into account in dependency calculations - * [KARAF-5420] - Bad console behavior when dealing with the input stream with the exec command - * [KARAF-5423] - Karaf is flagged as vulnerable to CVE-2015-5262 - * [KARAF-5425] - ArrayIndexOutOfBoundsException running history | grep - * [KARAF-5435] - BundleException when installing a bundle by API when the FeatureService install a feature - * [KARAF-5436] - Factory configurations file in etc/ are not deleted when the configuration is deleted - * [KARAF-5440] - No override facility for properties in system.properties - -#### Dependency - * [KARAF-5345] - Upgrade to pax-jms-0.1.0 and ActiveMQ 5.15.0 - -#### Dependency upgrade - * [KARAF-4921] - Upgrade to pax-logging 1.10.0 - * [KARAF-4991] - Upgrade to Narayana 5.5.2.Final - * [KARAF-5085] - Upgrade to Aries JPA 2.6.1 - * [KARAF-5087] - Upgrade to Spring 4.3.7.RELEASE - * [KARAF-5090] - Update equinox to 3.11.3 - * [KARAF-5112] - Upgrade to jansi 1.16 - * [KARAF-5113] - Upgrade to jline 3.3.0 - * [KARAF-5114] - Upgrade to gogo 1.0.6 - * [KARAF-5132] - Cellar: Upgrade Hazelcast to 3.8.2 - * [KARAF-5146] - Upgrade to Narayana 5.6.0.Final - * [KARAF-5149] - Upgrade to JNA 4.4.0 - * [KARAF-5150] - Upgrade to Aries Blueprint Core 1.8.1 - * [KARAF-5151] - Upgrade to Aries Transaction Manager 1.3.3 - * [KARAF-5152] - Upgrade to commons-compress 1.14 - * [KARAF-5153] - Upgrade to Felix BundleRepository 2.0.10 - * [KARAF-5154] - Upgrade to Felix Framework 5.6.4 - * [KARAF-5155] - Upgrade to Felix HttpLite 0.1.6 - * [KARAF-5157] - Upgrade to Felix Resolver 1.14.0 - * [KARAF-5158] - Upgrade to Felix SCR 2.0.10 - * [KARAF-5159] - Upgrade to Felix WebConsole 4.3.4 - * [KARAF-5160] - Upgrade to Equinox Region 1.2.101.v20150831-1342 - * [KARAF-5214] - Upgrade to Pax Logging 1.10.1 - * [KARAF-5219] - Upgrade Narayana to version 5.6.2.Final - * [KARAF-5220] - Cellar-Kubernetes: Bump to Kubernetes-client 2.4.1 - * [KARAF-5231] - Upgrade to jline 3.3.1 - * [KARAF-5248] - Upgrade to blueprint-core 1.8.2 - * [KARAF-5249] - Upgrade to blueprint spring 0.4.0 - * [KARAF-5253] - Update pax-jdbc to 1.1.0 - * [KARAF-5256] - Upgrade to Felix SCR 2.0.12 - * [KARAF-5257] - Upgrade to sshd 1.6.0 - * [KARAF-5258] - Upgrade to Pax Exam 4.11.0 - * [KARAF-5268] - Upgrade to commons-logging 1.2 - * [KARAF-5269] - Upgrade to commons-lang3 3.6 - * [KARAF-5278] - Update to felix framework 5.6.6 - * [KARAF-5281] - Upgrade to Spring 4.3.10.RELEASE - * [KARAF-5288] - Cellar: Bump to Kubernetes-client 2.5.9 - * [KARAF-5289] - Upgrade to jline 3.4.0 - * [KARAF-5291] - Upgrade Narayana to version 5.6.4.Final - * [KARAF-5293] - Upgrade to Apache POM 18 - * [KARAF-5309] - Upgrade to directory server 2.0.0-M24 - * [KARAF-5310] - Upgrade to maven surefire plugin 2.20 to get colored output - * [KARAF-5349] - Upgrade to pax-jdbc-1.2.0 - * [KARAF-5359] - Upgrade to JLine 3.5.0 - * [KARAF-5360] - Upgrade to Felix Gogo Runtime / JLine 1.0.8 - * [KARAF-5365] - Upgrade to Aries Subsystem 2.0.10 - * [KARAF-5366] - Upgrade to Felix ConfigAdmin 1.8.16 - * [KARAF-5367] - Upgrade to Felix EventAdmin 1.4.10 - * [KARAF-5368] - Upgrade to Felix Framework & Main 5.6.8 - * [KARAF-5369] - Upgrade to Felix Metatype 1.1.4 - * [KARAF-5370] - Upgrade to Felix Resolver 1.14.0 - * [KARAF-5401] - Upgrade to Aries Blueprint Spring 0.5.0 - * [KARAF-5419] - Upgrade to Aries Blueprint Core 1.8.3 - * [KARAF-5429] - Upgrade Narayana to version 5.7.0.Final - * [KARAF-5430] - Upgrade to Spring 4.0.9.RELEASE & 4.3.12.RELEASE - * [KARAF-5431] - Upgrade to Felix Gogo Runtime / JLine 1.0.10 - * [KARAF-5432] - Upgrade to Felix Utils 1.10.4 and FileInstall 3.6.4 - * [KARAF-5439] - Upgrade Narayana to version 5.7.1.Final - -#### Documentation - * [KARAF-5357] - Help string for feature:stop is incorrect - -#### Improvement - * [KARAF-3825] - Add ability to shutdown Karaf with a disabled shutdown port - * [KARAF-4417] - Display a summary for the verify goal - * [KARAF-4418] - Ability to exclude a set of features from the verify goal - * [KARAF-4748] - Make Felix Resolver Threads configurable - * [KARAF-4785] - Use the scr gogo commands and provide completion - * [KARAF-4803] - Allow to turn off Karaf configuration persistence manager - * [KARAF-4932] - Remove blueprint compat and blueprint annotations bundles - * [KARAF-4973] - Refactoring of features extension - * [KARAF-5004] - Discover the artifact type instead of relying on the artifact type/classifier string (kar / features / bundle) - * [KARAF-5023] - Improve config commands to better support substituted and typed properties - * [KARAF-5072] - Add setting to ssh server for forcing a provided key - * [KARAF-5080] - Use the full ttop command from gogo-jline - * [KARAF-5102] - org.ops4j.pax.logging.cfg contains non-ASCII character - * [KARAF-5104] - karaf:run should support a features set - * [KARAF-5118] - Make SSHD server threads configurable - * [KARAF-5126] - Use awaitility and matchers in JmsTest - * [KARAF-5131] - XA + JMS support - * [KARAF-5162] - Code can be simplified using new Map methods - * [KARAF-5168] - Replace old-style loops with foreach loops or streams - * [KARAF-5169] - Remove redundant type information - * [KARAF-5170] - Use try-with-resources - * [KARAF-5173] - Some tests could benefit from a common CallbackHandler - * [KARAF-5178] - Code can be simplified using lambdas - * [KARAF-5185] - Karaf enterprise feature shall omit the jpa feature in favor of the aries jpa feature - * [KARAF-5205] - Add -r/--refresh option to bundle:update command - * [KARAF-5208] - Improve feature:install error message - * [KARAF-5222] - Make possible to force the start of a karaf instance even if another one has been detected as running. - * [KARAF-5230] - Support version range when installing features - * [KARAF-5235] - Remove null values from AssemblyMojo configuration - * [KARAF-5241] - Improve RBAC logging for JMX - * [KARAF-5243] - add -p option for bin/client - * [KARAF-5266] - log commands should limit number of lines printed instead of number of log entries - * [KARAF-5272] - Enhance the features deployer so that it performs a real upgrade - * [KARAF-5280] - Shell should not display the welcome message again when it is restarted - * [KARAF-5282] - SyncopeLoginModule should support Syncope 2.x response format - * [KARAF-5286] - Separate server key generation from key reading - * [KARAF-5287] - Provide a way to hide passwords in shell - * [KARAF-5292] - uneeded dependency to dbcp in eclipselink feature - * [KARAF-5294] - Cleanup Maven repository - * [KARAF-5308] - Remove RepositoryImpl lazy loading as we always load it upfront anyway - * [KARAF-5316] - Jaas Encryption should be easier to use - * [KARAF-5319] - the jetty feature in karaf shouldn't depend on pax-jetty feature - * [KARAF-5363] - Add --no-start option to kar:install, kar cfg and kar MBean - * [KARAF-5380] - Fix typo in JDBC lock implementation - * [KARAF-5400] - Remove usage of felix scr compatibility bundle - * [KARAF-5407] - Allow feature:info to print the xml for a given feature - * [KARAF-5426] - Print type of wiring resource - * [KARAF-5427] - Add RBAC support for reflection invocation and redirections in the console - * [KARAF-5437] - Use named thread pools to help identifying threads - * [KARAF-5443] - Add a completer for bundle symbolic names - * [KARAF-5445] - Completers should be followed by a space when complete - -#### New Feature - * [KARAF-2401] - Improve log coloring - * [KARAF-3270] - Add command/MBean operation to give current user and his roles - * [KARAF-4188] - Add support for Systemd's watchdog - * [KARAF-5008] - Provide Maven diagnostic commands - * [KARAF-5074] - Support for typed config files (as in Felix ConfigAdmin config files) in features - * [KARAF-5082] - Allow the use of external data for features configuration - * [KARAF-5107] - Allow hooking into the feature installation process - * [KARAF-5129] - JMS Pooling and better Artemis support - * [KARAF-5172] - Add simple LDAPBackingEngine - * [KARAF-5175] - Provide a debugs option for the karaf script to make it easier to debug karaf startup sequence - * [KARAF-5306] - Add scheduler:trigger command - * [KARAF-5354] - The log:get and log:set commands should support etc/log4j2.xml configuration - * [KARAF-5416] - Remove support for ext and endorsed libraries for Java 9 compatibility - -#### Task - * [KARAF-5125] - Upgrade to Narayana 5.5.6.Final - * [KARAF-5148] - Replace use of org.json - * [KARAF-5225] - Add Narayana dependencies to DependencyManagement - * [KARAF-5226] - Add Hibernate-validator dependency to DependencyManagement - * [KARAF-5227] - Use an explicit Awaitility version property - * [KARAF-5396] - Ensure Karaf can build with JDK9 GA(build 9+181) - * [KARAF-5417] - Trim down distributions - -#### Test - * [KARAF-4936] - FeatureTest#repoRefreshCommand failure diff --git a/archetypes/assembly/pom.xml b/archetypes/assembly/pom.xml index a451a8839c1..9a53b39cbe6 100644 --- a/archetypes/assembly/pom.xml +++ b/archetypes/assembly/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf archetypes - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT org.apache.karaf.archetypes @@ -33,10 +33,6 @@ Apache Karaf :: Archetypes :: Assembly Archetype This archetype sets up an empty karaf assembly project. - - 3.2.1 - - @@ -52,7 +48,6 @@ org.apache.maven.archetype archetype-packaging - ${archetype.version} @@ -72,16 +67,6 @@ maven-archetype-plugin - - - - - org.apache.maven.plugins - maven-archetype-plugin - ${archetype.version} - - - diff --git a/archetypes/assembly/src/main/resources/archetype-resources/pom.xml b/archetypes/assembly/src/main/resources/archetype-resources/pom.xml index a895d097d70..e255be1e278 100644 --- a/archetypes/assembly/src/main/resources/archetype-resources/pom.xml +++ b/archetypes/assembly/src/main/resources/archetype-resources/pom.xml @@ -127,10 +127,15 @@ + + org.apache.maven.plugins + maven-clean-plugin + 3.4.0 + org.apache.maven.plugins maven-resources-plugin - 2.6 + 3.3.1 process-resources @@ -140,6 +145,21 @@ + + org.apache.maven.plugins + maven-surefire-plugin + 3.5.2 + + + org.apache.maven.plugins + maven-install-plugin + 3.1.3 + + + org.apache.maven.plugins + maven-deploy-plugin + 3.1.3 + org.apache.karaf.tooling karaf-maven-plugin @@ -154,7 +174,7 @@ - 1.8 + 11 diff --git a/archetypes/blueprint/pom.xml b/archetypes/blueprint/pom.xml index c36feef11ae..a6faa887d64 100644 --- a/archetypes/blueprint/pom.xml +++ b/archetypes/blueprint/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf archetypes - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -34,10 +34,6 @@ Apache Karaf :: Archetypes :: Blueprint Archetype An archetype for creating a simple blueprint bundle. - - 3.2.1 - - @@ -53,7 +49,6 @@ org.apache.maven.archetype archetype-packaging - ${archetype.version} @@ -73,16 +68,6 @@ maven-archetype-plugin - - - - - org.apache.maven.plugins - maven-archetype-plugin - ${archetype.version} - - - diff --git a/archetypes/blueprint/src/main/resources/archetype-resources/pom.xml b/archetypes/blueprint/src/main/resources/archetype-resources/pom.xml index 13684bdc061..738507ac93d 100644 --- a/archetypes/blueprint/src/main/resources/archetype-resources/pom.xml +++ b/archetypes/blueprint/src/main/resources/archetype-resources/pom.xml @@ -48,15 +48,42 @@ + + org.apache.maven.plugins + maven-clean-plugin + 3.4.0 + + + org.apache.maven.plugins + maven-resources-plugin + 3.3.1 + org.apache.maven.plugins maven-compiler-plugin + 3.13.0 1.8 1.8 256M + + org.apache.maven.plugins + maven-surefire-plugin + 3.5.2 + + + org.apache.maven.plugins + maven-install-plugin + 3.1.3 + + + org.apache.maven.plugins + maven-deploy-plugin + 3.1.3 + + diff --git a/archetypes/bundle/pom.xml b/archetypes/bundle/pom.xml index 94add38b9a6..0862bcc224c 100644 --- a/archetypes/bundle/pom.xml +++ b/archetypes/bundle/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf archetypes - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -34,10 +34,6 @@ Apache Karaf :: Archetypes :: Bundle Archetype A simple bundle archetype. - - 3.2.1 - - @@ -53,7 +49,6 @@ org.apache.maven.archetype archetype-packaging - ${archetype.version} @@ -83,16 +78,6 @@ maven-archetype-plugin - - - - - org.apache.maven.plugins - maven-archetype-plugin - ${archetype.version} - - - diff --git a/archetypes/bundle/src/main/resources/archetype-resources/pom.xml b/archetypes/bundle/src/main/resources/archetype-resources/pom.xml index 06fbdd95396..a6d0c97a5c1 100644 --- a/archetypes/bundle/src/main/resources/archetype-resources/pom.xml +++ b/archetypes/bundle/src/main/resources/archetype-resources/pom.xml @@ -67,15 +67,41 @@ + + org.apache.maven.plugins + maven-clean-plugin + 3.4.0 + + + org.apache.maven.plugins + maven-resources-plugin + 3.3.1 + org.apache.maven.plugins maven-compiler-plugin + 3.13.0 1.8 1.8 256M + + org.apache.maven.plugins + maven-surefire-plugin + 3.5.2 + + + org.apache.maven.plugins + maven-install-plugin + 3.1.3 + + + org.apache.maven.plugins + maven-deploy-plugin + 3.1.3 + diff --git a/archetypes/command/pom.xml b/archetypes/command/pom.xml index 8fe502ffa6d..97b62e3c207 100644 --- a/archetypes/command/pom.xml +++ b/archetypes/command/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf archetypes - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -34,10 +34,6 @@ Apache Karaf :: Archetypes :: Command Archetype A Karaf command archetype. - - 3.2.1 - - @@ -53,7 +49,6 @@ org.apache.maven.archetype archetype-packaging - ${archetype.version} @@ -73,17 +68,6 @@ maven-archetype-plugin - - - - - org.apache.maven.plugins - maven-archetype-plugin - ${archetype.version} - true - - - diff --git a/archetypes/command/src/main/resources/archetype-resources/pom.xml b/archetypes/command/src/main/resources/archetype-resources/pom.xml index 52aa1cb199a..1548463bc7d 100644 --- a/archetypes/command/src/main/resources/archetype-resources/pom.xml +++ b/archetypes/command/src/main/resources/archetype-resources/pom.xml @@ -52,15 +52,40 @@ + + org.apache.maven.plugins + maven-clean-plugin + 3.4.0 + + + org.apache.maven.plugins + maven-resources-plugin + 3.3.1 + maven-compiler-plugin true - 3.5.1 + 3.13.0 1.8 1.8 + + org.apache.maven.plugins + maven-surefire-plugin + 3.5.2 + + + org.apache.maven.plugins + maven-install-plugin + 3.1.3 + + + org.apache.maven.plugins + maven-deploy-plugin + 3.1.3 + org.apache.felix maven-bundle-plugin diff --git a/archetypes/feature/pom.xml b/archetypes/feature/pom.xml index 36fb8763a40..dc5c2d98789 100644 --- a/archetypes/feature/pom.xml +++ b/archetypes/feature/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf archetypes - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -34,10 +34,6 @@ Apache Karaf :: Archetypes :: Feature Archetype This archetype sets up an empty karaf features project. - - 3.2.1 - - @@ -53,7 +49,6 @@ org.apache.maven.archetype archetype-packaging - ${archetype.version} @@ -73,16 +68,6 @@ maven-archetype-plugin - - - - - org.apache.maven.plugins - maven-archetype-plugin - ${archetype.version} - - - diff --git a/archetypes/feature/src/main/resources/archetype-resources/pom.xml b/archetypes/feature/src/main/resources/archetype-resources/pom.xml index 47a5edce979..cdb30e6aa2c 100644 --- a/archetypes/feature/src/main/resources/archetype-resources/pom.xml +++ b/archetypes/feature/src/main/resources/archetype-resources/pom.xml @@ -41,6 +41,36 @@ ^project.version^ true + + org.apache.maven.plugins + maven-clean-plugin + 3.4.0 + + + org.apache.maven.plugins + maven-resources-plugin + 3.3.1 + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + + org.apache.maven.plugins + maven-surefire-plugin + 3.5.2 + + + org.apache.maven.plugins + maven-install-plugin + 3.1.3 + + + org.apache.maven.plugins + maven-deploy-plugin + 3.1.3 + diff --git a/archetypes/kar/pom.xml b/archetypes/kar/pom.xml index 405d53f9072..3ae642388b8 100644 --- a/archetypes/kar/pom.xml +++ b/archetypes/kar/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf archetypes - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -34,10 +34,6 @@ Apache Karaf :: Archetypes :: Kar Archetype This archetype sets up an empty karaf kar project. - - 3.2.1 - - @@ -53,7 +49,6 @@ org.apache.maven.archetype archetype-packaging - ${archetype.version} @@ -73,16 +68,6 @@ maven-archetype-plugin - - - - - org.apache.maven.plugins - maven-archetype-plugin - ${archetype.version} - - - diff --git a/archetypes/kar/src/main/resources/archetype-resources/pom.xml b/archetypes/kar/src/main/resources/archetype-resources/pom.xml index bd5b73e2d8f..a6ade4f80cd 100644 --- a/archetypes/kar/src/main/resources/archetype-resources/pom.xml +++ b/archetypes/kar/src/main/resources/archetype-resources/pom.xml @@ -57,6 +57,36 @@ true + + org.apache.maven.plugins + maven-clean-plugin + 3.4.0 + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + + org.apache.maven.plugins + maven-resources-plugin + 3.3.1 + + + org.apache.maven.plugins + maven-surefire-plugin + 3.5.2 + + + org.apache.maven.plugins + maven-install-plugin + 3.1.3 + + + org.apache.maven.plugins + maven-deploy-plugin + 3.1.3 + diff --git a/archetypes/pom.xml b/archetypes/pom.xml index 5c8e833ba80..520fad898bf 100644 --- a/archetypes/pom.xml +++ b/archetypes/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf karaf - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/assemblies/apache-karaf-integration/pom.xml b/assemblies/apache-karaf-integration/pom.xml new file mode 100644 index 00000000000..85aab6acb08 --- /dev/null +++ b/assemblies/apache-karaf-integration/pom.xml @@ -0,0 +1,278 @@ + + + + + + 4.0.0 + + + org.apache.karaf.assemblies + assemblies + 4.4.12-SNAPSHOT + ../pom.xml + + + org.apache.karaf + apache-karaf-integration + pom + Apache Karaf :: Assemblies :: Integration Distribution + + + ${basedir}/../etc/appended-resources + + + + + + org.apache.karaf + karaf-bom-artifacts + ${project.version} + pom + import + + + + + + + org.apache.karaf.features + framework + kar + + + org.apache.karaf.features + framework + features + xml + runtime + + + org.apache.karaf.features + standard + features + xml + + + org.apache.karaf.features + specs + features + xml + runtime + + + org.apache.karaf.features + spring + features + xml + runtime + + + org.apache.karaf.features + enterprise + features + xml + runtime + + + org.apache.karaf.features + integration + features + xml + runtime + + + + + + + ${project.basedir}/../.. + false + + examples/**/* + + + examples/**/target/**/* + **/*.iml + + + + ${project.basedir}/src/main/distribution + false + + + + + org.apache.maven.plugins + maven-resources-plugin + + + process-resources + + resources + + + + + + org.apache.maven.plugins + maven-remote-resources-plugin + + true + + + + org.apache.karaf.tooling + karaf-maven-plugin + + + install-kar + compile + + assembly + + + + package + + archive + + + + + + wrapper + aries-blueprint + shell-compat + + + eventadmin + + + wrap + classpath + shell + feature + jaas + ssh + management + bundle + config + deployer + diagnostic + feature + instance + kar + log + package + service + system + integration-camel + integration-messaging + + + + 17 + ${project.build.directory} + Apache Karaf Integration + + + + + + + + consistency + + + + com.google.code.maven-replacer-plugin + replacer + 1.5.3 + + + prepare-package + + replace + + + + + ${project.build.directory}/bundle-report.xml + + + href="bundle-report.xslt" + href="${project.artifactId}-${project.version}-bundle-report.xslt" + + + + + + org.codehaus.mojo + build-helper-maven-plugin + + + attach-artifacts + package + + attach-artifact + + + + + ${project.build.directory}/bundle-report.xml + bundle-report + xml + + + ${project.build.directory}/bundle-report.xslt + bundle-report + xslt + + + + + + + + + + + test + + + + org.apache.karaf.tooling + karaf-maven-plugin + + + install-kar + none + + + package + none + + + + + + + + + diff --git a/assemblies/apache-karaf-integration/src/main/distribution/LICENSE b/assemblies/apache-karaf-integration/src/main/distribution/LICENSE new file mode 100644 index 00000000000..45e7e24719c --- /dev/null +++ b/assemblies/apache-karaf-integration/src/main/distribution/LICENSE @@ -0,0 +1,695 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed 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. + +----------------------------------------------------------------------------- + +This product bundles OSGi. + +Project URL: https://www.osgi.org/ +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This product bundles istack-common-runtime. + +Project URL: https://github.com/eclipse-ee4j/jaxb-istack-commons +License: Eclipse Distribution License 1.0 - https://www.eclipse.org/org/documents/edl-v10.html + +----------------------------------------------------------------------------- + +This product bundles Eclipse JAXB Impl. + +Project URL: https://projects.eclipse.org/projects/ee4j.jaxb-impl +License: Eclipse Distribution License 1.0 - https://www.eclipse.org/org/documents/edl-v10.html + +----------------------------------------------------------------------------- + +This product bundles javax.annotation-api. + +Project URL: https://github.com/javaee/javax.annotation +License: CDDL 1.1 - http://www.opensource.org/licenses/cddl1.php + +----------------------------------------------------------------------------- + +This product bundles txw2. + +Project URL: https://eclipse-ee4j.github.io/jaxb-ri/ +License: Eclipse Distribution License 1.0 - https://www.eclipse.org/org/documents/edl-v10.html + +----------------------------------------------------------------------------- + +This product bundles BouncyCastle. + +Project URL: https://www.bouncycastle.org/ +License: MIT +| Copyright (c) 2000 - 2023 The Legion of the Bouncy Castle Inc. (https://www.bouncycastle.org) +| +| Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +| +| The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +| +| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +----------------------------------------------------------------------------- + +This product bundles Eclipse Equinox. + +Project URL: https://projects.eclipse.org/projects/eclipse.equinox +License: Eclipse Public License 2.0 - http://www.eclipse.org/legal/epl-2.0 + +----------------------------------------------------------------------------- + +This product bundles Jansi. + +Project URL: https://github.com/fusesource/jansi +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This priduct bundles JLine. + +Project URL: https://github.com/jline/jline3 +License: BSD 3-Clause +| Copyright (c) 2002-2023, the original author or authors. +| All rights reserved. +| +| https://opensource.org/licenses/BSD-3-Clause +| +| Redistribution and use in source and binary forms, with or +| without modification, are permitted provided that the following +| conditions are met: +| +| Redistributions of source code must retain the above copyright +| notice, this list of conditions and the following disclaimer. +| +| Redistributions in binary form must reproduce the above copyright +| notice, this list of conditions and the following disclaimer +| in the documentation and/or other materials provided with +| the distribution. +| +| Neither the name of JLine nor the names of its contributors +| may be used to endorse or promote products derived from this +| software without specific prior written permission. +| +| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, +| BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +| AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +| EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +| FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, +| OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +| PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +| AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +| LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +| IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +| OF THE POSSIBILITY OF SUCH DAMAGE. + +----------------------------------------------------------------------------- + +This product bundles OPS4J PAX Logging. + +Project URL: https://github.com/ops4j/org.ops4j.pax.logging +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This product bundles OPS4J PAX URL. + +Project URL: https://github.com/ops4j/org.ops4j.pax.url +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This product bundles OPS4J PAX Web. + +Project URL: https://github.com/ops4j/org.ops4j.pax.web +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This product bundles ASM. + +Project URL: https://asm.ow2.io/ +License: MIT +| ASM: a very small and fast Java bytecode manipulation framework +| Copyright (c) 2000-2011 INRIA, France Telecom +| All rights reserved. +| +| Redistribution and use in source and binary forms, with or without +| modification, are permitted provided that the following conditions +| are met: +| 1. Redistributions of source code must retain the above copyright +| notice, this list of conditions and the following disclaimer. +| 2. Redistributions in binary form must reproduce the above copyright +| notice, this list of conditions and the following disclaimer in the +| documentation and/or other materials provided with the distribution. +| 3. Neither the name of the copyright holders nor the names of its +| contributors may be used to endorse or promote products derived from +| this software without specific prior written permission. +| +| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +| AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +| IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +| ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +| LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +| CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +| SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +| INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +| CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +| ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +| THE POSSIBILITY OF SUCH DAMAGE. + +----------------------------------------------------------------------------- + +This product bundles Jackson. + +Project URL: https://github.com/FasterXML/jackson +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This product bundles Woodstox. + +Project URL: https://github.com/FasterXML/woodstox +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This product bundles JsonPath. + +Project URL: https://github.com/json-path/JsonPath +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This product bundles Micrometer. + +Project URL: https://github.com/micrometer-metrics/micrometer +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This product bundles Jakarta Activation API. + +Project URL: https://github.com/jakartaee/jaf-api +License: Eclipse Distribution License 1.0 - https://www.eclipse.org/org/documents/edl-v10.html + +----------------------------------------------------------------------------- + +This product bundles Jakarta Annotation API. + +Project URL: https://projects.eclipse.org/projects/ee4j.ca +License: Eclipse Public License 2.0 - https://www.eclipse.org/legal/epl-2.0 + +----------------------------------------------------------------------------- + +This product bundles Jakarta EL API. + +Project URL: https://projects.eclipse.org/projects/ee4j.el +License: Eclipse Public License 2.0 - https://www.eclipse.org/legal/epl-2.0 + +----------------------------------------------------------------------------- + +This product bundles Jakarta JMS API. + +Project URL: https://projects.eclipse.org/projects/ee4j.messaging +License: Eclipse Public License 2.0 - https://www.eclipse.org/legal/epl-2.0 + +----------------------------------------------------------------------------- + +This product bundles Jakarta Transaction API. + +Project URL: https://projects.eclipse.org/projects/ee4j.jta +License: Eclipse Public License 2.0 - https://www.eclipse.org/legal/epl-2.0 + +----------------------------------------------------------------------------- + +This product bundles Jakarta WS RS API. + +Project URL: https://github.com/eclipse-ee4j/jaxrs-api +License: Eclipse Public License 2.0 - https://www.eclipse.org/legal/epl-2.0 + +----------------------------------------------------------------------------- + +This product bundles Jakarta JAXB. + +Project URL: https://github.com/jakartaee/jaxb-api +License: Eclipse Distribution License 1.0 - http://www.eclipse.org/org/documents/edl-v10.php + +----------------------------------------------------------------------------- + +This product bundles Jakarta XML WS API. + +Project URL: https://github.com/jakartaee/jax-ws-api +License: BSD 3-Clause +| Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved. +| +| Redistribution and use in source and binary forms, with or without +| modification, are permitted provided that the following conditions +| are met: +| +| - Redistributions of source code must retain the above copyright +| notice, this list of conditions and the following disclaimer. +| +| - Redistributions in binary form must reproduce the above copyright +| notice, this list of conditions and the following disclaimer in the +| documentation and/or other materials provided with the distribution. +| +| - Neither the name of the Eclipse Foundation, Inc. nor the names of its +| contributors may be used to endorse or promote products derived +| from this software without specific prior written permission. +| +| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +| IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +| THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +| PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +| CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +| EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +| PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +| PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +| LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +| NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +| SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +----------------------------------------------------------------------------- + +This product bundles Javax EL API. + +Project URL: https://javaee.github.io/uel-ri/ +License: CDDL 1.1 - http://www.opensource.org/licenses/cddl1.php + +----------------------------------------------------------------------------- + +This product bundles Javax Enterprise CDI API. + +Project URL: https://www.cdi-spec.org/ +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This product bundles Javax Interceptor API. + +Project URL: https://github.com/javaee/javax.interceptor +License: CDDL 1.1 - http://www.opensource.org/licenses/cddl1.php + +----------------------------------------------------------------------------- + +This product bundles Javax JMS API. + +Project URL: https://github.com/javaee/javax.jms +License: CDDL 1.1 - http://www.opensource.org/licenses/cddl1.php + +----------------------------------------------------------------------------- + +This product bundles Javax Transaction API. + +Project URL: https://github.com/javaee/javax.transaction +License: CDDL 1.1 - http://www.opensource.org/licenses/cddl1.php + +----------------------------------------------------------------------------- + +This product bundles Accessors Smart and Json Smart. + +Project URL: https://github.com/netplex/json-smart-v2 +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This product bundles Stax2 API. + +Project URL: https://github.com/FasterXML/stax2-api +License: BSD 2-Clause +| BSD 2-Clause License +| +| Copyright (c) 2008+, FasterXML, LLC +| All rights reserved. +| +| Redistribution and use in source and binary forms, with or without +| modification, are permitted provided that the following conditions are met: +| +| * Redistributions of source code must retain the above copyright notice, this +| list of conditions and the following disclaimer. +| +| * Redistributions in binary form must reproduce the above copyright notice, +| this list of conditions and the following disclaimer in the documentation +| and/or other materials provided with the distribution. +| +| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +| AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +| IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +| DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +| FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +| DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +| SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +| CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +| OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +----------------------------------------------------------------------------- + +This product bundles Angus Activation. + +Project URL: https://github.com/eclipse-ee4j/angus-activation +License: BSD 3-Clause +| Copyright (c) 2018 Oracle and/or its affiliates. All rights reserved. +| +| Redistribution and use in source and binary forms, with or without +| modification, are permitted provided that the following conditions +| are met: +| +| - Redistributions of source code must retain the above copyright +| notice, this list of conditions and the following disclaimer. +| +| - Redistributions in binary form must reproduce the above copyright +| notice, this list of conditions and the following disclaimer in the +| documentation and/or other materials provided with the distribution. +| +| - Neither the name of the Eclipse Foundation, Inc. nor the names of its +| contributors may be used to endorse or promote products derived +| from this software without specific prior written permission. +| +| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +| IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +| THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +| PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +| CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +| EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +| PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +| PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +| LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +| NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +| SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +----------------------------------------------------------------------------- + +This product bundles Glassfish HK2. + +Project URL: https://github.com/eclipse-ee4j/glassfish-hk2 +License: Eclipse Public License 2.0 - http://www.eclipse.org/legal/epl-2.0 + +----------------------------------------------------------------------------- + +This product bundles JAXB2 Commons. + +Project URL: https://github.com/javaee/jaxb2-commons +License: CDDL 1.1 - http://www.opensource.org/licenses/cddl1.php + +----------------------------------------------------------------------------- + +This product bundles PooledJMS. + +Project URL: https://github.com/messaginghub/pooled-jms +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This product bundles OPS4J PAX CDI. + +Project URL: https://github.com/ops4j/org.ops4j.pax.cdi +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This product bundles OPS4J PAX JDBC. + +Project URL: https://github.com/ops4j/org.ops4j.pax.jdbc +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This product bundles OPS4J PAX JMS. + +Project URL: https://github.com/ops4j/org.ops4j.pax.jms +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This product bundles OPS4J PAX Logging. + +Project URL: https://github.com/ops4j/org.ops4j.pax.logging +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This product bundles OPS4J PAX Transx. + +Project URL: https://github.com/ops4j/org.ops4j.pax.transx +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This product bundles OPS4J PAX URL. + +Project URL: https://github.com/ops4j/org.ops4j.pax.url +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This product bundles OPS4J PAX Web. + +Project URL: https://github.com/ops4j/org.ops4j.pax.web +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This product bundles ASM. + +Project URL: https://asm.ow2.io/ +License: MIT +| ASM: a very small and fast Java bytecode manipulation framework +| Copyright (c) 2000-2011 INRIA, France Telecom +| All rights reserved. +| +| Redistribution and use in source and binary forms, with or without +| modification, are permitted provided that the following conditions +| are met: +| 1. Redistributions of source code must retain the above copyright +| notice, this list of conditions and the following disclaimer. +| 2. Redistributions in binary form must reproduce the above copyright +| notice, this list of conditions and the following disclaimer in the +| documentation and/or other materials provided with the distribution. +| 3. Neither the name of the copyright holders nor the names of its +| contributors may be used to endorse or promote products derived from +| this software without specific prior written permission. +| +| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +| AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +| IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +| ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +| LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +| CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +| SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +| INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +| CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +| ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +| THE POSSIBILITY OF SUCH DAMAGE. + +----------------------------------------------------------------------------- + +This product bundles Spring Framework. + +Project URL: https://spring.io/ +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- \ No newline at end of file diff --git a/assemblies/apache-karaf-integration/src/main/distribution/NOTICE b/assemblies/apache-karaf-integration/src/main/distribution/NOTICE new file mode 100644 index 00000000000..42987c795ba --- /dev/null +++ b/assemblies/apache-karaf-integration/src/main/distribution/NOTICE @@ -0,0 +1,202 @@ +Apache Karaf - Integration Distribution +Copyright 2025 The Apache Software Foundation + +----------------------------------------------------------------------------- + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +----------------------------------------------------------------------------- + +This product bundles OSGi with the following in its NOTICE: +| # Notices for osgi +| +| This content is produced and maintained by the OSGi Specification Project. +| +| * Project home: https://projects.eclipse.org/projects/technology.osgi +| +| ## Trademarks +| +| OSGi and the OSGi Logo are trademarks of the Eclipse Foundation. Eclipse and +| the Eclipse Logo are registered trademarks of the Eclipse Foundation. +| +| ## Copyright +| +| All content is the property of the respective authors or their employers. +| For more information regarding authorship of content, please consult the +| listed source code repository logs. +| +| ## Declared Project Licenses +| +| This program and the accompanying materials are made available under the terms +| of the Apache License, Version 2.0 which is available at +| http://www.apache.org/licenses/LICENSE-2.0 +| +| SPDX-License-Identifier: Apache-2.0 +| +| ## Source Code +| +| The project maintains the following source code repositories: +| +| * https://github.com/osgi/osgi.git +| +| ## Third-party Content +| +| The Content may include items that have been sourced from third parties as follows:

+| +| JUnit +| +| * License: CPL-1.0 (JUnit 3), EPL-1.0 (JUnit 4), EPL-2.0 (JUnit 5) +| * Project: https://junit.org/ +| * Source: https://github.com/junit-team +| +| Apache Software Foundation +| +| * License: Apache-2.0 +| * Project: https://apache.org/ +| * Source: https://github.com/apache/ + +----------------------------------------------------------------------------- + +This product bundles OPS4J PAX CDI with the following in its NOTICE: +| OPS4J Pax CDI - Reactor Project +| Copyright 2012 OPS4J.org +| +| This product includes software developed at +| OPS4J (http://www.ops4j.org/). +| Licensed under the Apache License 2.0. + +----------------------------------------------------------------------------- + +This product bundles OPS4J PAX JDBC with the following in its NOTICE: +| OPS4J Pax JDBC +| Copyright 2012 OPS4J.org +| +| This product includes software developed at +| OPS4J (http://www.ops4j.org/). +| Licensed under the Apache License 2.0. + +----------------------------------------------------------------------------- + +This product bundles OPS4J PAX Transx with the following in its NOTICE: +| OPS4J Pax Transx +| Copyright 2017 OPS4J.org +| +| This product includes software developed at +| OPS4J (http://www.ops4j.org/). +| Licensed under the Apache License 2.0. + +----------------------------------------------------------------------------- + +This product bundles Jackson with the following in its NOTICE: +| # Jackson JSON processor +| +| Jackson is a high-performance, Free/Open Source JSON processing library. +| It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +| been in development since 2007. +| It is currently developed by a community of developers. +| +| ## Copyright +| +| Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) +| +| ## Licensing +| +| Jackson 2.x core and extension components are licensed under Apache License 2.0 +| To find the details that apply to this artifact see the accompanying LICENSE file. +| +| ## Credits +| +| A list of contributors may be found from CREDITS(-2.x) file, which is included +| in some artifacts (usually source distributions); but is always available +| from the source code management (SCM) system project uses. + +----------------------------------------------------------------------------- + +This product bundles Micrometer with the following in its NOTICE: +| Micrometer +| +| Copyright (c) 2017-Present VMware, Inc. All Rights Reserved. +| +| Licensed 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 +| +| https://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. +| +| ------------------------------------------------------------------------------- +| +| This product contains a modified portion of 'io.netty.util.internal.logging', +| in the Netty/Common library distributed by The Netty Project: +| +| * Copyright 2013 The Netty Project +| * License: Apache License v2.0 +| * Homepage: https://netty.io +| +| This product contains a modified portion of 'StringUtils.isBlank()', +| in the Commons Lang library distributed by The Apache Software Foundation: +| +| * Copyright 2001-2019 The Apache Software Foundation +| * License: Apache License v2.0 +| * Homepage: https://commons.apache.org/proper/commons-lang/ +| +| This product contains a modified portion of 'JsonUtf8Writer', +| in the Moshi library distributed by Square, Inc: +| +| * Copyright 2010 Google Inc. +| * License: Apache License v2.0 +| * Homepage: https://github.com/square/moshi +| +| This product contains a modified portion of the 'org.springframework.lang' +| package in the Spring Framework library, distributed by VMware, Inc: +| +| * Copyright 2002-2019 the original author or authors. +| * License: Apache License v2.0 +| * Homepage: https://spring.io/projects/spring-framework + +----------------------------------------------------------------------------- + +This product bundles PooledJMS with the following in its NOTICE: +| Pooled JMS +| Copyright [2017-2024] The Apache Software Foundation +| +| This product includes software developed at +| The Apache Software Foundation (http://www.apache.org/). + +----------------------------------------------------------------------------- + +This product bundles OPS4J PAX CDI with the following in its NOTICE: +| OPS4J Pax CDI - Reactor Project +| Copyright 2012 OPS4J.org +| +| This product includes software developed at +| OPS4J (http://www.ops4j.org/). +| Licensed under the Apache License 2.0. + +----------------------------------------------------------------------------- + +This product bundles OPS4J PAX JDBC with the following in its NOTICE: +| OPS4J Pax JDBC +| Copyright 2012 OPS4J.org +| +| This product includes software developed at +| OPS4J (http://www.ops4j.org/). +| Licensed under the Apache License 2.0. + +----------------------------------------------------------------------------- + +This product bundles OPS4J PAX Transx with the following in its NOTICE: +| OPS4J Pax Transx +| Copyright 2017 OPS4J.org +| +| This product includes software developed at +| OPS4J (http://www.ops4j.org/). +| Licensed under the Apache License 2.0. + +----------------------------------------------------------------------------- \ No newline at end of file diff --git a/assemblies/apache-karaf-integration/src/main/distribution/README.md b/assemblies/apache-karaf-integration/src/main/distribution/README.md new file mode 100644 index 00000000000..04eced534be --- /dev/null +++ b/assemblies/apache-karaf-integration/src/main/distribution/README.md @@ -0,0 +1,24 @@ + + +# Apache Karaf - Integration Distribution + +Apache Karaf Integration is a Karaf distribution similar to Apache ServiceMix, e.g. it's a complete Karaf distribution adding integration features like Apache Camel and Apache ActiveMQ "out of the box". + +You can customize this distribution for your integration use case, this distribution acting as a "platform". diff --git a/assemblies/apache-karaf-minimal/pom.xml b/assemblies/apache-karaf-minimal/pom.xml index ff2767a9084..28dad79a2ed 100644 --- a/assemblies/apache-karaf-minimal/pom.xml +++ b/assemblies/apache-karaf-minimal/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.assemblies assemblies - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -88,15 +88,8 @@ - ${project.basedir}/../.. + ${project.basedir}/src/main/distribution false - - README.md - BUILDING.md - RELEASE* - LICENSE - NOTICE - @@ -152,7 +145,7 @@ !org.apache.karaf.command.acl.*, * - 1.8 + 11 diff --git a/assemblies/apache-karaf-minimal/src/main/distribution/LICENSE b/assemblies/apache-karaf-minimal/src/main/distribution/LICENSE new file mode 100644 index 00000000000..b81458a0f12 --- /dev/null +++ b/assemblies/apache-karaf-minimal/src/main/distribution/LICENSE @@ -0,0 +1,308 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed 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. + +----------------------------------------------------------------------------- + +This product bundles OSGi. + +Project URL: https://www.osgi.org/ +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This product bundles istack-common-runtime. + +Project URL: https://github.com/eclipse-ee4j/jaxb-istack-commons +License: Eclipse Distribution License 1.0 - https://www.eclipse.org/org/documents/edl-v10.html + +----------------------------------------------------------------------------- + +This product bundles JAXB. + +Project URL: https://projects.eclipse.org/projects/ee4j.jaxb-impl +License: Eclipse Distribution License 1.0 - https://www.eclipse.org/org/documents/edl-v10.html + +----------------------------------------------------------------------------- + +This product bundles javax.annotation-api. + +Project URL: https://github.com/javaee/javax.annotation +License: CDDL 1.1 - http://www.opensource.org/licenses/cddl1.php + +----------------------------------------------------------------------------- + +This product bundles txw2. + +Project URL: https://eclipse-ee4j.github.io/jaxb-ri/ +License: Eclipse Distribution License 1.0 - https://www.eclipse.org/org/documents/edl-v10.html + +----------------------------------------------------------------------------- + +This product bundles BouncyCastle. + +Project URL: https://www.bouncycastle.org/ +License: MIT +| Copyright (c) 2000 - 2023 The Legion of the Bouncy Castle Inc. (https://www.bouncycastle.org) +| +| Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +| +| The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +| +| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +----------------------------------------------------------------------------- + +This product bundles Eclipse Equinox OSGi. + +Project URL: https://projects.eclipse.org/projects/eclipse.equinox +License: Eclipse Public License 2.0 - http://www.eclipse.org/legal/epl-2.0 + +----------------------------------------------------------------------------- + +This product bundles Jansi. + +Project URL: https://github.com/fusesource/jansi +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This priduct bundles JLine. + +Project URL: https://github.com/jline/jline3 +License: BSD 3-Clause +| Copyright (c) 2002-2023, the original author or authors. +| All rights reserved. +| +| https://opensource.org/licenses/BSD-3-Clause +| +| Redistribution and use in source and binary forms, with or +| without modification, are permitted provided that the following +| conditions are met: +| +| Redistributions of source code must retain the above copyright +| notice, this list of conditions and the following disclaimer. +| +| Redistributions in binary form must reproduce the above copyright +| notice, this list of conditions and the following disclaimer +| in the documentation and/or other materials provided with +| the distribution. +| +| Neither the name of JLine nor the names of its contributors +| may be used to endorse or promote products derived from this +| software without specific prior written permission. +| +| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, +| BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +| AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +| EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +| FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, +| OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +| PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +| AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +| LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +| IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +| OF THE POSSIBILITY OF SUCH DAMAGE. + +----------------------------------------------------------------------------- \ No newline at end of file diff --git a/assemblies/apache-karaf-minimal/src/main/distribution/NOTICE b/assemblies/apache-karaf-minimal/src/main/distribution/NOTICE new file mode 100644 index 00000000000..04fb6004801 --- /dev/null +++ b/assemblies/apache-karaf-minimal/src/main/distribution/NOTICE @@ -0,0 +1,59 @@ +Apache Karaf - Minimal Distribution +Copyright 2025 The Apache Software Foundation + +----------------------------------------------------------------------------- + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +----------------------------------------------------------------------------- + +This product bundles OSGi with the following in its NOTICE: +| # Notices for osgi +| +| This content is produced and maintained by the OSGi Specification Project. +| +| * Project home: https://projects.eclipse.org/projects/technology.osgi +| +| ## Trademarks +| +| OSGi and the OSGi Logo are trademarks of the Eclipse Foundation. Eclipse and +| the Eclipse Logo are registered trademarks of the Eclipse Foundation. +| +| ## Copyright +| +| All content is the property of the respective authors or their employers. +| For more information regarding authorship of content, please consult the +| listed source code repository logs. +| +| ## Declared Project Licenses +| +| This program and the accompanying materials are made available under the terms +| of the Apache License, Version 2.0 which is available at +| http://www.apache.org/licenses/LICENSE-2.0 +| +| SPDX-License-Identifier: Apache-2.0 +| +| ## Source Code +| +| The project maintains the following source code repositories: +| +| * https://github.com/osgi/osgi.git +| +| ## Third-party Content +| +| The Content may include items that have been sourced from third parties as follows:

+| +| JUnit +| +| * License: CPL-1.0 (JUnit 3), EPL-1.0 (JUnit 4), EPL-2.0 (JUnit 5) +| * Project: https://junit.org/ +| * Source: https://github.com/junit-team +| +| Apache Software Foundation +| +| * License: Apache-2.0 +| * Project: https://apache.org/ +| * Source: https://github.com/apache/ + +----------------------------------------------------------------------------- \ No newline at end of file diff --git a/assemblies/apache-karaf-minimal/src/main/distribution/README.md b/assemblies/apache-karaf-minimal/src/main/distribution/README.md new file mode 100644 index 00000000000..8d7d2f99345 --- /dev/null +++ b/assemblies/apache-karaf-minimal/src/main/distribution/README.md @@ -0,0 +1,65 @@ + + +# Apache Karaf - Minimal Distribution + +[Apache Karaf](https://karaf.apache.org) is a modulith runtime, supporting several frameworks and programming model (REST/API, web, spring boot, ...). +It provides turnkey features that you can directly leverage without effort, packaged as mutable or immutable application. + +## Overview + +* **Hot deployment**: Karaf supports hot deployment of applications (in the deploy directory). +* **Dynamic configuration**: Karaf uses a central location (etc directory) for configuration + (in different format, properties, json) and can be plug on existing configuration backend. +* **Logging System**: using a centralized logging back end supported by Log4J, Karaf + supports a number of different APIs (JDK 1.4, JCL, SLF4J, Avalon, Tomcat, ...) +* **Provisioning**: Provisioning of libraries or applications can be done through a number of + different ways, by which they will be downloaded locally, installed and started. It interacts + with the resolver to automatically install the required components. +* **Extensible Shell console**: Karaf features a nice text console where you can manage the + services, install new applications or libraries and manage their state. This shell is easily + extensible by deploying new commands dynamically along with new features or applications. +* **Remote access**: use any SSH client to connect to the kernel and issue commands in the console +* **Security & ACL** framework based on JAAS providing complete RBAC solution. +* **Managing instances**: Karaf provides simple commands for managing instances of Karaf. + You can easily create, delete, start and stop instances of Karaf through the console. +* **Enterprise features**: Karaf provides a bunch of enterprise features that you can use in your applications (JDBC, JPA, JTA, JMS, ...). +* **HTTP Service**: Karaf provides a full features web container, allowing you to deploy your web applications. +* **REST & Services**: Karaf supports different service frameworks as Apache CXF allowing you to easily implements your services. +* **Karaf Extensions**: Karaf project is a complete ecosystem. The runtime can be extended by other Karaf subprojects such as Karaf Decanter, Karaf Cellar, Karaf Cave, ... +* **Third Party Extensions**: Karaf is a supported runtime for a lot of other projects as [Apache Camel](https://camel.apache.org), and much more. + +The minimal distribution includes the minimal features neeeded to start Apache Karaf. You are free to install the features you need +depending of your needs. + +## Prerequisites + +Apache Karaf requires a Java SE 11 or higher to run. + +## Start + +To start the Karaf runtime, run: + +``` +bin/karaf +``` + +## Documentation + +Please take a look on the [documentation](https://karaf.apache.org/manual/latest/) for details. \ No newline at end of file diff --git a/assemblies/apache-karaf/pom.xml b/assemblies/apache-karaf/pom.xml index 2b21cb21bfc..72407f04370 100644 --- a/assemblies/apache-karaf/pom.xml +++ b/assemblies/apache-karaf/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.assemblies assemblies - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -97,11 +97,6 @@ ${project.basedir}/../.. false - README.md - BUILDING.md - RELEASE* - LICENSE - NOTICE examples/**/* @@ -109,6 +104,10 @@ **/*.iml
+ + ${project.basedir}/src/main/distribution + false + @@ -179,7 +178,7 @@ - 1.8 + 11 ${project.build.directory} Apache Karaf (full) diff --git a/assemblies/apache-karaf/src/main/descriptors/src.xml b/assemblies/apache-karaf/src/main/descriptors/src.xml index 84c2ec18fad..fabbde4b09d 100644 --- a/assemblies/apache-karaf/src/main/descriptors/src.xml +++ b/assemblies/apache-karaf/src/main/descriptors/src.xml @@ -34,7 +34,14 @@ **/.idea/** **/*.jar **/*.kar - **/wrapper/src/main/resources/org/apache/karaf/wrapper/internal/** + **/*.dll + **/*.exe + **/*.so + **/*.jnilib + **/*.dylib + **/*.lib + **/*.a + **/*.o diff --git a/assemblies/apache-karaf/src/main/distribution/LICENSE b/assemblies/apache-karaf/src/main/distribution/LICENSE new file mode 100644 index 00000000000..c0bd04d9869 --- /dev/null +++ b/assemblies/apache-karaf/src/main/distribution/LICENSE @@ -0,0 +1,391 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed 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. + +----------------------------------------------------------------------------- + +This product bundles OSGi. + +Project URL: https://www.osgi.org/ +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This product bundles istack-common-runtime. + +Project URL: https://github.com/eclipse-ee4j/jaxb-istack-commons +License: Eclipse Distribution License 1.0 - https://www.eclipse.org/org/documents/edl-v10.html + +----------------------------------------------------------------------------- + +This product bundles JAXB. + +Project URL: https://projects.eclipse.org/projects/ee4j.jaxb-impl +License: Eclipse Distribution License 1.0 - https://www.eclipse.org/org/documents/edl-v10.html + +----------------------------------------------------------------------------- + +This product bundles javax.annotation-api. + +Project URL: https://github.com/javaee/javax.annotation +License: CDDL 1.1 - http://www.opensource.org/licenses/cddl1.php + +----------------------------------------------------------------------------- + +This product bundles txw2. + +Project URL: https://eclipse-ee4j.github.io/jaxb-ri/ +License: Eclipse Distribution License 1.0 - https://www.eclipse.org/org/documents/edl-v10.html + +----------------------------------------------------------------------------- + +This product bundles BouncyCastle. + +Project URL: https://www.bouncycastle.org/ +License: MIT +| Copyright (c) 2000 - 2023 The Legion of the Bouncy Castle Inc. (https://www.bouncycastle.org) +| +| Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +| +| The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +| +| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +----------------------------------------------------------------------------- + +This product bundles Eclipse Equinox. + +Project URL: https://projects.eclipse.org/projects/eclipse.equinox +License: Eclipse Public License 2.0 - http://www.eclipse.org/legal/epl-2.0 + +----------------------------------------------------------------------------- + +This product bundles Jansi. + +Project URL: https://github.com/fusesource/jansi +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This product bundles JLine. + +Project URL: https://github.com/jline/jline3 +License: BSD 3-Clause +| Copyright (c) 2002-2023, the original author or authors. +| All rights reserved. +| +| https://opensource.org/licenses/BSD-3-Clause +| +| Redistribution and use in source and binary forms, with or +| without modification, are permitted provided that the following +| conditions are met: +| +| Redistributions of source code must retain the above copyright +| notice, this list of conditions and the following disclaimer. +| +| Redistributions in binary form must reproduce the above copyright +| notice, this list of conditions and the following disclaimer +| in the documentation and/or other materials provided with +| the distribution. +| +| Neither the name of JLine nor the names of its contributors +| may be used to endorse or promote products derived from this +| software without specific prior written permission. +| +| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, +| BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +| AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +| EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +| FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, +| OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +| PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +| AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +| LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +| IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +| OF THE POSSIBILITY OF SUCH DAMAGE. + +----------------------------------------------------------------------------- + +This product bundles OPS4J PAX CDI. + +Project URL: https://github.com/ops4j/org.ops4j.pax.cdi +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This product bundles OPS4J PAX JDBC. + +Project URL: https://github.com/ops4j/org.ops4j.pax.jdbc +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This product bundles OPS4J PAX JMS. + +Project URL: https://github.com/ops4j/org.ops4j.pax.jms +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This product bundles OPS4J PAX Logging. + +Project URL: https://github.com/ops4j/org.ops4j.pax.logging +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This product bundles OPS4J PAX Transx. + +Project URL: https://github.com/ops4j/org.ops4j.pax.transx +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This product bundles OPS4J PAX URL. + +Project URL: https://github.com/ops4j/org.ops4j.pax.url +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This product bundles OPS4J PAX Web. + +Project URL: https://github.com/ops4j/org.ops4j.pax.web +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This product bundles ASM. + +Project URL: https://asm.ow2.io/ +License: MIT +| ASM: a very small and fast Java bytecode manipulation framework +| Copyright (c) 2000-2011 INRIA, France Telecom +| All rights reserved. +| +| Redistribution and use in source and binary forms, with or without +| modification, are permitted provided that the following conditions +| are met: +| 1. Redistributions of source code must retain the above copyright +| notice, this list of conditions and the following disclaimer. +| 2. Redistributions in binary form must reproduce the above copyright +| notice, this list of conditions and the following disclaimer in the +| documentation and/or other materials provided with the distribution. +| 3. Neither the name of the copyright holders nor the names of its +| contributors may be used to endorse or promote products derived from +| this software without specific prior written permission. +| +| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +| AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +| IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +| ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +| LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +| CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +| SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +| INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +| CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +| ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +| THE POSSIBILITY OF SUCH DAMAGE. + +----------------------------------------------------------------------------- \ No newline at end of file diff --git a/assemblies/apache-karaf/src/main/distribution/NOTICE b/assemblies/apache-karaf/src/main/distribution/NOTICE new file mode 100644 index 00000000000..af7bd1d1682 --- /dev/null +++ b/assemblies/apache-karaf/src/main/distribution/NOTICE @@ -0,0 +1,89 @@ +Apache Karaf +Copyright 2025 The Apache Software Foundation + +----------------------------------------------------------------------------- + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +----------------------------------------------------------------------------- + +This product bundles OSGi with the following in its NOTICE: +| # Notices for osgi +| +| This content is produced and maintained by the OSGi Specification Project. +| +| * Project home: https://projects.eclipse.org/projects/technology.osgi +| +| ## Trademarks +| +| OSGi and the OSGi Logo are trademarks of the Eclipse Foundation. Eclipse and +| the Eclipse Logo are registered trademarks of the Eclipse Foundation. +| +| ## Copyright +| +| All content is the property of the respective authors or their employers. +| For more information regarding authorship of content, please consult the +| listed source code repository logs. +| +| ## Declared Project Licenses +| +| This program and the accompanying materials are made available under the terms +| of the Apache License, Version 2.0 which is available at +| http://www.apache.org/licenses/LICENSE-2.0 +| +| SPDX-License-Identifier: Apache-2.0 +| +| ## Source Code +| +| The project maintains the following source code repositories: +| +| * https://github.com/osgi/osgi.git +| +| ## Third-party Content +| +| The Content may include items that have been sourced from third parties as follows:

+| +| JUnit +| +| * License: CPL-1.0 (JUnit 3), EPL-1.0 (JUnit 4), EPL-2.0 (JUnit 5) +| * Project: https://junit.org/ +| * Source: https://github.com/junit-team +| +| Apache Software Foundation +| +| * License: Apache-2.0 +| * Project: https://apache.org/ +| * Source: https://github.com/apache/ + +----------------------------------------------------------------------------- + +This product bundles OPS4J PAX CDI with the following in its NOTICE: +| OPS4J Pax CDI - Reactor Project +| Copyright 2012 OPS4J.org +| +| This product includes software developed at +| OPS4J (http://www.ops4j.org/). +| Licensed under the Apache License 2.0. + +----------------------------------------------------------------------------- + +This product bundles OPS4J PAX JDBC with the following in its NOTICE: +| OPS4J Pax JDBC +| Copyright 2012 OPS4J.org +| +| This product includes software developed at +| OPS4J (http://www.ops4j.org/). +| Licensed under the Apache License 2.0. + +----------------------------------------------------------------------------- + +This product bundles OPS4J PAX Transx with the following in its NOTICE: +| OPS4J Pax Transx +| Copyright 2017 OPS4J.org +| +| This product includes software developed at +| OPS4J (http://www.ops4j.org/). +| Licensed under the Apache License 2.0. + +----------------------------------------------------------------------------- \ No newline at end of file diff --git a/assemblies/apache-karaf/src/main/distribution/README.md b/assemblies/apache-karaf/src/main/distribution/README.md new file mode 100644 index 00000000000..a73ba5b9f05 --- /dev/null +++ b/assemblies/apache-karaf/src/main/distribution/README.md @@ -0,0 +1,65 @@ + + +# Apache Karaf - Standard Distribution + +[Apache Karaf](https://karaf.apache.org) is a modulith runtime, supporting several frameworks and programming model (REST/API, web, spring boot, ...). +It provides turnkey features that you can directly leverage without effort, packaged as mutable or immutable application. + +## Overview + +* **Hot deployment**: Karaf supports hot deployment of applications (in the deploy directory). +* **Dynamic configuration**: Karaf uses a central location (etc directory) for configuration + (in different format, properties, json) and can be plug on existing configuration backend. +* **Logging System**: using a centralized logging back end supported by Log4J, Karaf + supports a number of different APIs (JDK 1.4, JCL, SLF4J, Avalon, Tomcat, ...) +* **Provisioning**: Provisioning of libraries or applications can be done through a number of + different ways, by which they will be downloaded locally, installed and started. It interacts + with the resolver to automatically install the required components. +* **Extensible Shell console**: Karaf features a nice text console where you can manage the + services, install new applications or libraries and manage their state. This shell is easily + extensible by deploying new commands dynamically along with new features or applications. +* **Remote access**: use any SSH client to connect to the kernel and issue commands in the console +* **Security & ACL** framework based on JAAS providing complete RBAC solution. +* **Managing instances**: Karaf provides simple commands for managing instances of Karaf. + You can easily create, delete, start and stop instances of Karaf through the console. +* **Enterprise features**: Karaf provides a bunch of enterprise features that you can use in your applications (JDBC, JPA, JTA, JMS, ...). +* **HTTP Service**: Karaf provides a full features web container, allowing you to deploy your web applications. +* **REST & Services**: Karaf supports different service frameworks as Apache CXF allowing you to easily implements your services. +* **Karaf Extensions**: Karaf project is a complete ecosystem. The runtime can be extended by other Karaf subprojects such as Karaf Decanter, Karaf Cellar, Karaf Cave, ... +* **Third Party Extensions**: Karaf is a supported runtime for a lot of other projects as [Apache Camel](https://camel.apache.org), and much more. + +The standard distribution includes the "classic" features covering most of the use cases. You can install additional features depending +of your needs. + +## Prerequisites + +Apache Karaf requires a Java SE 11 or higher to run. + +## Start + +To start the Karaf runtime, run: + +``` +bin/karaf +``` + +## Documentation + +Please take a look on the [documentation](https://karaf.apache.org/manual/latest/) for details. \ No newline at end of file diff --git a/assemblies/features/base/pom.xml b/assemblies/features/base/pom.xml index 4ce530ef712..b6df2faa467 100644 --- a/assemblies/features/base/pom.xml +++ b/assemblies/features/base/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.assemblies.features features - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/client b/assemblies/features/base/src/main/filtered-resources/resources/bin/client index 14a09352825..f40d95c3b31 100755 --- a/assemblies/features/base/src/main/filtered-resources/resources/bin/client +++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/client @@ -117,6 +117,9 @@ init() { # Determine the JVM vendor detectJVM + # Determine and enforce the JVM version + checkJvmVersion + # Setup default options setupDefaults diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/inc b/assemblies/features/base/src/main/filtered-resources/resources/bin/inc index f13192b41f3..2efd7bd6d58 100644 --- a/assemblies/features/base/src/main/filtered-resources/resources/bin/inc +++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/inc @@ -280,9 +280,14 @@ setupVendorSepcifics() { } setupDefaults() { - DEFAULT_JAVA_OPTS="-XX:+UnlockDiagnosticVMOptions " + if [ "${VERSION}" -gt "11" ]; then + # TODO revisit EventAdminImpl to avoid use of Subject.getSubject(AccessController.getContext()); + # -Djava.security.manager=allow is a workaround for SecurityController deprecation in JDK23+ + DEFAULT_JAVA_OPTS="$DEFAULT_JAVA_OPTS -Djava.security.manager=allow " + fi + setupVendorSepcifics DEFAULT_JAVA_OPTS="${DEFAULT_JAVA_OPTS} ${JAVA_VENDOR_OPTS}" diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf.bat b/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf.bat index bf79c0349b5..3c70fb4fe8d 100644 --- a/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf.bat +++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf.bat @@ -24,6 +24,11 @@ set DIRNAME=%~dp0% set PROGNAME=%~nx0% set ARGS=%* +rem cleanly display utf8 tables, chcp 65001 +rem this can be removed when fixed in jline +chcp 65001 > nul +rem as this is within the setlocal section, the change will be reverted on exit + rem Sourcing environment settings for karaf similar to tomcats setenv if "%KARAF_SCRIPT%" == "" ( @@ -262,6 +267,10 @@ if not exist "%JAVA_HOME%\bin\server\jvm.dll" ( ) set DEFAULT_JAVA_OPTS=-XX:+UnlockDiagnosticVMOptions +if "%JAVA_VERSION%" GTR 11 ( + set DEFAULT_JAVA_OPTS=%DEFAULT_JAVA_OPTS% -Djava.security.manager=allow +) + if "%JAVA_OPTS%" == "" set JAVA_OPTS=%DEFAULT_JAVA_OPTS% if "%EXTRA_JAVA_OPTS%" == "" goto :KARAF_EXTRA_JAVA_OPTS_END diff --git a/assemblies/features/base/src/main/filtered-resources/resources/etc/jre.properties b/assemblies/features/base/src/main/filtered-resources/resources/etc/jre.properties index cea56132b83..48ea62a5aca 100644 --- a/assemblies/features/base/src/main/filtered-resources/resources/etc/jre.properties +++ b/assemblies/features/base/src/main/filtered-resources/resources/etc/jre.properties @@ -47,10 +47,8 @@ jre-base= \ java.lang.management, \ java.lang.ref, \ java.lang.reflect, \ - java.lang.runtime, \ java.math, \ java.net, \ - java.net.http, \ java.nio, \ java.nio.channels, \ java.nio.channels.spi, \ @@ -58,6 +56,7 @@ jre-base= \ java.nio.charset.spi, \ java.nio.file, \ java.nio.file.attribute, \ + java.nio.file.spi, \ java.rmi, \ java.rmi.activation, \ java.rmi.dgc, \ @@ -81,7 +80,6 @@ jre-base= \ java.util.concurrent.atomic, \ java.util.concurrent.locks, \ java.util.function, \ - java.util.random, \ java.util.jar, \ java.util.logging, \ java.util.prefs, \ @@ -331,8 +329,10 @@ jre-9= \ java.net.spi, \ javax.accessibility, \ javax.activity, \ - javax.annotation;version="1.3", \ + javax.annotation;version="1.3.2", \ javax.annotation.processing;version="1.0", \ + javax.annotation.security;version="1.3.2", \ + javax.annotation.sql;version="1.3.2", \ javax.activation;version="1.2.1", \ javax.crypto, \ javax.crypto.interfaces, \ @@ -471,6 +471,9 @@ jre-9= \ javafx.stage, \ javafx.util, \ javafx.util.converter, \ + jdk.jfr, \ + jdk.jfr.consumer, \ + jdk.management.jfr, \ netscape.javascript, \ org.ietf.jgss, \ org.w3c.dom, \ @@ -490,17 +493,36 @@ jre-9= \ com.sun.security.sasl, \ com.sun.security.sasl.digest, \ com.sun.security.sasl.ntlm, \ - com.sun.security.sasl.util + com.sun.security.sasl.util jre-10 = ${jre-9} -jre-11 = ${jre-10} -jre-12 = ${jre-11} +jre-11 = ${jre-9}, \ + java.net.http, \ + jdk.nio +jre-12 = ${jre-11}, \ + java.lang.constant, \ + javax.naming.ldap.spi jre-13 = ${jre-12} -jre-14 = ${jre-13} +jre-14 = ${jre-12}, \ + jdk.nio.mapmode jre-15 = ${jre-14} -jre-16 = ${jre-15} -jre-17 = ${jre-16} +jre-16 = ${jre-14}, \ + java.lang.runtime +jre-17 = ${jre-16}, \ + java.util.random jre-18 = ${jre-17} -jre-19 = ${jre-18} -jre-20 = ${jre-19} -jre-21 = ${jre-20} +jre-19 = ${jre-17} +jre-20 = ${jre-17} +jre-21 = ${jre-17} +jre-22 = ${jre-17}, \ + java.lang.foreign +jre-23 = ${jre-22} +jre-24 = ${jre-22}, \ + java.lang.classfile, \ + java.lang.classfile.attribute, \ + java.lang.classfile.constantpool, \ + java.lang.classfile.instruction, \ + jdk.management +jre-25 = ${jre-24}, \ + javax.sound +jre-26 = ${jre-25} diff --git a/assemblies/features/base/src/main/resources/resources/etc/org.ops4j.pax.logging.cfg b/assemblies/features/base/src/main/resources/resources/etc/org.ops4j.pax.logging.cfg index 5c52e39af80..9ee1654fd6c 100644 --- a/assemblies/features/base/src/main/resources/resources/etc/org.ops4j.pax.logging.cfg +++ b/assemblies/features/base/src/main/resources/resources/etc/org.ops4j.pax.logging.cfg @@ -27,7 +27,7 @@ color.trace = cyan # Common pattern layout for appenders log4j2.pattern = %d{ISO8601} | %-5p | %-16t | %-32c{1} | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %encode{%.-500m}{CRLF}%n -log4j2.out.pattern = \u001b[90m%d{HH:mm:ss\.SSS}\u001b[0m %highlight{%-5level}{FATAL=${color.fatal}, ERROR=${color.error}, WARN=${color.warn}, INFO=${color.info}, DEBUG=${color.debug}, TRACE=${color.trace}} \u001b[90m[%t]\u001b[0m %msg%n%throwable +log4j2.outpattern = \u001b[90m%d{HH:mm:ss\.SSS}\u001b[0m %highlight{%-5level}{FATAL=${color.fatal}, ERROR=${color.error}, WARN=${color.warn}, INFO=${color.info}, DEBUG=${color.debug}, TRACE=${color.trace}} \u001b[90m[%t]\u001b[0m %msg%n%throwable # Root logger @@ -64,7 +64,7 @@ log4j2.logger.audit.appenderRef.AuditRollingFile.ref = AuditRollingFile log4j2.appender.console.type = Console log4j2.appender.console.name = Console log4j2.appender.console.layout.type = PatternLayout -log4j2.appender.console.layout.pattern = ${log4j2.out.pattern} +log4j2.appender.console.layout.pattern = ${log4j2.outpattern} # Rolling file appender log4j2.appender.rolling.type = RollingRandomAccessFile diff --git a/assemblies/features/enterprise/pom.xml b/assemblies/features/enterprise/pom.xml index 74fd093221c..07fd5fe1870 100644 --- a/assemblies/features/enterprise/pom.xml +++ b/assemblies/features/enterprise/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.assemblies.features features - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -202,6 +202,53 @@ hibernate-osgi ${hibernate.version} + + + + org.hibernate.orm + hibernate-core + ${hibernate6.version} + + + org.hibernate.common + hibernate-commons-annotations + 7.0.3.Final + + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + ${jackson.version} + + + io.smallrye + jandex + 3.6.0 + + + net.bytebuddy + byte-buddy + 1.18.13 + + + org.antlr + antlr4-runtime + 4.13.2 + + + org.codehaus.woodstox + stax2-api + 4.3.0 + + + jakarta.xml.bind + jakarta.xml.bind-api + 4.0.0 + + + jakarta.activation + jakarta.activation-api + 2.1.3 + @@ -241,7 +288,7 @@ file:${project.build.directory}/feature/feature.xml org.apache.karaf.features:framework - 1.8 + 11 framework diff --git a/assemblies/features/enterprise/src/main/feature/feature.xml b/assemblies/features/enterprise/src/main/feature/feature.xml index 58f849e4999..e58a51c1801 100644 --- a/assemblies/features/enterprise/src/main/feature/feature.xml +++ b/assemblies/features/enterprise/src/main/feature/feature.xml @@ -20,7 +20,6 @@ - mvn:org.hibernate.validator/hibernate-validator-osgi-karaf-features/${hibernate.validator.version}/xml/features mvn:org.ops4j.pax.cdi/pax-cdi-features/${pax.cdi.version}/xml/features mvn:org.ops4j.pax.jdbc/pax-jdbc-features/${pax.jdbc.version}/xml/features @@ -32,7 +31,7 @@ mvn:javax.interceptor/javax.interceptor-api/1.2.2 - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.javax-inject/1_3 + mvn:org.apache.geronimo.specs/geronimo-atinject_1.0_spec/1.2 mvn:jakarta.el/jakarta.el-api/3.0.3 mvn:javax.enterprise/cdi-api/1.2 mvn:javax.transaction/javax.transaction-api/1.2 @@ -147,6 +146,8 @@ com.atomikos.icatch.log_base_dir=${karaf.data}/atomikos mvn:org.apache.aries.tx-control/tx-control-service-local/1.0.1 mvn:org.apache.aries.tx-control/tx-control-service-xa/1.0.1 + mvn:org.apache.aries.tx-control/tx-control-provider-jdbc-local/1.0.1 + mvn:org.apache.aries.tx-control/tx-control-provider-jdbc-xa/1.0.1 aries-blueprint mvn:org.apache.felix/org.apache.felix.coordinator/${felix.coordinator.version} @@ -176,7 +177,7 @@ com.atomikos.icatch.log_base_dir=${karaf.data}/atomikos mvn:org.jboss.spec.javax.transaction/jboss-transaction-api_1.2_spec/1.1.1.Final mvn:org.jboss/jandex/2.4.2.Final mvn:com.fasterxml/classmate/1.5.1 - wrap:mvn:org.dom4j/dom4j/2.1.1 + wrap:mvn:org.dom4j/dom4j/2.1.4 mvn:org.hibernate.common/hibernate-commons-annotations/5.1.2.Final mvn:org.hibernate/hibernate-core/${hibernate.version} mvn:javax.interceptor/javax.interceptor-api/1.2.2 @@ -192,6 +193,78 @@ com.atomikos.icatch.log_base_dir=${karaf.data}/atomikos mvn:org.hibernate/hibernate-envers/${hibernate.version} + + + pax-url-wrap + aries-blueprint + + mvn:org.jboss.logging/jboss-logging/3.5.3.Final + mvn:net.bytebuddy/byte-buddy/1.17.5 + + mvn:jakarta.persistence/jakarta.persistence-api/3.1.0 + + wrap:mvn:jakarta.transaction/jakarta.transaction-api/2.0.1$overwrite=MERGE&Bundle-SymbolicName=jakarta.transaction-api&Bundle-Version=2.0.1&Import-Package=jakarta.enterprise.context;resolution:=optional,jakarta.enterprise.util;resolution:=optional,jakarta.interceptor;resolution:=optional,* + + mvn:org.antlr/antlr4-runtime/4.13.2 + + wrap:mvn:org.hibernate.common/hibernate-commons-annotations/7.0.3.Final$overwrite=FULL&Bundle-SymbolicName=org.hibernate.commons.annotations&Bundle-Version=7.0.3.Final&Export-Package=org.hibernate.annotations.common.*;version=7.0.3.Final + + mvn:io.smallrye/jandex/3.2.7 + mvn:com.fasterxml/classmate/1.5.1 + + mvn:com.fasterxml.jackson.core/jackson-core/${jackson.version} + mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.annotations.version} + mvn:com.fasterxml.jackson.core/jackson-databind/${jackson.version} + mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-xml/${jackson.version} + + mvn:org.codehaus.woodstox/stax2-api/4.3.0 + + wrap:mvn:org.hibernate.orm/hibernate-core/${hibernate6.version}$overwrite=MERGE&Bundle-SymbolicName=org.hibernate.orm.core&Bundle-Version=${hibernate6.version}&Import-Package=com.ibm.websphere.jtaextensions;resolution:=optional,oracle.jdbc;resolution:=optional,oracle.sql;resolution:=optional,org.checkerframework.checker.initialization.qual;resolution:=optional,org.checkerframework.checker.nullness.qual;resolution:=optional,org.checkerframework.dataflow.qual;resolution:=optional,org.postgresql.util;resolution:=optional,org.objectweb.jonas_tm;resolution:=optional,jakarta.annotation;resolution:=optional,jakarta.enterprise.context;resolution:=optional,jakarta.enterprise.context.spi;resolution:=optional,jakarta.enterprise.inject;resolution:=optional,jakarta.enterprise.inject.spi;resolution:=optional,jakarta.enterprise.util;resolution:=optional,jakarta.inject;resolution:=optional,jakarta.json.bind;resolution:=optional,jakarta.validation;resolution:=optional,jakarta.validation.constraints;resolution:=optional,jakarta.validation.groups;resolution:=optional,jakarta.validation.metadata;resolution:=optional,jakarta.xml.bind;resolution:=optional,jakarta.xml.bind.annotation;resolution:=optional,jakarta.xml.bind.annotation.adapters;resolution:=optional,* + + osgi.service;objectClass=jakarta.persistence.spi.PersistenceProvider;effective:=active;jakarta.persistence.provider=org.hibernate.jpa.HibernatePersistenceProvider + + + + + hibernate6 + + wrap:mvn:org.hibernate.orm/hibernate-envers/${hibernate6.version}$overwrite=MERGE&Bundle-SymbolicName=org.hibernate.orm.envers&Bundle-Version=${hibernate6.version}&Import-Package=javax.transaction;resolution:=optional,jakarta.xml.bind;resolution:=optional,jakarta.xml.bind.annotation;resolution:=optional,jakarta.annotation;resolution:=optional,* + + + + mvn:org.hibernate.validator/hibernate-validator/${hibernate.validator.version} + mvn:jakarta.validation/jakarta.validation-api/3.0.0 + mvn:org.jboss.logging/jboss-logging/3.4.1.Final + mvn:com.fasterxml/classmate/1.5.1 + mvn:jakarta.el/jakarta.el-api/4.0.0 + mvn:org.glassfish/jakarta.el/4.0.1 + + + hibernate-validator + mvn:joda-time/joda-time/2.9.7 + + + hibernate-validator + mvn:javax.money/money-api/1.0.1 + mvn:org.javamoney/moneta/1.1 + mvn:javax.annotation/javax.annotation-api/1.3.2 + + + hibernate-validator + mvn:org.codehaus.groovy/groovy-all/2.4.12 + + + wrap + hibernate-validator + wrap:mvn:com.thoughtworks.paranamer/paranamer/2.8 + +
Eclipselink persistence engine.
jpa @@ -199,7 +272,7 @@ com.atomikos.icatch.log_base_dir=${karaf.data}/atomikos transaction mvn:org.eclipse.persistence/org.eclipse.persistence.jpa/${eclipselink.version} mvn:org.eclipse.persistence/org.eclipse.persistence.core/${eclipselink.version} - mvn:org.eclipse.persistence/org.eclipse.persistence.asm/9.3.0 + mvn:org.eclipse.persistence/org.eclipse.persistence.asm/9.7.0 mvn:org.eclipse.persistence/org.eclipse.persistence.antlr/${eclipselink.version} mvn:org.eclipse.persistence/org.eclipse.persistence.jpa.jpql/${eclipselink.version} mvn:org.apache.aries.jpa/org.apache.aries.jpa.eclipselink.adapter/${aries.jpa.version} @@ -227,6 +300,52 @@ com.atomikos.icatch.log_base_dir=${karaf.data}/atomikos pax-jdbc-config mvn:org.osgi/org.osgi.service.jdbc/${org.osgi.service.jdbc.version} mvn:org.apache.karaf.jdbc/org.apache.karaf.jdbc.core/${project.version} + + shell + +################################################################################ +# +# 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. +# +################################################################################ + +# +# This configuration file defines the ACLs for commands in the jdbc subshell +# +# For an explanation of the syntax of this file, see the file: +# org.apache.karaf.command.acl.system.cfg +# +# 'ds-create' stores a user-supplied JDBC URL into a pax-jdbc-config factory +# configuration that is turned into a live DataSource. Several JDBC drivers run +# code at connection time based on URL parameters (for instance H2 INIT=RUNSCRIPT), +# so creating a datasource is equivalent to arbitrary code execution and is +# restricted to 'admin', consistent with shell:exec and config:install. +# 'execute' and 'query' run arbitrary SQL and are restricted to 'admin' as well. +# 'ds-delete' removes a datasource and is an admin operation. +# +ds-create = admin +ds-delete = admin +execute = admin +query = admin +ds-list = viewer +ds-info = viewer +ds-factories = viewer +tables = viewer + +
@@ -240,6 +359,54 @@ com.atomikos.icatch.log_base_dir=${karaf.data}/atomikos mvn:org.apache.geronimo.specs/geronimo-jms_1.1_spec/${geronimo.jms-spec.version} mvn:org.apache.commons/commons-pool2/${commons-pool2.version} mvn:org.apache.karaf.jms/org.apache.karaf.jms.core/${project.version} + + shell + +################################################################################ +# +# 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. +# +################################################################################ + +# +# This configuration file defines the ACLs for commands in the jms subshell +# +# For an explanation of the syntax of this file, see the file: +# org.apache.karaf.command.acl.system.cfg +# +# 'create' stores a user-supplied broker URL into a pax-jms-config factory +# configuration that is turned into a live ConnectionFactory, so it is restricted +# to 'admin', consistent with jdbc:ds-create and config:install. 'delete' removes a +# connection factory. 'send', 'consume' and 'move' write to / destructively read +# from broker destinations. All of these are restricted to 'admin'. The read-only +# commands require the 'viewer' role. +# +create = admin +delete = admin +send = admin +consume = admin +move = admin +connectionfactories = viewer +info = viewer +queues = viewer +topics = viewer +count = viewer +browse = viewer + + diff --git a/assemblies/features/framework/pom.xml b/assemblies/features/framework/pom.xml index 7bc9cab2e14..89c005c777f 100644 --- a/assemblies/features/framework/pom.xml +++ b/assemblies/features/framework/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.assemblies.features features - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/assemblies/features/framework/src/main/feature/feature.xml b/assemblies/features/framework/src/main/feature/feature.xml index e202b95064e..38c7532cf35 100644 --- a/assemblies/features/framework/src/main/feature/feature.xml +++ b/assemblies/features/framework/src/main/feature/feature.xml @@ -30,19 +30,19 @@ mvn:org.ops4j.pax.logging/pax-logging-api/${pax.logging.version} mvn:org.ops4j.pax.logging/pax-logging-log4j2/${pax.logging.version} mvn:org.fusesource.jansi/jansi/${jansi.version} - - mvn:org.osgi/org.osgi.util.function/1.2.0 - mvn:org.osgi/org.osgi.util.promise/1.2.0 + + mvn:org.osgi/org.osgi.util.function/${org.osgi.util.function.version} + mvn:org.osgi/org.osgi.util.promise/${org.osgi.util.promise.version} + mvn:org.apache.felix/org.apache.felix.metatype/${felix.metatype.version} mvn:org.apache.felix/org.apache.felix.coordinator/${felix.coordinator.version} mvn:org.apache.felix/org.apache.felix.converter/${felix.converter.version} + mvn:org.apache.felix/org.apache.felix.fileinstall/${felix.fileinstall.version} mvn:org.apache.felix/org.apache.felix.configadmin/${felix.configadmin.version} mvn:org.apache.felix/org.apache.felix.configadmin.plugin.interpolation/${felix.configadmin.interpolation.plugin.version} mvn:org.apache.felix/org.apache.felix.cm.json/${felix.cm.json.version} mvn:org.apache.sling/org.apache.sling.commons.johnzon/${sling.commons.johnzon.version} mvn:org.apache.felix/org.apache.felix.configurator/${felix.configurator.version} mvn:org.apache.karaf.config/org.apache.karaf.config.core/${project.version} - - mvn:org.apache.felix/org.apache.felix.fileinstall/${felix.fileinstall.version} mvn:org.apache.karaf.features/org.apache.karaf.features.core/${project.version} mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.jaxb-api-2.2/${servicemix-spec.version} @@ -57,8 +57,9 @@ mvn:org.ops4j.pax.logging/pax-logging-api/${pax.logging.version} mvn:org.ops4j.pax.logging/pax-logging-logback/${pax.logging.version} - mvn:org.osgi/org.osgi.util.function/1.2.0 - mvn:org.osgi/org.osgi.util.promise/1.2.0 + mvn:org.osgi/org.osgi.util.function/${org.osgi.util.function.version} + mvn:org.osgi/org.osgi.util.promise/${org.osgi.util.promise.version} + mvn:org.apache.felix/org.apache.felix.metatype/${felix.metatype.version} mvn:org.apache.felix/org.apache.felix.coordinator/${felix.coordinator.version} mvn:org.apache.felix/org.apache.felix.converter/${felix.converter.version} mvn:org.apache.felix/org.apache.felix.configadmin/${felix.configadmin.version} diff --git a/assemblies/features/integration/pom.xml b/assemblies/features/integration/pom.xml new file mode 100644 index 00000000000..a1c788d23b4 --- /dev/null +++ b/assemblies/features/integration/pom.xml @@ -0,0 +1,165 @@ + + + + + + 4.0.0 + + + org.apache.karaf.assemblies.features + features + 4.4.12-SNAPSHOT + ../pom.xml + + + org.apache.karaf.features + integration + pom + Apache Karaf :: Assemblies :: Features :: Integration + + + ${basedir}/../../../etc/appended-resources + + + + + + org.apache.karaf + karaf-bom + ${project.version} + pom + import + + + + + + + org.apache.karaf.features + framework + kar + provided + + + + org.apache.camel.karaf + apache-camel + xml + features + ${camel.version} + provided + + + + + + + ${project.basedir}/src/main/feature + true + ${project.build.directory}/feature + + + + + org.apache.maven.plugins + maven-resources-plugin + + + + resources + + + + + + org.apache.karaf.tooling + karaf-maven-plugin + + + verify + process-resources + + verify + + + + mvn:org.apache.karaf.features/framework/${project.version}/xml/features + mvn:org.apache.karaf.features/specs/${project.version}/xml/features + file:${project.build.directory}/feature/feature.xml + + org.apache.karaf.features:framework + 17 + + framework + + + integration-camel + integration-messaging + integration-messaging-broker + + + + + + + org.codehaus.mojo + build-helper-maven-plugin + + + attach-artifacts + package + + attach-artifact + + + + + target/feature/feature.xml + features + xml + + + + + + + + + + + + test + + + + org.apache.karaf.tooling + karaf-maven-plugin + + + verify + none + + + + + + + + + diff --git a/assemblies/features/integration/src/main/feature/feature.xml b/assemblies/features/integration/src/main/feature/feature.xml new file mode 100644 index 00000000000..78b848cf6db --- /dev/null +++ b/assemblies/features/integration/src/main/feature/feature.xml @@ -0,0 +1,55 @@ + + + + + + + + mvn:org.apache.karaf.features/spring-legacy/${project.version}/xml/features + mvn:org.apache.karaf.features/enterprise/${project.version}/xml/features + mvn:org.ops4j.pax.cdi/pax-cdi-features/${pax.cdi.version}/xml/features + mvn:org.ops4j.pax.jdbc/pax-jdbc-features/${pax.jdbc.version}/xml/features + mvn:org.ops4j.pax.jms/pax-jms-features/${pax.jms.version}/xml/features + mvn:org.ops4j.pax.transx/pax-transx-features/${pax.transx.version}/xml/features + mvn:org.apache.karaf.features/standard/${project.version}/xml/features + mvn:org.apache.aries.jpa/jpa-features/${aries.jpa.version}/xml/features + mvn:org.apache.openjpa/openjpa-features/${openjpa.version}/xml/features + mvn:org.apache.camel.karaf/apache-camel/${camel.version}/xml/features + mvn:org.apache.activemq/activemq-karaf/${activemq.version}/xml/features + + + aries-blueprint + scr + camel-core + camel-blueprint + camel-jsonpath + + + + integration-camel + jms + activemq-client + camel-jms + + + activemq-broker-noweb + + + + diff --git a/assemblies/features/pom.xml b/assemblies/features/pom.xml index 8b90d540562..caf2f25832f 100644 --- a/assemblies/features/pom.xml +++ b/assemblies/features/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.assemblies assemblies - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -42,6 +42,7 @@ spring spring-legacy enterprise + integration diff --git a/assemblies/features/specs/pom.xml b/assemblies/features/specs/pom.xml index 906c231d998..23d7377d26c 100644 --- a/assemblies/features/specs/pom.xml +++ b/assemblies/features/specs/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.assemblies.features features - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -96,7 +96,7 @@ file:${project.build.directory}/feature/feature.xml org.apache.karaf.features:framework - 9 + 11 framework diff --git a/assemblies/features/specs/src/main/feature/feature.xml b/assemblies/features/specs/src/main/feature/feature.xml index 3134ad9484c..aa40a63b7dd 100644 --- a/assemblies/features/specs/src/main/feature/feature.xml +++ b/assemblies/features/specs/src/main/feature/feature.xml @@ -30,7 +30,7 @@ asm - mvn:org.apache.aries.spifly/org.apache.aries.spifly.dynamic.bundle/${aries.spifly.version} + mvn:org.apache.aries.spifly/org.apache.aries.spifly.dynamic.bundle/${aries.spifly.version} @@ -45,7 +45,7 @@ - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jaxb-runtime/${spec.jaxb.version} + mvn:org.glassfish.jaxb/jaxb-runtime/${spec.jaxb.version} mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jaxb-xjc/${spec.xjc.version} @@ -69,10 +69,27 @@ mvn:jakarta.mail/jakarta.mail-api/${spec.mail.version} - + + + mvn:com.fasterxml.jackson.core/jackson-core/2.18.10 + mvn:com.fasterxml.jackson.core/jackson-annotations/2.18.10 + mvn:com.fasterxml.jackson.core/jackson-databind/2.18.10 + + + + jackson + jaxrs + jakarta.annotation + mvn:org.yaml/snakeyaml/2.5 + mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/2.18.10 + mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-base/2.18.10 + mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-json-provider/2.18.10 + + + mvn:com.fasterxml.jackson.core/jackson-core/${jackson.version} - mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.version} + mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.annotations.version} mvn:com.fasterxml.jackson.core/jackson-databind/${jackson.version} @@ -80,7 +97,7 @@ jackson jaxrs jakarta.annotation - mvn:org.yaml/snakeyaml/1.33 + mvn:org.yaml/snakeyaml/2.5 mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/${jackson.version} mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-base/${jackson.version} mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-json-provider/${jackson.version} @@ -92,9 +109,9 @@ - - mvn:org.codehaus.woodstox/stax2-api/4.2.1 - mvn:com.fasterxml.woodstox/woodstox-core/6.2.8 + + mvn:org.codehaus.woodstox/stax2-api/4.2.2 + mvn:com.fasterxml.woodstox/woodstox-core/6.4.0 diff --git a/assemblies/features/spring-legacy/pom.xml b/assemblies/features/spring-legacy/pom.xml index 0ed5a66b3fa..cf8b3da3ba9 100644 --- a/assemblies/features/spring-legacy/pom.xml +++ b/assemblies/features/spring-legacy/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.assemblies.features features - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -158,12 +158,12 @@ file:${project.build.directory}/feature/feature.xml org.apache.karaf.features:framework - 1.8 + 17 framework - (?!(spring-struts|spring-web|spring-dm-web))* + spring|spring-(?!(struts|dm-web|web))* diff --git a/assemblies/features/spring-legacy/src/main/feature/feature.xml b/assemblies/features/spring-legacy/src/main/feature/feature.xml index 0a8b56f378d..4078085937c 100644 --- a/assemblies/features/spring-legacy/src/main/feature/feature.xml +++ b/assemblies/features/spring-legacy/src/main/feature/feature.xml @@ -84,7 +84,7 @@ spring-web pax-web-war - mvn:commons-collections/commons-collections/${commons-collections.version} + mvn:commons-collections/commons-collections/3.2.2 mvn:commons-beanutils/commons-beanutils/${commons-beanutils.version} mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.struts/${struts.bundle.version} mvn:org.springframework/spring-struts/${spring31.version} @@ -281,6 +281,156 @@ mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-websocket/${spring52.version} + + + + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.aopalliance/${aopalliance.bundle.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-core/${spring53.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-expression/${spring53.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-beans/${spring53.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-aop/${spring53.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-context/${spring53.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-context-support/${spring53.version} + + + + spring + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-aspects/${spring53.version} + + + + spring + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-instrument/${spring53.version} + + + + spring-tx + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-jdbc/${spring53.version} + + + + spring-tx + mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/${geronimo.jta-spec.version} + mvn:org.apache.geronimo.specs/geronimo-jms_1.1_spec/${geronimo.jms-spec.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-jms/${spring53.version} + + + + spring + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-messaging/${spring53.version} + + + + spring + mvn:javax.websocket/javax.websocket-api/1.1 + mvn:org.apache.httpcomponents/httpcore-osgi/4.4.6 + mvn:org.apache.httpcomponents/httpclient-osgi/4.5.2 + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-test/${spring53.version} + + + + spring-jdbc + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-orm/${spring53.version} + + + + spring + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-oxm/${spring53.version} + + + + spring + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-tx/${spring53.version} + + + + spring + mvn:javax.servlet/javax.servlet-api/3.1.0 + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-web/${spring53.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-webmvc/${spring53.version} + + + + mvn:javax.websocket/javax.websocket-api/1.1 + spring-web + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-websocket/${spring53.version} + + + + + + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.aopalliance/${aopalliance.bundle.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-core/${spring60.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-expression/${spring60.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-beans/${spring60.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-aop/${spring60.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-context/${spring60.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-context-support/${spring60.version} + + + + spring + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-aspects/${spring60.version} + + + + spring + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-instrument/${spring60.version} + + + + spring-tx + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-jdbc/${spring60.version} + + + + spring-tx + mvn:jakarta.jms/jakarta.jms-api/3.1.0 + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-jms/${spring60.version} + + + + spring + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-messaging/${spring60.version} + + + + spring + mvn:javax.websocket/javax.websocket-api/1.1 + mvn:org.apache.httpcomponents/httpcore-osgi/4.4.6 + mvn:org.apache.httpcomponents/httpclient-osgi/4.5.2 + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-test/${spring60.version} + + + + spring-jdbc + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-orm/${spring60.version} + + + + spring + mvn:jakarta.xml.bind/jakarta.xml.bind-api/4.0.0 + wrap:mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-oxm/${spring60.version} + + + + spring + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-tx/${spring60.version} + + + + spring + mvn:jakarta.servlet/jakarta.servlet-api/5.0.0 + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-web/${spring60.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-webmvc/${spring60.version} + + + + mvn:javax.websocket/javax.websocket-api/1.1 + spring-web + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-websocket/${spring60.version} + + @@ -310,12 +460,12 @@ pax-web-jsp pax-web-war - spring-jdbc - spring-tx - spring-web + spring-jdbc + spring-tx + spring-web mvn:javax.annotation/javax.annotation-api/1.3 mvn:com.fasterxml.jackson.core/jackson-core/${jackson.version} - mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.version} + mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.annotations.version} mvn:com.fasterxml.jackson.core/jackson-databind/${jackson.version} mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.aspectj/${aspectj.bundle.version} mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-core/${spring.security53.version} @@ -328,12 +478,12 @@ pax-web-jsp pax-web-war - spring-jdbc - spring-tx - spring-web + spring-jdbc + spring-tx + spring-web mvn:javax.annotation/javax.annotation-api/1.3 mvn:com.fasterxml.jackson.core/jackson-core/${jackson.version} - mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.version} + mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.annotations.version} mvn:com.fasterxml.jackson.core/jackson-databind/${jackson.version} mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.aspectj/${aspectj.bundle.version} mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-core/${spring.security54.version} @@ -346,12 +496,12 @@ pax-web-jsp pax-web-war - spring-jdbc - spring-tx - spring-web + spring-jdbc + spring-tx + spring-web mvn:javax.annotation/javax.annotation-api/${javax.annotation.version} mvn:com.fasterxml.jackson.core/jackson-core/${jackson.version} - mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.version} + mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.annotations.version} mvn:com.fasterxml.jackson.core/jackson-databind/${jackson.version} mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.aspectj/${aspectj.bundle.version} mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-core/${spring.security55.version} @@ -361,4 +511,40 @@ mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-taglibs/${spring.security55.version} + + pax-web-jsp + pax-web-war + spring-jdbc + spring-tx + spring-web + mvn:javax.annotation/javax.annotation-api/${javax.annotation.version} + mvn:com.fasterxml.jackson.core/jackson-core/${jackson.version} + mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.annotations.version} + mvn:com.fasterxml.jackson.core/jackson-databind/${jackson.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.aspectj/${aspectj.bundle.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-core/${spring.security56.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-config/${spring.security56.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-web/${spring.security56.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-acl/${spring.security56.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-taglibs/${spring.security56.version} + + + + pax-web-jsp + pax-web-war + spring-jdbc + spring-tx + spring-web + mvn:javax.annotation/javax.annotation-api/${javax.annotation.version} + mvn:com.fasterxml.jackson.core/jackson-core/${jackson.version} + mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.annotations.version} + mvn:com.fasterxml.jackson.core/jackson-databind/${jackson.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.aspectj/${aspectj.bundle.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-core/${spring.security57.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-config/${spring.security57.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-web/${spring.security57.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-acl/${spring.security57.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-taglibs/${spring.security57.version} + + diff --git a/assemblies/features/spring/pom.xml b/assemblies/features/spring/pom.xml index 9df0279f402..76f867161d2 100644 --- a/assemblies/features/spring/pom.xml +++ b/assemblies/features/spring/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.assemblies.features features - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -158,7 +158,7 @@ file:${project.build.directory}/feature/feature.xml org.apache.karaf.features:framework - 1.8 + 17 framework diff --git a/assemblies/features/spring/src/main/feature/feature.xml b/assemblies/features/spring/src/main/feature/feature.xml index 43d00e9aad8..4bf0cb29dc6 100644 --- a/assemblies/features/spring/src/main/feature/feature.xml +++ b/assemblies/features/spring/src/main/feature/feature.xml @@ -22,117 +22,107 @@ mvn:org.apache.karaf.features/standard/${project.version}/xml/features - + - + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.aopalliance/${aopalliance.bundle.version} - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-core/${spring53.version} - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-expression/${spring53.version} - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-beans/${spring53.version} - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-aop/${spring53.version} - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-context/${spring53.version} - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-context-support/${spring53.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-core/${spring61.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-expression/${spring61.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-beans/${spring61.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-aop/${spring61.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-context/${spring61.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-context-support/${spring61.version} - - spring - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-aspects/${spring53.version} + + spring + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-aspects/${spring61.version} - - spring - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-instrument/${spring53.version} + + spring + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-instrument/${spring61.version} - - spring-tx - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-jdbc/${spring53.version} + + spring-tx + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-jdbc/${spring61.version} - - spring-tx - mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/${geronimo.jta-spec.version} - mvn:org.apache.geronimo.specs/geronimo-jms_1.1_spec/${geronimo.jms-spec.version} - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-jms/${spring53.version} + + spring-tx + mvn:jakarta.jms/jakarta.jms-api/3.1.0 + mvn:io.micrometer/micrometer-commons/1.12.4 + mvn:io.micrometer/micrometer-observation/1.12.4 + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-jms/${spring61.version} - - spring - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-messaging/${spring53.version} + + spring + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-messaging/${spring61.version} - - spring + + spring mvn:javax.websocket/javax.websocket-api/1.1 mvn:org.apache.httpcomponents/httpcore-osgi/4.4.6 mvn:org.apache.httpcomponents/httpclient-osgi/4.5.2 - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-test/${spring53.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-test/${spring61.version} - - spring-jdbc - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-orm/${spring53.version} + + spring-jdbc + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-orm/${spring61.version} - - spring - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-oxm/${spring53.version} + + spring + mvn:jakarta.xml.bind/jakarta.xml.bind-api/4.0.0 + wrap:mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-oxm/${spring61.version} - - spring - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-tx/${spring53.version} + + spring + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-tx/${spring61.version} - - spring - mvn:javax.servlet/javax.servlet-api/3.1.0 - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-web/${spring53.version} - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-webmvc/${spring53.version} + + spring + mvn:jakarta.servlet/jakarta.servlet-api/5.0.0 + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-web/${spring61.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-webmvc/${spring61.version} - + mvn:javax.websocket/javax.websocket-api/1.1 - spring-web - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-websocket/${spring53.version} + spring-web + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-websocket/${spring61.version} - + pax-web-jsp pax-web-war - spring-jdbc - spring-tx - spring-web - mvn:javax.annotation/javax.annotation-api/${javax.annotation.version} - mvn:com.fasterxml.jackson.core/jackson-core/${jackson.version} - mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.version} - mvn:com.fasterxml.jackson.core/jackson-databind/${jackson.version} - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.aspectj/${aspectj.bundle.version} - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-core/${spring.security56.version} - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-config/${spring.security56.version} - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-web/${spring.security56.version} - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-acl/${spring.security56.version} - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-taglibs/${spring.security56.version} - - - - pax-web-jsp - pax-web-war - spring-jdbc - spring-tx - spring-web + spring-jdbc + spring-tx + spring-web mvn:javax.annotation/javax.annotation-api/${javax.annotation.version} mvn:com.fasterxml.jackson.core/jackson-core/${jackson.version} - mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.version} + mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.annotations.version} mvn:com.fasterxml.jackson.core/jackson-databind/${jackson.version} + mvn:io.micrometer/micrometer-commons/1.12.4 + mvn:io.micrometer/micrometer-observation/1.12.4 + mvn:jakarta.annotation/jakarta.annotation-api/2.1.1 + mvn:jakarta.servlet/jakarta.servlet-api/6.0.0 + mvn:jakarta.servlet.jsp/jakarta.servlet.jsp-api/3.1.1 + mvn:jakarta.el/jakarta.el-api/5.0.1 mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.aspectj/${aspectj.bundle.version} - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-core/${spring.security57.version} - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-config/${spring.security57.version} - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-web/${spring.security57.version} - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-acl/${spring.security57.version} - mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-taglibs/${spring.security57.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-core/${spring.security62.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-config/${spring.security62.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-web/${spring.security62.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-acl/${spring.security62.version} + mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-security-taglibs/${spring.security62.version} diff --git a/assemblies/features/standard/pom.xml b/assemblies/features/standard/pom.xml index 6c6b7700812..f5dbe8ffeee 100644 --- a/assemblies/features/standard/pom.xml +++ b/assemblies/features/standard/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.assemblies.features features - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -152,6 +152,11 @@ uber provided + + org.ops4j.pax.logging + pax-logging-api + provided + @@ -465,7 +470,7 @@ file:${project.build.directory}/feature/feature.xml org.apache.karaf.features:framework - 9 + 11 framework diff --git a/assemblies/features/standard/src/main/feature/feature.xml b/assemblies/features/standard/src/main/feature/feature.xml index 85e9e04ce0b..bf03466caeb 100644 --- a/assemblies/features/standard/src/main/feature/feature.xml +++ b/assemblies/features/standard/src/main/feature/feature.xml @@ -151,6 +151,17 @@ install = admin uninstall = admin start = admin stop = admin +# +# repo-add/repo-remove stay open to the viewer role (the plain form only reads/lists +# a repository), but installing/uninstalling every feature in it via -i/-u requires +# admin. The bare "= viewer" fallback is required: a command with a regex-only ACL +# entry and no fallback is treated as admin-only for *every* invocation, because the +# command guard decides visibility before it knows the actual arguments. +# +repo-add[/.*[-][i].*/] = admin +repo-add = viewer +repo-remove[/.*[-][u].*/] = admin +repo-remove = viewer mvn:org.apache.karaf.features/org.apache.karaf.features.command/${project.version} @@ -616,6 +627,12 @@ edit = manager edit[/.*jmx[.]acl.*/] = admin edit[/.*org[.]apache[.]karaf[.]command[.]acl[.].+/] = admin edit[/.*org[.]apache[.]karaf[.]service[.]acl[.].+/] = admin +# +# 'install' writes an arbitrary file (fetched from a URL) into ${karaf.etc}, which +# includes the users, keys and *.acl.* configuration files. It is restricted to +# 'admin', consistent with bundle:install, feature:install and kar:install. +# +install = admin property-append = manager property-append[/.*jmx[.]acl.*/] = admin property-append[/.*org[.]apache[.]karaf[.]command[.]acl[.].+/] = admin @@ -630,6 +647,7 @@ property-set[/.*org[.]apache[.]karaf[.]command[.]acl[.].+/] = admin property-set[/.*org[.]apache[.]karaf[.]service[.]acl[.].+/] = admin update = manager + mvn:org.apache.karaf.config/org.apache.karaf.config.command/${project.version} @@ -642,6 +660,52 @@ update = manager mvn:org.apache.karaf.instance/org.apache.karaf.instance.core/${project.version} + + shell + +################################################################################ +# +# 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. +# +################################################################################ + +# +# This configuration file defines the ACLs for commands in the instance subshell +# +# For an explanation of the syntax of this file, see the file: +# org.apache.karaf.command.acl.system.cfg +# +list = viewer +status = viewer +clone = admin +connect = admin +create = admin +destroy = admin +opts-change = admin +package = admin +rename = admin +restart = admin +rmi-registry-port-change = admin +rmi-server-port-change = admin +ssh-host-change = admin +ssh-port-change = admin +start = admin +stop = admin + + @@ -910,7 +974,7 @@ org.osgi.service.http.port=8181 pax-web-http-war - + pax-web-jetty @@ -978,7 +1042,6 @@ realm=karaf # The role required to access the WebConsole role=admin - mvn:org.apache.felix/org.apache.felix.metatype/${felix.metatype.version} mvn:org.apache.karaf.webconsole/org.apache.karaf.webconsole.console/${project.version} mvn:org.apache.felix/org.apache.felix.webconsole.plugins.memoryusage/${felix.memoryusage.webconsole.plugin.version} @@ -1082,6 +1145,11 @@ list* = viewer get* = viewer is* = viewer set* = admin +# MBean lifecycle operations (creating, registering and unregistering MBeans) are +# restricted to the admin role. +createMBean = admin +registerMBean = admin +unregisterMBean = admin * = admin @@ -1429,7 +1497,6 @@ org.quartz.jobStore.class=org.quartz.simpl.RAMJobStore org.apache.felix.eventadmin.AddTimestamp=true org.apache.felix.eventadmin.AddSubject=true - mvn:org.apache.felix/org.apache.felix.metatype/${felix.metatype.version} mvn:org.apache.karaf.services/org.apache.karaf.services.eventadmin/${project.version} shell @@ -1465,10 +1532,9 @@ org.apache.felix.eventadmin.AddSubject=true - mvn:org.osgi/org.osgi.util.function/1.2.0 - mvn:org.osgi/org.osgi.util.promise/1.2.0 - mvn:org.osgi/org.osgi.service.component/1.5.0 - mvn:org.apache.felix/org.apache.felix.metatype/${felix.metatype.version} + mvn:org.osgi/org.osgi.util.function/${org.osgi.util.function.version} + mvn:org.osgi/org.osgi.util.promise/${org.osgi.util.promise.version} + mvn:org.osgi/org.osgi.service.component/${org.osgi.service.component.version} mvn:org.apache.felix/org.apache.felix.scr/${felix.scr.version} management @@ -1497,6 +1563,7 @@ org.apache.felix.eventadmin.AddSubject=true + mvn:org.ops4j.pax.logging/pax-logging-api/${pax.logging.version} mvn:org.ops4j.pax.url/pax-url-wrap/${pax.url.version}/jar/uber diff --git a/assemblies/features/static/pom.xml b/assemblies/features/static/pom.xml index 48b6f4929b7..9887e41a6e8 100644 --- a/assemblies/features/static/pom.xml +++ b/assemblies/features/static/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.assemblies.features features - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/assemblies/pom.xml b/assemblies/pom.xml index ff687c32941..7b3ad5d2e73 100644 --- a/assemblies/pom.xml +++ b/assemblies/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf karaf - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -37,6 +37,7 @@ features apache-karaf-minimal apache-karaf + apache-karaf-integration diff --git a/audit/pom.xml b/audit/pom.xml index fddfff0bb45..aa994658869 100644 --- a/audit/pom.xml +++ b/audit/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf karaf - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -53,7 +53,7 @@ org.osgi - osgi.core + org.osgi.framework org.osgi @@ -78,7 +78,7 @@ com.conversantmedia disruptor - 1.2.20 + 1.2.21 true diff --git a/bom/artifacts/pom.xml b/bom/artifacts/pom.xml new file mode 100644 index 00000000000..13e75c465a2 --- /dev/null +++ b/bom/artifacts/pom.xml @@ -0,0 +1,531 @@ + + + + + + 4.0.0 + + + org.apache.karaf + karaf + 4.4.12-SNAPSHOT + ../../pom.xml + + + karaf-bom-artifacts + Apache Karaf :: BOM :: Karaf Artifacts + pom + + + + + + org.apache.karaf + apache-karaf + tar.gz + ${project.version} + + + * + * + + + + + org.apache.karaf + apache-karaf + zip + ${project.version} + + + * + * + + + + + org.apache.karaf + apache-karaf-minimal + tar.gz + ${project.version} + + + * + * + + + + + org.apache.karaf + apache-karaf-minimal + zip + ${project.version} + + + * + * + + + + + org.apache.karaf + manual + ${project.version} + + + org.apache.karaf + manual + html + ${project.version} + + + org.apache.karaf + manual + pdf + ${project.version} + + + org.apache.karaf + org.apache.karaf.client + ${project.version} + + + org.apache.karaf + org.apache.karaf.event + ${project.version} + + + org.apache.karaf + org.apache.karaf.main + ${project.version} + + + org.apache.karaf + org.apache.karaf.util + ${project.version} + + + + org.apache.karaf.audit + org.apache.karaf.audit.core + ${project.version} + + + + org.apache.karaf.bundle + org.apache.karaf.bundle.core + ${project.version} + + + org.apache.karaf.bundle + org.apache.karaf.bundle.blueprintstate + ${project.version} + + + org.apache.karaf.bundle + org.apache.karaf.bundle.springstate + ${project.version} + + + + org.apache.karaf.config + org.apache.karaf.config.core + ${project.version} + + + + org.apache.karaf.deployer + org.apache.karaf.deployer.blueprint + ${project.version} + + + org.apache.karaf.deployer + org.apache.karaf.deployer.features + ${project.version} + + + org.apache.karaf.deployer + org.apache.karaf.deployer.kar + ${project.version} + + + org.apache.karaf.deployer + org.apache.karaf.deployer.spring + ${project.version} + + + org.apache.karaf.deployer + org.apache.karaf.deployer.wrap + ${project.version} + + + + org.apache.karaf.diagnostic + org.apache.karaf.diagnostic.boot + ${project.version} + + + org.apache.karaf.diagnostic + org.apache.karaf.diagnostic.core + ${project.version} + + + + org.apache.karaf.features + base + ${project.version} + + + org.apache.karaf.features + org.apache.karaf.features.command + ${project.version} + + + org.apache.karaf.features + org.apache.karaf.features.core + ${project.version} + + + org.apache.karaf.features + org.apache.karaf.features.extension + ${project.version} + + + + org.apache.karaf.http + org.apache.karaf.http.core + ${project.version} + + + + org.apache.karaf.instance + org.apache.karaf.instance.core + ${project.version} + + + + org.apache.karaf.itests + itests + ${project.version} + + + + org.apache.karaf.jaas + org.apache.karaf.jaas.boot + ${project.version} + + + org.apache.karaf.jaas + org.apache.karaf.jaas.command + ${project.version} + + + org.apache.karaf.jaas + org.apache.karaf.jaas.config + ${project.version} + + + org.apache.karaf.jaas + org.apache.karaf.jaas.jasypt + ${project.version} + + + org.apache.karaf.jaas + org.apache.karaf.jaas.modules + ${project.version} + + + org.apache.karaf.jaas + org.apache.karaf.jaas.spring-security-crypto + ${project.version} + + + + org.apache.karaf.jaas.blueprint + org.apache.karaf.jaas.blueprint.config + ${project.version} + + + org.apache.karaf.jaas.blueprint + org.apache.karaf.jaas.blueprint.jasypt + ${project.version} + + + + org.apache.karaf.jdbc + org.apache.karaf.jdbc.core + ${project.version} + + + + org.apache.karaf.jms + org.apache.karaf.jms.core + ${project.version} + + + + org.apache.karaf.jndi + org.apache.karaf.jndi.core + ${project.version} + + + + org.apache.karaf.kar + org.apache.karaf.kar.core + ${project.version} + + + + org.apache.karaf.log + org.apache.karaf.log.core + ${project.version} + + + + org.apache.karaf.management + org.apache.karaf.management.server + ${project.version} + + + + org.apache.karaf.obr + org.apache.karaf.obr.core + ${project.version} + + + + org.apache.karaf.package + org.apache.karaf.package.core + ${project.version} + + + + org.apache.karaf.profile + org.apache.karaf.profile.core + ${project.version} + + + + org.apache.karaf.scheduler + org.apache.karaf.scheduler.core + ${project.version} + + + + org.apache.karaf.scr + org.apache.karaf.scr.management + ${project.version} + + + org.apache.karaf.scr + org.apache.karaf.scr.state + ${project.version} + + + + org.apache.karaf.service + org.apache.karaf.service.core + ${project.version} + + + org.apache.karaf.service + org.apache.karaf.service.guard + ${project.version} + + + + org.apache.karaf.services + org.apache.karaf.services.coordinator + ${project.version} + + + org.apache.karaf.services + org.apache.karaf.services.eventadmin + ${project.version} + + + org.apache.karaf.services + org.apache.karaf.services.staticcm + ${project.version} + + + + org.apache.karaf.shell + org.apache.karaf.shell.commands + ${project.version} + + + org.apache.karaf.shell + org.apache.karaf.shell.console + ${project.version} + + + org.apache.karaf.shell + org.apache.karaf.shell.core + ${project.version} + + + org.apache.karaf.shell + org.apache.karaf.shell.ssh + ${project.version} + + + org.apache.karaf.shell + org.apache.karaf.shell.table + ${project.version} + + + + org.apache.karaf.specs + org.apache.karaf.specs.locator + ${project.version} + + + org.apache.karaf.specs + org.apache.karaf.specs.activator + ${project.version} + + + org.apache.karaf.specs + org.apache.karaf.specs.java.xml + ${project.version} + + + org.apache.karaf.specs + org.apache.karaf.specs.java.xml.ws + ${project.version} + + + + org.apache.karaf.subsystem + org.apache.karaf.subsystem.core + ${project.version} + + + + org.apache.karaf.tooling.exam + org.apache.karaf.tooling.exam.container + ${project.version} + + + + org.apache.karaf.system + org.apache.karaf.system.core + ${project.version} + + + + org.apache.karaf.web + org.apache.karaf.web.core + ${project.version} + + + + org.apache.karaf.webconsole + org.apache.karaf.webconsole.console + ${project.version} + + + org.apache.karaf.webconsole + org.apache.karaf.webconsole.features + ${project.version} + + + org.apache.karaf.webconsole + org.apache.karaf.webconsole.gogo + ${project.version} + + + org.apache.karaf.webconsole + org.apache.karaf.webconsole.http + ${project.version} + + + org.apache.karaf.webconsole + org.apache.karaf.webconsole.instance + ${project.version} + + + + org.apache.karaf.wrapper + org.apache.karaf.wrapper.core + ${project.version} + + + + + org.apache.karaf.features + integration + xml + features + ${project.version} + + + org.apache.karaf.features + enterprise + xml + features + ${project.version} + + + org.apache.karaf.features + framework + features + xml + ${project.version} + + + org.apache.karaf.features + specs + xml + features + ${project.version} + + + org.apache.karaf.features + spring + xml + features + ${project.version} + + + org.apache.karaf.features + standard + xml + features + ${project.version} + + + + + org.apache.karaf.features + framework + kar + ${project.version} + + + org.apache.karaf.features + static + kar + ${project.version} + + + + + diff --git a/bom/pom.xml b/bom/pom.xml index 176474e22d0..f808d297a31 100644 --- a/bom/pom.xml +++ b/bom/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf karaf - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -34,6 +34,14 @@ + + org.apache.karaf + karaf-bom-artifacts + ${project.version} + pom + import + + org.glassfish.jaxb jaxb-bom @@ -41,531 +49,182 @@ pom import + + org.osgi osgi.core ${osgi.version} provided + + org.osgi - org.osgi.service.cm - ${org.osgi.service.cm.version} + org.osgi.annotation.bundle + ${org.osgi.annotation.bundle.version} provided org.osgi - org.osgi.service.component - ${org.osgi.service.component.version} + org.osgi.annotation.versioning + ${org.osgi.annotation.versioning.version} provided + + org.osgi - org.osgi.service.component.annotations - ${org.osgi.service.component.annotations.version} + org.osgi.dto + ${org.osgi.dto.version} provided org.osgi - org.osgi.service.event - ${org.osgi.service.event.version} + org.osgi.framework + ${org.osgi.framework.version} provided org.osgi - org.osgi.service.http - ${org.osgi.service.http.version} + org.osgi.resource + ${org.osgi.resource.version} provided org.osgi - org.osgi.service.jdbc - ${org.osgi.service.jdbc.version} + org.osgi.service.condition + ${org.osgi.service.condition.version} provided org.osgi - org.osgi.service.log - ${org.osgi.service.log.version} + org.osgi.service.condpermadmin + ${org.osgi.service.condpermadmin.version} provided org.osgi - org.osgi.service.metatype - ${org.osgi.service.metatype.version} + org.osgi.service.log + ${org.osgi.service.log.version} provided + org.osgi - org.osgi.namespace.service - ${org.osgi.service.namespace.version} + org.osgi.service.packageadmin + ${org.osgi.service.packageadmin.version} provided org.osgi - org.osgi.service.repository - ${org.osgi.service.repository.version} + org.osgi.service.permissionadmin + ${org.osgi.service.permissionadmin.version} provided org.osgi - org.osgi.util.promise - ${org.osgi.util.promise.version} + org.osgi.service.resolver + ${org.osgi.service.resolver.version} provided - - - org.apache.karaf - manual - ${project.version} - - - org.apache.karaf - manual - pdf - ${project.version} - - - org.apache.karaf - manual - html - ${project.version} - - - org.apache.karaf - org.apache.karaf.main - ${project.version} - - - org.apache.karaf.audit - org.apache.karaf.audit.core - ${project.version} - - - org.apache.karaf - org.apache.karaf.util - ${project.version} - - - org.apache.karaf - org.apache.karaf.client - ${project.version} - - - org.apache.karaf.specs - org.apache.karaf.specs.locator - ${project.version} - - - org.apache.karaf.specs - org.apache.karaf.specs.activator - ${project.version} - - - org.apache.karaf.specs - org.apache.karaf.specs.java.xml - ${project.version} - - - org.apache.karaf.specs - org.apache.karaf.specs.java.xml.ws - ${project.version} - - - - org.apache.karaf.bundle - org.apache.karaf.bundle.core - ${project.version} - - - org.apache.karaf.bundle - org.apache.karaf.bundle.springstate - ${project.version} - - - org.apache.karaf.bundle - org.apache.karaf.bundle.blueprintstate - ${project.version} - - - - org.apache.karaf.package - org.apache.karaf.package.core - ${project.version} - - - - org.apache.karaf.http - org.apache.karaf.http.core - ${project.version} - - - - org.apache.karaf.jdbc - org.apache.karaf.jdbc.core - ${project.version} - - - - org.apache.karaf.jms - org.apache.karaf.jms.core - ${project.version} - - - - org.apache.karaf.jndi - org.apache.karaf.jndi.core - ${project.version} - - - - org.apache.karaf.service - org.apache.karaf.service.core - ${project.version} - - - org.apache.karaf.service - org.apache.karaf.service.guard - ${project.version} - - - - org.apache.karaf.log - org.apache.karaf.log.core - ${project.version} - - - - org.apache.karaf.config - org.apache.karaf.config.core - ${project.version} - - - - org.apache.karaf.deployer - org.apache.karaf.deployer.spring - ${project.version} - - - org.apache.karaf.deployer - org.apache.karaf.deployer.blueprint - ${project.version} - - - org.apache.karaf.deployer - org.apache.karaf.deployer.features - ${project.version} - - - org.apache.karaf.deployer - org.apache.karaf.deployer.kar - ${project.version} - - - org.apache.karaf.deployer - org.apache.karaf.deployer.wrap - ${project.version} - - - - org.apache.karaf.kar - org.apache.karaf.kar.core - ${project.version} - - - - org.apache.karaf.obr - org.apache.karaf.obr.core - ${project.version} - - - - org.apache.karaf.management - org.apache.karaf.management.server - ${project.version} - - - - org.apache.karaf.features - org.apache.karaf.features.extension - ${project.version} - - - org.apache.karaf.features - org.apache.karaf.features.core - ${project.version} - - - org.apache.karaf.features - org.apache.karaf.features.command - ${project.version} - - - - - org.apache.karaf.profile - org.apache.karaf.profile.core - ${project.version} - - - - org.apache.karaf.diagnostic - org.apache.karaf.diagnostic.boot - ${project.version} - - - org.apache.karaf.diagnostic - org.apache.karaf.diagnostic.core - ${project.version} - - - - org.apache.karaf.instance - org.apache.karaf.instance.core - ${project.version} - - - - org.apache.karaf.system - org.apache.karaf.system.core - ${project.version} - - - - org.apache.karaf.web - org.apache.karaf.web.core - ${project.version} - - - - org.apache.karaf.wrapper - org.apache.karaf.wrapper.core - ${project.version} - - - - org.apache.karaf.shell - org.apache.karaf.shell.console - ${project.version} - - - org.apache.karaf.shell - org.apache.karaf.shell.ssh - ${project.version} - - - org.apache.karaf.shell - org.apache.karaf.shell.commands - ${project.version} - - - org.apache.karaf.shell - org.apache.karaf.shell.table - ${project.version} - - - org.apache.karaf.shell - org.apache.karaf.shell.core - ${project.version} - - - - org.apache.karaf.jaas - org.apache.karaf.jaas.boot - ${project.version} - - - org.apache.karaf.jaas - org.apache.karaf.jaas.command - ${project.version} - - - org.apache.karaf.jaas - org.apache.karaf.jaas.config - ${project.version} - - - org.apache.karaf.jaas - org.apache.karaf.jaas.jasypt - ${project.version} - - - org.apache.karaf.jaas - org.apache.karaf.jaas.spring-security-crypto - ${project.version} - - - org.apache.karaf.jaas - org.apache.karaf.jaas.modules - ${project.version} - - - org.apache.karaf.jaas.blueprint - org.apache.karaf.jaas.blueprint.config - ${project.version} - - - org.apache.karaf.jaas.blueprint - org.apache.karaf.jaas.blueprint.jasypt - ${project.version} - - - - org.apache.karaf.webconsole - org.apache.karaf.webconsole.instance - ${project.version} - - - org.apache.karaf.webconsole - org.apache.karaf.webconsole.console - ${project.version} - - - org.apache.karaf.webconsole - org.apache.karaf.webconsole.features - ${project.version} - - - org.apache.karaf.webconsole - org.apache.karaf.webconsole.gogo - ${project.version} - - - org.apache.karaf.webconsole - org.apache.karaf.webconsole.http - ${project.version} - - - - org.apache.karaf.scheduler - org.apache.karaf.scheduler.core - ${project.version} - - - - org.apache.karaf.services - org.apache.karaf.services.staticcm - ${project.version} - - - org.apache.karaf.services - org.apache.karaf.services.eventadmin - ${project.version} - - - org.apache.karaf - org.apache.karaf.event - ${project.version} - - - org.apache.karaf.services - org.apache.karaf.services.coordinator - ${project.version} - - - - org.apache.karaf.subsystem - org.apache.karaf.subsystem.core - ${project.version} - - - org.apache.karaf.scr - org.apache.karaf.scr.management - ${project.version} + org.osgi + org.osgi.service.startlevel + ${org.osgi.service.startlevel.version} + provided - org.apache.karaf.scr - org.apache.karaf.scr.state - ${project.version} + org.osgi + org.osgi.service.url + ${org.osgi.service.url.version} + provided - - org.apache.karaf.tooling.exam - org.apache.karaf.tooling.exam.container - ${project.version} + org.osgi + org.osgi.util.tracker + ${org.osgi.util.tracker.version} + provided + - org.apache.karaf - apache-karaf - tar.gz - ${project.version} + org.osgi + org.osgi.namespace.service + ${org.osgi.namespace.service.version} + provided - org.apache.karaf - apache-karaf - zip - ${project.version} + org.osgi + org.osgi.service.cm + ${org.osgi.service.cm.version} + provided - org.apache.karaf - apache-karaf-minimal - tar.gz - ${project.version} + org.osgi + org.osgi.service.component + ${org.osgi.service.component.version} + provided - org.apache.karaf - apache-karaf-minimal - zip - ${project.version} + org.osgi + org.osgi.service.component.annotations + ${org.osgi.service.component.annotations.version} + provided - org.apache.karaf.features - enterprise - xml - features - ${project.version} + org.osgi + org.osgi.service.event + ${org.osgi.service.event.version} + provided - org.apache.karaf.features - base - ${project.version} + org.osgi + org.osgi.service.http + ${org.osgi.service.http.version} + provided - org.apache.karaf.features - framework - kar - ${project.version} + org.osgi + org.osgi.service.jdbc + ${org.osgi.service.jdbc.version} + provided - org.apache.karaf.features - framework - features - xml - ${project.version} + org.osgi + org.osgi.service.metatype + ${org.osgi.service.metatype.version} + provided - org.apache.karaf.features - static - kar - ${project.version} + org.osgi + org.osgi.service.metatype.annotations + ${org.osgi.service.metatype.annotations.version} + provided - org.apache.karaf.features - specs - xml - features - ${project.version} + org.osgi + org.osgi.service.repository + ${org.osgi.service.repository.version} + provided - org.apache.karaf.features - spring - xml - features - ${project.version} + org.osgi + org.osgi.service.subsystem + ${org.osgi.service.subsystem.version} + provided - org.apache.karaf.features - standard - xml - features - ${project.version} + org.osgi + org.osgi.util.converter + ${org.osgi.util.converter.version} + provided - org.apache.karaf.itests - itests - ${project.version} + org.osgi + org.osgi.util.promise + ${org.osgi.util.promise.version} + provided @@ -855,11 +514,6 @@ maven-settings-builder ${maven.version} - - org.apache.maven.shared - maven-dependency-tree - 3.2.1 - org.apache.maven.wagon wagon-provider-api @@ -957,8 +611,13 @@ - log4j - log4j + org.apache.logging.log4j + log4j-core + ${log4j.version} + + + org.apache.logging.log4j + log4j-slf4j2-impl ${log4j.version} @@ -1391,6 +1050,16 @@ tx-control-service-xa ${aries.transaction.control.version} + + org.apache.aries.tx-control + tx-control-provider-jdbc-local + ${aries.transaction.control.version} + + + org.apache.aries.tx-control + tx-control-provider-jdbc-xa + ${aries.transaction.control.version} + org.apache.aries.transaction org.apache.aries.transaction.manager @@ -1540,11 +1209,6 @@ commons-lang3 ${commons-lang3.version} - - commons-collections - commons-collections - ${commons-collections.version} - commons-io commons-io @@ -1631,4 +1295,8 @@ + + artifacts + + diff --git a/bundle/blueprintstate/pom.xml b/bundle/blueprintstate/pom.xml index 20b1b02387c..19352711bdf 100644 --- a/bundle/blueprintstate/pom.xml +++ b/bundle/blueprintstate/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.bundle bundle - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -59,8 +59,7 @@ org.osgi - osgi.core - provided + org.osgi.framework org.slf4j diff --git a/bundle/core/pom.xml b/bundle/core/pom.xml index 81a9923fca3..239c276dcc4 100644 --- a/bundle/core/pom.xml +++ b/bundle/core/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.bundle bundle - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -56,16 +56,22 @@ org.apache.aries.blueprint.api provided - - + + org.osgi - osgi.core - provided + org.osgi.framework + + + org.osgi + org.osgi.resource org.osgi org.osgi.service.cm - provided + + + org.osgi + org.osgi.util.tracker diff --git a/bundle/core/src/main/java/org/apache/karaf/bundle/command/DynamicImport.java b/bundle/core/src/main/java/org/apache/karaf/bundle/command/DynamicImport.java index 31f52c211c8..0c4799b5567 100644 --- a/bundle/core/src/main/java/org/apache/karaf/bundle/command/DynamicImport.java +++ b/bundle/core/src/main/java/org/apache/karaf/bundle/command/DynamicImport.java @@ -16,26 +16,54 @@ */ package org.apache.karaf.bundle.command; +import java.util.List; +import org.apache.karaf.shell.api.action.Argument; import org.apache.karaf.shell.api.action.Command; +import org.apache.karaf.shell.api.action.Option; import org.apache.karaf.shell.api.action.lifecycle.Service; import org.osgi.framework.Bundle; /** - * Command for enabling/disabling debug logging on a bundle and calculating the difference in + * Command for enabling/disabling dynamic imports on a bundle and calculating the difference in * wired imports. */ @Command(scope = "bundle", name = "dynamic-import", description = "Enables/disables dynamic-import for a given bundle.") @Service public class DynamicImport extends BundleCommand { + @Argument(index = 1, name = "packages", description = "Bundle URLs separated by whitespaces", required = false, multiValued = true) + List packages; + + @Option(name = "--enable", aliases = {"-e"}, description = "Forces the command to execute", required = false, multiValued = false) + boolean enable; + + @Option(name = "--disable", aliases = {"-d"}, description = "Forces the command to execute", required = false, multiValued = false) + boolean disable; + @Override protected Object doExecute(Bundle bundle) throws Exception { - if (bundleService.isDynamicImport(bundle)) { + if (enable && disable) { + throw new IllegalArgumentException("Cannot 'enable' and 'disable' at the same time"); + } + if ((enable || disable) && (packages != null && !packages.isEmpty())) { + throw new IllegalArgumentException("Options are incompatible with providing package list"); + } + if (enable) { + System.out.printf("Enabling dynamic imports on bundle %s%n", bundle); + bundleService.setDynamicImports(bundle, List.of("*")); + } else if (disable) { + System.out.printf("Disabling dynamic imports on bundle %s%n", bundle); + bundleService.setDynamicImports(bundle, List.of()); + } else if (packages != null && !packages.isEmpty()) { + System.out.printf("Enabling dynamic imports for [%s] on bundle %s%n", + String.join(", ",packages), bundle); + bundleService.setDynamicImports(bundle, packages); + } else if (bundleService.isDynamicImport(bundle)) { System.out.printf("Disabling dynamic imports on bundle %s%n", bundle); - bundleService.disableDynamicImports(bundle); + bundleService.setDynamicImports(bundle, List.of()); } else { System.out.printf("Enabling dynamic imports on bundle %s%n", bundle); - bundleService.enableDynamicImports(bundle); + bundleService.setDynamicImports(bundle, List.of("*")); } return null; } diff --git a/bundle/core/src/main/java/org/apache/karaf/bundle/core/BundleService.java b/bundle/core/src/main/java/org/apache/karaf/bundle/core/BundleService.java index 8cc8b8d60b1..ba7d98ef85d 100644 --- a/bundle/core/src/main/java/org/apache/karaf/bundle/core/BundleService.java +++ b/bundle/core/src/main/java/org/apache/karaf/bundle/core/BundleService.java @@ -44,9 +44,7 @@ public interface BundleService { boolean isDynamicImport(Bundle bundle); - void enableDynamicImports(Bundle bundle); - - void disableDynamicImports(Bundle bundle); + void setDynamicImports(Bundle bundle, List packages); int getSystemBundleThreshold(); diff --git a/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleServiceImpl.java b/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleServiceImpl.java index e20628820dd..e85f31cfa89 100644 --- a/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleServiceImpl.java +++ b/bundle/core/src/main/java/org/apache/karaf/bundle/core/internal/BundleServiceImpl.java @@ -18,11 +18,13 @@ import java.net.URL; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import java.util.concurrent.CopyOnWriteArrayList; @@ -223,18 +225,27 @@ private boolean canBeSatisfied(BundleRequirement req) { return false; } + public void setDynamicImports(Bundle bundle, List packages) { + if (packages == null || packages.isEmpty()) { + disableDynamicImports(bundle); + } else { + enableDynamicImports(bundle, String.join(",", packages)); + } + } + /* * Enable DynamicImport=* on the bundle */ - public void enableDynamicImports(Bundle bundle) { + private void enableDynamicImports(Bundle bundle, String packageString) { String location = String.format("wrap:%s$" + "Bundle-UpdateLocation=%s&" + - "DynamicImport-Package=*&" + + "DynamicImport-Package=%s&" + "%s=%s&" + "overwrite=merge", bundle.getLocation(), bundle.getLocation(), + packageString, ORIGINAL_WIRES, explode(getWiredBundles(bundle).keySet())); LOG.debug(format("Updating %s with URL %s", bundle, location)); @@ -254,11 +265,15 @@ public void enableDynamicImports(Bundle bundle) { * At this time, we will also calculate the difference in package wiring for the bundle compared to * when we enabled the DynamicImport */ - public void disableDynamicImports(Bundle bundle) { + private void disableDynamicImports(Bundle bundle) { Set current = getWiredBundles(bundle).keySet(); - for (String original : bundle.getHeaders().get(ORIGINAL_WIRES).split(",")) { - current.remove(original); - } + Optional.of(bundle) + .map(Bundle::getHeaders) + .map(dict -> dict.get(ORIGINAL_WIRES)) + .map(wires -> wires.split(",")) + .stream() + .flatMap(Arrays::stream) + .forEach(current::remove); if (current.isEmpty()) { LOG.debug("No additional packages have been wired since dynamic import was enabled"); diff --git a/bundle/pom.xml b/bundle/pom.xml index f7d95ce9a27..5b70d6b0cf1 100644 --- a/bundle/pom.xml +++ b/bundle/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf karaf - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/bundle/springstate/pom.xml b/bundle/springstate/pom.xml index 73f87f0cfe1..12868ef3bcc 100644 --- a/bundle/springstate/pom.xml +++ b/bundle/springstate/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.bundle bundle - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -59,8 +59,7 @@ org.osgi - osgi.core - provided + org.osgi.framework org.slf4j diff --git a/client/pom.xml b/client/pom.xml index 9d25fb85d01..6c4ba6c64cf 100644 --- a/client/pom.xml +++ b/client/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf karaf - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -76,6 +76,10 @@ + + ${project.basedir}/src/main/resources + true + ${project.basedir}/src/main/key false @@ -92,11 +96,10 @@ Apache Karaf Shell Client Shell client bundle for Apache Karaf. - org.apache.karaf.client; - org.slf4j*; - org.apache.felix.utils.properties; - org.apache.karaf.util.config; - META-INF;-split-package:=merge-first + org.apache.karaf.client, + org.slf4j*, + org.apache.felix.utils.properties, + org.apache.karaf.util.config {maven-resources} @@ -108,4 +111,5 @@
+ diff --git a/client/src/main/java/org/slf4j/impl/SimpleServiceProvider.java b/client/src/main/java/org/slf4j/impl/SimpleServiceProvider.java new file mode 100644 index 00000000000..f431364cb9f --- /dev/null +++ b/client/src/main/java/org/slf4j/impl/SimpleServiceProvider.java @@ -0,0 +1,58 @@ +/* + * 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. + */ +package org.slf4j.impl; + +import org.slf4j.ILoggerFactory; +import org.slf4j.IMarkerFactory; +import org.slf4j.helpers.BasicMarkerFactory; +import org.slf4j.helpers.NOPMDCAdapter; +import org.slf4j.spi.MDCAdapter; +import org.slf4j.spi.SLF4JServiceProvider; + +public class SimpleServiceProvider implements SLF4JServiceProvider { + + private ILoggerFactory loggerFactory; + private IMarkerFactory markerFactory; + private MDCAdapter mdcAdapter; + + @Override + public ILoggerFactory getLoggerFactory() { + return loggerFactory; + } + + @Override + public IMarkerFactory getMarkerFactory() { + return markerFactory; + } + + @Override + public MDCAdapter getMDCAdapter() { + return mdcAdapter; + } + + @Override + public String getRequestedApiVersion() { + return "2.0.99"; + } + + @Override + public void initialize() { + loggerFactory = new SimpleLoggerFactory(); + markerFactory = new BasicMarkerFactory(); + mdcAdapter = new NOPMDCAdapter(); + } +} diff --git a/client/src/main/java/org/slf4j/impl/StaticLoggerBinder.java b/client/src/main/java/org/slf4j/impl/StaticLoggerBinder.java deleted file mode 100644 index ab906dff563..00000000000 --- a/client/src/main/java/org/slf4j/impl/StaticLoggerBinder.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * 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. - */ -package org.slf4j.impl; - -import org.slf4j.ILoggerFactory; -import org.slf4j.LoggerFactory; -import org.slf4j.spi.LoggerFactoryBinder; - -/** - * The binding of {@link LoggerFactory} class with an actual instance of - * {@link ILoggerFactory} is performed using information returned by this class. - */ -public class StaticLoggerBinder implements LoggerFactoryBinder { - - /** - * The unique instance of this class. - * - */ - private static final StaticLoggerBinder SINGLETON = new StaticLoggerBinder(); - - /** - * Return the singleton of this class. - * - * @return the StaticLoggerBinder singleton - */ - public static final StaticLoggerBinder getSingleton() { - return SINGLETON; - } - - - /** - * Declare the version of the SLF4J API this implementation is compiled - * against. The value of this field is usually modified with each release. - */ - // to avoid constant folding by the compiler, this field must *not* be final - public static String REQUESTED_API_VERSION = "1.6"; // !final - - private static final String loggerFactoryClassStr = SimpleLoggerFactory.class.getName(); - - /** - * The ILoggerFactory instance returned by the {@link #getLoggerFactory} - * method should always be the same object - */ - private final ILoggerFactory loggerFactory; - - private StaticLoggerBinder() { - loggerFactory = new SimpleLoggerFactory(); - } - - public ILoggerFactory getLoggerFactory() { - return loggerFactory; - } - - public String getLoggerFactoryClassStr() { - return loggerFactoryClassStr; - } -} diff --git a/client/src/main/resources/META-INF/LICENSE b/client/src/main/resources/META-INF/LICENSE new file mode 100644 index 00000000000..af818cc58ff --- /dev/null +++ b/client/src/main/resources/META-INF/LICENSE @@ -0,0 +1,235 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed 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. + +This product bundles slf4j-api 2.0.12, which is available under +"MIT License". For details, see https://github.com/qos-ch/slf4j/blob/master/LICENSE.txt + +----------------------------------------------------------------------------- + +This artifact bundles Slf4j. + +Project URL: https://slf4j.org/ +License: MIT +| Copyright (c) 2004-2022 QOS.ch Sarl (Switzerland) +| All rights reserved. +| +| Permission is hereby granted, free of charge, to any person obtaining +| a copy of this software and associated documentation files (the +| "Software"), to deal in the Software without restriction, including +| without limitation the rights to use, copy, modify, merge, publish, +| distribute, sublicense, and/or sell copies of the Software, and to +| permit persons to whom the Software is furnished to do so, subject to +| the following conditions: +| +| The above copyright notice and this permission notice shall be +| included in all copies or substantial portions of the Software. +| +| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +| EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +| MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +| NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +| LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +| OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +| WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +----------------------------------------------------------------------------- \ No newline at end of file diff --git a/client/src/main/resources/META-INF/services/org.slf4j.spi.SLF4JServiceProvider b/client/src/main/resources/META-INF/services/org.slf4j.spi.SLF4JServiceProvider new file mode 100644 index 00000000000..a0a5ef6485d --- /dev/null +++ b/client/src/main/resources/META-INF/services/org.slf4j.spi.SLF4JServiceProvider @@ -0,0 +1,19 @@ +# +# +# 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. +# +# +org.slf4j.impl.SimpleServiceProvider \ No newline at end of file diff --git a/config/command/pom.xml b/config/command/pom.xml new file mode 100644 index 00000000000..03940eac6e5 --- /dev/null +++ b/config/command/pom.xml @@ -0,0 +1,136 @@ + + + + + + 4.0.0 + + + org.apache.karaf.config + config + 4.4.12-SNAPSHOT + ../pom.xml + + + org.apache.karaf.config + org.apache.karaf.config.command + bundle + Apache Karaf :: ConfigAdmin :: Command + This bundle provides Karaf Config shell commands + + + ${basedir}/../etc/appended-resources + + + + + + org.apache.karaf + karaf-bom + ${project.version} + pom + import + + + + + + + org.osgi + org.osgi.framework + + + org.osgi + org.osgi.service.cm + + + org.osgi + org.osgi.service.metatype + + + + org.apache.felix + org.apache.felix.utils + + + + org.apache.karaf.config + org.apache.karaf.config.core + + + + org.apache.karaf.shell + org.apache.karaf.shell.core + true + + + + org.slf4j + slf4j-jdk14 + test + + + + + + + ${project.basedir}/src/main/resources + + **/* + + + + ${project.basedir}/src/main/resources + true + + **/*.info + + + + + + org.apache.karaf.tooling + karaf-services-maven-plugin + + + org.apache.felix + maven-bundle-plugin + + + + org.apache.karaf.config.command* + + + !org.apache.karaf.config.command, + !org.apache.karaf.config.command.completers, + org.apache.felix.utils.properties, + org.osgi.framework;version="[1,3)", + org.apache.karaf.config.core*, + * + + + org.apache.karaf.util + + + + + + + + diff --git a/config/src/main/java/org/apache/karaf/config/command/CancelCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/CancelCommand.java similarity index 100% rename from config/src/main/java/org/apache/karaf/config/command/CancelCommand.java rename to config/command/src/main/java/org/apache/karaf/config/command/CancelCommand.java diff --git a/config/src/main/java/org/apache/karaf/config/command/ConfigCommandSupport.java b/config/command/src/main/java/org/apache/karaf/config/command/ConfigCommandSupport.java similarity index 100% rename from config/src/main/java/org/apache/karaf/config/command/ConfigCommandSupport.java rename to config/command/src/main/java/org/apache/karaf/config/command/ConfigCommandSupport.java diff --git a/config/src/main/java/org/apache/karaf/config/command/ConfigPropertyCommandSupport.java b/config/command/src/main/java/org/apache/karaf/config/command/ConfigPropertyCommandSupport.java similarity index 100% rename from config/src/main/java/org/apache/karaf/config/command/ConfigPropertyCommandSupport.java rename to config/command/src/main/java/org/apache/karaf/config/command/ConfigPropertyCommandSupport.java index 533ea933ccd..18d880482be 100644 --- a/config/src/main/java/org/apache/karaf/config/command/ConfigPropertyCommandSupport.java +++ b/config/command/src/main/java/org/apache/karaf/config/command/ConfigPropertyCommandSupport.java @@ -16,8 +16,8 @@ */ package org.apache.karaf.config.command; -import org.apache.felix.utils.properties.TypedProperties; import org.apache.karaf.config.command.completers.ConfigurationCompleter; +import org.apache.felix.utils.properties.TypedProperties; import org.apache.karaf.shell.api.action.Completion; import org.apache.karaf.shell.api.action.Option; diff --git a/config/src/main/java/org/apache/karaf/config/command/DeleteCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/DeleteCommand.java similarity index 100% rename from config/src/main/java/org/apache/karaf/config/command/DeleteCommand.java rename to config/command/src/main/java/org/apache/karaf/config/command/DeleteCommand.java diff --git a/config/src/main/java/org/apache/karaf/config/command/EditCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/EditCommand.java similarity index 100% rename from config/src/main/java/org/apache/karaf/config/command/EditCommand.java rename to config/command/src/main/java/org/apache/karaf/config/command/EditCommand.java index fe3d1b2e0e5..465421709ab 100644 --- a/config/src/main/java/org/apache/karaf/config/command/EditCommand.java +++ b/config/command/src/main/java/org/apache/karaf/config/command/EditCommand.java @@ -16,8 +16,8 @@ */ package org.apache.karaf.config.command; -import org.apache.felix.utils.properties.TypedProperties; import org.apache.karaf.config.command.completers.ConfigurationCompleter; +import org.apache.felix.utils.properties.TypedProperties; import org.apache.karaf.shell.api.action.Argument; import org.apache.karaf.shell.api.action.Command; import org.apache.karaf.shell.api.action.Completion; diff --git a/config/src/main/java/org/apache/karaf/config/command/ExistsCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/ExistsCommand.java similarity index 100% rename from config/src/main/java/org/apache/karaf/config/command/ExistsCommand.java rename to config/command/src/main/java/org/apache/karaf/config/command/ExistsCommand.java diff --git a/config/src/main/java/org/apache/karaf/config/command/InstallCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/InstallCommand.java similarity index 94% rename from config/src/main/java/org/apache/karaf/config/command/InstallCommand.java rename to config/command/src/main/java/org/apache/karaf/config/command/InstallCommand.java index ea552267654..fad01ed2fbb 100644 --- a/config/src/main/java/org/apache/karaf/config/command/InstallCommand.java +++ b/config/command/src/main/java/org/apache/karaf/config/command/InstallCommand.java @@ -21,6 +21,7 @@ import org.apache.karaf.shell.api.action.Command; import org.apache.karaf.shell.api.action.Option; import org.apache.karaf.shell.api.action.lifecycle.Service; +import org.apache.karaf.util.PathUtils; import org.apache.karaf.util.StreamUtils; import java.io.BufferedInputStream; @@ -45,11 +46,9 @@ public class InstallCommand implements Action { @Override public Object execute() throws Exception { - if (finalname.contains("..")) { - throw new IllegalArgumentException("For security reason, relative path is not allowed in config file final name"); - } File etcFolder = new File(System.getProperty("karaf.etc")); File file = new File(etcFolder, finalname); + PathUtils.checkWithin(etcFolder, file); if (file.exists()) { if (!override) { throw new IllegalArgumentException("Configuration file {} already exists " + finalname); diff --git a/config/src/main/java/org/apache/karaf/config/command/ListCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/ListCommand.java similarity index 100% rename from config/src/main/java/org/apache/karaf/config/command/ListCommand.java rename to config/command/src/main/java/org/apache/karaf/config/command/ListCommand.java diff --git a/config/src/main/java/org/apache/karaf/config/command/MetaCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/MetaCommand.java similarity index 96% rename from config/src/main/java/org/apache/karaf/config/command/MetaCommand.java rename to config/command/src/main/java/org/apache/karaf/config/command/MetaCommand.java index 165aea3d6a7..fc552f67bd8 100644 --- a/config/src/main/java/org/apache/karaf/config/command/MetaCommand.java +++ b/config/command/src/main/java/org/apache/karaf/config/command/MetaCommand.java @@ -16,8 +16,6 @@ */ package org.apache.karaf.config.command; -import static org.apache.karaf.config.core.impl.MetaServiceCaller.doWithMetaType; - import java.io.IOException; import java.util.Dictionary; import java.util.HashMap; @@ -27,7 +25,8 @@ import java.util.function.Function; import org.apache.karaf.config.command.completers.MetaCompleter; -import org.apache.karaf.config.core.impl.MetaServiceCaller.MetaInfo; +import org.apache.karaf.config.core.MetaServiceCaller; +import org.apache.karaf.config.core.MetaServiceCaller.MetaInfo; import org.apache.karaf.shell.api.action.Argument; import org.apache.karaf.shell.api.action.Command; import org.apache.karaf.shell.api.action.Completion; @@ -76,9 +75,9 @@ public MetaCommand() { public Object doExecute() throws Exception { try { if (create) { - doWithMetaType(context, pid, new Create()); + MetaServiceCaller.doWithMetaType(context, pid, new Create()); } else { - doWithMetaType(context, pid, new Print()); + MetaServiceCaller.doWithMetaType(context, pid, new Print()); } return null; } catch (Throwable e) { diff --git a/config/src/main/java/org/apache/karaf/config/command/PropAppendCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/PropAppendCommand.java similarity index 100% rename from config/src/main/java/org/apache/karaf/config/command/PropAppendCommand.java rename to config/command/src/main/java/org/apache/karaf/config/command/PropAppendCommand.java index 6b004315ac3..9c05818c016 100644 --- a/config/src/main/java/org/apache/karaf/config/command/PropAppendCommand.java +++ b/config/command/src/main/java/org/apache/karaf/config/command/PropAppendCommand.java @@ -18,8 +18,8 @@ import java.util.Collection; -import org.apache.felix.utils.properties.TypedProperties; import org.apache.karaf.config.command.completers.ConfigurationPropertyCompleter; +import org.apache.felix.utils.properties.TypedProperties; import org.apache.karaf.shell.api.action.Argument; import org.apache.karaf.shell.api.action.Command; import org.apache.karaf.shell.api.action.Completion; diff --git a/config/src/main/java/org/apache/karaf/config/command/PropDelCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/PropDelCommand.java similarity index 100% rename from config/src/main/java/org/apache/karaf/config/command/PropDelCommand.java rename to config/command/src/main/java/org/apache/karaf/config/command/PropDelCommand.java diff --git a/config/src/main/java/org/apache/karaf/config/command/PropGetCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/PropGetCommand.java similarity index 100% rename from config/src/main/java/org/apache/karaf/config/command/PropGetCommand.java rename to config/command/src/main/java/org/apache/karaf/config/command/PropGetCommand.java index 48d453ea8d4..968602ee02f 100644 --- a/config/src/main/java/org/apache/karaf/config/command/PropGetCommand.java +++ b/config/command/src/main/java/org/apache/karaf/config/command/PropGetCommand.java @@ -16,8 +16,8 @@ */ package org.apache.karaf.config.command; -import org.apache.felix.utils.properties.TypedProperties; import org.apache.karaf.config.command.completers.ConfigurationPropertyCompleter; +import org.apache.felix.utils.properties.TypedProperties; import org.apache.karaf.shell.api.action.Argument; import org.apache.karaf.shell.api.action.Command; import org.apache.karaf.shell.api.action.Completion; diff --git a/config/src/main/java/org/apache/karaf/config/command/PropListCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/PropListCommand.java similarity index 100% rename from config/src/main/java/org/apache/karaf/config/command/PropListCommand.java rename to config/command/src/main/java/org/apache/karaf/config/command/PropListCommand.java diff --git a/config/src/main/java/org/apache/karaf/config/command/PropSetCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/PropSetCommand.java similarity index 100% rename from config/src/main/java/org/apache/karaf/config/command/PropSetCommand.java rename to config/command/src/main/java/org/apache/karaf/config/command/PropSetCommand.java index 1108bda67db..77f55498407 100644 --- a/config/src/main/java/org/apache/karaf/config/command/PropSetCommand.java +++ b/config/command/src/main/java/org/apache/karaf/config/command/PropSetCommand.java @@ -16,8 +16,8 @@ */ package org.apache.karaf.config.command; -import org.apache.felix.utils.properties.TypedProperties; import org.apache.karaf.config.command.completers.ConfigurationPropertyCompleter; +import org.apache.felix.utils.properties.TypedProperties; import org.apache.karaf.shell.api.action.Argument; import org.apache.karaf.shell.api.action.Command; import org.apache.karaf.shell.api.action.Completion; diff --git a/config/src/main/java/org/apache/karaf/config/command/UpdateCommand.java b/config/command/src/main/java/org/apache/karaf/config/command/UpdateCommand.java similarity index 100% rename from config/src/main/java/org/apache/karaf/config/command/UpdateCommand.java rename to config/command/src/main/java/org/apache/karaf/config/command/UpdateCommand.java diff --git a/config/src/main/java/org/apache/karaf/config/command/completers/ConfigurationCompleter.java b/config/command/src/main/java/org/apache/karaf/config/command/completers/ConfigurationCompleter.java similarity index 100% rename from config/src/main/java/org/apache/karaf/config/command/completers/ConfigurationCompleter.java rename to config/command/src/main/java/org/apache/karaf/config/command/completers/ConfigurationCompleter.java diff --git a/config/src/main/java/org/apache/karaf/config/command/completers/ConfigurationPropertyCompleter.java b/config/command/src/main/java/org/apache/karaf/config/command/completers/ConfigurationPropertyCompleter.java similarity index 96% rename from config/src/main/java/org/apache/karaf/config/command/completers/ConfigurationPropertyCompleter.java rename to config/command/src/main/java/org/apache/karaf/config/command/completers/ConfigurationPropertyCompleter.java index b42a0cf1a08..9ae225158f8 100644 --- a/config/src/main/java/org/apache/karaf/config/command/completers/ConfigurationPropertyCompleter.java +++ b/config/command/src/main/java/org/apache/karaf/config/command/completers/ConfigurationPropertyCompleter.java @@ -19,8 +19,6 @@ package org.apache.karaf.config.command.completers; -import static org.apache.karaf.config.core.impl.MetaServiceCaller.doWithMetaType; - import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; @@ -33,7 +31,8 @@ import java.util.Set; import org.apache.karaf.config.command.ConfigCommandSupport; -import org.apache.karaf.config.core.impl.MetaServiceCaller.MetaInfo; +import org.apache.karaf.config.core.MetaServiceCaller; +import org.apache.karaf.config.core.MetaServiceCaller.MetaInfo; import org.apache.karaf.shell.api.action.lifecycle.Reference; import org.apache.karaf.shell.api.action.lifecycle.Service; import org.apache.karaf.shell.api.console.CommandLine; @@ -142,7 +141,7 @@ private Set getPropertyNames(String pid) { private List getMetaTypeProperties(String pid){ try { - return doWithMetaType(context, pid, this::collectMetaConfigProperties); + return MetaServiceCaller.doWithMetaType(context, pid, this::collectMetaConfigProperties); } catch (Throwable e) { Throwable ncdfe = e; while (ncdfe != null && !(ncdfe instanceof NoClassDefFoundError)) { diff --git a/config/src/main/java/org/apache/karaf/config/command/completers/MetaCompleter.java b/config/command/src/main/java/org/apache/karaf/config/command/completers/MetaCompleter.java similarity index 98% rename from config/src/main/java/org/apache/karaf/config/command/completers/MetaCompleter.java rename to config/command/src/main/java/org/apache/karaf/config/command/completers/MetaCompleter.java index c35ccde1a82..3df9e1e26a6 100644 --- a/config/src/main/java/org/apache/karaf/config/command/completers/MetaCompleter.java +++ b/config/command/src/main/java/org/apache/karaf/config/command/completers/MetaCompleter.java @@ -18,7 +18,7 @@ import java.util.List; -import org.apache.karaf.config.core.impl.MetaServiceCaller; +import org.apache.karaf.config.core.MetaServiceCaller; import org.apache.karaf.shell.api.action.lifecycle.Init; import org.apache.karaf.shell.api.action.lifecycle.Reference; import org.apache.karaf.shell.api.action.lifecycle.Service; diff --git a/config/src/main/resources/OSGI-INF/bundle.info b/config/command/src/main/resources/OSGI-INF/bundle.info similarity index 100% rename from config/src/main/resources/OSGI-INF/bundle.info rename to config/command/src/main/resources/OSGI-INF/bundle.info diff --git a/config/src/main/resources/org/apache/karaf/config/command/edit.txt b/config/command/src/main/resources/command/edit.txt similarity index 100% rename from config/src/main/resources/org/apache/karaf/config/command/edit.txt rename to config/command/src/main/resources/command/edit.txt diff --git a/config/src/test/java/org/apache/karaf/config/command/EditCommandTest.java b/config/command/src/test/java/org/apache/karaf/config/command/EditCommandTest.java similarity index 100% rename from config/src/test/java/org/apache/karaf/config/command/EditCommandTest.java rename to config/command/src/test/java/org/apache/karaf/config/command/EditCommandTest.java diff --git a/config/src/test/java/org/apache/karaf/config/command/MockCommandSession.java b/config/command/src/test/java/org/apache/karaf/config/command/MockCommandSession.java similarity index 100% rename from config/src/test/java/org/apache/karaf/config/command/MockCommandSession.java rename to config/command/src/test/java/org/apache/karaf/config/command/MockCommandSession.java diff --git a/config/src/test/java/org/apache/karaf/config/command/UpdateCommandTest.java b/config/command/src/test/java/org/apache/karaf/config/command/UpdateCommandTest.java similarity index 100% rename from config/src/test/java/org/apache/karaf/config/command/UpdateCommandTest.java rename to config/command/src/test/java/org/apache/karaf/config/command/UpdateCommandTest.java diff --git a/config/core/pom.xml b/config/core/pom.xml new file mode 100644 index 00000000000..a118f4d524b --- /dev/null +++ b/config/core/pom.xml @@ -0,0 +1,159 @@ + + + + + + 4.0.0 + + + org.apache.karaf.config + config + 4.4.12-SNAPSHOT + ../pom.xml + + + org.apache.karaf.config + org.apache.karaf.config.core + bundle + Apache Karaf :: ConfigAdmin :: Core + This bundle provides Karaf services + + + ${basedir}/../etc/appended-resources + + + + + + org.apache.karaf + karaf-bom + ${project.version} + pom + import + + + + + + + org.osgi + org.osgi.framework + + + org.osgi + org.osgi.service.cm + + + org.osgi + org.osgi.service.metatype + + + org.osgi + org.osgi.util.converter + + + + org.slf4j + slf4j-api + + + + org.apache.karaf + org.apache.karaf.util + + + org.apache.felix + org.apache.felix.cm.json + + + org.apache.sling + org.apache.sling.commons.johnzon + + + org.apache.geronimo.specs + geronimo-json_1.1_spec + 1.5 + + + org.apache.felix + org.apache.felix.fileinstall + + + + org.apache.karaf.shell + org.apache.karaf.shell.core + true + + + + org.slf4j + slf4j-jdk14 + test + + + + + + + ${project.basedir}/src/main/resources + + **/* + + + + ${project.basedir}/src/main/resources + true + + **/*.info + + + + + + org.apache.karaf.tooling + karaf-services-maven-plugin + + + org.apache.felix + maven-bundle-plugin + + + + org.apache.karaf.config.core, + org.apache.felix.utils.properties;version="${felix.utils.version}" + + + org.osgi.service.metatype, + org.osgi.framework;version="[1,3)", + * + + + org.apache.karaf.config.core.impl, + org.apache.karaf.config.core.impl.osgi, + org.apache.karaf.util, + org.apache.karaf.util.config, + org.apache.felix.utils.collections + + + + + + + + diff --git a/config/src/main/java/org/apache/karaf/config/core/ConfigMBean.java b/config/core/src/main/java/org/apache/karaf/config/core/ConfigMBean.java similarity index 100% rename from config/src/main/java/org/apache/karaf/config/core/ConfigMBean.java rename to config/core/src/main/java/org/apache/karaf/config/core/ConfigMBean.java diff --git a/config/src/main/java/org/apache/karaf/config/core/ConfigRepository.java b/config/core/src/main/java/org/apache/karaf/config/core/ConfigRepository.java similarity index 100% rename from config/src/main/java/org/apache/karaf/config/core/ConfigRepository.java rename to config/core/src/main/java/org/apache/karaf/config/core/ConfigRepository.java diff --git a/config/src/main/java/org/apache/karaf/config/core/impl/MetaServiceCaller.java b/config/core/src/main/java/org/apache/karaf/config/core/MetaServiceCaller.java similarity index 99% rename from config/src/main/java/org/apache/karaf/config/core/impl/MetaServiceCaller.java rename to config/core/src/main/java/org/apache/karaf/config/core/MetaServiceCaller.java index 87efeeba179..e98d53eeecf 100644 --- a/config/src/main/java/org/apache/karaf/config/core/impl/MetaServiceCaller.java +++ b/config/core/src/main/java/org/apache/karaf/config/core/MetaServiceCaller.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.karaf.config.core.impl; +package org.apache.karaf.config.core; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; diff --git a/config/src/main/java/org/apache/karaf/config/core/impl/ConfigMBeanImpl.java b/config/core/src/main/java/org/apache/karaf/config/core/impl/ConfigMBeanImpl.java similarity index 98% rename from config/src/main/java/org/apache/karaf/config/core/impl/ConfigMBeanImpl.java rename to config/core/src/main/java/org/apache/karaf/config/core/impl/ConfigMBeanImpl.java index 81e1fed4c93..889cf7e0e66 100644 --- a/config/src/main/java/org/apache/karaf/config/core/impl/ConfigMBeanImpl.java +++ b/config/core/src/main/java/org/apache/karaf/config/core/impl/ConfigMBeanImpl.java @@ -31,6 +31,7 @@ import org.apache.felix.utils.properties.TypedProperties; import org.apache.karaf.config.core.ConfigMBean; import org.apache.karaf.config.core.ConfigRepository; +import org.apache.karaf.util.PathUtils; import org.apache.karaf.util.StreamUtils; import org.osgi.framework.InvalidSyntaxException; import org.osgi.service.cm.Configuration; @@ -84,12 +85,10 @@ public void create(String pid) throws MBeanException { @Override public void install(String url, String finalname, boolean override) throws MBeanException { - if (finalname.contains("..")) { - throw new IllegalArgumentException("For security reason, relative path is not allowed in config file final name"); - } try { File etcFolder = new File(System.getProperty("karaf.etc")); File file = new File(etcFolder, finalname); + PathUtils.checkWithin(etcFolder, file); if (file.exists()) { if (!override) { throw new IllegalArgumentException("Configuration file {} already exists " + finalname); diff --git a/config/src/main/java/org/apache/karaf/config/core/impl/ConfigRepositoryImpl.java b/config/core/src/main/java/org/apache/karaf/config/core/impl/ConfigRepositoryImpl.java similarity index 88% rename from config/src/main/java/org/apache/karaf/config/core/impl/ConfigRepositoryImpl.java rename to config/core/src/main/java/org/apache/karaf/config/core/impl/ConfigRepositoryImpl.java index c5bfa76a8be..470575377ea 100644 --- a/config/src/main/java/org/apache/karaf/config/core/impl/ConfigRepositoryImpl.java +++ b/config/core/src/main/java/org/apache/karaf/config/core/impl/ConfigRepositoryImpl.java @@ -33,6 +33,7 @@ import org.apache.felix.cm.json.Configurations; import org.apache.felix.utils.properties.TypedProperties; import org.apache.karaf.config.core.ConfigRepository; +import org.apache.karaf.util.PathUtils; import org.osgi.framework.Constants; import org.osgi.framework.InvalidSyntaxException; import org.osgi.service.cm.Configuration; @@ -83,6 +84,7 @@ public void update(String pid, Map properties, String suffix) th if (file == null) { file = generateConfigFilename(cfg, suffix); } + checkConfigFileLocation(file); props.putAll(properties); props.keySet().retainAll(properties.keySet()); store(props, file); @@ -109,6 +111,19 @@ private static File generateConfigFilename(Configuration cfg, String suffix) { return new File(System.getProperty("karaf.etc"), fName); } + /** + * Ensure that the configuration file we are about to write stays within the Karaf etc folder. + * + *

The target file is derived from caller-controlled input: a {@code felix.fileinstall.filename} + * entry in the property map can point to an arbitrary path, and a PID (or factory alias) containing + * {@code ..} segments escapes {@code ${karaf.etc}} through {@link #generateConfigFilename}. Without + * this check a user allowed to update configurations could overwrite files reserved to more + * privileged users (e.g. {@code etc/users.properties} or the command/JMX ACL files).

+ */ + private static void checkConfigFileLocation(File file) throws IOException { + PathUtils.checkWithin(new File(System.getProperty("karaf.etc")), file); + } + /* (non-Javadoc) * @see org.apache.karaf.shell.config.impl.ConfigRepository#delete(java.lang.String) */ @@ -165,6 +180,12 @@ public TypedProperties getConfig(String pid) throws IOException, InvalidSyntaxEx } if (file != null && file.exists()) { tp = load(file); + + Object fileInstallFileName = props.get(FILEINSTALL_FILE_NAME); + if (fileInstallFileName != null && !"".equals(fileInstallFileName)) { + tp.put(FILEINSTALL_FILE_NAME, fileInstallFileName); + } + } else { for (Enumeration e = props.keys(); e.hasMoreElements();) { String key = e.nextElement(); @@ -198,12 +219,14 @@ public String createFactoryConfiguration(String factoryPid, String alias, Map properties, String suffix) throws IOException { - Configuration config = configAdmin.createFactoryConfiguration(factoryPid, "?"); - TypedProperties props = new TypedProperties(); File file = null; if (alias != null && !"".equals(alias.trim())) { file = new File(new File(System.getProperty("karaf.etc")), factoryPid + "-" + alias + "." + suffix); - } else { + checkConfigFileLocation(file); + } + Configuration config = configAdmin.createFactoryConfiguration(factoryPid, "?"); + TypedProperties props = new TypedProperties(); + if (file == null) { file = Files.createTempFile(new File(System.getProperty("karaf.etc")).toPath(), factoryPid + "-", "." + suffix).toFile(); } props.putAll(properties); diff --git a/config/src/main/java/org/apache/karaf/config/core/impl/JsonConfigInstaller.java b/config/core/src/main/java/org/apache/karaf/config/core/impl/JsonConfigInstaller.java similarity index 100% rename from config/src/main/java/org/apache/karaf/config/core/impl/JsonConfigInstaller.java rename to config/core/src/main/java/org/apache/karaf/config/core/impl/JsonConfigInstaller.java diff --git a/config/src/main/java/org/apache/karaf/config/core/impl/KarafConfigurationPlugin.java b/config/core/src/main/java/org/apache/karaf/config/core/impl/KarafConfigurationPlugin.java similarity index 60% rename from config/src/main/java/org/apache/karaf/config/core/impl/KarafConfigurationPlugin.java rename to config/core/src/main/java/org/apache/karaf/config/core/impl/KarafConfigurationPlugin.java index 4adb316d15f..27099a0fd33 100644 --- a/config/src/main/java/org/apache/karaf/config/core/impl/KarafConfigurationPlugin.java +++ b/config/core/src/main/java/org/apache/karaf/config/core/impl/KarafConfigurationPlugin.java @@ -33,22 +33,43 @@ public void modifyConfiguration(ServiceReference reference, Dictionary keys = properties.keys(); keys.hasMoreElements(); ) { String key = keys.nextElement(); + // looking for env variable and system property matching key (pid.key).toUpperCase().replace('.', '_').replace('-', '_').replace('~', '_') String env = (pid + "." + key).toUpperCase().replaceAll("\\.", "_").replace("-", "_").replace("~", "_"); String sys = pid + "." + key; + if (System.getenv(env) != null) { - String value = InterpolationHelper.substVars(System.getenv(env), null,null, convertDictionaryToMap(properties)); - if (properties.get(key) != null && (properties.get(key) instanceof Number)) { - properties.put(key, Integer.parseInt(value)); + + String value = System.getenv(env); + + if (value.startsWith("[") && value.endsWith("]")) { + String[] values = value.substring(1, value.length() - 1).split(","); + values = Arrays.stream(values).map(e -> InterpolationHelper.substVars(e, null,null, convertDictionaryToMap(properties))).toArray(String[]::new); + properties.put(key, values); } else { - properties.put(key, value); + value = InterpolationHelper.substVars(value, null,null, convertDictionaryToMap(properties)); + if (properties.get(key) != null && (properties.get(key) instanceof Number)) { + properties.put(key, Integer.parseInt(value)); + } else { + properties.put(key, value); + } } + } else if (System.getProperty(sys) != null) { - String value = InterpolationHelper.substVars(System.getProperty(sys), null, null, convertDictionaryToMap(properties)); - if (properties.get(key) != null && (properties.get(key) instanceof Number)) { - properties.put(key, Integer.parseInt(value)); + + String value = System.getProperty(sys); + + if (value.startsWith("[") && value.endsWith("]")) { + String[] values= value.substring(1, value.length() - 1).split(","); + values = Arrays.stream(values).map(e -> InterpolationHelper.substVars(e, null,null, convertDictionaryToMap(properties))).toArray(String[]::new); + properties.put(key, values); } else { - properties.put(key, value); + value = InterpolationHelper.substVars(value, null,null, convertDictionaryToMap(properties)); + if (properties.get(key) != null && (properties.get(key) instanceof Number)) { + properties.put(key, Integer.parseInt(value)); + } else { + properties.put(key, value); + } } } } diff --git a/config/src/main/java/org/apache/karaf/config/core/impl/osgi/Activator.java b/config/core/src/main/java/org/apache/karaf/config/core/impl/osgi/Activator.java similarity index 100% rename from config/src/main/java/org/apache/karaf/config/core/impl/osgi/Activator.java rename to config/core/src/main/java/org/apache/karaf/config/core/impl/osgi/Activator.java diff --git a/config/src/main/resources/OSGI-INF/metatype/metatype.properties b/config/core/src/main/resources/OSGI-INF/metatype/metatype.properties similarity index 90% rename from config/src/main/resources/OSGI-INF/metatype/metatype.properties rename to config/core/src/main/resources/OSGI-INF/metatype/metatype.properties index 3bce187b350..662d2a85a16 100644 --- a/config/src/main/resources/OSGI-INF/metatype/metatype.properties +++ b/config/core/src/main/resources/OSGI-INF/metatype/metatype.properties @@ -21,8 +21,8 @@ # This file contains localization strings for configuration labels and # descriptions as used in the metatype.xml descriptor -config.name = Apache Karaf Shell Config -config.description = Configuration of Apache Karaf Shell Config +config.name = Apache Karaf Config +config.description = Configuration of Apache Karaf Config storage.name = Storage directory storage.description = the directory used as a storage for configurations diff --git a/config/src/main/resources/OSGI-INF/metatype/metatype.xml b/config/core/src/main/resources/OSGI-INF/metatype/metatype.xml similarity index 100% rename from config/src/main/resources/OSGI-INF/metatype/metatype.xml rename to config/core/src/main/resources/OSGI-INF/metatype/metatype.xml diff --git a/config/src/test/java/org/apache/karaf/config/core/impl/ConfigMBeanImplTest.java b/config/core/src/test/java/org/apache/karaf/config/core/impl/ConfigMBeanImplTest.java similarity index 95% rename from config/src/test/java/org/apache/karaf/config/core/impl/ConfigMBeanImplTest.java rename to config/core/src/test/java/org/apache/karaf/config/core/impl/ConfigMBeanImplTest.java index 4bdf08abf90..908f30594da 100644 --- a/config/src/test/java/org/apache/karaf/config/core/impl/ConfigMBeanImplTest.java +++ b/config/core/src/test/java/org/apache/karaf/config/core/impl/ConfigMBeanImplTest.java @@ -16,13 +16,15 @@ import org.junit.Assert; import org.junit.Test; +import javax.management.MBeanException; + import java.io.BufferedReader; import java.io.File; import java.io.FileReader; public class ConfigMBeanImplTest { - @Test(expected = IllegalArgumentException.class) + @Test(expected = MBeanException.class) public void testInstallWithNonAuthorizePath() throws Exception { System.setProperty("karaf.etc", "."); diff --git a/config/core/src/test/java/org/apache/karaf/config/core/impl/ConfigRepositoryImplContainmentTest.java b/config/core/src/test/java/org/apache/karaf/config/core/impl/ConfigRepositoryImplContainmentTest.java new file mode 100644 index 00000000000..a1f0f7f5862 --- /dev/null +++ b/config/core/src/test/java/org/apache/karaf/config/core/impl/ConfigRepositoryImplContainmentTest.java @@ -0,0 +1,137 @@ +/* + * Licensed 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. + */ +package org.apache.karaf.config.core.impl; + +import static org.easymock.EasyMock.anyObject; +import static org.easymock.EasyMock.createMock; +import static org.easymock.EasyMock.expect; +import static org.easymock.EasyMock.expectLastCall; +import static org.easymock.EasyMock.replay; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Hashtable; + +import org.apache.felix.utils.properties.TypedProperties; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.osgi.service.cm.Configuration; +import org.osgi.service.cm.ConfigurationAdmin; + +/** + * Verifies that {@link ConfigRepositoryImpl} refuses to persist a configuration outside of + * {@code ${karaf.etc}}, whether the escape is attempted through a crafted PID or through a + * caller-supplied {@code felix.fileinstall.filename} property. + */ +public class ConfigRepositoryImplContainmentTest { + + private Path etc; + private Path outside; + private String previousEtc; + + @Before + public void setUp() throws Exception { + Path base = Files.createTempDirectory("karaf-config-containment"); + etc = Files.createDirectories(base.resolve("etc")); + outside = Files.createDirectories(base.resolve("outside")); + previousEtc = System.getProperty("karaf.etc"); + System.setProperty("karaf.etc", etc.toFile().getCanonicalPath()); + } + + @After + public void tearDown() { + if (previousEtc == null) { + System.clearProperty("karaf.etc"); + } else { + System.setProperty("karaf.etc", previousEtc); + } + } + + private ConfigRepositoryImpl repository(String pid) throws Exception { + ConfigurationAdmin admin = createMock(ConfigurationAdmin.class); + Configuration config = createMock(Configuration.class); + expect(admin.getConfiguration(pid, "?")).andReturn(config).anyTimes(); + expect(config.getProcessedProperties(anyObject())).andReturn(new Hashtable<>()).anyTimes(); + expect(config.getPid()).andReturn(pid).anyTimes(); + expect(config.getFactoryPid()).andReturn(null).anyTimes(); + config.update(anyObject()); + expectLastCall().anyTimes(); + replay(admin, config); + return new ConfigRepositoryImpl(admin); + } + + @Test + public void traversalPidIsRejected() throws Exception { + String pid = "../outside/evil"; + try { + repository(pid).update(pid, new TypedProperties()); + fail("expected the traversal PID to be rejected"); + } catch (IOException e) { + // expected + } + assertFalse("no file must be written outside etc", Files.exists(outside.resolve("evil.cfg"))); + } + + @Test + public void fileinstallFilenameOutsideEtcIsRejected() throws Exception { + String pid = "my.legit.pid"; + File escape = outside.resolve("evil.cfg").toFile(); + TypedProperties properties = new TypedProperties(); + properties.put("felix.fileinstall.filename", escape.toURI().toString()); + try { + repository(pid).update(pid, properties); + fail("expected the out-of-etc felix.fileinstall.filename to be rejected"); + } catch (IOException e) { + // expected + } + assertFalse("no file must be written outside etc", escape.exists()); + } + + @Test + public void factoryAliasTraversalIsRejected() throws Exception { + ConfigurationAdmin admin = createMock(ConfigurationAdmin.class); + Configuration config = createMock(Configuration.class); + expect(admin.createFactoryConfiguration("my.factory", "?")).andReturn(config).anyTimes(); + expect(config.getPid()).andReturn("my.factory.generated").anyTimes(); + config.update(anyObject()); + expectLastCall().anyTimes(); + replay(admin, config); + + // the alias is concatenated as "-.", so an escaping payload + // needs a leading path segment before the ".." sequence + try { + new ConfigRepositoryImpl(admin) + .createFactoryConfiguration("my.factory", "x/../../outside/evil", new TypedProperties()); + fail("expected the traversal alias to be rejected"); + } catch (IOException e) { + // expected + } + assertFalse(Files.exists(outside.resolve("evil.cfg"))); + } + + @Test + public void regularUpdateStillWritesInsideEtc() throws Exception { + String pid = "my.regular.pid"; + TypedProperties properties = new TypedProperties(); + properties.put("hello", "world"); + repository(pid).update(pid, properties); + assertTrue("the cfg file must land in etc", Files.exists(etc.resolve("my.regular.pid.cfg"))); + } +} diff --git a/config/core/src/test/java/org/apache/karaf/config/core/impl/FelixFileInstallFilenameTest.java b/config/core/src/test/java/org/apache/karaf/config/core/impl/FelixFileInstallFilenameTest.java new file mode 100644 index 00000000000..8af12367131 --- /dev/null +++ b/config/core/src/test/java/org/apache/karaf/config/core/impl/FelixFileInstallFilenameTest.java @@ -0,0 +1,90 @@ +/* + * Licensed 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. + */ +package org.apache.karaf.config.core.impl; + +import junit.framework.TestCase; +import org.apache.felix.utils.properties.TypedProperties; +import org.osgi.framework.InvalidSyntaxException; +import org.osgi.service.cm.Configuration; +import org.osgi.service.cm.ConfigurationAdmin; + +import java.io.IOException; +import java.net.URI; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.Dictionary; +import java.util.Hashtable; +import java.util.Map; +import java.util.Properties; + +import static org.easymock.EasyMock.*; + +public class FelixFileInstallFilenameTest extends TestCase { + + private static final String PID = "my.test.persistent.id"; + + private static final String CFG_TEST_FILE = "src/test/resources/test.cfg"; + + private static final URI CFG_TEST_FILE_URI = Paths.get(CFG_TEST_FILE).toUri(); + + private static final String FILE_INSTALL_FILENAME = "felix.fileinstall.filename"; + + private ConfigRepositoryImpl configRepository; + + @Override + protected void setUp() throws Exception { + ConfigurationAdmin admin = createMock(ConfigurationAdmin.class); + configRepository = new ConfigRepositoryImpl(admin); + + Configuration config = createMock(Configuration.class); + expect(admin.getConfiguration(PID, null)).andReturn(config); + replay(admin); + + Properties properties = new Properties(); + properties.load(Files.newInputStream(Paths.get(CFG_TEST_FILE))); + + Dictionary dictionary = new Hashtable<>(); + for (Map.Entry entry : properties.entrySet()) { + dictionary.put(String.valueOf(entry.getKey()), entry.getValue()); + } + dictionary.put(FILE_INSTALL_FILENAME, CFG_TEST_FILE_URI); + + expect(config.getProcessedProperties(null)) + .andReturn(dictionary); + replay(config); + } + + public void testGetConfig() throws InvalidSyntaxException, IOException { + + TypedProperties tp = configRepository.getConfig(PID); + + assertNotNull("The felix.fileinstall.filename properties should be present", + tp.get(FILE_INSTALL_FILENAME)); + + assertEquals("The felix.fileinstall.filename properties should be set on PID configs", + CFG_TEST_FILE_URI.toString(), tp.get(FILE_INSTALL_FILENAME)); + } + + public void testMBeanListProperties() throws Exception { + + ConfigMBeanImpl configMBean = new ConfigMBeanImpl(); + configMBean.setConfigRepo(configRepository); + + Map pidProps = configMBean.listProperties(PID); + + assertNotNull("The felix.fileinstall.filename properties should be present", + pidProps.get(FILE_INSTALL_FILENAME)); + } + +} \ No newline at end of file diff --git a/config/src/test/java/org/apache/karaf/config/core/impl/JsonConfigInstallerTest.java b/config/core/src/test/java/org/apache/karaf/config/core/impl/JsonConfigInstallerTest.java similarity index 100% rename from config/src/test/java/org/apache/karaf/config/core/impl/JsonConfigInstallerTest.java rename to config/core/src/test/java/org/apache/karaf/config/core/impl/JsonConfigInstallerTest.java diff --git a/config/src/test/java/org/apache/karaf/config/core/impl/KarafConfigurationPluginTest.java b/config/core/src/test/java/org/apache/karaf/config/core/impl/KarafConfigurationPluginTest.java similarity index 85% rename from config/src/test/java/org/apache/karaf/config/core/impl/KarafConfigurationPluginTest.java rename to config/core/src/test/java/org/apache/karaf/config/core/impl/KarafConfigurationPluginTest.java index cd2a138b7bc..3a0c158a57a 100644 --- a/config/src/test/java/org/apache/karaf/config/core/impl/KarafConfigurationPluginTest.java +++ b/config/core/src/test/java/org/apache/karaf/config/core/impl/KarafConfigurationPluginTest.java @@ -28,14 +28,19 @@ public class KarafConfigurationPluginTest { @Test public void testSystemProperty() throws Exception { System.setProperty("org.apache.karaf.shell.sshPort", "8102"); + System.setProperty("org.apache.karaf.shell.sshPorts", "[8102,8103]"); KarafConfigurationPlugin plugin = new KarafConfigurationPlugin(); Dictionary properties = new Hashtable<>(); properties.put(Constants.SERVICE_PID, "org.apache.karaf.shell"); properties.put("foo", "bar"); properties.put("sshPort", 8101); + properties.put("sshPorts", new String[] { "8102" }); plugin.modifyConfiguration(null, properties); Assert.assertEquals(8102, properties.get("sshPort")); + Assert.assertEquals(2, ((String[])properties.get("sshPorts")).length); + Assert.assertEquals("8102", ((String[])properties.get("sshPorts"))[0]); + Assert.assertEquals("8103", ((String[])properties.get("sshPorts"))[1]); Assert.assertEquals("bar", properties.get("foo")); } diff --git a/config/src/test/resources/org.example.Arrays~no_update_required.cfg.json b/config/core/src/test/resources/org.example.Arrays~no_update_required.cfg.json similarity index 100% rename from config/src/test/resources/org.example.Arrays~no_update_required.cfg.json rename to config/core/src/test/resources/org.example.Arrays~no_update_required.cfg.json diff --git a/config/src/test/resources/org.example.Arrays~update_required.cfg.json b/config/core/src/test/resources/org.example.Arrays~update_required.cfg.json similarity index 100% rename from config/src/test/resources/org.example.Arrays~update_required.cfg.json rename to config/core/src/test/resources/org.example.Arrays~update_required.cfg.json diff --git a/config/src/test/resources/test.cfg b/config/core/src/test/resources/test.cfg similarity index 100% rename from config/src/test/resources/test.cfg rename to config/core/src/test/resources/test.cfg diff --git a/config/pom.xml b/config/pom.xml index a268df7d999..1966118a69b 100644 --- a/config/pom.xml +++ b/config/pom.xml @@ -24,142 +24,18 @@ org.apache.karaf karaf - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml org.apache.karaf.config - org.apache.karaf.config.core - bundle - Apache Karaf :: ConfigAdmin :: Core - This bundle provides Karaf services + config + pom + Apache Karaf :: ConfigAdmin - - ${basedir}/../etc/appended-resources - + + core + command + - - - - org.apache.karaf - karaf-bom - ${project.version} - pom - import - - - - - - - org.osgi - osgi.core - provided - - - org.osgi - org.osgi.service.cm - provided - - - org.osgi - org.osgi.service.metatype - provided - - - org.osgi - org.osgi.util.converter - 1.0.9 - provided - - - - org.slf4j - slf4j-api - - - - org.apache.karaf - org.apache.karaf.util - - - org.apache.felix - org.apache.felix.cm.json - - - org.apache.sling - org.apache.sling.commons.johnzon - - - org.apache.geronimo.specs - geronimo-json_1.1_spec - 1.5 - - - org.apache.felix - org.apache.felix.fileinstall - - - - org.apache.karaf.shell - org.apache.karaf.shell.core - true - - - - org.slf4j - slf4j-jdk14 - test - - - - - - - ${project.basedir}/src/main/resources - - **/* - - - - ${project.basedir}/src/main/resources - true - - **/*.info - - - - - - org.apache.karaf.tooling - karaf-services-maven-plugin - - - org.apache.felix - maven-bundle-plugin - - - - org.apache.karaf.config.command*, - org.apache.karaf.config.core, - org.apache.felix.utils.properties;version="${felix.utils.version}" - - - org.osgi.service.metatype;resolution:=optional, - org.osgi.framework;version="[1,3)", - * - - - org.apache.karaf.config.core.impl, - org.apache.karaf.config.core.impl.osgi, - org.apache.karaf.util, - org.apache.karaf.util.config, - org.apache.felix.utils.collections - - - - - - - - + \ No newline at end of file diff --git a/deployer/blueprint/pom.xml b/deployer/blueprint/pom.xml index 0d83af98af6..48a6716da53 100644 --- a/deployer/blueprint/pom.xml +++ b/deployer/blueprint/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.deployer deployer - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -68,8 +68,11 @@ org.osgi - osgi.core - provided + org.osgi.framework + + + org.osgi + org.osgi.service.url org.apache.felix diff --git a/deployer/features/pom.xml b/deployer/features/pom.xml index 66d6efaa0dd..8d55264ca13 100644 --- a/deployer/features/pom.xml +++ b/deployer/features/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.deployer deployer - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -62,14 +62,15 @@ org.osgi - osgi.core - provided + org.osgi.framework org.osgi org.osgi.annotation.versioning - ${org.osgi.annotation.versioning.version} - provided + + + org.osgi + org.osgi.service.url org.springframework.osgi diff --git a/deployer/kar/pom.xml b/deployer/kar/pom.xml index 6b60c2019ff..1119b68d7e7 100644 --- a/deployer/kar/pom.xml +++ b/deployer/kar/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.deployer deployer - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -62,8 +62,7 @@ org.osgi - osgi.core - provided + org.osgi.framework diff --git a/deployer/kar/src/test/java/org/apache/karaf/deployer/kar/KarArtifactInstallerTest.java b/deployer/kar/src/test/java/org/apache/karaf/deployer/kar/KarArtifactInstallerTest.java index 1ef41909463..8c3a2a6b3e1 100644 --- a/deployer/kar/src/test/java/org/apache/karaf/deployer/kar/KarArtifactInstallerTest.java +++ b/deployer/kar/src/test/java/org/apache/karaf/deployer/kar/KarArtifactInstallerTest.java @@ -23,9 +23,22 @@ import static org.junit.Assert.assertTrue; import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; import java.net.URI; +import java.net.URL; +import java.nio.file.FileVisitResult; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.SimpleFileVisitor; +import java.nio.file.attribute.BasicFileAttributes; import java.util.Collections; import java.util.List; +import java.util.jar.JarOutputStream; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; import org.apache.karaf.kar.KarService; import org.junit.Before; @@ -39,16 +52,100 @@ public class KarArtifactInstallerTest { private URI zipFileWithKarafManifest; private URI zipFileWithoutKarafManifest; private URI badZipFile; - + + private void createTestFiles() throws Exception { + // create goodKarFile.kar + File karFile = new File("target/test-classes/goodKarFile.kar"); + karFile.getParentFile().mkdirs(); + + URL karFileResource = getClass().getClassLoader().getResource("goodKarFile"); + File karFileSourceDir = new File(karFileResource.toURI()); + createJarFromFolder(karFileSourceDir.toPath(), karFile); + + goodKarFile = karFile.toURI(); + + // create karFileAsZip.zip + File zipFile = new File("target/test-classes/karFileAsZip.zip"); + zipFile.getParentFile().mkdirs(); + + URL karFileAsZipResource = getClass().getClassLoader().getResource("karFileAsZip"); + File karFileAsZipSourceDir = new File(karFileAsZipResource.toURI()); + createZipFromFolder(karFileAsZipSourceDir.toPath(), zipFile); + + zipFileWithKarafManifest = zipFile.toURI(); + + // create karFileAsZipNoManifest.zip + File zipFileWithoutKarafManifestFile = new File("target/test-classes/karFileAsZipNoManifest.zip"); + zipFileWithoutKarafManifestFile.getParentFile().mkdirs(); + + URL karFileAsZipNoManifestResource = getClass().getClassLoader().getResource("karFileAsZipNoManifest"); + File karFileAsZipNoManifestSourceDir = new File(karFileAsZipNoManifestResource.toURI()); + createZipFromFolder(karFileAsZipNoManifestSourceDir.toPath(), zipFileWithoutKarafManifestFile); + + zipFileWithoutKarafManifest = zipFileWithoutKarafManifestFile.toURI(); + + // create badZipFile.zip + File badZipFileFile = new File("target/test-classes/badZipFile.zip"); + + try (FileOutputStream fos = new FileOutputStream(badZipFileFile)) { + fos.write("Not a valid zip file".getBytes()); + } + + badZipFile = badZipFileFile.toURI(); + } + + private void createJarFromFolder(Path sourceDir, File jarFile) throws Exception { + try (JarOutputStream jos = new JarOutputStream(new FileOutputStream(jarFile))) { + Files.walkFileTree(sourceDir, new SimpleFileVisitor() { + @Override + public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { + String entryName = sourceDir.relativize(file).toString().replace(File.separator, "/"); + jos.putNextEntry(new ZipEntry(entryName)); + try (InputStream in = new FileInputStream(file.toFile())) { + byte[] buf = new byte[4096]; + int len; + while ((len = in.read(buf)) > 0) { + jos.write(buf, 0, len); + } + } + jos.closeEntry(); + return FileVisitResult.CONTINUE; + } + }); + } + } + + private void createZipFromFolder(Path sourceDir, File zipFile) throws Exception { + try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile))) { + Files.walkFileTree(sourceDir, new SimpleFileVisitor() { + @Override + public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { + String entryName = sourceDir.relativize(file).toString().replace(File.separator, "/"); + zos.putNextEntry(new ZipEntry(entryName)); + try (InputStream in = new FileInputStream(file.toFile())) { + byte[] buf = new byte[4096]; + int len; + while ((len = in.read(buf)) > 0) { + zos.write(buf, 0, len); + } + } + zos.closeEntry(); + return FileVisitResult.CONTINUE; + } + }); + } + } + @Before public void setUp() throws Exception { + createTestFiles(); + karService = createMock(KarService.class); karArtifactInstaller = new KarArtifactInstaller(); karArtifactInstaller.setKarService(karService); - goodKarFile = getClass().getClassLoader().getResource("goodKarFile.kar").toURI(); zipFileWithKarafManifest = getClass().getClassLoader().getResource("karFileAsZip.zip").toURI(); zipFileWithoutKarafManifest = getClass().getClassLoader().getResource("karFileAsZipNoManifest.zip").toURI(); badZipFile = getClass().getClassLoader().getResource("badZipFile.zip").toURI(); diff --git a/deployer/kar/src/test/resources/badZipFile.zip b/deployer/kar/src/test/resources/badZipFile.zip deleted file mode 100644 index b158994d410..00000000000 --- a/deployer/kar/src/test/resources/badZipFile.zip +++ /dev/null @@ -1 +0,0 @@ -This is *not* a well formed .kar file :( \ No newline at end of file diff --git a/deployer/kar/src/test/resources/goodKarFile.kar b/deployer/kar/src/test/resources/goodKarFile.kar deleted file mode 100644 index 18abf7db60d..00000000000 Binary files a/deployer/kar/src/test/resources/goodKarFile.kar and /dev/null differ diff --git a/deployer/kar/src/test/resources/goodKarFile/org/bar/hello.txt b/deployer/kar/src/test/resources/goodKarFile/org/bar/hello.txt new file mode 100644 index 00000000000..52db93c6cdb --- /dev/null +++ b/deployer/kar/src/test/resources/goodKarFile/org/bar/hello.txt @@ -0,0 +1,16 @@ + \ No newline at end of file diff --git a/deployer/kar/src/test/resources/karFileAsZip.zip b/deployer/kar/src/test/resources/karFileAsZip.zip deleted file mode 100644 index af29c3be13e..00000000000 Binary files a/deployer/kar/src/test/resources/karFileAsZip.zip and /dev/null differ diff --git a/deployer/kar/src/test/resources/karFileAsZip/META-INF/KARAF.MF b/deployer/kar/src/test/resources/karFileAsZip/META-INF/KARAF.MF new file mode 100644 index 00000000000..52db93c6cdb --- /dev/null +++ b/deployer/kar/src/test/resources/karFileAsZip/META-INF/KARAF.MF @@ -0,0 +1,16 @@ + \ No newline at end of file diff --git a/deployer/kar/src/test/resources/karFileAsZip/org/bar/hello.txt b/deployer/kar/src/test/resources/karFileAsZip/org/bar/hello.txt new file mode 100644 index 00000000000..52db93c6cdb --- /dev/null +++ b/deployer/kar/src/test/resources/karFileAsZip/org/bar/hello.txt @@ -0,0 +1,16 @@ + \ No newline at end of file diff --git a/deployer/kar/src/test/resources/karFileAsZipNoManifest.zip b/deployer/kar/src/test/resources/karFileAsZipNoManifest.zip deleted file mode 100644 index d4ced05438e..00000000000 Binary files a/deployer/kar/src/test/resources/karFileAsZipNoManifest.zip and /dev/null differ diff --git a/deployer/kar/src/test/resources/karFileAsZipNoManifest/org/bar/hello.txt b/deployer/kar/src/test/resources/karFileAsZipNoManifest/org/bar/hello.txt new file mode 100644 index 00000000000..52db93c6cdb --- /dev/null +++ b/deployer/kar/src/test/resources/karFileAsZipNoManifest/org/bar/hello.txt @@ -0,0 +1,16 @@ + \ No newline at end of file diff --git a/deployer/pom.xml b/deployer/pom.xml index 56cc4d1f5a9..e787e69ce8a 100644 --- a/deployer/pom.xml +++ b/deployer/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf karaf - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/deployer/spring/pom.xml b/deployer/spring/pom.xml index 6b53c45f9db..0480a8ad31a 100644 --- a/deployer/spring/pom.xml +++ b/deployer/spring/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.deployer deployer - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -67,8 +67,11 @@ org.osgi - osgi.core - provided + org.osgi.framework + + + org.osgi + org.osgi.service.url org.springframework.osgi diff --git a/deployer/wrap/pom.xml b/deployer/wrap/pom.xml index 63b75b278f6..612cbf2c6d8 100644 --- a/deployer/wrap/pom.xml +++ b/deployer/wrap/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.deployer deployer - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -57,8 +57,11 @@ org.osgi - osgi.core - provided + org.osgi.framework + + + org.osgi + org.osgi.service.url org.apache.felix diff --git a/diagnostic/boot/pom.xml b/diagnostic/boot/pom.xml index 1961f40e186..7729fd28f58 100644 --- a/diagnostic/boot/pom.xml +++ b/diagnostic/boot/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.diagnostic diagnostic - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -53,8 +53,7 @@ org.osgi - osgi.core - provided + org.osgi.framework diff --git a/diagnostic/core/pom.xml b/diagnostic/core/pom.xml index 6d106d0f237..550c49424bd 100644 --- a/diagnostic/core/pom.xml +++ b/diagnostic/core/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.diagnostic diagnostic - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -53,13 +53,15 @@ org.osgi - osgi.core - provided + org.osgi.framework org.osgi org.osgi.service.cm - provided + + + org.osgi + org.osgi.util.tracker diff --git a/diagnostic/pom.xml b/diagnostic/pom.xml index b239f45d290..12772697561 100644 --- a/diagnostic/pom.xml +++ b/diagnostic/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf karaf - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/docker/pom.xml b/docker/pom.xml index b55d51b42e5..550aa895e61 100644 --- a/docker/pom.xml +++ b/docker/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf karaf - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -52,8 +52,7 @@ org.osgi - osgi.core - provided + org.osgi.framework com.fasterxml.jackson.core diff --git a/etc/appended-resources/supplemental-models.xml b/etc/appended-resources/supplemental-models.xml index b1e24647b94..6af1fd82252 100644 --- a/etc/appended-resources/supplemental-models.xml +++ b/etc/appended-resources/supplemental-models.xml @@ -313,23 +313,6 @@ - - - commons-collections - commons-collections - Apache Commons Collections - - The Apache Software Foundation - http://www.apache.org/ - - - - The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - - - - commons-jexl diff --git a/event/pom.xml b/event/pom.xml index 4427fd17b35..5d213c96b15 100644 --- a/event/pom.xml +++ b/event/pom.xml @@ -24,7 +24,7 @@ karaf org.apache.karaf - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -66,8 +66,11 @@ org.osgi - osgi.core - provided + org.osgi.framework + + + org.osgi + org.osgi.service.event org.apache.felix diff --git a/event/src/main/java/org/apache/karaf/event/command/EventPrinter.java b/event/src/main/java/org/apache/karaf/event/command/EventPrinter.java index 9736e405bfa..42a92a9ece4 100644 --- a/event/src/main/java/org/apache/karaf/event/command/EventPrinter.java +++ b/event/src/main/java/org/apache/karaf/event/command/EventPrinter.java @@ -37,14 +37,14 @@ public EventPrinter(PrintStream out, boolean verbose) { @Override public void accept(Event event) { - out.println(getTimeStamp(event) + " - " + event.getTopic()); + out.print(getTimeStamp(event) + " - " + event.getTopic() + "\n"); if (verbose) { for (String key : event.getPropertyNames()) { if (!key.equals("event.topics") && !key.equals("timestamp")) { - out.println(key + ": " + getPrintValue(event, key)); + out.print(key + ": " + getPrintValue(event, key) + "\n"); } } - out.println(); + out.print("\n"); out.flush(); } } diff --git a/examples/karaf-blueprint-example/karaf-blueprint-example-client/pom.xml b/examples/karaf-blueprint-example/karaf-blueprint-example-client/pom.xml index 6396f4b3b3d..221ab55719c 100644 --- a/examples/karaf-blueprint-example/karaf-blueprint-example-client/pom.xml +++ b/examples/karaf-blueprint-example/karaf-blueprint-example-client/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-blueprint-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-blueprint-example/karaf-blueprint-example-common/pom.xml b/examples/karaf-blueprint-example/karaf-blueprint-example-common/pom.xml index 791dc5c7db6..6e557acc6dd 100644 --- a/examples/karaf-blueprint-example/karaf-blueprint-example-common/pom.xml +++ b/examples/karaf-blueprint-example/karaf-blueprint-example-common/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-blueprint-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -36,7 +36,7 @@ org.osgi osgi.annotation - 7.0.0 + 8.1.0 diff --git a/examples/karaf-blueprint-example/karaf-blueprint-example-features/pom.xml b/examples/karaf-blueprint-example/karaf-blueprint-example-features/pom.xml index c77f856f83e..e105da85efe 100644 --- a/examples/karaf-blueprint-example/karaf-blueprint-example-features/pom.xml +++ b/examples/karaf-blueprint-example/karaf-blueprint-example-features/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-blueprint-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-blueprint-example/karaf-blueprint-example-provider/pom.xml b/examples/karaf-blueprint-example/karaf-blueprint-example-provider/pom.xml index 6bd13670ae9..0f763216a9a 100644 --- a/examples/karaf-blueprint-example/karaf-blueprint-example-provider/pom.xml +++ b/examples/karaf-blueprint-example/karaf-blueprint-example-provider/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-blueprint-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -41,7 +41,7 @@ org.apache.aries.blueprint blueprint-maven-plugin-annotation - 1.0.0 + 1.3.0 diff --git a/examples/karaf-blueprint-example/pom.xml b/examples/karaf-blueprint-example/pom.xml index 871ffd6ce16..4165fa513ff 100644 --- a/examples/karaf-blueprint-example/pom.xml +++ b/examples/karaf-blueprint-example/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples apache-karaf-examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-branding-example/pom.xml b/examples/karaf-branding-example/pom.xml index 28904b60f8e..1598090caf7 100644 --- a/examples/karaf-branding-example/pom.xml +++ b/examples/karaf-branding-example/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples apache-karaf-examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-bundle-example/karaf-bundle-example-client/pom.xml b/examples/karaf-bundle-example/karaf-bundle-example-client/pom.xml index 6103948b7b1..4c8cad28a4d 100644 --- a/examples/karaf-bundle-example/karaf-bundle-example-client/pom.xml +++ b/examples/karaf-bundle-example/karaf-bundle-example-client/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-bundle-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-bundle-example/karaf-bundle-example-common/pom.xml b/examples/karaf-bundle-example/karaf-bundle-example-common/pom.xml index 86edc83c161..cb92258956f 100644 --- a/examples/karaf-bundle-example/karaf-bundle-example-common/pom.xml +++ b/examples/karaf-bundle-example/karaf-bundle-example-common/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-bundle-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -36,7 +36,7 @@ org.osgi osgi.annotation - 7.0.0 + 8.1.0 diff --git a/examples/karaf-bundle-example/karaf-bundle-example-features/pom.xml b/examples/karaf-bundle-example/karaf-bundle-example-features/pom.xml index 23319f5e932..041d6f01aaf 100644 --- a/examples/karaf-bundle-example/karaf-bundle-example-features/pom.xml +++ b/examples/karaf-bundle-example/karaf-bundle-example-features/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-bundle-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-bundle-example/karaf-bundle-example-provider/pom.xml b/examples/karaf-bundle-example/karaf-bundle-example-provider/pom.xml index bddd5c0ba49..7b203b5e8dd 100644 --- a/examples/karaf-bundle-example/karaf-bundle-example-provider/pom.xml +++ b/examples/karaf-bundle-example/karaf-bundle-example-provider/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-bundle-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-bundle-example/pom.xml b/examples/karaf-bundle-example/pom.xml index 132b7418307..5f107f0e96a 100644 --- a/examples/karaf-bundle-example/pom.xml +++ b/examples/karaf-bundle-example/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples apache-karaf-examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-camel-example/karaf-camel-example-blueprint/pom.xml b/examples/karaf-camel-example/karaf-camel-example-blueprint/pom.xml index 691b77fa43a..a50783eb090 100644 --- a/examples/karaf-camel-example/karaf-camel-example-blueprint/pom.xml +++ b/examples/karaf-camel-example/karaf-camel-example-blueprint/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-camel-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-camel-example/karaf-camel-example-features/pom.xml b/examples/karaf-camel-example/karaf-camel-example-features/pom.xml index 5bf1afb786a..d74bbc186ae 100644 --- a/examples/karaf-camel-example/karaf-camel-example-features/pom.xml +++ b/examples/karaf-camel-example/karaf-camel-example-features/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-camel-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-camel-example/karaf-camel-example-java/pom.xml b/examples/karaf-camel-example/karaf-camel-example-java/pom.xml index b6a602a2b02..8e40628b3d0 100644 --- a/examples/karaf-camel-example/karaf-camel-example-java/pom.xml +++ b/examples/karaf-camel-example/karaf-camel-example-java/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-camel-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-camel-example/pom.xml b/examples/karaf-camel-example/pom.xml index ea594e2c099..e519cabbee1 100644 --- a/examples/karaf-camel-example/pom.xml +++ b/examples/karaf-camel-example/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples apache-karaf-examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-cdi-example/karaf-cdi-example-api/pom.xml b/examples/karaf-cdi-example/karaf-cdi-example-api/pom.xml index ac2ef8ad3bd..815e27965b6 100644 --- a/examples/karaf-cdi-example/karaf-cdi-example-api/pom.xml +++ b/examples/karaf-cdi-example/karaf-cdi-example-api/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-cdi-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-cdi-example/karaf-cdi-example-consumer/pom.xml b/examples/karaf-cdi-example/karaf-cdi-example-consumer/pom.xml index aaad1a0e618..32a0c4cca89 100644 --- a/examples/karaf-cdi-example/karaf-cdi-example-consumer/pom.xml +++ b/examples/karaf-cdi-example/karaf-cdi-example-consumer/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-cdi-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-cdi-example/karaf-cdi-example-features/pom.xml b/examples/karaf-cdi-example/karaf-cdi-example-features/pom.xml index b523936edd9..178429e26b8 100644 --- a/examples/karaf-cdi-example/karaf-cdi-example-features/pom.xml +++ b/examples/karaf-cdi-example/karaf-cdi-example-features/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-cdi-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-cdi-example/karaf-cdi-example-provider/pom.xml b/examples/karaf-cdi-example/karaf-cdi-example-provider/pom.xml index 4dbb5d1f6dd..f413e9a3260 100644 --- a/examples/karaf-cdi-example/karaf-cdi-example-provider/pom.xml +++ b/examples/karaf-cdi-example/karaf-cdi-example-provider/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-cdi-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-cdi-example/pom.xml b/examples/karaf-cdi-example/pom.xml index cb5433ca943..2e69d19b204 100644 --- a/examples/karaf-cdi-example/pom.xml +++ b/examples/karaf-cdi-example/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples apache-karaf-examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-command-example/karaf-command-example-api/pom.xml b/examples/karaf-command-example/karaf-command-example-api/pom.xml index 75466d29fe9..3cf20509d4f 100644 --- a/examples/karaf-command-example/karaf-command-example-api/pom.xml +++ b/examples/karaf-command-example/karaf-command-example-api/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-command-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -36,7 +36,7 @@ org.osgi osgi.annotation - 7.0.0 + 8.1.0 diff --git a/examples/karaf-command-example/karaf-command-example-command/pom.xml b/examples/karaf-command-example/karaf-command-example-command/pom.xml index 6a779c94e62..58158f6c929 100644 --- a/examples/karaf-command-example/karaf-command-example-command/pom.xml +++ b/examples/karaf-command-example/karaf-command-example-command/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-command-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-command-example/karaf-command-example-features/pom.xml b/examples/karaf-command-example/karaf-command-example-features/pom.xml index 9081fc0f146..a9ed9435366 100644 --- a/examples/karaf-command-example/karaf-command-example-features/pom.xml +++ b/examples/karaf-command-example/karaf-command-example-features/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-command-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-command-example/karaf-command-example-provider/pom.xml b/examples/karaf-command-example/karaf-command-example-provider/pom.xml index 5a177652370..0296062b741 100644 --- a/examples/karaf-command-example/karaf-command-example-provider/pom.xml +++ b/examples/karaf-command-example/karaf-command-example-provider/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-command-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -57,7 +57,7 @@ org.osgi osgi.core - 7.0.0 + 8.0.0 diff --git a/examples/karaf-command-example/pom.xml b/examples/karaf-command-example/pom.xml index 023a201d386..24ad0251f36 100644 --- a/examples/karaf-command-example/pom.xml +++ b/examples/karaf-command-example/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples apache-karaf-examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-config-example/karaf-config-example-blueprint/pom.xml b/examples/karaf-config-example/karaf-config-example-blueprint/pom.xml index 5874d8cab50..3bbcf1b5119 100644 --- a/examples/karaf-config-example/karaf-config-example-blueprint/pom.xml +++ b/examples/karaf-config-example/karaf-config-example-blueprint/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-config-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-config-example/karaf-config-example-features/pom.xml b/examples/karaf-config-example/karaf-config-example-features/pom.xml index 0a871fd3249..5b049b155f8 100644 --- a/examples/karaf-config-example/karaf-config-example-features/pom.xml +++ b/examples/karaf-config-example/karaf-config-example-features/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-config-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-config-example/karaf-config-example-listener/pom.xml b/examples/karaf-config-example/karaf-config-example-listener/pom.xml index 33f4abf9d9a..3c16a811296 100644 --- a/examples/karaf-config-example/karaf-config-example-listener/pom.xml +++ b/examples/karaf-config-example/karaf-config-example-listener/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-config-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -42,13 +42,13 @@ org.osgi org.osgi.service.cm - 1.6.0 + 1.6.1 provided org.osgi osgi.annotation - 8.0.0 + 8.1.0 provided diff --git a/examples/karaf-config-example/karaf-config-example-managed-factory/pom.xml b/examples/karaf-config-example/karaf-config-example-managed-factory/pom.xml index 4347a163eeb..975c237d295 100644 --- a/examples/karaf-config-example/karaf-config-example-managed-factory/pom.xml +++ b/examples/karaf-config-example/karaf-config-example-managed-factory/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-config-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -42,13 +42,13 @@ org.osgi org.osgi.service.cm - 1.6.0 + 1.6.1 provided org.osgi osgi.annotation - 8.0.0 + 8.1.0 provided diff --git a/examples/karaf-config-example/karaf-config-example-managed/pom.xml b/examples/karaf-config-example/karaf-config-example-managed/pom.xml index 87dec3c5296..b92aad5a75f 100644 --- a/examples/karaf-config-example/karaf-config-example-managed/pom.xml +++ b/examples/karaf-config-example/karaf-config-example-managed/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-config-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -41,12 +41,12 @@ org.osgi org.osgi.service.cm - 1.6.0 + 1.6.1 org.osgi osgi.annotation - 8.0.0 + 8.1.0 diff --git a/examples/karaf-config-example/karaf-config-example-scr/pom.xml b/examples/karaf-config-example/karaf-config-example-scr/pom.xml index 5c9f4d88e36..5c465c8bf20 100644 --- a/examples/karaf-config-example/karaf-config-example-scr/pom.xml +++ b/examples/karaf-config-example/karaf-config-example-scr/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-config-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -36,13 +36,13 @@ org.osgi org.osgi.service.component - 1.4.0 + 1.5.1 provided org.osgi org.osgi.service.component.annotations - 1.4.0 + 1.5.1 provided diff --git a/examples/karaf-config-example/karaf-config-example-static/pom.xml b/examples/karaf-config-example/karaf-config-example-static/pom.xml index d9e4a230154..e06047bf4d6 100644 --- a/examples/karaf-config-example/karaf-config-example-static/pom.xml +++ b/examples/karaf-config-example/karaf-config-example-static/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-config-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -42,13 +42,13 @@ org.osgi org.osgi.service.cm - 1.6.0 + 1.6.1 provided org.osgi osgi.annotation - 8.0.0 + 8.1.0 provided diff --git a/examples/karaf-config-example/pom.xml b/examples/karaf-config-example/pom.xml index 742b9da474f..ff12fbc3bae 100644 --- a/examples/karaf-config-example/pom.xml +++ b/examples/karaf-config-example/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples apache-karaf-examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-deployer-example/pom.xml b/examples/karaf-deployer-example/pom.xml index 33efdb55ecf..bd982e8ff39 100644 --- a/examples/karaf-deployer-example/pom.xml +++ b/examples/karaf-deployer-example/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples apache-karaf-examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-docker-example/karaf-docker-example-app/pom.xml b/examples/karaf-docker-example/karaf-docker-example-app/pom.xml index fb0018fab56..24f1909a47c 100644 --- a/examples/karaf-docker-example/karaf-docker-example-app/pom.xml +++ b/examples/karaf-docker-example/karaf-docker-example-app/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-docker-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-docker-example/karaf-docker-example-dynamic-dist/pom.xml b/examples/karaf-docker-example/karaf-docker-example-dynamic-dist/pom.xml index ef3831405e5..4ae6522261e 100644 --- a/examples/karaf-docker-example/karaf-docker-example-dynamic-dist/pom.xml +++ b/examples/karaf-docker-example/karaf-docker-example-dynamic-dist/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-docker-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -138,7 +138,7 @@ - 1.8 + 11 diff --git a/examples/karaf-docker-example/karaf-docker-example-static-dist/pom.xml b/examples/karaf-docker-example/karaf-docker-example-static-dist/pom.xml index 4fd5ef22046..0ad63435e53 100644 --- a/examples/karaf-docker-example/karaf-docker-example-static-dist/pom.xml +++ b/examples/karaf-docker-example/karaf-docker-example-static-dist/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-docker-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -108,7 +108,7 @@ static true static - 1.8 + 11 diff --git a/examples/karaf-docker-example/pom.xml b/examples/karaf-docker-example/pom.xml index d76ce72dfe0..a5d0f1e1683 100644 --- a/examples/karaf-docker-example/pom.xml +++ b/examples/karaf-docker-example/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples apache-karaf-examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-dump-example/pom.xml b/examples/karaf-dump-example/pom.xml index a9b24a8bad8..2569f0a933b 100644 --- a/examples/karaf-dump-example/pom.xml +++ b/examples/karaf-dump-example/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples apache-karaf-examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -48,7 +48,7 @@ org.osgi osgi.annotation - 8.0.0 + 8.1.0 provided diff --git a/examples/karaf-graphql-example/karaf-graphql-example-api/pom.xml b/examples/karaf-graphql-example/karaf-graphql-example-api/pom.xml index ccb2c3d439d..42d9b079f52 100644 --- a/examples/karaf-graphql-example/karaf-graphql-example-api/pom.xml +++ b/examples/karaf-graphql-example/karaf-graphql-example-api/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-graphql-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-graphql-example/karaf-graphql-example-commands/pom.xml b/examples/karaf-graphql-example/karaf-graphql-example-commands/pom.xml index 0d766262b8e..fd17ada0aa6 100644 --- a/examples/karaf-graphql-example/karaf-graphql-example-commands/pom.xml +++ b/examples/karaf-graphql-example/karaf-graphql-example-commands/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-graphql-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -46,7 +46,7 @@ org.osgi org.osgi.service.component.annotations - 1.4.0 + 1.5.1 org.apache.karaf.examples @@ -56,7 +56,7 @@ org.osgi osgi.annotation - 8.0.0 + 8.1.0 provided diff --git a/examples/karaf-graphql-example/karaf-graphql-example-core/pom.xml b/examples/karaf-graphql-example/karaf-graphql-example-core/pom.xml index a37eebe724d..f4ff18945d1 100644 --- a/examples/karaf-graphql-example/karaf-graphql-example-core/pom.xml +++ b/examples/karaf-graphql-example/karaf-graphql-example-core/pom.xml @@ -24,7 +24,7 @@ karaf-graphql-example org.apache.karaf.examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -41,7 +41,7 @@ org.osgi org.osgi.service.component.annotations - 1.4.0 + 1.5.1 provided @@ -52,7 +52,7 @@ io.reactivex.rxjava3 rxjava - 3.1.5 + 3.1.12 diff --git a/examples/karaf-graphql-example/karaf-graphql-example-features/pom.xml b/examples/karaf-graphql-example/karaf-graphql-example-features/pom.xml index 0227c07cef8..42461c2d150 100644 --- a/examples/karaf-graphql-example/karaf-graphql-example-features/pom.xml +++ b/examples/karaf-graphql-example/karaf-graphql-example-features/pom.xml @@ -24,7 +24,7 @@ karaf-graphql-example org.apache.karaf.examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-graphql-example/karaf-graphql-example-features/src/main/feature/feature.xml b/examples/karaf-graphql-example/karaf-graphql-example-features/src/main/feature/feature.xml index 7849f18f881..68a6f834530 100644 --- a/examples/karaf-graphql-example/karaf-graphql-example-features/src/main/feature/feature.xml +++ b/examples/karaf-graphql-example/karaf-graphql-example-features/src/main/feature/feature.xml @@ -31,7 +31,7 @@ wrap:mvn:com.graphql-java/graphql-java/19.2 mvn:com.fasterxml.jackson.core/jackson-core/${jackson.version} - mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.version} + mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.annotations.version} mvn:com.fasterxml.jackson.core/jackson-databind/${jackson.version} mvn:com.fasterxml.jackson.datatype/jackson-datatype-jdk8/${jackson.version} mvn:javax.servlet/javax.servlet-api/4.0.1 @@ -41,7 +41,7 @@ mvn:com.graphql-java-kickstart/graphql-java-servlet/14.0.0 mvn:io.reactivex.rxjava3/rxjava/3.1.5 - mvn:org.eclipse.jetty.websocket/websocket-server/9.4.52.v20230823 + mvn:org.eclipse.jetty.websocket/websocket-server/9.4.58.v20250814 mvn:org.apache.karaf.examples/karaf-graphql-example-api/${project.version} mvn:org.apache.karaf.examples/karaf-graphql-example-core/${project.version} diff --git a/examples/karaf-graphql-example/karaf-graphql-example-scr-servlet/pom.xml b/examples/karaf-graphql-example/karaf-graphql-example-scr-servlet/pom.xml index 1689562a938..eeac37a1d19 100644 --- a/examples/karaf-graphql-example/karaf-graphql-example-scr-servlet/pom.xml +++ b/examples/karaf-graphql-example/karaf-graphql-example-scr-servlet/pom.xml @@ -24,7 +24,7 @@ karaf-graphql-example org.apache.karaf.examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -36,7 +36,7 @@ org.osgi org.osgi.service.component.annotations - 1.4.0 + 1.5.1 provided @@ -52,7 +52,7 @@ javax.servlet javax.servlet-api - 4.0.1 + 3.1.0 provided diff --git a/examples/karaf-graphql-example/karaf-graphql-example-websocket/pom.xml b/examples/karaf-graphql-example/karaf-graphql-example-websocket/pom.xml index 74721328150..3363959f177 100644 --- a/examples/karaf-graphql-example/karaf-graphql-example-websocket/pom.xml +++ b/examples/karaf-graphql-example/karaf-graphql-example-websocket/pom.xml @@ -24,7 +24,7 @@ karaf-graphql-example org.apache.karaf.examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -36,7 +36,7 @@ org.eclipse.jetty.websocket websocket-servlet - 9.4.52.v20230823 + 9.4.58.v20250814 provided @@ -47,7 +47,7 @@ org.osgi org.osgi.service.component.annotations - 1.4.0 + 1.5.1 provided diff --git a/examples/karaf-graphql-example/pom.xml b/examples/karaf-graphql-example/pom.xml index 5e9dcb34015..3ede128b58d 100644 --- a/examples/karaf-graphql-example/pom.xml +++ b/examples/karaf-graphql-example/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples apache-karaf-examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-http-resource-example/karaf-http-resource-example-features/pom.xml b/examples/karaf-http-resource-example/karaf-http-resource-example-features/pom.xml index f6d8862e516..963e83fc86f 100644 --- a/examples/karaf-http-resource-example/karaf-http-resource-example-features/pom.xml +++ b/examples/karaf-http-resource-example/karaf-http-resource-example-features/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-http-resource-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-http-resource-example/karaf-http-resource-example-whiteboard/pom.xml b/examples/karaf-http-resource-example/karaf-http-resource-example-whiteboard/pom.xml index 28bbb35829e..3c0f10f2cec 100644 --- a/examples/karaf-http-resource-example/karaf-http-resource-example-whiteboard/pom.xml +++ b/examples/karaf-http-resource-example/karaf-http-resource-example-whiteboard/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-http-resource-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -36,7 +36,7 @@ org.osgi org.osgi.service.component.annotations - 1.4.0 + 1.5.1 provided diff --git a/examples/karaf-http-resource-example/pom.xml b/examples/karaf-http-resource-example/pom.xml index ec93d13270f..11cc231fcdc 100644 --- a/examples/karaf-http-resource-example/pom.xml +++ b/examples/karaf-http-resource-example/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples apache-karaf-examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-itest-example/pom.xml b/examples/karaf-itest-example/pom.xml index f231f02d69b..38abd417674 100644 --- a/examples/karaf-itest-example/pom.xml +++ b/examples/karaf-itest-example/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples apache-karaf-examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -52,6 +52,11 @@ ${project.version} test + + javax.annotation + javax.annotation-api + ${javax.annotation.version} + @@ -123,6 +128,9 @@ 1 false + + foo diff --git a/examples/karaf-jaas-example/karaf-jaas-example-app/pom.xml b/examples/karaf-jaas-example/karaf-jaas-example-app/pom.xml index 4e0d2ff18aa..b348ea2c554 100644 --- a/examples/karaf-jaas-example/karaf-jaas-example-app/pom.xml +++ b/examples/karaf-jaas-example/karaf-jaas-example-app/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-jaas-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -62,7 +62,7 @@ org.osgi osgi.annotation - 8.0.0 + 8.1.0 provided diff --git a/examples/karaf-jaas-example/karaf-jaas-example-features/pom.xml b/examples/karaf-jaas-example/karaf-jaas-example-features/pom.xml index 64555e640de..c4e2dfdc0a1 100644 --- a/examples/karaf-jaas-example/karaf-jaas-example-features/pom.xml +++ b/examples/karaf-jaas-example/karaf-jaas-example-features/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-jaas-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-jaas-example/karaf-jaas-example-wab/pom.xml b/examples/karaf-jaas-example/karaf-jaas-example-wab/pom.xml index 51786a73945..08534c064d2 100644 --- a/examples/karaf-jaas-example/karaf-jaas-example-wab/pom.xml +++ b/examples/karaf-jaas-example/karaf-jaas-example-wab/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-jaas-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-jaas-example/karaf-jaas-example-war/pom.xml b/examples/karaf-jaas-example/karaf-jaas-example-war/pom.xml index fe3af2fb2bc..69d0139a7d2 100644 --- a/examples/karaf-jaas-example/karaf-jaas-example-war/pom.xml +++ b/examples/karaf-jaas-example/karaf-jaas-example-war/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-jaas-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-jaas-example/pom.xml b/examples/karaf-jaas-example/pom.xml index ac47506054f..78d83e1cdce 100644 --- a/examples/karaf-jaas-example/pom.xml +++ b/examples/karaf-jaas-example/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples apache-karaf-examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-jdbc-example/karaf-jdbc-example-api/pom.xml b/examples/karaf-jdbc-example/karaf-jdbc-example-api/pom.xml index b81fa34d4da..85d0a00da59 100644 --- a/examples/karaf-jdbc-example/karaf-jdbc-example-api/pom.xml +++ b/examples/karaf-jdbc-example/karaf-jdbc-example-api/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-jdbc-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -36,7 +36,7 @@ org.osgi osgi.annotation - 7.0.0 + 8.1.0 diff --git a/examples/karaf-jdbc-example/karaf-jdbc-example-command/pom.xml b/examples/karaf-jdbc-example/karaf-jdbc-example-command/pom.xml index a66259c2951..e499f493c0c 100644 --- a/examples/karaf-jdbc-example/karaf-jdbc-example-command/pom.xml +++ b/examples/karaf-jdbc-example/karaf-jdbc-example-command/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-jdbc-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-jdbc-example/karaf-jdbc-example-features/pom.xml b/examples/karaf-jdbc-example/karaf-jdbc-example-features/pom.xml index 7fe9c6aecdf..4462c896d59 100644 --- a/examples/karaf-jdbc-example/karaf-jdbc-example-features/pom.xml +++ b/examples/karaf-jdbc-example/karaf-jdbc-example-features/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-jdbc-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-jdbc-example/karaf-jdbc-example-provider/pom.xml b/examples/karaf-jdbc-example/karaf-jdbc-example-provider/pom.xml index 4d4014baf94..89c73839b5e 100644 --- a/examples/karaf-jdbc-example/karaf-jdbc-example-provider/pom.xml +++ b/examples/karaf-jdbc-example/karaf-jdbc-example-provider/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-jdbc-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-jdbc-example/pom.xml b/examples/karaf-jdbc-example/pom.xml index 8e650d8f261..1b6503fecd4 100644 --- a/examples/karaf-jdbc-example/pom.xml +++ b/examples/karaf-jdbc-example/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples apache-karaf-examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-jms-example/karaf-jms-example-command/pom.xml b/examples/karaf-jms-example/karaf-jms-example-command/pom.xml index 83d3ba63e15..f652d1dbab3 100644 --- a/examples/karaf-jms-example/karaf-jms-example-command/pom.xml +++ b/examples/karaf-jms-example/karaf-jms-example-command/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-jms-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-jms-example/karaf-jms-example-features/pom.xml b/examples/karaf-jms-example/karaf-jms-example-features/pom.xml index b5c5275979e..3b79a0be877 100644 --- a/examples/karaf-jms-example/karaf-jms-example-features/pom.xml +++ b/examples/karaf-jms-example/karaf-jms-example-features/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-jms-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-jms-example/pom.xml b/examples/karaf-jms-example/pom.xml index dbf5506436c..386721160d4 100644 --- a/examples/karaf-jms-example/pom.xml +++ b/examples/karaf-jms-example/pom.xml @@ -25,7 +25,7 @@ org.apache.karaf.examples apache-karaf-examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-jpa-example/karaf-jpa-example-command/pom.xml b/examples/karaf-jpa-example/karaf-jpa-example-command/pom.xml index dc7426fc9ef..81596a6f791 100644 --- a/examples/karaf-jpa-example/karaf-jpa-example-command/pom.xml +++ b/examples/karaf-jpa-example/karaf-jpa-example-command/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-jpa-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-jpa-example/karaf-jpa-example-features/pom.xml b/examples/karaf-jpa-example/karaf-jpa-example-features/pom.xml index fc79b9d646b..e1761879ff9 100644 --- a/examples/karaf-jpa-example/karaf-jpa-example-features/pom.xml +++ b/examples/karaf-jpa-example/karaf-jpa-example-features/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-jpa-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-api/pom.xml b/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-api/pom.xml index f467c70c995..9356751cdb9 100644 --- a/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-api/pom.xml +++ b/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-api/pom.xml @@ -22,7 +22,7 @@ org.apache.karaf.examples karaf-jpa-example-provider - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -36,7 +36,7 @@ org.eclipse.persistence javax.persistence - 2.1.0 + 2.2.1 diff --git a/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-blueprint/karaf-jpa-example-provider-blueprint-eclipselink/pom.xml b/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-blueprint/karaf-jpa-example-provider-blueprint-eclipselink/pom.xml index 9cbf639bf06..d7392df5d04 100644 --- a/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-blueprint/karaf-jpa-example-provider-blueprint-eclipselink/pom.xml +++ b/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-blueprint/karaf-jpa-example-provider-blueprint-eclipselink/pom.xml @@ -22,7 +22,7 @@ org.apache.karaf.examples karaf-jpa-example-provider-blueprint - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -41,12 +41,12 @@ org.eclipse.persistence javax.persistence - 2.1.0 + 2.2.1 javax.transaction javax.transaction-api - 1.2 + 1.3 javax.interceptor @@ -65,6 +65,7 @@ META-INF/persistence.xml javax.persistence;version="[2,3)", + javax.transaction;version="[1,2)", * diff --git a/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-blueprint/karaf-jpa-example-provider-blueprint-hibernate/pom.xml b/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-blueprint/karaf-jpa-example-provider-blueprint-hibernate/pom.xml index 0727581d0f8..10c0af04e62 100644 --- a/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-blueprint/karaf-jpa-example-provider-blueprint-hibernate/pom.xml +++ b/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-blueprint/karaf-jpa-example-provider-blueprint-hibernate/pom.xml @@ -22,7 +22,7 @@ org.apache.karaf.examples karaf-jpa-example-provider-blueprint - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -41,12 +41,12 @@ org.eclipse.persistence javax.persistence - 2.1.0 + 2.2.1 javax.transaction javax.transaction-api - 1.2 + 1.3 javax.interceptor @@ -65,6 +65,7 @@ META-INF/persistence.xml javax.persistence;version="[2,3)", + javax.transaction;version="[1,2)", * diff --git a/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-blueprint/karaf-jpa-example-provider-blueprint-openjpa/pom.xml b/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-blueprint/karaf-jpa-example-provider-blueprint-openjpa/pom.xml index 563e5ed1096..73977687290 100644 --- a/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-blueprint/karaf-jpa-example-provider-blueprint-openjpa/pom.xml +++ b/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-blueprint/karaf-jpa-example-provider-blueprint-openjpa/pom.xml @@ -22,7 +22,7 @@ org.apache.karaf.examples karaf-jpa-example-provider-blueprint - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -41,12 +41,12 @@ org.eclipse.persistence javax.persistence - 2.1.0 + 2.2.1 javax.transaction javax.transaction-api - 1.2 + 1.3 javax.interceptor @@ -65,6 +65,7 @@ META-INF/persistence.xml javax.persistence;version="[2,3)", + javax.transaction;version="[1,2)", * diff --git a/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-blueprint/pom.xml b/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-blueprint/pom.xml index 34b69bcd508..fa1c6e8ad98 100644 --- a/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-blueprint/pom.xml +++ b/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-blueprint/pom.xml @@ -22,7 +22,7 @@ org.apache.karaf.examples karaf-jpa-example-provider - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-ds/karaf-jpa-example-provider-ds-eclipselink/pom.xml b/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-ds/karaf-jpa-example-provider-ds-eclipselink/pom.xml index 535466d28c6..39585aca701 100644 --- a/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-ds/karaf-jpa-example-provider-ds-eclipselink/pom.xml +++ b/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-ds/karaf-jpa-example-provider-ds-eclipselink/pom.xml @@ -22,7 +22,7 @@ org.apache.karaf.examples karaf-jpa-example-provider-ds - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -53,12 +53,12 @@ org.eclipse.persistence javax.persistence - 2.1.0 + 2.2.1 javax.transaction javax.transaction-api - 1.2 + 1.3 javax.interceptor diff --git a/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-ds/karaf-jpa-example-provider-ds-hibernate/pom.xml b/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-ds/karaf-jpa-example-provider-ds-hibernate/pom.xml index 053d73e514a..fb4a644291b 100644 --- a/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-ds/karaf-jpa-example-provider-ds-hibernate/pom.xml +++ b/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-ds/karaf-jpa-example-provider-ds-hibernate/pom.xml @@ -22,7 +22,7 @@ org.apache.karaf.examples karaf-jpa-example-provider-ds - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -53,12 +53,12 @@ org.eclipse.persistence javax.persistence - 2.1.0 + 2.2.1 javax.transaction javax.transaction-api - 1.2 + 1.3 javax.interceptor diff --git a/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-ds/karaf-jpa-example-provider-ds-openjpa/pom.xml b/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-ds/karaf-jpa-example-provider-ds-openjpa/pom.xml index 62027150327..bd72d448119 100644 --- a/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-ds/karaf-jpa-example-provider-ds-openjpa/pom.xml +++ b/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-ds/karaf-jpa-example-provider-ds-openjpa/pom.xml @@ -22,7 +22,7 @@ org.apache.karaf.examples karaf-jpa-example-provider-ds - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -53,12 +53,12 @@ org.eclipse.persistence javax.persistence - 2.1.0 + 2.2.1 javax.transaction javax.transaction-api - 1.2 + 1.3 javax.interceptor diff --git a/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-ds/pom.xml b/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-ds/pom.xml index 788d906fd12..11eec9ee55a 100644 --- a/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-ds/pom.xml +++ b/examples/karaf-jpa-example/karaf-jpa-example-provider/karaf-jpa-example-provider-ds/pom.xml @@ -22,7 +22,7 @@ org.apache.karaf.examples karaf-jpa-example-provider - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-jpa-example/karaf-jpa-example-provider/pom.xml b/examples/karaf-jpa-example/karaf-jpa-example-provider/pom.xml index fc62f5c7400..d5b93419872 100644 --- a/examples/karaf-jpa-example/karaf-jpa-example-provider/pom.xml +++ b/examples/karaf-jpa-example/karaf-jpa-example-provider/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-jpa-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-jpa-example/pom.xml b/examples/karaf-jpa-example/pom.xml index 73a4691e8bc..b034f5693a1 100644 --- a/examples/karaf-jpa-example/pom.xml +++ b/examples/karaf-jpa-example/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples apache-karaf-examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-log-appender-example/karaf-log-appender-example-core/pom.xml b/examples/karaf-log-appender-example/karaf-log-appender-example-core/pom.xml index b5b9e6adb12..bc189c5df82 100644 --- a/examples/karaf-log-appender-example/karaf-log-appender-example-core/pom.xml +++ b/examples/karaf-log-appender-example/karaf-log-appender-example-core/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-log-appender-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-log-appender-example/karaf-log-appender-example-features/pom.xml b/examples/karaf-log-appender-example/karaf-log-appender-example-features/pom.xml index c3937795f16..d419a68e2d8 100644 --- a/examples/karaf-log-appender-example/karaf-log-appender-example-features/pom.xml +++ b/examples/karaf-log-appender-example/karaf-log-appender-example-features/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-log-appender-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-log-appender-example/pom.xml b/examples/karaf-log-appender-example/pom.xml index ce19baf44df..4de5eabc60b 100644 --- a/examples/karaf-log-appender-example/pom.xml +++ b/examples/karaf-log-appender-example/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples apache-karaf-examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-maven-example/karaf-maven-example-run-bundle/pom.xml b/examples/karaf-maven-example/karaf-maven-example-run-bundle/pom.xml index 104ec7381d2..7204afd0685 100644 --- a/examples/karaf-maven-example/karaf-maven-example-run-bundle/pom.xml +++ b/examples/karaf-maven-example/karaf-maven-example-run-bundle/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-maven-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-maven-example/karaf-maven-example-run/pom.xml b/examples/karaf-maven-example/karaf-maven-example-run/pom.xml index 39702f652c6..7cdedbdc092 100644 --- a/examples/karaf-maven-example/karaf-maven-example-run/pom.xml +++ b/examples/karaf-maven-example/karaf-maven-example-run/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-maven-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-maven-example/pom.xml b/examples/karaf-maven-example/pom.xml index 3c627c5e709..f06f4711126 100644 --- a/examples/karaf-maven-example/pom.xml +++ b/examples/karaf-maven-example/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples apache-karaf-examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-mbean-example/karaf-mbean-example-api/pom.xml b/examples/karaf-mbean-example/karaf-mbean-example-api/pom.xml index f25c560202f..02845907dc8 100644 --- a/examples/karaf-mbean-example/karaf-mbean-example-api/pom.xml +++ b/examples/karaf-mbean-example/karaf-mbean-example-api/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-mbean-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -36,7 +36,7 @@ org.osgi osgi.annotation - 7.0.0 + 8.1.0 diff --git a/examples/karaf-mbean-example/karaf-mbean-example-blueprint/pom.xml b/examples/karaf-mbean-example/karaf-mbean-example-blueprint/pom.xml index 13a558f03c2..ff83d1622e2 100644 --- a/examples/karaf-mbean-example/karaf-mbean-example-blueprint/pom.xml +++ b/examples/karaf-mbean-example/karaf-mbean-example-blueprint/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-mbean-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-mbean-example/karaf-mbean-example-features/pom.xml b/examples/karaf-mbean-example/karaf-mbean-example-features/pom.xml index 53969d8e680..58115e3992c 100644 --- a/examples/karaf-mbean-example/karaf-mbean-example-features/pom.xml +++ b/examples/karaf-mbean-example/karaf-mbean-example-features/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-mbean-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-mbean-example/karaf-mbean-example-provider/pom.xml b/examples/karaf-mbean-example/karaf-mbean-example-provider/pom.xml index 008a0a650c8..c931200ac94 100644 --- a/examples/karaf-mbean-example/karaf-mbean-example-provider/pom.xml +++ b/examples/karaf-mbean-example/karaf-mbean-example-provider/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-mbean-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -57,7 +57,7 @@ org.osgi osgi.core - 7.0.0 + 8.0.0 diff --git a/examples/karaf-mbean-example/karaf-mbean-example-scr/pom.xml b/examples/karaf-mbean-example/karaf-mbean-example-scr/pom.xml index cd66e957e0f..08e1448ed16 100644 --- a/examples/karaf-mbean-example/karaf-mbean-example-scr/pom.xml +++ b/examples/karaf-mbean-example/karaf-mbean-example-scr/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-mbean-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -41,7 +41,7 @@ org.osgi org.osgi.service.component.annotations - 1.4.0 + 1.5.1 provided diff --git a/examples/karaf-mbean-example/karaf-mbean-example-simple/pom.xml b/examples/karaf-mbean-example/karaf-mbean-example-simple/pom.xml index 72f0d3e5cf2..f1ed3a06c7a 100644 --- a/examples/karaf-mbean-example/karaf-mbean-example-simple/pom.xml +++ b/examples/karaf-mbean-example/karaf-mbean-example-simple/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-mbean-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -57,7 +57,7 @@ org.osgi osgi.core - 7.0.0 + 8.0.0 diff --git a/examples/karaf-mbean-example/pom.xml b/examples/karaf-mbean-example/pom.xml index 4f3839315a9..c2a43760adf 100644 --- a/examples/karaf-mbean-example/pom.xml +++ b/examples/karaf-mbean-example/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples apache-karaf-examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-profile-example/karaf-profile-example-registry/src/main/resources/karaf.profile/org.ops4j.pax.logging.cfg b/examples/karaf-profile-example/karaf-profile-example-registry/src/main/resources/karaf.profile/org.ops4j.pax.logging.cfg index 5203ba10660..76e3e5952dc 100644 --- a/examples/karaf-profile-example/karaf-profile-example-registry/src/main/resources/karaf.profile/org.ops4j.pax.logging.cfg +++ b/examples/karaf-profile-example/karaf-profile-example-registry/src/main/resources/karaf.profile/org.ops4j.pax.logging.cfg @@ -27,7 +27,7 @@ color.trace = cyan # Common pattern layout for appenders log4j2.pattern = %d{ISO8601} | %-5p | %-16t | %-32c{1} | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n -log4j2.out.pattern = \u001b[90m%d{HH:mm:ss\.SSS}\u001b[0m %highlight{%-5level}{FATAL=${color.fatal}, ERROR=${color.error}, WARN=${color.warn}, INFO=${color.info}, DEBUG=${color.debug}, TRACE=${color.trace}} \u001b[90m[%t]\u001b[0m %msg%n%throwable +log4j2.outpattern = \u001b[90m%d{HH:mm:ss\.SSS}\u001b[0m %highlight{%-5level}{FATAL=${color.fatal}, ERROR=${color.error}, WARN=${color.warn}, INFO=${color.info}, DEBUG=${color.debug}, TRACE=${color.trace}} \u001b[90m[%t]\u001b[0m %msg%n%throwable # Root logger @@ -63,7 +63,7 @@ log4j2.logger.audit.appenderRef.AuditRollingFile.ref = AuditRollingFile log4j2.appender.console.type = Console log4j2.appender.console.name = Console log4j2.appender.console.layout.type = PatternLayout -log4j2.appender.console.layout.pattern = ${log4j2.out.pattern} +log4j2.appender.console.layout.pattern = ${log4j2.outpattern} # Rolling file appender log4j2.appender.rolling.type = RollingRandomAccessFile diff --git a/examples/karaf-profile-example/karaf-profile-example-registry/src/main/resources/karaf.profile/org.ops4j.pax.logging.cfg#static b/examples/karaf-profile-example/karaf-profile-example-registry/src/main/resources/karaf.profile/org.ops4j.pax.logging.cfg#static index 5203ba10660..76e3e5952dc 100644 --- a/examples/karaf-profile-example/karaf-profile-example-registry/src/main/resources/karaf.profile/org.ops4j.pax.logging.cfg#static +++ b/examples/karaf-profile-example/karaf-profile-example-registry/src/main/resources/karaf.profile/org.ops4j.pax.logging.cfg#static @@ -27,7 +27,7 @@ color.trace = cyan # Common pattern layout for appenders log4j2.pattern = %d{ISO8601} | %-5p | %-16t | %-32c{1} | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n -log4j2.out.pattern = \u001b[90m%d{HH:mm:ss\.SSS}\u001b[0m %highlight{%-5level}{FATAL=${color.fatal}, ERROR=${color.error}, WARN=${color.warn}, INFO=${color.info}, DEBUG=${color.debug}, TRACE=${color.trace}} \u001b[90m[%t]\u001b[0m %msg%n%throwable +log4j2.outpattern = \u001b[90m%d{HH:mm:ss\.SSS}\u001b[0m %highlight{%-5level}{FATAL=${color.fatal}, ERROR=${color.error}, WARN=${color.warn}, INFO=${color.info}, DEBUG=${color.debug}, TRACE=${color.trace}} \u001b[90m[%t]\u001b[0m %msg%n%throwable # Root logger @@ -63,7 +63,7 @@ log4j2.logger.audit.appenderRef.AuditRollingFile.ref = AuditRollingFile log4j2.appender.console.type = Console log4j2.appender.console.name = Console log4j2.appender.console.layout.type = PatternLayout -log4j2.appender.console.layout.pattern = ${log4j2.out.pattern} +log4j2.appender.console.layout.pattern = ${log4j2.outpattern} # Rolling file appender log4j2.appender.rolling.type = RollingRandomAccessFile diff --git a/examples/karaf-redis-example/karaf-redis-example-api/pom.xml b/examples/karaf-redis-example/karaf-redis-example-api/pom.xml index 081d3a383ee..04e335a07be 100644 --- a/examples/karaf-redis-example/karaf-redis-example-api/pom.xml +++ b/examples/karaf-redis-example/karaf-redis-example-api/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-redis-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -36,7 +36,7 @@ org.osgi osgi.annotation - 7.0.0 + 8.1.0 diff --git a/examples/karaf-redis-example/karaf-redis-example-command/pom.xml b/examples/karaf-redis-example/karaf-redis-example-command/pom.xml index 74bc8fdacb1..6d0a86c312c 100644 --- a/examples/karaf-redis-example/karaf-redis-example-command/pom.xml +++ b/examples/karaf-redis-example/karaf-redis-example-command/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-redis-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-redis-example/karaf-redis-example-features/pom.xml b/examples/karaf-redis-example/karaf-redis-example-features/pom.xml index 089518758ab..1338f632083 100644 --- a/examples/karaf-redis-example/karaf-redis-example-features/pom.xml +++ b/examples/karaf-redis-example/karaf-redis-example-features/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-redis-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-redis-example/karaf-redis-example-service/pom.xml b/examples/karaf-redis-example/karaf-redis-example-service/pom.xml index 49d9d78719b..66eb73a3a18 100644 --- a/examples/karaf-redis-example/karaf-redis-example-service/pom.xml +++ b/examples/karaf-redis-example/karaf-redis-example-service/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-redis-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -63,12 +63,12 @@ redis.clients jedis - 4.2.3 + 4.4.8 com.google.code.gson gson - 2.9.0 + 2.13.2 diff --git a/examples/karaf-redis-example/pom.xml b/examples/karaf-redis-example/pom.xml index 19ef7f6d622..259a4d63642 100644 --- a/examples/karaf-redis-example/pom.xml +++ b/examples/karaf-redis-example/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples apache-karaf-examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-rest-example/karaf-rest-example-api/pom.xml b/examples/karaf-rest-example/karaf-rest-example-api/pom.xml index e012bab7300..c638648b18a 100644 --- a/examples/karaf-rest-example/karaf-rest-example-api/pom.xml +++ b/examples/karaf-rest-example/karaf-rest-example-api/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-rest-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-rest-example/karaf-rest-example-blueprint/pom.xml b/examples/karaf-rest-example/karaf-rest-example-blueprint/pom.xml index 52cba0dda31..ced10def9fa 100644 --- a/examples/karaf-rest-example/karaf-rest-example-blueprint/pom.xml +++ b/examples/karaf-rest-example/karaf-rest-example-blueprint/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-rest-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -36,7 +36,7 @@ javax.ws.rs javax.ws.rs-api - 2.1 + 2.1.1 org.apache.karaf.examples diff --git a/examples/karaf-rest-example/karaf-rest-example-client/karaf-rest-example-client-cxf/pom.xml b/examples/karaf-rest-example/karaf-rest-example-client/karaf-rest-example-client-cxf/pom.xml index bfc8adfd073..5cf9895c625 100644 --- a/examples/karaf-rest-example/karaf-rest-example-client/karaf-rest-example-client-cxf/pom.xml +++ b/examples/karaf-rest-example/karaf-rest-example-client/karaf-rest-example-client-cxf/pom.xml @@ -17,7 +17,7 @@ org.apache.karaf.examples karaf-rest-example-client - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -41,7 +41,7 @@ javax.ws.rs javax.ws.rs-api - 2.1 + 2.1.1 org.apache.karaf.examples diff --git a/examples/karaf-rest-example/karaf-rest-example-client/karaf-rest-example-client-http/pom.xml b/examples/karaf-rest-example/karaf-rest-example-client/karaf-rest-example-client-http/pom.xml index 204630a8569..e64711cfdd5 100644 --- a/examples/karaf-rest-example/karaf-rest-example-client/karaf-rest-example-client-http/pom.xml +++ b/examples/karaf-rest-example/karaf-rest-example-client/karaf-rest-example-client-http/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-rest-example-client - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-rest-example/karaf-rest-example-client/karaf-rest-example-client-jersey/pom.xml b/examples/karaf-rest-example/karaf-rest-example-client/karaf-rest-example-client-jersey/pom.xml index ecfb5015b6b..3334abd77ba 100644 --- a/examples/karaf-rest-example/karaf-rest-example-client/karaf-rest-example-client-jersey/pom.xml +++ b/examples/karaf-rest-example/karaf-rest-example-client/karaf-rest-example-client-jersey/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-rest-example-client - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -48,7 +48,7 @@ javax.ws.rs javax.ws.rs-api - 2.1 + 2.1.1 com.fasterxml.jackson.jaxrs diff --git a/examples/karaf-rest-example/karaf-rest-example-client/pom.xml b/examples/karaf-rest-example/karaf-rest-example-client/pom.xml index 1405e3a8d28..b855049121a 100644 --- a/examples/karaf-rest-example/karaf-rest-example-client/pom.xml +++ b/examples/karaf-rest-example/karaf-rest-example-client/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-rest-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-rest-example/karaf-rest-example-features/pom.xml b/examples/karaf-rest-example/karaf-rest-example-features/pom.xml index 68e06f59760..5e7183a9209 100644 --- a/examples/karaf-rest-example/karaf-rest-example-features/pom.xml +++ b/examples/karaf-rest-example/karaf-rest-example-features/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-rest-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-rest-example/karaf-rest-example-features/src/main/feature/feature.xml b/examples/karaf-rest-example/karaf-rest-example-features/src/main/feature/feature.xml index cb7abeaaed0..829378285e4 100644 --- a/examples/karaf-rest-example/karaf-rest-example-features/src/main/feature/feature.xml +++ b/examples/karaf-rest-example/karaf-rest-example-features/src/main/feature/feature.xml @@ -31,7 +31,7 @@ aries-blueprint cxf-jaxrs mvn:com.fasterxml.jackson.core/jackson-core/${jackson.version} - mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.version} + mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.annotations.version} mvn:com.fasterxml.jackson.core/jackson-databind/${jackson.version} mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-base/${jackson.version} mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-json-provider/${jackson.version} @@ -67,7 +67,7 @@ scr cxf-jaxrs mvn:com.fasterxml.jackson.core/jackson-core/${jackson.version} - mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.version} + mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.annotations.version} mvn:com.fasterxml.jackson.core/jackson-databind/${jackson.version} mvn:com.fasterxml.jackson.module/jackson-module-jaxb-annotations/${jackson.version} mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-base/${jackson.version} diff --git a/examples/karaf-rest-example/karaf-rest-example-scr/pom.xml b/examples/karaf-rest-example/karaf-rest-example-scr/pom.xml index f3f65f35afe..e303b60d9e1 100644 --- a/examples/karaf-rest-example/karaf-rest-example-scr/pom.xml +++ b/examples/karaf-rest-example/karaf-rest-example-scr/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-rest-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-rest-example/karaf-rest-example-whiteboard/pom.xml b/examples/karaf-rest-example/karaf-rest-example-whiteboard/pom.xml index cd2e4fa0947..16f023584d8 100644 --- a/examples/karaf-rest-example/karaf-rest-example-whiteboard/pom.xml +++ b/examples/karaf-rest-example/karaf-rest-example-whiteboard/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-rest-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -36,13 +36,13 @@ org.osgi org.osgi.service.component.annotations - 1.4.0 + 1.5.1 provided javax.ws.rs javax.ws.rs-api - 2.1 + 2.1.1 provided diff --git a/examples/karaf-rest-example/pom.xml b/examples/karaf-rest-example/pom.xml index 0a87d092fc0..cafffff5c91 100644 --- a/examples/karaf-rest-example/pom.xml +++ b/examples/karaf-rest-example/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples apache-karaf-examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-scheduler-example/karaf-scheduler-example-features/pom.xml b/examples/karaf-scheduler-example/karaf-scheduler-example-features/pom.xml index b4439b955f1..329b20f0031 100644 --- a/examples/karaf-scheduler-example/karaf-scheduler-example-features/pom.xml +++ b/examples/karaf-scheduler-example/karaf-scheduler-example-features/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-scheduler-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-scheduler-example/karaf-scheduler-example-runnable/pom.xml b/examples/karaf-scheduler-example/karaf-scheduler-example-runnable/pom.xml index 45d20592ce3..9162cd86536 100644 --- a/examples/karaf-scheduler-example/karaf-scheduler-example-runnable/pom.xml +++ b/examples/karaf-scheduler-example/karaf-scheduler-example-runnable/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-scheduler-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -36,7 +36,7 @@ org.osgi org.osgi.service.component.annotations - 1.4.0 + 1.5.1 provided diff --git a/examples/karaf-scheduler-example/pom.xml b/examples/karaf-scheduler-example/pom.xml index 15a921a946b..b0e694dc711 100644 --- a/examples/karaf-scheduler-example/pom.xml +++ b/examples/karaf-scheduler-example/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples apache-karaf-examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-scr-example/karaf-scr-example-api/pom.xml b/examples/karaf-scr-example/karaf-scr-example-api/pom.xml index b6cb9494f35..c6d2f036a25 100644 --- a/examples/karaf-scr-example/karaf-scr-example-api/pom.xml +++ b/examples/karaf-scr-example/karaf-scr-example-api/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-scr-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-scr-example/karaf-scr-example-client/pom.xml b/examples/karaf-scr-example/karaf-scr-example-client/pom.xml index 3cb24dd16f0..ce83970d897 100644 --- a/examples/karaf-scr-example/karaf-scr-example-client/pom.xml +++ b/examples/karaf-scr-example/karaf-scr-example-client/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-scr-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -41,7 +41,7 @@ org.osgi org.osgi.service.component.annotations - 1.4.0 + 1.5.1 provided diff --git a/examples/karaf-scr-example/karaf-scr-example-features/pom.xml b/examples/karaf-scr-example/karaf-scr-example-features/pom.xml index e3a64bd4c98..17dc7568878 100644 --- a/examples/karaf-scr-example/karaf-scr-example-features/pom.xml +++ b/examples/karaf-scr-example/karaf-scr-example-features/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-scr-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-scr-example/karaf-scr-example-provider/pom.xml b/examples/karaf-scr-example/karaf-scr-example-provider/pom.xml index be292877297..a7b929958fd 100644 --- a/examples/karaf-scr-example/karaf-scr-example-provider/pom.xml +++ b/examples/karaf-scr-example/karaf-scr-example-provider/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-scr-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -41,7 +41,7 @@ org.osgi org.osgi.service.component.annotations - 1.4.0 + 1.5.1 provided diff --git a/examples/karaf-scr-example/pom.xml b/examples/karaf-scr-example/pom.xml index b6fd550de71..a8197b432a8 100644 --- a/examples/karaf-scr-example/pom.xml +++ b/examples/karaf-scr-example/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples apache-karaf-examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-servlet-example/karaf-servlet-example-annotation/pom.xml b/examples/karaf-servlet-example/karaf-servlet-example-annotation/pom.xml index befcae8facf..99af9b7db60 100644 --- a/examples/karaf-servlet-example/karaf-servlet-example-annotation/pom.xml +++ b/examples/karaf-servlet-example/karaf-servlet-example-annotation/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-servlet-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-servlet-example/karaf-servlet-example-blueprint/pom.xml b/examples/karaf-servlet-example/karaf-servlet-example-blueprint/pom.xml index 393298d157e..322032e542b 100644 --- a/examples/karaf-servlet-example/karaf-servlet-example-blueprint/pom.xml +++ b/examples/karaf-servlet-example/karaf-servlet-example-blueprint/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-servlet-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -36,7 +36,7 @@ javax.servlet javax.servlet-api - 3.0.1 + 3.1.0 diff --git a/examples/karaf-servlet-example/karaf-servlet-example-features/pom.xml b/examples/karaf-servlet-example/karaf-servlet-example-features/pom.xml index 09a9eab26f7..85c6d00d002 100644 --- a/examples/karaf-servlet-example/karaf-servlet-example-features/pom.xml +++ b/examples/karaf-servlet-example/karaf-servlet-example-features/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-servlet-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-servlet-example/karaf-servlet-example-registration/pom.xml b/examples/karaf-servlet-example/karaf-servlet-example-registration/pom.xml index 978c6844885..f5ba1859f5a 100644 --- a/examples/karaf-servlet-example/karaf-servlet-example-registration/pom.xml +++ b/examples/karaf-servlet-example/karaf-servlet-example-registration/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-servlet-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -36,7 +36,7 @@ javax.servlet javax.servlet-api - 3.0.1 + 3.1.0 org.osgi @@ -47,13 +47,13 @@ org.osgi org.osgi.service.http - 1.2.1 + 1.2.2 provided org.osgi osgi.annotation - 8.0.0 + 8.1.0 provided diff --git a/examples/karaf-servlet-example/karaf-servlet-example-scr/pom.xml b/examples/karaf-servlet-example/karaf-servlet-example-scr/pom.xml index 4c9d64cf8cd..4c9172a17b4 100644 --- a/examples/karaf-servlet-example/karaf-servlet-example-scr/pom.xml +++ b/examples/karaf-servlet-example/karaf-servlet-example-scr/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-servlet-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -36,13 +36,13 @@ org.osgi org.osgi.service.component.annotations - 1.4.0 + 1.5.1 provided javax.servlet javax.servlet-api - 3.0.1 + 3.1.0 diff --git a/examples/karaf-servlet-example/karaf-servlet-example-upload/pom.xml b/examples/karaf-servlet-example/karaf-servlet-example-upload/pom.xml index 53d8c99ea17..247bbaf2098 100644 --- a/examples/karaf-servlet-example/karaf-servlet-example-upload/pom.xml +++ b/examples/karaf-servlet-example/karaf-servlet-example-upload/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-servlet-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -36,19 +36,19 @@ org.osgi org.osgi.service.component.annotations - 1.4.0 + 1.5.1 provided org.osgi org.osgi.service.http - 1.2.1 + 1.2.2 provided javax.servlet javax.servlet-api - 3.0.1 + 3.1.0 diff --git a/examples/karaf-servlet-example/pom.xml b/examples/karaf-servlet-example/pom.xml index 5e18ab948b8..84baa23a094 100644 --- a/examples/karaf-servlet-example/pom.xml +++ b/examples/karaf-servlet-example/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples apache-karaf-examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-soap-example/karaf-soap-example-api/pom.xml b/examples/karaf-soap-example/karaf-soap-example-api/pom.xml index d5f33cd68e3..0940a6ebcbe 100644 --- a/examples/karaf-soap-example/karaf-soap-example-api/pom.xml +++ b/examples/karaf-soap-example/karaf-soap-example-api/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-soap-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -36,7 +36,7 @@ org.osgi osgi.annotation - 7.0.0 + 8.1.0 diff --git a/examples/karaf-soap-example/karaf-soap-example-blueprint/pom.xml b/examples/karaf-soap-example/karaf-soap-example-blueprint/pom.xml index 2d40eaf0981..50f78e5b11a 100644 --- a/examples/karaf-soap-example/karaf-soap-example-blueprint/pom.xml +++ b/examples/karaf-soap-example/karaf-soap-example-blueprint/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-soap-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-soap-example/karaf-soap-example-client/pom.xml b/examples/karaf-soap-example/karaf-soap-example-client/pom.xml index e1e70173f62..ec766578c33 100644 --- a/examples/karaf-soap-example/karaf-soap-example-client/pom.xml +++ b/examples/karaf-soap-example/karaf-soap-example-client/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-soap-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-soap-example/karaf-soap-example-features/pom.xml b/examples/karaf-soap-example/karaf-soap-example-features/pom.xml index 00d8600c81d..4c98a54659a 100644 --- a/examples/karaf-soap-example/karaf-soap-example-features/pom.xml +++ b/examples/karaf-soap-example/karaf-soap-example-features/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-soap-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-soap-example/karaf-soap-example-scr/pom.xml b/examples/karaf-soap-example/karaf-soap-example-scr/pom.xml index 45d2b8134f8..b4d59deee02 100644 --- a/examples/karaf-soap-example/karaf-soap-example-scr/pom.xml +++ b/examples/karaf-soap-example/karaf-soap-example-scr/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-soap-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-soap-example/pom.xml b/examples/karaf-soap-example/pom.xml index ae3fc92c250..75c1a43d2e4 100644 --- a/examples/karaf-soap-example/pom.xml +++ b/examples/karaf-soap-example/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples apache-karaf-examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-url-namespace-handler-example/karaf-url-namespace-handler-example-core/pom.xml b/examples/karaf-url-namespace-handler-example/karaf-url-namespace-handler-example-core/pom.xml index 31545ef8cb7..75cbfaea9b7 100644 --- a/examples/karaf-url-namespace-handler-example/karaf-url-namespace-handler-example-core/pom.xml +++ b/examples/karaf-url-namespace-handler-example/karaf-url-namespace-handler-example-core/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-url-namespace-handler-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -42,7 +42,7 @@ org.osgi org.osgi.service.component.annotations - 1.4.0 + 1.5.1 provided diff --git a/examples/karaf-url-namespace-handler-example/karaf-url-namespace-handler-example-features/pom.xml b/examples/karaf-url-namespace-handler-example/karaf-url-namespace-handler-example-features/pom.xml index 8d3154971ac..4f0dc79582d 100644 --- a/examples/karaf-url-namespace-handler-example/karaf-url-namespace-handler-example-features/pom.xml +++ b/examples/karaf-url-namespace-handler-example/karaf-url-namespace-handler-example-features/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-url-namespace-handler-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-url-namespace-handler-example/pom.xml b/examples/karaf-url-namespace-handler-example/pom.xml index 117cecac3de..848f0bddb19 100644 --- a/examples/karaf-url-namespace-handler-example/pom.xml +++ b/examples/karaf-url-namespace-handler-example/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples apache-karaf-examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-war-example/karaf-war-example-features/pom.xml b/examples/karaf-war-example/karaf-war-example-features/pom.xml index 4a83fb7dd28..331a801dfc9 100644 --- a/examples/karaf-war-example/karaf-war-example-features/pom.xml +++ b/examples/karaf-war-example/karaf-war-example-features/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-war-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-war-example/karaf-war-example-webapp/pom.xml b/examples/karaf-war-example/karaf-war-example-webapp/pom.xml index 64aade03537..5df67fba5b7 100644 --- a/examples/karaf-war-example/karaf-war-example-webapp/pom.xml +++ b/examples/karaf-war-example/karaf-war-example-webapp/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples karaf-war-example - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-war-example/pom.xml b/examples/karaf-war-example/pom.xml index 187617e87b8..855e955871e 100644 --- a/examples/karaf-war-example/pom.xml +++ b/examples/karaf-war-example/pom.xml @@ -25,7 +25,7 @@ org.apache.karaf.examples apache-karaf-examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/examples/karaf-websocket-example/pom.xml b/examples/karaf-websocket-example/pom.xml index bcc2c801083..c1b69cfd3f7 100644 --- a/examples/karaf-websocket-example/pom.xml +++ b/examples/karaf-websocket-example/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.examples apache-karaf-examples - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -36,19 +36,19 @@ org.eclipse.jetty.websocket websocket-servlet - 9.4.52.v20230823 + 9.4.58.v20250814 provided org.osgi org.osgi.service.component.annotations - 1.4.0 + 1.5.1 provided org.osgi org.osgi.service.http - 1.2.1 + 1.2.2 provided diff --git a/examples/pom.xml b/examples/pom.xml index c48af8d92c9..103b936d1a8 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf karaf - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/features/command/pom.xml b/features/command/pom.xml index 02d931c59cb..402da25004e 100644 --- a/features/command/pom.xml +++ b/features/command/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.features features - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -52,8 +52,7 @@ org.osgi - osgi.core - provided + org.osgi.framework org.apache.karaf.features diff --git a/features/command/src/test/java/org/apache/karaf/features/command/RepoListCommandTest.java b/features/command/src/test/java/org/apache/karaf/features/command/RepoListCommandTest.java index 8957c3a9e60..1c69dc07150 100644 --- a/features/command/src/test/java/org/apache/karaf/features/command/RepoListCommandTest.java +++ b/features/command/src/test/java/org/apache/karaf/features/command/RepoListCommandTest.java @@ -22,7 +22,6 @@ import org.easymock.CaptureType; import org.easymock.EasyMock; import org.junit.Test; -import shaded.org.apache.commons.lang3.StringUtils; import java.io.ByteArrayOutputStream; import java.io.PrintStream; @@ -130,14 +129,39 @@ public void testBlacklistedRepositoriesShown() throws Exception { String[] commandOutput = baos.toString().split("\\R"); assertEquals(2, commandOutput.length); String blacklistedRepoLineNoSpaces = blacklistedRepoName + blacklistedRepo.getURI() + "yes"; - assertEquals(StringUtils.deleteWhitespace(commandOutput[0].trim()), blacklistedRepoLineNoSpaces); + assertEquals(RepoListCommandTest.deleteWhitespace(commandOutput[0].trim()), blacklistedRepoLineNoSpaces); String whitelistedRepoLineNoSpaces = whitelistedRepoName + whitelistedRepo.getURI() + "no"; - assertEquals(StringUtils.deleteWhitespace(commandOutput[1]), whitelistedRepoLineNoSpaces); + assertEquals(RepoListCommandTest.deleteWhitespace(commandOutput[1]), whitelistedRepoLineNoSpaces); EasyMock.verify(service, blacklistedRepo, whitelistedRepo); } + private static boolean isEmpty(final CharSequence cs) { + return cs == null || cs.length() == 0; + } + + private static String deleteWhitespace(final String str) { + if (isEmpty(str)) { + return str; + } + final int sz = str.length(); + final char[] chs = new char[sz]; + int count = 0; + for (int i = 0; i < sz; i++) { + if (!Character.isWhitespace(str.charAt(i))) { + chs[count++] = str.charAt(i); + } + } + if (count == sz) { + return str; + } + if (count == 0) { + return ""; + } + return new String(chs, 0, count); + } + @Test public void testPasswordsHidden() throws Exception { FeaturesService service = EasyMock.createMock(FeaturesService.class); diff --git a/features/core/pom.xml b/features/core/pom.xml index 1ce14ebc1cd..2cf7939436a 100644 --- a/features/core/pom.xml +++ b/features/core/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.features features - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -52,37 +52,35 @@ org.osgi - osgi.core - provided + org.osgi.framework org.osgi - org.osgi.service.cm - provided + org.osgi.namespace.service true org.osgi - org.osgi.service.event - provided + org.osgi.service.cm true org.osgi - org.osgi.namespace.service - provided + org.osgi.service.event true org.osgi org.osgi.service.repository - provided true + + org.osgi + org.osgi.util.tracker + org.osgi org.osgi.util.promise - provided true @@ -99,7 +97,7 @@ org.apache.geronimo.specs geronimo-json_1.1_spec - 1.4 + 1.5 provided diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/model/Features.java b/features/core/src/main/java/org/apache/karaf/features/internal/model/Features.java index 180ee1e5271..d758fa4fa7d 100644 --- a/features/core/src/main/java/org/apache/karaf/features/internal/model/Features.java +++ b/features/core/src/main/java/org/apache/karaf/features/internal/model/Features.java @@ -188,7 +188,12 @@ public void postUnmarshall(String repositoryUri) { private static void trim(List list) { if (list != null) { for (ListIterator it = list.listIterator(); it.hasNext();) { - it.set(it.next().trim()); + String trimmed = it.next().trim(); + if (trimmed.isEmpty()) { + it.remove(); + } else { + it.set(trimmed); + } } } } diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/region/SubsystemResolver.java b/features/core/src/main/java/org/apache/karaf/features/internal/region/SubsystemResolver.java index a7ec9551e2d..8ff50728bdd 100644 --- a/features/core/src/main/java/org/apache/karaf/features/internal/region/SubsystemResolver.java +++ b/features/core/src/main/java/org/apache/karaf/features/internal/region/SubsystemResolver.java @@ -472,7 +472,20 @@ private Map getResourceMapping(SimpleFilter resourceFilter) { if (wire != null) { String region = (String) wire.getCapability().getAttributes().get(IDENTITY_NAMESPACE); region = flats.get(region); - resources.put(resource, region); + Resource toStore = resource; + if (resource instanceof BundleRevision) { + // there may be a situation where a bundle is already installed, but new feature + // installs a fragment attached to this bundle. In this case, what we effectively + // need to install is not the bundle again + // (we'd get "java.lang.IllegalStateException: Resource has no uri"), but the fragment + Resource originalRequirer = wire.getRequirement().getResource(); + if (originalRequirer != null && originalRequirer != resource) { + // it means the source of this requirement is NOT the installed bundle, which + // should be a fragment + toStore = originalRequirer; + } + } + resources.put(toStore, region); } } } diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/service/FeatureConfigInstaller.java b/features/core/src/main/java/org/apache/karaf/features/internal/service/FeatureConfigInstaller.java index 7d530ae4e68..e903e2ce534 100644 --- a/features/core/src/main/java/org/apache/karaf/features/internal/service/FeatureConfigInstaller.java +++ b/features/core/src/main/java/org/apache/karaf/features/internal/service/FeatureConfigInstaller.java @@ -21,6 +21,8 @@ import java.net.URI; import java.net.URL; import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.StandardCopyOption; import java.util.*; import java.util.regex.Pattern; @@ -330,7 +332,12 @@ protected void updateStorage(ConfigId cid, TypedProperties props, boolean append } else { props.save(tmpCfgFile); } - tmpCfgFile.renameTo(cfgFile); +try { + Files.move(tmpCfgFile.toPath(), cfgFile.toPath(), + StandardCopyOption.REPLACE_EXISTING, StandardCopyOption.ATOMIC_MOVE); + } catch (java.nio.file.AtomicMoveNotSupportedException e) { + Files.move(tmpCfgFile.toPath(), cfgFile.toPath(), StandardCopyOption.REPLACE_EXISTING); + } } else { updateExistingConfig(props, append, cfgFile, jsonFormat); } @@ -400,11 +407,19 @@ private void updateExistingConfig(TypedProperties props, boolean append, File cf } } storage.mkdirs(); + // write to a temporary file and rename it to the target file so that a concurrent writer + // (e.g. fileinstall persisting the configuration update on the CM Event Dispatcher thread) + // never observes a partially written / corrupted cfg file + File tmpCfgFile = File.createTempFile(cfgFile.getName(), ".tmp", cfgFile.getParentFile()); if (jsonFormat) { - Configurations.buildWriter().build(new FileWriter(cfgFile)).writeConfiguration(new Hashtable(properties)); + Configurations.buildWriter().build(new FileWriter(tmpCfgFile)).writeConfiguration(new Hashtable(properties)); } else { - properties.save(cfgFile); + properties.save(tmpCfgFile); } + // File.renameTo() silently fails on Windows when the destination already exists, + // so use Files.move() with REPLACE_EXISTING to get a working atomic replace on every OS + Files.move(tmpCfgFile.toPath(), cfgFile.toPath(), + StandardCopyOption.REPLACE_EXISTING, StandardCopyOption.ATOMIC_MOVE); } private boolean isInternalKey(String key) { diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/service/RepositoryImpl.java b/features/core/src/main/java/org/apache/karaf/features/internal/service/RepositoryImpl.java index c8de71d90e0..4c1ce07e8d3 100644 --- a/features/core/src/main/java/org/apache/karaf/features/internal/service/RepositoryImpl.java +++ b/features/core/src/main/java/org/apache/karaf/features/internal/service/RepositoryImpl.java @@ -77,6 +77,7 @@ public String getName() { public URI[] getRepositories() { return features.getRepository().stream() .map(String::trim) + .filter(s -> !s.isEmpty()) .map(URI::create) .toArray(URI[]::new); } @@ -85,6 +86,7 @@ public URI[] getRepositories() { public URI[] getResourceRepositories() { return features.getResourceRepository().stream() .map(String::trim) + .filter(s -> !s.isEmpty()) .map(URI::create) .toArray(URI[]::new); } diff --git a/features/core/src/main/resources/META-INF/LICENSE b/features/core/src/main/resources/META-INF/LICENSE new file mode 100644 index 00000000000..dc541560bcd --- /dev/null +++ b/features/core/src/main/resources/META-INF/LICENSE @@ -0,0 +1,232 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed 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. + +----------------------------------------------------------------------------- + +This artifact bundles Jackson. + +Project URL: https://github.com/FasterXML/jackson +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This artifact bundles Eclipse Equinox. + +Project URL: https://projects.eclipse.org/projects/eclipse.equinox +License: Eclipse Public License 2.0 - http://www.eclipse.org/legal/epl-2.0 + +----------------------------------------------------------------------------- + +This artifact bundles OPS4J PAX Swissbox. + +Project URL: https://github.com/ops4j/org.ops4j.pax.swissbox +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- + +This product bundles OSGi. + +Project URL: https://www.osgi.org/ +License: Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt + +----------------------------------------------------------------------------- \ No newline at end of file diff --git a/features/core/src/main/resources/META-INF/NOTICE b/features/core/src/main/resources/META-INF/NOTICE new file mode 100644 index 00000000000..8d6dfc4a4c7 --- /dev/null +++ b/features/core/src/main/resources/META-INF/NOTICE @@ -0,0 +1,84 @@ +Apache Karaf :: Features :: Core +Copyright 2007-2025 The Apache Software Foundation + +----------------------------------------------------------------------------- + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +----------------------------------------------------------------------------- + +This product bundles Jackson with the following in its NOTICE: +| # Jackson JSON processor +| +| Jackson is a high-performance, Free/Open Source JSON processing library. +| It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +| been in development since 2007. +| It is currently developed by a community of developers. +| +| ## Copyright +| +| Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) +| +| ## Licensing +| +| Jackson 2.x core and extension components are licensed under Apache License 2.0 +| To find the details that apply to this artifact see the accompanying LICENSE file. +| +| ## Credits +| +| A list of contributors may be found from CREDITS(-2.x) file, which is included +| in some artifacts (usually source distributions); but is always available +| from the source code management (SCM) system project uses. + +----------------------------------------------------------------------------- + +This product bundles OSGi with the following in its NOTICE: +| # Notices for osgi +| +| This content is produced and maintained by the OSGi Specification Project. +| +| * Project home: https://projects.eclipse.org/projects/technology.osgi +| +| ## Trademarks +| +| OSGi and the OSGi Logo are trademarks of the Eclipse Foundation. Eclipse and +| the Eclipse Logo are registered trademarks of the Eclipse Foundation. +| +| ## Copyright +| +| All content is the property of the respective authors or their employers. +| For more information regarding authorship of content, please consult the +| listed source code repository logs. +| +| ## Declared Project Licenses +| +| This program and the accompanying materials are made available under the terms +| of the Apache License, Version 2.0 which is available at +| http://www.apache.org/licenses/LICENSE-2.0 +| +| SPDX-License-Identifier: Apache-2.0 +| +| ## Source Code +| +| The project maintains the following source code repositories: +| +| * https://github.com/osgi/osgi.git +| +| ## Third-party Content +| +| The Content may include items that have been sourced from third parties as follows:

+| +| JUnit +| +| * License: CPL-1.0 (JUnit 3), EPL-1.0 (JUnit 4), EPL-2.0 (JUnit 5) +| * Project: https://junit.org/ +| * Source: https://github.com/junit-team +| +| Apache Software Foundation +| +| * License: Apache-2.0 +| * Project: https://apache.org/ +| * Source: https://github.com/apache/ + +----------------------------------------------------------------------------- \ No newline at end of file diff --git a/features/core/src/test/java/org/apache/karaf/features/RepositoryTest.java b/features/core/src/test/java/org/apache/karaf/features/RepositoryTest.java index a6c7edef00a..0ddee486ce0 100644 --- a/features/core/src/test/java/org/apache/karaf/features/RepositoryTest.java +++ b/features/core/src/test/java/org/apache/karaf/features/RepositoryTest.java @@ -175,6 +175,21 @@ public void testLoadRepoWithCapabilitiesAndRequirement() throws Exception { assertEquals(1, res.getRequirements("req").size()); } + public void testLoadRepoWithEmptyRepositoryEntries() throws Exception { + RepositoryImpl r = new RepositoryImpl(getClass().getResource("repo5.xml").toURI()); + // Empty and whitespace-only repository entries should be filtered out + URI[] repos = r.getRepositories(); + assertNotNull(repos); + assertEquals(2, repos.length); + assertEquals(URI.create("urn:r1"), repos[0]); + assertEquals(URI.create("urn:r2"), repos[1]); + // Check features still load correctly + Feature[] features = r.getFeatures(); + assertNotNull(features); + assertEquals(1, features.length); + assertEquals("f1", features[0].getName()); + } + public void testShowWrongUriInException() throws Exception { String uri = "src/test/resources/org/apache/karaf/shell/features/repo1.xml"; try { diff --git a/features/core/src/test/java/org/apache/karaf/features/internal/service/DeployerTest.java b/features/core/src/test/java/org/apache/karaf/features/internal/service/DeployerTest.java index be83b4f2221..85cac4d2b77 100644 --- a/features/core/src/test/java/org/apache/karaf/features/internal/service/DeployerTest.java +++ b/features/core/src/test/java/org/apache/karaf/features/internal/service/DeployerTest.java @@ -19,6 +19,7 @@ import java.io.IOException; import java.io.InputStream; import java.net.URL; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; @@ -40,6 +41,7 @@ import org.apache.karaf.features.FeaturesService; import org.apache.karaf.features.internal.resolver.Slf4jResolverLog; import org.apache.karaf.features.internal.support.TestBundle; +import org.apache.karaf.features.internal.support.TestBundleRevision; import org.apache.karaf.features.internal.support.TestDownloadManager; import org.easymock.EasyMock; import org.easymock.IAnswer; @@ -49,6 +51,7 @@ import org.osgi.framework.Bundle; import org.osgi.framework.BundleException; import org.osgi.framework.InvalidSyntaxException; +import org.osgi.framework.wiring.BundleRevision; import org.osgi.resource.Resource; import org.osgi.resource.Wire; import org.osgi.service.resolver.Resolver; @@ -58,6 +61,7 @@ import static org.apache.karaf.features.FeaturesService.*; import static org.apache.karaf.features.internal.util.MapUtils.addToMapSet; import static org.easymock.EasyMock.anyInt; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; public class DeployerTest { @@ -134,6 +138,71 @@ public void testInstallSimpleFeature() throws Exception { c.verify(); } + @Test + public void testInstallFeatureWithFragment() throws Exception { + String dataDir = "data4"; + + TestDownloadManager manager = new TestDownloadManager(getClass(), dataDir); + + RepositoryImpl repo = new RepositoryImpl(getClass().getResource(dataDir + "/features.xml").toURI()); + Feature f = repo.getFeatures()[0]; + + URL loc = getClass().getResource(dataDir + "/b.mf"); + Manifest man = new Manifest(loc.openStream()); + Hashtable headers = new Hashtable<>(); + for (Map.Entry attr : man.getMainAttributes().entrySet()) { + headers.put(attr.getKey().toString(), attr.getValue().toString()); + } + Bundle bundle = new TestBundle(1, "b", Bundle.ACTIVE, headers) { + @Override + public A adapt(Class type) { + if (type == BundleRevision.class) { + return type.cast(new TestBundleRevision(this)); + } + return super.adapt(type); + } + }; + Bundle fragment = createTestBundle(2L, Bundle.RESOLVED, dataDir, "f"); + + Map bundles = new HashMap<>(); + bundles.put("b", bundle); + bundles.put("f", fragment); + + Deployer.DeploymentState dstate = new Deployer.DeploymentState(); + dstate.state = new State(); + dstate.bundles = new HashMap<>(); + dstate.bundles.put(1L, bundle); + dstate.bundlesPerRegion = new HashMap<>(); + dstate.bundlesPerRegion.put(ROOT_REGION, Collections.singleton(1L)); + dstate.partitionFeatures(Collections.singletonList(f)); + dstate.filtersPerRegion = new HashMap<>(); + dstate.filtersPerRegion.put(ROOT_REGION, new HashMap<>()); + + Deployer.DeploymentRequest request = new Deployer.DeploymentRequest(); + request.bundleUpdateRange = DEFAULT_BUNDLE_UPDATE_RANGE; + request.featureResolutionRange = DEFAULT_FEATURE_RESOLUTION_RANGE; + request.globalRepository = null; + request.options = EnumSet.noneOf(Option.class); + request.stateChanges = Collections.emptyMap(); + request.updateSnaphots = SnapshotUpdateBehavior.None; + request.requirements = new HashMap<>(); + addToMapSet(request.requirements, ROOT_REGION, f.getName() + "/" + new VersionRange(f.getVersion(), true)); + + final List installedBundles = new ArrayList<>(); + MyDeployCallback callback = new MyDeployCallback(dstate, bundles) { + @Override + public Bundle installBundle(String region, String uri, InputStream is) throws BundleException { + installedBundles.add(uri); + return super.installBundle(region, uri, is); + } + }; + Deployer deployer = new Deployer(manager, resolver, callback); + + deployer.deploy(dstate, request); + assertEquals(1, installedBundles.size()); + assertEquals("f", installedBundles.get(0)); + } + @Test public void testUpdateSimpleFeature() throws Exception { IMocksControl c = EasyMock.createControl(); diff --git a/features/core/src/test/java/org/apache/karaf/features/internal/service/FeatureConfigInstallerTest.java b/features/core/src/test/java/org/apache/karaf/features/internal/service/FeatureConfigInstallerTest.java index c9497fc8afd..277bd55a2f4 100644 --- a/features/core/src/test/java/org/apache/karaf/features/internal/service/FeatureConfigInstallerTest.java +++ b/features/core/src/test/java/org/apache/karaf/features/internal/service/FeatureConfigInstallerTest.java @@ -16,14 +16,21 @@ */ package org.apache.karaf.features.internal.service; +import org.apache.felix.utils.properties.TypedProperties; import org.junit.Test; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import java.io.File; +import java.io.FileWriter; +import java.io.StringReader; +import java.lang.reflect.Method; +import java.nio.file.Files; +import java.util.Objects; public class FeatureConfigInstallerTest { - + private void substEqual(final String src, final String subst) { assertEquals(FeatureConfigInstaller.substFinalName(src), subst); } @@ -51,4 +58,40 @@ public void testSubstFinalName() { substEqual("${foo}${bar}/${bar}${foo}", foo + "/" + foo); } + /** + * GH-2805: updating an existing cfg file (append or override) must write through a + * temporary file and rename it into place, so that a concurrent writer (e.g. fileinstall + * persisting the same configuration on the CM Event Dispatcher thread) can never observe + * a partially written / corrupted cfg file, and no leftover temp file remains behind. + */ + @Test + public void testUpdateExistingConfigWritesAtomically() throws Exception { + File tmpDir = Files.createTempDirectory("karaf-feature-config-installer-test").toFile(); + System.setProperty("karaf.etc", tmpDir.getAbsolutePath()); + + File cfgFile = new File(tmpDir, "my.pid.cfg"); + try (FileWriter writer = new FileWriter(cfgFile)) { + writer.write("existing.key=existing.value\n"); + } + + TypedProperties toAppend = new TypedProperties(); + toAppend.load(new StringReader("appended.key=appended.value\n")); + + FeatureConfigInstaller installer = new FeatureConfigInstaller(null, true); + + Method updateExistingConfig = FeatureConfigInstaller.class.getDeclaredMethod( + "updateExistingConfig", TypedProperties.class, boolean.class, File.class, boolean.class); + updateExistingConfig.setAccessible(true); + updateExistingConfig.invoke(installer, toAppend, true, cfgFile, false); + + TypedProperties result = new TypedProperties(); + result.load(cfgFile); + assertEquals("existing.value", result.get("existing.key")); + assertEquals("appended.value", result.get("appended.key")); + + File[] leftovers = tmpDir.listFiles((dir, name) -> name.endsWith(".tmp")); + assertTrue("no temporary file must be left behind after the atomic rename", + Objects.requireNonNull(leftovers).length == 0); + } + } diff --git a/features/core/src/test/java/org/apache/karaf/features/internal/support/TestBundleRevision.java b/features/core/src/test/java/org/apache/karaf/features/internal/support/TestBundleRevision.java new file mode 100644 index 00000000000..ee17900e3d7 --- /dev/null +++ b/features/core/src/test/java/org/apache/karaf/features/internal/support/TestBundleRevision.java @@ -0,0 +1,86 @@ +/* + * 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. + */ +package org.apache.karaf.features.internal.support; + +import java.util.List; +import java.util.stream.Collectors; + +import org.apache.felix.utils.resource.CapabilityImpl; +import org.osgi.framework.Bundle; +import org.osgi.framework.Version; +import org.osgi.framework.wiring.BundleCapability; +import org.osgi.framework.wiring.BundleRequirement; +import org.osgi.framework.wiring.BundleRevision; +import org.osgi.framework.wiring.BundleWiring; +import org.osgi.resource.Capability; +import org.osgi.resource.Requirement; + +public class TestBundleRevision implements BundleRevision { + + private final TestBundle bundle; + + public TestBundleRevision(TestBundle bundle) { + this.bundle = bundle; + } + + @Override + public String getSymbolicName() { + return bundle.getSymbolicName(); + } + + @Override + public Version getVersion() { + return bundle.getVersion(); + } + + @Override + public List getDeclaredCapabilities(String s) { + return null; + } + + @Override + public List getDeclaredRequirements(String s) { + return null; + } + + @Override + public int getTypes() { + return 0; + } + + @Override + public BundleWiring getWiring() { + return null; + } + + @Override + public List getCapabilities(String s) { + return bundle.getCapabilities(null).stream().filter(c -> !c.getNamespace().equals("osgi.content")) + .map(c -> new CapabilityImpl(this, c.getNamespace(), c.getDirectives(), c.getAttributes())) + .collect(Collectors.toList()); + } + + @Override + public List getRequirements(String s) { + return bundle.getRequirements(s); + } + + @Override + public Bundle getBundle() { + return bundle; + } +} diff --git a/features/core/src/test/resources/org/apache/karaf/features/internal/service/data4/b.mf b/features/core/src/test/resources/org/apache/karaf/features/internal/service/data4/b.mf new file mode 100644 index 00000000000..9e8ac9eab80 --- /dev/null +++ b/features/core/src/test/resources/org/apache/karaf/features/internal/service/data4/b.mf @@ -0,0 +1,4 @@ +Manifest-Version: 1 +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: b +Bundle-Version: 1.0.0 diff --git a/features/core/src/test/resources/org/apache/karaf/features/internal/service/data4/f.mf b/features/core/src/test/resources/org/apache/karaf/features/internal/service/data4/f.mf new file mode 100644 index 00000000000..a6b6067adc0 --- /dev/null +++ b/features/core/src/test/resources/org/apache/karaf/features/internal/service/data4/f.mf @@ -0,0 +1,5 @@ +Manifest-Version: 1 +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: f +Fragment-Host: b +Bundle-Version: 1.0.0 diff --git a/features/core/src/test/resources/org/apache/karaf/features/internal/service/data4/features.xml b/features/core/src/test/resources/org/apache/karaf/features/internal/service/data4/features.xml new file mode 100644 index 00000000000..886aeb3204d --- /dev/null +++ b/features/core/src/test/resources/org/apache/karaf/features/internal/service/data4/features.xml @@ -0,0 +1,22 @@ + + + + + f + + diff --git a/features/core/src/test/resources/org/apache/karaf/features/repo5.xml b/features/core/src/test/resources/org/apache/karaf/features/repo5.xml new file mode 100644 index 00000000000..b6848bdecbd --- /dev/null +++ b/features/core/src/test/resources/org/apache/karaf/features/repo5.xml @@ -0,0 +1,26 @@ + + + + urn:r1 + + + urn:r2 + + b1 + + diff --git a/features/extension/pom.xml b/features/extension/pom.xml index f2e54fd7fd7..172bcc114d0 100644 --- a/features/extension/pom.xml +++ b/features/extension/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.features features - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -52,8 +52,11 @@ org.osgi - osgi.core - provided + org.osgi.framework + + + org.osgi + org.osgi.resource org.apache.karaf diff --git a/features/pom.xml b/features/pom.xml index dd8c58fdcc1..e03766c4aa3 100644 --- a/features/pom.xml +++ b/features/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf karaf - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/http/pom.xml b/http/pom.xml index 92fd22aa1b7..58dcc5a51cc 100644 --- a/http/pom.xml +++ b/http/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf karaf - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -53,18 +53,15 @@ org.osgi - osgi.core - provided + org.osgi.framework org.osgi org.osgi.service.cm - provided org.osgi org.osgi.service.http - provided diff --git a/http/src/main/java/org/apache/karaf/http/core/internal/ProxyServiceImpl.java b/http/src/main/java/org/apache/karaf/http/core/internal/ProxyServiceImpl.java index 5e86fcffc64..2991e70e818 100644 --- a/http/src/main/java/org/apache/karaf/http/core/internal/ProxyServiceImpl.java +++ b/http/src/main/java/org/apache/karaf/http/core/internal/ProxyServiceImpl.java @@ -101,6 +101,7 @@ public void update(Dictionary properties) { String[] proxySplit = proxyString.split(" "); if (proxySplit.length == 3) { String url = proxySplit[0].trim(); + validateUrl(url); String proxyTo = proxySplit[1].trim(); String balancingPolicy = proxySplit[2].trim(); if (!proxies.containsKey(url)) { @@ -111,6 +112,9 @@ public void update(Dictionary properties) { addProxyInternal(proxy); } } + else { + LOG.error("Incorrect configuration line {}", proxyString); + } } } } @@ -131,7 +135,9 @@ private void addProxyInternal(Proxy proxy) { proxyServlet.setBalancingPolicy(balancingPolicy); } } - httpService.registerServlet(proxy.getUrl(), proxyServlet, new Hashtable(), null); + Hashtable props = new Hashtable<>(); + props.put("servlet-name", getUniqueServletName(proxy)); + httpService.registerServlet(proxy.getUrl(), proxyServlet, props, null); proxies.put(proxy.getUrl(), proxy); } catch (Exception e) { LOG.error("Can't add {} proxy to {}", proxy.getUrl(), proxy.getProxyTo(), e); @@ -160,4 +166,16 @@ private void updateConfiguration() { } } + private void validateUrl(String url) + { + if (url == null || !url.startsWith("/")) + { + throw new IllegalArgumentException("Proxy URL does not start with '/': " + url); + } + } + + private String getUniqueServletName(Proxy proxy) + { + return proxy.getUrl().substring(1); + } } diff --git a/http/src/main/resources/META-INF/NOTICE b/http/src/main/resources/META-INF/NOTICE new file mode 100644 index 00000000000..947e29d1978 --- /dev/null +++ b/http/src/main/resources/META-INF/NOTICE @@ -0,0 +1,5 @@ +Apache Karaf :: HTTP :: Core +Copyright 2007-2025 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). \ No newline at end of file diff --git a/instance/pom.xml b/instance/pom.xml index 9ab77b497ec..1117db17656 100644 --- a/instance/pom.xml +++ b/instance/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf karaf - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -54,8 +54,7 @@ org.osgi - osgi.core - provided + org.osgi.framework diff --git a/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java b/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java index d035bf57c5d..5c375f62ba1 100644 --- a/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java +++ b/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java @@ -40,6 +40,7 @@ import java.util.Scanner; import java.util.Set; import java.util.TreeMap; +import java.util.regex.Pattern; import org.apache.felix.utils.properties.InterpolationHelper; import org.apache.felix.utils.properties.Properties; @@ -88,6 +89,10 @@ public class InstanceServiceImpl implements InstanceService { public static final String DEFAULT_JAVA_OPTS = "-Xmx512m -XX:+UnlockDiagnosticVMOptions"; + // javaOpts is concatenated unquoted into a shell command line (see doStart/restartInstance), so it must + // never contain shell metacharacters; only characters that can legally appear in JVM option syntax are allowed. + private static final Pattern SAFE_JAVA_OPTS = Pattern.compile("[A-Za-z0-9_ \\t\\-+.,:=/@*]*"); + private LinkedHashMap proxies = new LinkedHashMap<>(); private File storageLocation; @@ -351,6 +356,7 @@ public synchronized Instance createInstance(final String name, final InstanceSet "etc/org.apache.karaf.command.acl.bundle.cfg", "etc/org.apache.karaf.command.acl.config.cfg", "etc/org.apache.karaf.command.acl.feature.cfg", + "etc/org.apache.karaf.command.acl.instance.cfg", "etc/org.apache.karaf.command.acl.jaas.cfg", "etc/org.apache.karaf.command.acl.kar.cfg", "etc/org.apache.karaf.command.acl.scope_bundle.cfg", @@ -483,6 +489,13 @@ public void startInstance(final String name, final String javaOpts) { }, true); } + private static void validateJavaOpts(String opts) { + if (opts != null && !SAFE_JAVA_OPTS.matcher(opts).matches()) { + throw new IllegalArgumentException("Invalid javaOpts: only JVM option characters are allowed " + + "(letters, digits, whitespace and _-+.,:=/@*)"); + } + } + private void doStart(InstanceState instance, String name, String javaOpts) throws IOException { String opts = javaOpts; if (opts == null || opts.length() == 0) { @@ -491,6 +504,7 @@ private void doStart(InstanceState instance, String name, String javaOpts) throw if (opts == null || opts.length() == 0) { opts = DEFAULT_JAVA_OPTS; } + validateJavaOpts(opts); // fallback and read karafOpts from KARAF_OPTS environment if no System property present String karafOptsEnv = System.getenv("KARAF_OPTS"); @@ -537,6 +551,9 @@ private void doStart(InstanceState instance, String name, String javaOpts) throw " --add-exports=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED" + " --add-exports=java.security.sasl/com.sun.security.sasl=ALL-UNNAMED" + " --add-exports=java.naming/com.sun.jndi.ldap=ALL-UNNAMED"; + if (!System.getProperty("java.version").startsWith("11")) { + jdkOpts += " -Djava.security.manager=allow"; + } } else { jdkOpts = " -Djava.endorsed.dirs=\"" + new File(new File(new File(System.getProperty("java.home"), "jre"), "lib"), "endorsed") + System.getProperty("path.separator") + new File(new File(System.getProperty("java.home"), "lib"), "endorsed") + System.getProperty("path.separator") + new File(libDir, "endorsed").getCanonicalPath() + "\"" + " -Djava.ext.dirs=\"" + new File(new File(new File(System.getProperty("java.home"), "jre"), "lib"), "ext") + System.getProperty("path.separator") + new File(new File(System.getProperty("java.home"), "lib"), "ext") + System.getProperty("path.separator") + new File(libDir, "ext").getCanonicalPath() + "\""; @@ -616,6 +633,7 @@ public void restartInstance(final String name, final String javaOpts) { } String current = System.getProperty("karaf.name"); if (name.equals(current)) { + validateJavaOpts(javaOpts); String location = System.getProperty("karaf.home"); StringBuilder classpath = new StringBuilder(); addJar(classpath, "org.apache.karaf.instance", "org.apache.karaf.instance.core"); diff --git a/instance/src/main/resources/org/apache/karaf/instance/resources/etc/jmx.acl.cfg b/instance/src/main/resources/org/apache/karaf/instance/resources/etc/jmx.acl.cfg index b4899bd7e9d..b6e47d751e7 100644 --- a/instance/src/main/resources/org/apache/karaf/instance/resources/etc/jmx.acl.cfg +++ b/instance/src/main/resources/org/apache/karaf/instance/resources/etc/jmx.acl.cfg @@ -70,4 +70,9 @@ list* = viewer get* = viewer is* = viewer set* = admin +# MBean lifecycle operations (creating, registering and unregistering MBeans) are +# restricted to the admin role. +createMBean = admin +registerMBean = admin +unregisterMBean = admin * = admin \ No newline at end of file diff --git a/instance/src/main/resources/org/apache/karaf/instance/resources/etc/org.apache.karaf.command.acl.config.cfg b/instance/src/main/resources/org/apache/karaf/instance/resources/etc/org.apache.karaf.command.acl.config.cfg index 1cbc8b5cd83..89336fd4f14 100644 --- a/instance/src/main/resources/org/apache/karaf/instance/resources/etc/org.apache.karaf.command.acl.config.cfg +++ b/instance/src/main/resources/org/apache/karaf/instance/resources/etc/org.apache.karaf.command.acl.config.cfg @@ -29,6 +29,12 @@ edit = manager edit[/.*jmx[.]acl.*/] = admin edit[/.*org[.]apache[.]karaf[.]command[.]acl[.].+/] = admin edit[/.*org[.]apache[.]karaf[.]service[.]acl[.].+/] = admin +# +# 'install' writes an arbitrary file (fetched from a URL) into ${karaf.etc}, which +# includes the users, keys and *.acl.* configuration files. It is restricted to +# 'admin', consistent with bundle:install, feature:install and kar:install. +# +install = admin property-append = manager property-append[/.*jmx[.]acl.*/] = admin property-append[/.*org[.]apache[.]karaf[.]command[.]acl[.].+/] = admin diff --git a/instance/src/main/resources/org/apache/karaf/instance/resources/etc/org.apache.karaf.command.acl.feature.cfg b/instance/src/main/resources/org/apache/karaf/instance/resources/etc/org.apache.karaf.command.acl.feature.cfg index 823fe3e2cc0..cefaa7a7fc2 100644 --- a/instance/src/main/resources/org/apache/karaf/instance/resources/etc/org.apache.karaf.command.acl.feature.cfg +++ b/instance/src/main/resources/org/apache/karaf/instance/resources/etc/org.apache.karaf.command.acl.feature.cfg @@ -24,3 +24,14 @@ install = admin uninstall = admin start = admin stop = admin +# +# repo-add/repo-remove stay open to the viewer role (the plain form only reads/lists +# a repository), but installing/uninstalling every feature in it via -i/-u requires +# admin. The bare "= viewer" fallback is required: a command with a regex-only ACL +# entry and no fallback is treated as admin-only for *every* invocation, because the +# command guard decides visibility before it knows the actual arguments. +# +repo-add[/.*[-][i].*/] = admin +repo-add = viewer +repo-remove[/.*[-][u].*/] = admin +repo-remove = viewer diff --git a/assemblies/apache-karaf/src/main/distribution/text/etc/keys.properties b/instance/src/main/resources/org/apache/karaf/instance/resources/etc/org.apache.karaf.command.acl.instance.cfg similarity index 50% rename from assemblies/apache-karaf/src/main/distribution/text/etc/keys.properties rename to instance/src/main/resources/org/apache/karaf/instance/resources/etc/org.apache.karaf.command.acl.instance.cfg index bdec342a222..c09da30087d 100644 --- a/assemblies/apache-karaf/src/main/distribution/text/etc/keys.properties +++ b/instance/src/main/resources/org/apache/karaf/instance/resources/etc/org.apache.karaf.command.acl.instance.cfg @@ -18,14 +18,24 @@ ################################################################################ # -# This file contains the valid users who can log into Karaf. Each line have to be of -# the format: -# -# USER=KEY,ROLE1,ROLE2,... -# -# All users and roles entered in this file are available after Karaf startup -# and modifiable via the JAAS command group. These users reside in a JAAS domain -# with the name "karaf".. -# -#karaf=AAAAB3NzaC1kc3MAAACBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdrmVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv8iIDGZ3RSAHHAAAAFQCXYFCPFSMLzLKSuYKi64QL8Fgc9QAAAIEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoAAACBAKKSU2PFl/qOLxIwmBZPPIcJshVe7bVUpFvyl3BbJDow8rXfskl8wO63OzP/qLmcJM0+JbcRU/53JjTuyk31drV2qxhIOsLDC9dGCWj47Y7TyhPdXh/0dthTRBy6bqGtRPxGa7gJov1xm/UuYYXPIUR/3x9MAZvZ5xvE0kYXO+rx,_g_:admingroup -_g_\:admingroup = group,admin,manager,viewer,systembundles,ssh \ No newline at end of file +# This configuration file defines the ACLs for commands in the instance subshell +# +# For an explanation of the syntax of this file, see the file: +# org.apache.karaf.command.acl.system.cfg +# +list = viewer +status = viewer +clone = admin +connect = admin +create = admin +destroy = admin +opts-change = admin +package = admin +rename = admin +restart = admin +rmi-registry-port-change = admin +rmi-server-port-change = admin +ssh-host-change = admin +ssh-port-change = admin +start = admin +stop = admin diff --git a/itests/common/pom.xml b/itests/common/pom.xml index 26953f2b26d..e7990ebae16 100644 --- a/itests/common/pom.xml +++ b/itests/common/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.itests itests - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -84,12 +84,18 @@ org.osgi - osgi.core - provided + org.osgi.framework + compile + + + org.osgi + org.osgi.util.tracker + compile org.apache.felix org.apache.felix.configadmin + compile @@ -121,4 +127,4 @@ - \ No newline at end of file + diff --git a/itests/common/src/main/java/org/apache/karaf/itests/KarafTestSupport.java b/itests/common/src/main/java/org/apache/karaf/itests/KarafTestSupport.java index 75f5b111f45..9e941234a97 100644 --- a/itests/common/src/main/java/org/apache/karaf/itests/KarafTestSupport.java +++ b/itests/common/src/main/java/org/apache/karaf/itests/KarafTestSupport.java @@ -109,9 +109,9 @@ public class KarafTestSupport { // Commands provided by boot features will be available to the test at all times // Only additionally installed features may require a proper custom timeout - // keep the default command timeout to ensure existing tests don't break, but use this - // as a default timeout for aliases - static final Long ALIAS_SERVICE_TIMEOUT = 1L; + // Aliases are resolved via the init script but the underlying command service + // may not yet be registered, so allow a reasonable wait on CI + static final Long ALIAS_SERVICE_TIMEOUT = 30000L; private static Logger LOG = LoggerFactory.getLogger(KarafTestSupport.class); diff --git a/itests/pom.xml b/itests/pom.xml index acfc477378f..af37284eeec 100644 --- a/itests/pom.xml +++ b/itests/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf karaf - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml diff --git a/itests/test/pom.xml b/itests/test/pom.xml index d71c0e4125c..3b103a46996 100644 --- a/itests/test/pom.xml +++ b/itests/test/pom.xml @@ -24,7 +24,7 @@ org.apache.karaf.itests itests - 4.4.5-SNAPSHOT + 4.4.12-SNAPSHOT ../pom.xml @@ -77,8 +77,7 @@ org.osgi - osgi.core - provided + org.osgi.framework @@ -196,23 +195,16 @@ ${bouncycastle.version} - - com.google.guava - guava - ${guava.version} - test - - org.eclipse.jetty.websocket websocket-client - 9.4.52.v20230823 + 9.4.58.v20250814 test org.eclipse.jetty jetty-server - 9.4.52.v20230823 + 9.4.58.v20250814 test @@ -311,12 +303,17 @@ 1 false + + INFO ${spring31.version} ${spring43.version} ${spring52.version} ${spring53.version} + ${spring60.version} + ${spring61.version} ${spring.security31.version} ${spring.security42.version} ${spring.security53.version} @@ -324,6 +321,7 @@ ${spring.security55.version} ${spring.security56.version} ${spring.security57.version} + ${spring.security62.version} ${activemq.version} ${project.version} file:src/test/resources/controlled-exam.properties @@ -373,6 +371,9 @@ MavenTest + + ${maven.repo.local} INFO @@ -381,6 +382,8 @@ ${spring43.version} ${spring52.version} ${spring53.version} + ${spring60.version} + ${spring61.version} ${spring.security31.version} ${spring.security42.version} ${spring.security53.version} @@ -388,6 +391,7 @@ ${spring.security55.version} ${spring.security56.version} ${spring.security57.version} + ${spring.security62.version} ${activemq.version} diff --git a/itests/test/src/test/filtered-resources/etc/feature.xml b/itests/test/src/test/filtered-resources/etc/feature.xml index 023bd2981da..03726969db9 100644 --- a/itests/test/src/test/filtered-resources/etc/feature.xml +++ b/itests/test/src/test/filtered-resources/etc/feature.xml @@ -110,6 +110,10 @@ uninstall = admin start = admin stop = admin + repo-add[/.*[-][i].*/] = admin + repo-add = viewer + repo-remove[/.*[-][u].*/] = admin + repo-remove = viewer mvn:org.apache.karaf.features/org.apache.karaf.features.command/${project.version} @@ -411,6 +415,12 @@ edit[/.*jmx[.]acl.*/] = admin edit[/.*org[.]apache[.]karaf[.]command[.]acl[.].+/] = admin edit[/.*org[.]apache[.]karaf[.]service[.]acl[.].+/] = admin + # + # 'install' writes an arbitrary file (fetched from a URL) into ${karaf.etc}, which + # includes the users, keys and *.acl.* configuration files. It is restricted to + # 'admin', consistent with bundle:install, feature:install and kar:install. + # + install = admin property-append = manager property-append[/.*jmx[.]acl.*/] = admin property-append[/.*org[.]apache[.]karaf[.]command[.]acl[.].+/] = admin diff --git a/itests/test/src/test/java/org/apache/karaf/itests/BaseTest.java b/itests/test/src/test/java/org/apache/karaf/itests/BaseTest.java index bae38913de7..fde688fb2e6 100644 --- a/itests/test/src/test/java/org/apache/karaf/itests/BaseTest.java +++ b/itests/test/src/test/java/org/apache/karaf/itests/BaseTest.java @@ -29,6 +29,8 @@ public Option[] config() { KarafDistributionOption.editConfigurationFilePut("etc/system.properties", "spring43.version", System.getProperty("spring43.version")), KarafDistributionOption.editConfigurationFilePut("etc/system.properties", "spring52.version", System.getProperty("spring52.version")), KarafDistributionOption.editConfigurationFilePut("etc/system.properties", "spring53.version", System.getProperty("spring53.version")), + KarafDistributionOption.editConfigurationFilePut("etc/system.properties", "spring60.version", System.getProperty("spring60.version")), + KarafDistributionOption.editConfigurationFilePut("etc/system.properties", "spring61.version", System.getProperty("spring61.version")), KarafDistributionOption.editConfigurationFilePut("etc/system.properties", "spring.security31.version", System.getProperty("spring.security31.version")), KarafDistributionOption.editConfigurationFilePut("etc/system.properties", "spring.security42.version", System.getProperty("spring.security42.version")), KarafDistributionOption.editConfigurationFilePut("etc/system.properties", "spring.security53.version", System.getProperty("spring.security53.version")), @@ -36,6 +38,7 @@ public Option[] config() { KarafDistributionOption.editConfigurationFilePut("etc/system.properties", "spring.security55.version", System.getProperty("spring.security55.version")), KarafDistributionOption.editConfigurationFilePut("etc/system.properties", "spring.security56.version", System.getProperty("spring.security56.version")), KarafDistributionOption.editConfigurationFilePut("etc/system.properties", "spring.security57.version", System.getProperty("spring.security57.version")), + KarafDistributionOption.editConfigurationFilePut("etc/system.properties", "spring.security62.version", System.getProperty("spring.security62.version")), KarafDistributionOption.editConfigurationFilePut("etc/system.properties", "activemq.version", System.getProperty("activemq.version")) }; return Stream.of(super.config(), options).flatMap(Stream::of).toArray(Option[]::new); diff --git a/itests/test/src/test/java/org/apache/karaf/itests/ConfigTest.java b/itests/test/src/test/java/org/apache/karaf/itests/ConfigTest.java index 20a6d0f193f..f53014ff8e3 100644 --- a/itests/test/src/test/java/org/apache/karaf/itests/ConfigTest.java +++ b/itests/test/src/test/java/org/apache/karaf/itests/ConfigTest.java @@ -13,11 +13,6 @@ */ package org.apache.karaf.itests; -import static org.hamcrest.Matchers.hasItem; -import static org.hamcrest.Matchers.hasKey; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertThat; - import java.lang.management.ManagementFactory; import java.util.List; import java.util.Map; @@ -31,6 +26,8 @@ import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy; import org.ops4j.pax.exam.spi.reactors.PerClass; +import static org.junit.Assert.*; + @RunWith(PaxExam.class) @ExamReactorStrategy(PerClass.class) public class ConfigTest extends BaseTest { @@ -66,10 +63,12 @@ public void configsViaMBean() throws Exception { MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer(); ObjectName name = new ObjectName("org.apache.karaf:type=config,name=root"); List configs = (List) mbeanServer.getAttribute(name, "Configs"); - assertThat(configs, hasItem("org.apache.karaf.features")); + String found = configs.stream().filter(c -> c.equals("org.apache.karaf.features")).findAny().orElse(null); + assertNotNull(found); Map properties = (Map) mbeanServer .invoke(name, "listProperties", new Object[]{"org.apache.karaf.features"}, new String[]{"java.lang.String"}); - assertThat(properties, hasKey("featuresRepositories")); + String key = properties.keySet().stream().filter(c -> c.equals("featuresRepositories")).findAny().orElse(null); + assertNotNull(key); } } diff --git a/itests/test/src/test/java/org/apache/karaf/itests/FeatureTest.java b/itests/test/src/test/java/org/apache/karaf/itests/FeatureTest.java index 6d6a6595fd5..d6e4755379c 100644 --- a/itests/test/src/test/java/org/apache/karaf/itests/FeatureTest.java +++ b/itests/test/src/test/java/org/apache/karaf/itests/FeatureTest.java @@ -77,7 +77,7 @@ public void listCommand() throws Exception { @Test public void listCommandFromRepository() { - executeCommand("feature:repo-add mvn:org.apache.karaf.cellar/apache-karaf-cellar/3.0.0/xml/features"); + executeCommand("feature:repo-add mvn:org.apache.karaf.cellar/apache-karaf-cellar/3.0.0/xml/features", new RolePrincipal("viewer")); String repositoryName = "karaf-cellar-3.0.0"; String featureListOutput = executeCommand("feature:list --repository " + repositoryName); assertFalse(featureListOutput.isEmpty()); @@ -151,17 +151,17 @@ public void installUninstallViaMBean() throws Exception { @Test public void repoAddRemoveCommand() throws Exception { - System.out.println(executeCommand("feature:repo-add mvn:org.apache.karaf.cellar/apache-karaf-cellar/3.0.0/xml/features")); + System.out.println(executeCommand("feature:repo-add mvn:org.apache.karaf.cellar/apache-karaf-cellar/3.0.0/xml/features", new RolePrincipal("viewer"))); assertContains("apache-karaf-cellar", executeCommand("feature:repo-list")); - System.out.println(executeCommand("feature:repo-remove mvn:org.apache.karaf.cellar/apache-karaf-cellar/3.0.0/xml/features")); + System.out.println(executeCommand("feature:repo-remove mvn:org.apache.karaf.cellar/apache-karaf-cellar/3.0.0/xml/features", new RolePrincipal("viewer"))); assertContainsNot("apache-karaf-cellar", executeCommand("feature:repo-list")); } @Test public void repoAddRemoveCommandWithRegex() throws Exception { - System.out.println(executeCommand("feature:repo-add mvn:org.apache.karaf.cellar/apache-karaf-cellar/3.0.0/xml/features")); + System.out.println(executeCommand("feature:repo-add mvn:org.apache.karaf.cellar/apache-karaf-cellar/3.0.0/xml/features", new RolePrincipal("viewer"))); assertContains("apache-karaf-cellar", executeCommand("feature:repo-list")); - System.out.println(executeCommand("feature:repo-remove '.*apache-karaf-cellar.*'")); + System.out.println(executeCommand("feature:repo-remove '.*apache-karaf-cellar.*'", new RolePrincipal("viewer"))); assertContainsNot("apache-karaf-cellar", executeCommand("feature:repo-list")); } diff --git a/itests/test/src/test/java/org/apache/karaf/itests/HttpTest.java b/itests/test/src/test/java/org/apache/karaf/itests/HttpTest.java index 3374b681e66..69cc2b1ba2a 100644 --- a/itests/test/src/test/java/org/apache/karaf/itests/HttpTest.java +++ b/itests/test/src/test/java/org/apache/karaf/itests/HttpTest.java @@ -59,6 +59,7 @@ public void listViaMBean() throws Exception { @Test public void testProxy() throws Exception { executeCommand("http:proxy-add /test1 http://karaf.apache.org"); + executeCommand("http:proxy-add /test2 http://karaf.apache.org"); String output = executeCommand("http:proxy-balancing-list"); System.out.println(output); @@ -68,6 +69,13 @@ public void testProxy() throws Exception { output = executeCommand("http:proxy-list"); System.out.println(output); assertContains("/test1", output); + assertContains("/test2", output); } + @Test + public void testIncorrectProxyUrlFails() throws Exception { + executeCommand("http:proxy-add no-slash-prefix http://karaf.apache.org"); + String output = executeCommand("http:proxy-list"); + assertContainsNot("no-slash-prefix", output); + } } diff --git a/itests/test/src/test/java/org/apache/karaf/itests/ImportServiceTest.java b/itests/test/src/test/java/org/apache/karaf/itests/ImportServiceTest.java index acaad0234b8..5b4ca1bcb56 100644 --- a/itests/test/src/test/java/org/apache/karaf/itests/ImportServiceTest.java +++ b/itests/test/src/test/java/org/apache/karaf/itests/ImportServiceTest.java @@ -13,8 +13,6 @@ */ package org.apache.karaf.itests; -import static org.ops4j.pax.tinybundles.core.TinyBundles.bundle; - import java.io.InputStream; import java.util.ArrayList; import java.util.Arrays; @@ -29,6 +27,7 @@ import org.ops4j.pax.exam.junit.PaxExam; import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy; import org.ops4j.pax.exam.spi.reactors.PerClass; +import org.ops4j.pax.tinybundles.TinyBundles; import org.osgi.framework.Bundle; import org.osgi.framework.Constants; @@ -43,18 +42,18 @@ public class ImportServiceTest extends BaseTest { @Configuration public Option[] config() { List