diff --git a/.github/actions/common/action.yml b/.github/actions/common/action.yml
new file mode 100644
index 00000000000..06916523fe1
--- /dev/null
+++ b/.github/actions/common/action.yml
@@ -0,0 +1,159 @@
+#
+# Copyright (c) 2024 Oracle and/or its affiliates.
+#
+# 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.
+#
+
+name: 'Common Job Steps'
+description: A composite action that abstracts the common steps needed to implement a job
+inputs:
+ native-image:
+ description: Whether to setup GraalVM native-image
+ required: false
+ default: 'false'
+ maven-cache:
+ description: Whether to cache the Maven local repository (read-only or read-write)
+ required: false
+ default: 'read-only'
+ build-cache:
+ description: Whether to cache the Maven build (read-only or read-write)
+ required: false
+ default: ''
+ build-cache-id:
+ description: Build cache id
+ required: false
+ default: 'default'
+ run:
+ description: The bash command to run
+ required: true
+ artifact-name:
+ description: Name of the artifact to create
+ required: false
+ default: ''
+ artifact-path:
+ description: Path of the files to include in the artifact
+ required: false
+ default: ''
+ test-artifact-name:
+ description: Name of the test artifact to create (excluded on windows), if non empty tests are archived
+ required: false
+ default: ''
+ free-space:
+ description: Whether to aggressively free disk space on the runner
+ default: 'false'
+runs:
+ using: "composite"
+ steps:
+ - if: ${{ inputs.free-space == 'true' }}
+ # See https://github.com/actions/runner-images/issues/2840
+ name: Free disk space
+ shell: bash
+ run: |
+ sudo rm -rf /usr/share/dotnet
+ sudo rm -rf /usr/local/share/powershell
+ - if: ${{ runner.os == 'Windows' }}
+ name: Use GNU tar
+ shell: cmd
+ run: |
+ echo "Adding GNU tar to PATH"
+ echo C:\Program Files\Git\usr\bin>>"%GITHUB_PATH%"
+ git config --global core.autocrlf false
+ git config --global core.eol lf
+ - name: Set up GraalVM
+ if: ${{ inputs.native-image == 'true' }}
+ uses: graalvm/setup-graalvm@v1.2.4
+ with:
+ java-version: ${{ env.GRAALVM_VERSION || env.JAVA_VERSION }}
+ components: ${{ env.GRAALVM_COMPONENTS }}
+ check-for-updates: 'false'
+ set-java-home: 'false'
+ - name: Set up JDK
+ uses: actions/setup-java@v4.1.0
+ with:
+ distribution: ${{ env.JAVA_DISTRO }}
+ java-version: ${{ env.JAVA_VERSION }}
+ - name: Cache local Maven repository (read-write)
+ if: ${{ inputs.maven-cache == 'read-write' }}
+ uses: actions/cache@v4.0.2
+ with:
+ # See https://github.com/actions/toolkit/issues/713
+ # Include must not match top level directories
+ path: |
+ .m2/repository/**/*.*
+ !.m2/repository/io/helidon/**
+ enableCrossOsArchive: true
+ # only hash top-level poms to keep it fast
+ key: local-maven-${{ hashFiles('*/pom.xml', 'pom.xml') }}
+ restore-keys: |
+ local-maven-
+ - name: Cache local Maven repository (read-only)
+ if: ${{ inputs.maven-cache == 'read-only' }}
+ uses: actions/cache/restore@v4.0.2
+ with:
+ path: |
+ .m2/repository/**/*.*
+ !.m2/repository/io/helidon/**
+ enableCrossOsArchive: true
+ key: local-maven-${{ hashFiles('*/pom.xml', 'pom.xml') }}
+ restore-keys: |
+ local-maven-
+ - name: Build cache (read-write)
+ if: ${{ inputs.build-cache == 'read-write' }}
+ uses: actions/cache@v4.0.2
+ with:
+ path: |
+ ./**/target/**
+ .m2/repository/io/helidon/**
+ enableCrossOsArchive: true
+ key: build-cache-${{ github.run_id }}-${{ github.run_attempt }}-${{ inputs.build-cache-id }}
+ restore-keys: |
+ build-cache-${{ github.run_id }}-${{ github.run_attempt }}-
+ build-cache-${{ github.run_id }}-
+ - name: Build cache (read-only)
+ if: ${{ inputs.build-cache == 'read-only' }}
+ uses: actions/cache/restore@v4.0.2
+ with:
+ path: |
+ ./**/target/**
+ .m2/repository/io/helidon/**
+ enableCrossOsArchive: true
+ fail-on-cache-miss: true
+ key: build-cache-${{ github.run_id }}-${{ github.run_attempt }}-${{ inputs.build-cache-id }}
+ restore-keys: |
+ build-cache-${{ github.run_id }}-${{ github.run_attempt }}-
+ build-cache-${{ github.run_id }}-
+ - name: Exec
+ env:
+ MAVEN_ARGS: |
+ ${{ env.MAVEN_ARGS }}
+ -Dmaven.repo.local=${{ github.workspace }}/.m2/repository
+ run: ${{ inputs.run }}
+ shell: bash
+ - name: Archive test results
+ # https://github.com/actions/upload-artifact/issues/240
+ if: ${{ inputs.test-artifact-name != '' && runner.os != 'Windows' && always() }}
+ uses: actions/upload-artifact@v4
+ with:
+ if-no-files-found: 'ignore'
+ name: ${{ inputs.test-artifact-name }}
+ path: |
+ **/target/surefire-reports/**
+ **/target/failsafe-reports/**
+ **/target/it/**/*.log
+ - name: Archive artifacts
+ if: ${{ inputs.artifact-name != '' && inputs.artifact-path != '' && always() }}
+ uses: actions/upload-artifact@v4
+ with:
+ if-no-files-found: 'ignore'
+ name: ${{ inputs.artifact-name }}
+ path: ${{ inputs.artifact-path }}
diff --git a/.github/workflows/assign-issue-to-project.yml b/.github/workflows/assign-issue-to-project.yml
deleted file mode 100644
index d639c270277..00000000000
--- a/.github/workflows/assign-issue-to-project.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-name: Assign Issue to Project
-
-on:
- issues:
- types: [opened, reopened]
-env:
- GITHUB_API_KEY: ${{ secrets.GITHUB_TOKEN }}
-
-
-jobs:
- Assign-Issue-To-Backlog:
- runs-on: ubuntu-latest
- steps:
- - name: Check out repository code
- uses: actions/checkout@v4
- - run: etc/scripts/actions/assign-issue-to-project.sh $GITHUB_REPOSITORY ${{ github.event.issue.number }} Backlog Triage
diff --git a/.github/workflows/backport-issues.yml b/.github/workflows/backport-issues.yml
new file mode 100644
index 00000000000..b017feb9002
--- /dev/null
+++ b/.github/workflows/backport-issues.yml
@@ -0,0 +1,56 @@
+#
+# Copyright (c) 2022, 2024 Oracle and/or its affiliates.
+#
+# 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.
+
+name: Create Backport Issues
+
+on:
+ workflow_dispatch:
+ inputs:
+ issue:
+ description: 'Issue number'
+ required: true
+ version:
+ description: 'Helidon version this issue was reported for'
+ required: true
+ type: choice
+ options:
+ - 2.x
+ - 3.x
+ - 4.x
+ default: '2.x'
+ target-2:
+ type: boolean
+ description: 'Port to 2.x?'
+ default: false
+ target-3:
+ type: boolean
+ description: 'Port to 3.x?'
+ default: true
+ target-4:
+ type: boolean
+ description: 'Port to 4.x?'
+ default: true
+
+env:
+ GITHUB_API_KEY: ${{ secrets.GITHUB_TOKEN }}
+
+
+jobs:
+ Issue-Backport:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check out repository code
+ uses: actions/checkout@v4
+ - run: etc/scripts/backport-issues.sh $GITHUB_REPOSITORY ${{ github.event.inputs.issue }} ${{ github.event.inputs.version }} ${{ github.event.inputs.target-2 }} ${{ github.event.inputs.target-3 }} ${{ github.event.inputs.target-4 }}
diff --git a/.github/workflows/create-backport-issues.yml b/.github/workflows/create-backport-issues.yml
deleted file mode 100644
index a42abfdbe49..00000000000
--- a/.github/workflows/create-backport-issues.yml
+++ /dev/null
@@ -1,41 +0,0 @@
-name: Create Backport Issues
-
-on:
- workflow_dispatch:
- inputs:
- issue:
- description: 'Issue number'
- required: true
- version:
- description: 'Helidon version this issue was reported for'
- required: true
- type: choice
- options:
- - 2.x
- - 3.x
- - 4.x
- default: '2.x'
- target-2:
- type: boolean
- description: 'Port to 2.x?'
- default: false
- target-3:
- type: boolean
- description: 'Port to 3.x?'
- default: true
- target-4:
- type: boolean
- description: 'Port to 4.x?'
- default: true
-
-env:
- GITHUB_API_KEY: ${{ secrets.GITHUB_TOKEN }}
-
-
-jobs:
- Issue-Backport:
- runs-on: ubuntu-latest
- steps:
- - name: Check out repository code
- uses: actions/checkout@v4
- - run: etc/scripts/actions/create-backport-issues.sh $GITHUB_REPOSITORY ${{ github.event.inputs.issue }} ${{ github.event.inputs.version }} ${{ github.event.inputs.target-2 }} ${{ github.event.inputs.target-3 }} ${{ github.event.inputs.target-4 }}
diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml
index e7e72b18ad3..85d47032d56 100644
--- a/.github/workflows/release.yaml
+++ b/.github/workflows/release.yaml
@@ -1,66 +1,161 @@
-# Notes
-# - cannot run on Windows, as we use shell scripts
+#
+# Copyright (c) 2023, 2024 Oracle and/or its affiliates.
+#
+# 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.
name: "Release"
on:
push:
- branches:
- - 'release-*'
+ branches: [ 'release-*' ]
+
env:
JAVA_VERSION: '21'
JAVA_DISTRO: 'oracle'
- MAVEN_HTTP_ARGS: '-Dmaven.wagon.httpconnectionManager.ttlSeconds=60 -Dmaven.wagon.http.retryHandler.count=3'
+ MAVEN_ARGS: |
+ -B -e
+ -Dmaven.wagon.httpconnectionManager.ttlSeconds=60
+ -Dmaven.wagon.http.retryHandler.count=3
+ -Djdk.toolchain.version=${JAVA_VERSION}
+ -Dcache.enabled=true
concurrency:
group: release-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
- copyright:
- timeout-minutes: 10
+ create-tag:
runs-on: ubuntu-20.04
+ environment: release
+ outputs:
+ version: ${{ steps.create-tag.outputs.version }}
+ tag: ${{ steps.create-tag.outputs.tag }}
steps:
- uses: actions/checkout@v4
with:
- fetch-depth: 0
- - name: Set up JDK ${{ env.JAVA_VERSION }}
- uses: actions/setup-java@v4.1.0
- with:
- distribution: ${{ env.JAVA_DISTRO }}
- java-version: ${{ env.JAVA_VERSION }}
- cache: maven
- - name: Copyright
- run: etc/scripts/copyright.sh
- release:
- timeout-minutes: 60
+ fetch-depth: '0'
+ token: ${{ secrets.SERVICE_ACCOUNT_TOKEN }}
+ - id: create-tag
+ run: ./etc/scripts/release.sh create_tag >> "${GITHUB_OUTPUT}"
+ validate:
+ needs: create-tag
+ uses: ./.github/workflows/validate.yml
+ with:
+ ref: ${{ needs.create-tag.outputs.tag }}
+ stage:
+ needs: [ create-tag, validate ]
+ strategy:
+ matrix:
+ moduleSet: [ core, integrations, others ]
runs-on: ubuntu-20.04
+ timeout-minutes: 30
environment: release
steps:
- uses: actions/checkout@v4
with:
- token: ${{ secrets.SERVICE_ACCOUNT_TOKEN }}
fetch-depth: '0'
- - name: Set up JDK ${{ env.JAVA_VERSION }}
- uses: actions/setup-java@v4.1.0
+ ref: ${{ needs.create-tag.outputs.tag }}
+ - uses: actions/download-artifact@v4
with:
- distribution: ${{ env.JAVA_DISTRO }}
- java-version: ${{ env.JAVA_VERSION }}
- cache: maven
- - name: Release
+ pattern: "{javadoc-jars-${{ matrix.moduleSet }},docs}"
+ merge-multiple: true
+ - shell: bash
env:
GPG_PASSPHRASE: ${{ secrets.HELIDON_GPG_PASSPHRASE }}
GPG_PRIVATE_KEY: ${{ secrets.HELIDON_GPG_PRIVATE_KEY }}
- GPG_PUBLIC_KEY: ${{ secrets.HELIDON_GPG_PUBLIC_KEY }}
- MAVEN_SETTINGS: ${{ secrets.MAVEN_SETTINGS }}
- RELEASE_WORKFLOW: "true"
+ run: etc/scripts/setup-gpg.sh
+ - uses: ./.github/actions/common
+ with:
+ build-cache: read-only
+ artifact-name: io-helidon-artifacts-part-${{ matrix.moduleSet }}
+ artifact-path: staging
+ run: |
+ mvn ${MAVEN_ARGS} \
+ -DreactorRule=default \
+ -DmoduleSet=${{ matrix.moduleSet }} \
+ -Dcache.loadSuffixes=javadoc,docs \
+ -Prelease,no-snapshots \
+ -DskipTests \
+ -DaltDeploymentRepository=":::file://${PWD}/staging" \
+ deploy
+ deploy:
+ needs: [ create-tag, stage ]
+ runs-on: ubuntu-24.04
+ timeout-minutes: 20
+ environment: release
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: '0'
+ ref: ${{ needs.create-tag.outputs.tag }}
+ - uses: actions/download-artifact@v4
+ with:
+ pattern: io-helidon-artifacts-part-*
+ path: staging
+ merge-multiple: true
+ - shell: bash
+ env:
+ NEXUS_USER: ${{ secrets.NEXUS_USER }}
+ NEXUS_PASSWORD: ${{ secrets.NEXUS_PASSWORD }}
run: |
- git config user.email "helidon-robot_ww@oracle.com"
- git config user.name "Helidon Robot"
- etc/scripts/release.sh release_build
- - name: Upload Staged Artifacts
- uses: actions/upload-artifact@v4
+ etc/scripts/nexus.sh deploy_release \
+ --dir="staging" \
+ --description="Helidon v%{version}"
+ - uses: actions/upload-artifact@v4
+ with:
+ name: io-helidon-artifacts-${{ needs.create-tag.outputs.version }}
+ path: staging
+ resolve-all:
+ needs: [ create-tag, deploy ]
+ timeout-minutes: 30
+ runs-on: ubuntu-20.04
+ name: resolve-all
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: '0'
+ ref: ${{ needs.create-tag.outputs.tag }}
+ - uses: ./.github/actions/common
+ with:
+ run: |
+ mvn ${MAVEN_ARGS} -N \
+ -Possrh-staging \
+ -Dartifact=io.helidon:helidon-all:${{ needs.create-tag.outputs.version }}:pom \
+ dependency:get
+ smoketest:
+ needs: [ create-tag, deploy ]
+ timeout-minutes: 30
+ strategy:
+ matrix:
+ archetype:
+ - bare-se
+ - bare-mp
+ - quickstart-se
+ - quickstart-mp
+ - database-se
+ - database-mp
+ runs-on: ubuntu-20.04
+ name: smoketest/${{ matrix.archetype }}
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: '0'
+ ref: ${{ needs.create-tag.outputs.tag }}
+ - uses: ./.github/actions/common
with:
- name: io-helidon-artifacts-${{ github.ref_name }}
- path: parent/target/nexus-staging/
- retention-days: 90
+ run: |
+ ./etc/scripts/smoketest.sh \
+ --clean \
+ --staged \
+ --version=${{ needs.create-tag.outputs.version }} \
+ --archetype=${{ matrix.archetype }}
diff --git a/.github/workflows/snapshot.yaml b/.github/workflows/snapshot.yaml
new file mode 100644
index 00000000000..7cb27e7863d
--- /dev/null
+++ b/.github/workflows/snapshot.yaml
@@ -0,0 +1,114 @@
+#
+# Copyright (c) 2023, 2024 Oracle and/or its affiliates.
+#
+# 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.
+
+name: "Snapshot Release"
+
+on:
+ workflow_dispatch:
+ push:
+ branches:
+ - 'main'
+ - 'helidon-*.x'
+
+env:
+ JAVA_VERSION: '21'
+ JAVA_DISTRO: 'oracle'
+ MAVEN_ARGS: |
+ -B -e
+ -Dmaven.wagon.httpconnectionManager.ttlSeconds=60
+ -Dmaven.wagon.http.retryHandler.count=3
+ -Djdk.toolchain.version=${JAVA_VERSION}
+ -Dcache.enabled=true
+
+concurrency:
+ group: snapshot-${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: false
+
+jobs:
+ get-version:
+ runs-on: ubuntu-20.04
+ environment: release
+ outputs:
+ version: ${{ steps.get-version.outputs.version }}
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: '0'
+ - id: get-version
+ shell: bash
+ run: ./etc/scripts/release.sh get_version >> "${GITHUB_OUTPUT}"
+ validate:
+ needs: get-version
+ uses: ./.github/workflows/validate.yml
+ stage:
+ needs: [ get-version, validate ]
+ strategy:
+ matrix:
+ moduleSet: [ core, integrations, others ]
+ runs-on: ubuntu-20.04
+ timeout-minutes: 30
+ environment: release
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: '0'
+ - uses: actions/download-artifact@v4
+ with:
+ pattern: "{javadoc-jars-${{ matrix.moduleSet }},docs}"
+ merge-multiple: true
+ - shell: bash
+ env:
+ GPG_PASSPHRASE: ${{ secrets.HELIDON_GPG_PASSPHRASE }}
+ GPG_PRIVATE_KEY: ${{ secrets.HELIDON_GPG_PRIVATE_KEY }}
+ run: etc/scripts/setup-gpg.sh
+ - uses: ./.github/actions/common
+ with:
+ build-cache: read-only
+ artifact-name: io-helidon-artifacts-part-${{ matrix.moduleSet }}
+ artifact-path: staging
+ run: |
+ mvn ${MAVEN_ARGS} \
+ -DreactorRule=default \
+ -DmoduleSet=${{ matrix.moduleSet }} \
+ -Dcache.loadSuffixes=javadoc,docs \
+ -Prelease\
+ -DskipTests \
+ -DaltDeploymentRepository=":::file://${PWD}/staging" \
+ deploy
+ deploy:
+ needs: [ get-version, stage ]
+ runs-on: ubuntu-24.04
+ timeout-minutes: 20
+ environment: release
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: '0'
+ - uses: actions/download-artifact@v4
+ with:
+ pattern: io-helidon-artifacts-part-*
+ path: staging
+ merge-multiple: true
+ - shell: bash
+ env:
+ NEXUS_USER: ${{ secrets.NEXUS_USER }}
+ NEXUS_PASSWORD: ${{ secrets.NEXUS_PASSWORD }}
+ run: |
+ etc/scripts/nexus.sh deploy_snapshots \
+ --dir="staging"
+ - uses: actions/upload-artifact@v4
+ with:
+ name: io-helidon-artifacts-${{ needs.get-version.outputs.version }}
+ path: staging
diff --git a/.github/workflows/snapshotrelease.yaml b/.github/workflows/snapshotrelease.yaml
deleted file mode 100644
index a4be65e8357..00000000000
--- a/.github/workflows/snapshotrelease.yaml
+++ /dev/null
@@ -1,39 +0,0 @@
-# Perform a snapshot build and deploy to snapshot repository
-# Notes
-# - cannot run on Windows, as we use shell scripts
-
-name: "Snapshot Release"
-
-on:
- workflow_dispatch:
-
-env:
- JAVA_VERSION: '21'
- JAVA_DISTRO: 'oracle'
- MAVEN_HTTP_ARGS: '-Dmaven.wagon.httpconnectionManager.ttlSeconds=60 -Dmaven.wagon.http.retryHandler.count=3'
-
-concurrency:
- group: release-${{ github.workflow }}-${{ github.ref }}
- cancel-in-progress: false
-
-jobs:
- deploy:
- timeout-minutes: 60
- runs-on: ubuntu-20.04
- environment: release
- steps:
- - uses: actions/checkout@v4
- with:
- fetch-depth: '0'
- - name: Set up JDK ${{ env.JAVA_VERSION }}
- uses: actions/setup-java@v4.1.0
- with:
- distribution: ${{ env.JAVA_DISTRO }}
- java-version: ${{ env.JAVA_VERSION }}
- cache: maven
- - name: Build and deploy
- env:
- MAVEN_SETTINGS: ${{ secrets.MAVEN_SETTINGS }}
- RELEASE_WORKFLOW: "true"
- run: |
- etc/scripts/release.sh deploy_snapshot
diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml
index b67d15807b3..cdf932620ec 100644
--- a/.github/workflows/validate.yml
+++ b/.github/workflows/validate.yml
@@ -1,173 +1,379 @@
-# Notes
-# - cannot run on Windows, as we use shell scripts
-# - removed macos from most jobs to speed up the process
+#
+# Copyright (c) 2023, 2024 Oracle and/or its affiliates.
+#
+# 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.
name: "Validate"
-on: [pull_request, push]
+on:
+ pull_request:
+ push:
+ branches-ignore: [ 'main', 'helidon-*.x', 'release-*' ]
+ tags-ignore: [ '**' ]
+ workflow_call:
+ inputs:
+ ref:
+ description: The branch, tag or SHA to checkout
+ required: false
+ type: string
+ default: ''
env:
- JAVA_VERSION: '21'
- JAVA_DISTRO: 'oracle'
- HELIDON_PIPELINES: 'true'
- MAVEN_HTTP_ARGS: '-Dmaven.wagon.httpconnectionManager.ttlSeconds=60 -Dmaven.wagon.http.retryHandler.count=3'
+ JAVA_VERSION: 21
+ GRAALVM_VERSION: 21.0.3
+ JAVA_DISTRO: oracle
+ MAVEN_ARGS: |
+ -B -fae -e
+ -Dmaven.wagon.httpconnectionManager.ttlSeconds=60
+ -Dmaven.wagon.http.retryHandler.count=3
+ -Djdk.toolchain.version=${JAVA_VERSION}
+ -Dcache.enabled=true
concurrency:
- group: ${{ github.workflow }}-${{ github.ref }}
+ group: validate-${{ github.ref }}
cancel-in-progress: true
jobs:
copyright:
- timeout-minutes: 10
+ timeout-minutes: 5
runs-on: ubuntu-20.04
steps:
- - uses: actions/checkout@v4
- with:
- fetch-depth: 0
- - name: Set up JDK ${{ env.JAVA_VERSION }}
- uses: actions/setup-java@v4.1.0
- with:
- distribution: ${{ env.JAVA_DISTRO }}
- java-version: ${{ env.JAVA_VERSION }}
- cache: maven
- - name: Copyright
- run: etc/scripts/copyright.sh
+ - uses: actions/checkout@v4
+ with:
+ ref: ${{ inputs.ref }}
+ fetch-depth: 0
+ - uses: ./.github/actions/common
+ with:
+ run: etc/scripts/copyright.sh
checkstyle:
- timeout-minutes: 10
+ timeout-minutes: 5
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- - name: Set up JDK ${{ env.JAVA_VERSION }}
- uses: actions/setup-java@v4.1.0
- with:
- distribution: ${{ env.JAVA_DISTRO }}
- java-version: ${{ env.JAVA_VERSION }}
- cache: maven
- - name: Checkstyle
- run: etc/scripts/checkstyle.sh
- spotbugs:
- timeout-minutes: 45
+ with:
+ ref: ${{ inputs.ref }}
+ - uses: ./.github/actions/common
+ with:
+ run: etc/scripts/checkstyle.sh
+ shellcheck:
+ timeout-minutes: 5
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- - name: Set up JDK ${{ env.JAVA_VERSION }}
- uses: actions/setup-java@v4.1.0
- with:
- distribution: ${{ env.JAVA_DISTRO }}
- java-version: ${{ env.JAVA_VERSION }}
- cache: maven
- - name: Spotbugs
- run: etc/scripts/spotbugs.sh
- docs:
- timeout-minutes: 30
+ with:
+ ref: ${{ inputs.ref }}
+ - uses: ./.github/actions/common
+ with:
+ maven-cache: none
+ run: etc/scripts/shellcheck.sh
+ build:
+ timeout-minutes: 15
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- - name: Set up JDK ${{ env.JAVA_VERSION }}
- uses: actions/setup-java@v4.1.0
- with:
- distribution: ${{ env.JAVA_DISTRO }}
- java-version: ${{ env.JAVA_VERSION }}
- cache: maven
- - name: Docs
- run: etc/scripts/docs.sh
- build:
- timeout-minutes: 60
+ with:
+ ref: ${{ inputs.ref }}
+ - uses: ./.github/actions/common
+ with:
+ build-cache: read-write
+ maven-cache: read-write
+ run: |
+ mvn ${MAVEN_ARGS} build-cache:go-offline
+ mvn ${MAVEN_ARGS} -T8 \
+ -Dorg.slf4j.simpleLogger.showThreadName=true \
+ -DskipTests \
+ -Ptests \
+ install
+ _tests:
+ needs: build
+ timeout-minutes: 30
strategy:
matrix:
os: [ ubuntu-20.04 ]
+ moduleSet: [ core, it, dbclient, dbclient-oracle, others ]
+ include:
+ - { os: ubuntu-20.04, platform: linux }
runs-on: ${{ matrix.os }}
+ name: tests/${{ matrix.moduleSet }}
steps:
- uses: actions/checkout@v4
- - name: Set up JDK ${{ env.JAVA_VERSION }}
- uses: actions/setup-java@v4.1.0
- with:
- distribution: ${{ env.JAVA_DISTRO }}
- java-version: ${{ env.JAVA_VERSION }}
- cache: maven
- - name: Maven build
- run: etc/scripts/github-build.sh
- examples:
- timeout-minutes: 40
+ with:
+ ref: ${{ inputs.ref }}
+ - uses: ./.github/actions/common
+ with:
+ build-cache: read-only
+ test-artifact-name: tests-${{ matrix.moduleSet }}
+ run: |
+ mvn ${MAVEN_ARGS} \
+ -DreactorRule=tests \
+ -DmoduleSet=${{ matrix.moduleSet }} \
+ -Dsurefire.reportNameSuffix=${{ matrix.platform }} \
+ verify
+ _tck:
+ needs: build
+ timeout-minutes: 30
+ strategy:
+ matrix:
+ moduleSet: [ cdi, rest, others ]
+ runs-on: ubuntu-20.04
+ name: tests/tck-${{ matrix.moduleSet }}
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ ref: ${{ inputs.ref }}
+ - uses: ./.github/actions/common
+ with:
+ build-cache: read-only
+ test-artifact-name: tests-tck-${{ matrix.moduleSet }}
+ run: |
+ mvn ${MAVEN_ARGS} \
+ -DreactorRule=tck \
+ -DmoduleSet=${{ matrix.moduleSet }} \
+ verify
+ _spotbugs:
+ needs: build
+ timeout-minutes: 30
+ strategy:
+ matrix:
+ moduleSet: [ core, integrations, others ]
+ runs-on: ubuntu-20.04
+ name: spotbugs/${{ matrix.moduleSet }}
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ ref: ${{ inputs.ref }}
+ - uses: ./.github/actions/common
+ with:
+ build-cache: read-only
+ run: |
+ mvn ${MAVEN_ARGS} -T8 \
+ -Dorg.slf4j.simpleLogger.showThreadName=true \
+ -DreactorRule=default \
+ -DmoduleSet=${{ matrix.moduleSet }} \
+ -DskipTests \
+ -Pspotbugs \
+ verify
+ javadoc:
+ needs: build
+ timeout-minutes: 30
+ strategy:
+ matrix:
+ moduleSet: [ core, integrations, others ]
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ ref: ${{ inputs.ref }}
+ - uses: ./.github/actions/common
+ with:
+ build-cache: read-only
+ artifact-name: javadoc-jars-${{ matrix.moduleSet }}
+ artifact-path: |
+ **/target/state-javadoc.xml
+ **/target/*-javadoc.jar
+ run: |
+ mvn ${MAVEN_ARGS} -T8 \
+ -Dorg.slf4j.simpleLogger.showThreadName=true \
+ -DreactorRule=default \
+ -DmoduleSet=${{ matrix.moduleSet }} \
+ -Dcache.recordSuffix=javadoc \
+ -DskipTests \
+ -Pjavadoc \
+ package
+ docs:
+ needs: build
+ timeout-minutes: 15
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ ref: ${{ inputs.ref }}
+ - uses: ./.github/actions/common
+ with:
+ build-cache: read-only
+ artifact-name: docs
+ artifact-path: |
+ */target/state-docs.xml
+ */target/*-docs.jar
+ run: |
+ mvn ${MAVEN_ARGS} \
+ -Dcache.recordSuffix=docs \
+ -f docs/pom.xml \
+ -Pjavadoc \
+ install
+ quickstarts:
+ needs: build
+ timeout-minutes: 30
strategy:
matrix:
os: [ ubuntu-20.04, macos-14 ]
+ include:
+ - { os: ubuntu-20.04, platform: linux }
+ - { os: macos-14, platform: macos }
runs-on: ${{ matrix.os }}
+ name: quickstarts/${{ matrix.platform }}
steps:
- uses: actions/checkout@v4
- - name: Set up JDK ${{ env.JAVA_VERSION }}
- uses: actions/setup-java@v4.1.0
- with:
- distribution: ${{ env.JAVA_DISTRO }}
- java-version: ${{ env.JAVA_VERSION }}
- cache: maven
- - uses: graalvm/setup-graalvm@v1
- with:
- java-version: 21
- distribution: graalvm-community
- github-token: ${{ secrets.GITHUB_TOKEN }}
- native-image-job-reports: true
- cache: maven
- - name: Maven build
- run: |
- mvn -B -e "-Dmaven.test.skip=true" $MAVEN_HTTP_ARGS -DskipTests -Ppipeline install
- cd examples
- mvn -B verify
- - name: Test quickstarts native image
- run: etc/scripts/test-quickstarts.sh
- mp-tck:
- timeout-minutes: 60
- name: "MicroProfile TCKs"
+ with:
+ ref: ${{ inputs.ref }}
+ - uses: ./.github/actions/common
+ with:
+ free-space: true
+ build-cache: read-only
+ native-image: true
+ test-artifact-name: tests-quickstarts-${{ matrix.platform }}
+ run: |
+ etc/scripts/test-quickstarts.sh
+ examples:
+ needs: build
+ timeout-minutes: 30
strategy:
matrix:
- os: [ ubuntu-20.04 ]
+ os: [ ubuntu-20.04, macos-14 ]
+ include:
+ - { os: ubuntu-20.04, platform: linux }
+ - { os: macos-14, platform: macos }
runs-on: ${{ matrix.os }}
+ name: examples/${{ matrix.platform }}
steps:
- uses: actions/checkout@v4
- - name: Set up JDK ${{ env.JAVA_VERSION }}
- uses: actions/setup-java@v4.1.0
- with:
- distribution: ${{ env.JAVA_DISTRO }}
- java-version: ${{ env.JAVA_VERSION }}
- cache: maven
- - name: Maven build
- run: etc/scripts/mp-tck.sh
+ with:
+ ref: ${{ inputs.ref }}
+ - uses: ./.github/actions/common
+ with:
+ free-space: true
+ build-cache: read-only
+ test-artifact-name: tests-examples-${{ matrix.platform }}
+ run: etc/scripts/build-examples.sh
archetypes:
- timeout-minutes: 45
+ needs: build
+ timeout-minutes: 30
strategy:
matrix:
- os: [ ubuntu-20.04 ]
- runs-on: ${{ matrix.os }}
+ group: [ r1, r2, r3, r4, r5 ]
+ packaging: [ jar ]
+ include:
+ - { group: r1, start: 1, end: 25 }
+ - { group: r2, start: 26, end: 50 }
+ - { group: r3, start: 51, end: 75 }
+ - { group: r4, start: 75, end: 100 }
+ - { group: r5, start: 101, end: -1 }
+ - { packaging: jar }
+ runs-on: ubuntu-20.04
+ name: archetypes/${{ matrix.group }}-${{ matrix.packaging }}
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ ref: ${{ inputs.ref }}
+ - uses: ./.github/actions/common
+ with:
+ build-cache: read-only
+ native-image: ${{ matrix.packaging == 'native' }}
+ test-artifact-name: tests-archetypes-${{ matrix.group }}-${{ matrix.packaging }}
+ run: |
+ mvn ${MAVEN_ARGS} \
+ -f archetypes/archetypes/pom.xml \
+ -Darchetype.test.permutationStartIndex=${{ matrix.start }} \
+ -Darchetype.test.permutationEndIndex=${{ matrix.end }} \
+ -Darchetype.test.testGoal=verify \
+ -Darchetype.test.testProfiles=${{ matrix.profile }} \
+ verify
+ legacy-archetypes:
+ needs: build
+ timeout-minutes: 30
+ runs-on: ubuntu-20.04
+ name: archetypes/legacy
steps:
- uses: actions/checkout@v4
- - name: Set up JDK ${{ env.JAVA_VERSION }}
- uses: actions/setup-java@v4.1.0
- with:
- distribution: ${{ env.JAVA_DISTRO }}
- java-version: ${{ env.JAVA_VERSION }}
- cache: maven
- - name: Test archetypes
- run: etc/scripts/test-archetypes.sh
+ with:
+ ref: ${{ inputs.ref }}
+ - uses: ./.github/actions/common
+ with:
+ build-cache: read-only
+ test-artifact-name: tests-legacy-archetypes
+ run: |
+ mvn ${MAVEN_ARGS} \
+ -f archetypes/pom.xml \
+ -Darchetype.test.generatePermutations=false \
+ install
packaging:
- timeout-minutes: 60
+ needs: build
+ timeout-minutes: 30
+ strategy:
+ matrix:
+ os: [ ubuntu-20.04, macos-14 ]
+ packaging: [ jar, jlink ]
+ include:
+ - { os: ubuntu-20.04, platform: linux }
+ - { os: macos-14, platform: macos }
+ runs-on: ${{ matrix.os }}
+ name: tests/packaging-${{ matrix.packaging }}-${{ matrix.platform }}
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ ref: ${{ inputs.ref }}
+ - uses: ./.github/actions/common
+ with:
+ free-space: true
+ build-cache: read-only
+ test-artifact-name: tests-packaging-${{ matrix.packaging }}-${{ matrix.platform }}
+ run: |
+ mvn ${MAVEN_ARGS} \
+ -f tests/integration/packaging/pom.xml \
+ -P${{ matrix.packaging }}-image \
+ verify
+ _native-image:
+ needs: build
+ timeout-minutes: 30
strategy:
matrix:
- os: [ ubuntu-20.04, macos-14]
+ os: [ ubuntu-20.04, macos-14 ]
+ module: [ mp-1, mp-2, mp-3, se-1, inject ]
+ include:
+ - { os: ubuntu-20.04, platform: linux }
+ - { os: macos-14, platform: macos }
runs-on: ${{ matrix.os }}
+ name: tests/native-image-${{ matrix.module }}-${{ matrix.platform }}
steps:
- uses: actions/checkout@v4
- - uses: graalvm/setup-graalvm@v1
- with:
- java-version: 21
- distribution: graalvm-community
- github-token: ${{ secrets.GITHUB_TOKEN }}
- native-image-job-reports: true
- cache: maven
- - name: Build Helidon
- run: etc/scripts/github-compile.sh
- - name: JAR packaging
- run: etc/scripts/test-packaging-jar.sh
- - name: JLink packaging
- run: etc/scripts/test-packaging-jlink.sh
- - name: Native-Image packaging
- run: etc/scripts/test-packaging-native.sh
+ with:
+ ref: ${{ inputs.ref }}
+ - uses: ./.github/actions/common
+ with:
+ free-space: true
+ build-cache: read-only
+ native-image: true
+ test-artifact-name: tests-native-image-${{ matrix.module }}-${{ matrix.platform }}
+ run: |
+ mvn ${MAVEN_ARGS} \
+ -f tests/integration/packaging/pom.xml \
+ -pl ${{ matrix.module }} \
+ -Pnative-image \
+ -am \
+ verify
+ test-results:
+ runs-on: ubuntu-20.04
+ needs: [ _tests, archetypes, legacy-archetypes, _tck, packaging, _native-image ]
+ name: tests/results
+ steps:
+ - uses: actions/upload-artifact/merge@v4
+ with:
+ name: test-results
+ pattern: "tests-*"
+ gate:
+ runs-on: ubuntu-20.04
+ needs: [ copyright, checkstyle, shellcheck, docs, javadoc, _spotbugs, test-results ]
+ steps:
+ - shell: bash
+ run: |
+ echo OK
diff --git a/.gitignore b/.gitignore
index b1bf6a636d4..c99b9bcf33b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -70,6 +70,9 @@ node/
# Helidon CLI
.helidon
+# Helidon examples repository
+helidon-examples
+
# Other
*~
user.txt
diff --git a/.mvn/cache-config.xml b/.mvn/cache-config.xml
new file mode 100644
index 00000000000..2ecbfd32c26
--- /dev/null
+++ b/.mvn/cache-config.xml
@@ -0,0 +1,140 @@
+
+
+
+ false
+
+
+
+ src/main/asciidoc/config/*
+
+
+
+
+ .*/**
+ etc/**
+
+
+
+
+ *@copy-libs
+
+
+
+
+
+ tests
+
+
+
+
+ webserver/**
+ webclient/**
+ common/**
+ config/**
+ security/**
+
+
+
+
+ tests/integration/jpa/oracle/**
+
+
+
+
+ tests/integration/jpa/**
+
+
+
+
+ tests/integration/dbclient/oracle/**
+
+
+
+
+ tests/integration/dbclient/**
+
+
+
+
+ tests/integration/packaging/**
+
+
+
+
+ tests/integration/**
+
+
+
+
+ **/*
+
+
+ tests/benchmark/**
+
+
+
+
+
+
+ tests
+ tck
+
+
+
+
+ microprofile/tests/tck/tck-cdi*/**
+
+
+
+
+ microprofile/tests/tck/tck-rest*/**
+
+
+
+
+ microprofile/tests/tck/**
+
+
+
+
+
+
+
+
+ webserver/**
+ webclient/**
+ common/**
+ config/**
+ security/**
+
+
+
+
+ integrations/**
+
+
+
+
+ **/*
+
+
+
+
+
+
diff --git a/.mvn/extensions.xml b/.mvn/extensions.xml
new file mode 100644
index 00000000000..ad9cb3a7b00
--- /dev/null
+++ b/.mvn/extensions.xml
@@ -0,0 +1,27 @@
+
+
+
+
+ io.helidon.build-tools
+ helidon-build-cache-maven-extension
+ 4.0.12
+
+
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 982e337990e..6487d5857df 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -11,6 +11,248 @@ For Helidon 2.x releases please see [Helidon 2.x CHANGELOG.md](https://github.co
For Helidon 1.x releases please see [Helidon 1.x CHANGELOG.md](https://github.com/oracle/helidon/blob/helidon-1.x/CHANGELOG.md)
+## [4.1.2]
+
+This release contains important bugfixes and enhancements and is recommended for all users of Helidon 4.
+
+A minimum of Java 21 is required to use Helidon 4.
+
+### CHANGES
+
+- gRPC: Adds support to iterate over URIs when connecting to a gRPC service [9300](https://github.com/helidon-io/helidon/pull/9300)
+- LRA: LRA testing feature [9320](https://github.com/helidon-io/helidon/pull/9320)
+- Logging: JSON Formatter for JUL [9301](https://github.com/helidon-io/helidon/pull/9301)
+- Security: Policy validator configurable per endpoint in config (#9248) [9308](https://github.com/helidon-io/helidon/pull/9308)
+- WebServer: Allows the webserver's write buffer size to be set to 0 [9314](https://github.com/helidon-io/helidon/pull/9314)
+- WebServer: Fix DataReader.findNewLine with lone EOL character [9327](https://github.com/helidon-io/helidon/pull/9327)
+- WebServer: Grouping Executors related methods into a single class [9298](https://github.com/helidon-io/helidon/pull/9298)
+- WebServer: New implementation for SSE in webserver [9297](https://github.com/helidon-io/helidon/pull/9297)
+- WebServer: Smart async writer in webserver [9292](https://github.com/helidon-io/helidon/pull/9292)
+- Dependencies: Upgrade Jersey to 3.1.8 [9303](https://github.com/helidon-io/helidon/pull/9303)
+- Dependencies: Upgrades protobuf to 3.25.5 [9299](https://github.com/helidon-io/helidon/pull/9299)
+- Dependencies: Uptake build-tools 4.0.12 (fixes [9305](https://github.com/helidon-io/helidon/issues/9305)) [9323](https://github.com/helidon-io/helidon/pull/9323)
+- Docs: Add emphasis on including an OTel exporter and configuring [9312](https://github.com/helidon-io/helidon/pull/9312)
+- Docs: Document work-around for maven archetype issue (#9316) [9324](https://github.com/helidon-io/helidon/pull/9324)
+- Tests: Fix DbClient PostgreSQL tests [9293](https://github.com/helidon-io/helidon/pull/9293)
+
+## [4.1.1]
+
+This release contains important bugfixes and enhancements and is recommended for all users of Helidon 4. It is compatible with Helidon 4.0.X.
+
+A minimum of Java 21 is required to use Helidon 4.
+
+### Notable Changes
+
+- Implement gRPC MP Client [9026](https://github.com/helidon-io/helidon/pull/9026)
+
+### CHANGES
+
+- CORS: Remove headers that do not affect CORS decision-making from request adapter logging output [9178](https://github.com/helidon-io/helidon/pull/9178)
+- Codegen: Add support for additional modifiers [9201](https://github.com/helidon-io/helidon/pull/9201)
+- Codegen: Fix generation of annotations, including lists, nested annotations etc. [9182](https://github.com/helidon-io/helidon/pull/9182)
+- Codegen: Handling enum and type values in a consistent way in code generation. [9167](https://github.com/helidon-io/helidon/pull/9167)
+- Codegen: Support for validation of Duration and URI default values. [9166](https://github.com/helidon-io/helidon/pull/9166)
+- Codegen: Udpates to types and annotation processing [9168](https://github.com/helidon-io/helidon/pull/9168)
+- Config: Replace manual casts on pattern with instanceof in HoconConfigParser [9209](https://github.com/helidon-io/helidon/pull/9209)
+- LRA: Replace deprecated method Scheduling.fixedRateBuilder() [9098](https://github.com/helidon-io/helidon/pull/9098)
+- Security: Required authorization propagated from the class level now [9137](https://github.com/helidon-io/helidon/pull/9137)
+- Tracing: Allow users to direct Helidon to use an existing global `OpenTelemetry` instance rather than create its own [9205](https://github.com/helidon-io/helidon/pull/9205)
+- WebServer: Allows the creation of empty SSE events [9207](https://github.com/helidon-io/helidon/pull/9207)
+- WebServer: Increases default value of write-buffer-size to 4K [9190](https://github.com/helidon-io/helidon/pull/9190)
+- WebServer: UncheckedIOException no longer a special case [9206](https://github.com/helidon-io/helidon/pull/9206)
+- gRPC: Downgrades version of protobuf for backwards compatibility [9162](https://github.com/helidon-io/helidon/pull/9162)
+- gRPC: Implements support for client gRPC channel injections [9155](https://github.com/helidon-io/helidon/pull/9155)
+- gRPC: Implements the gRPC MP Client API [9026](https://github.com/helidon-io/helidon/pull/9026)
+- gRPC: Renames package-private Grpc type to GrpcRouteHandler [9173](https://github.com/helidon-io/helidon/pull/9173)
+- Build: Fix nightly script [9221](https://github.com/helidon-io/helidon/pull/9221)
+- Build: Update release workflows [9210](https://github.com/helidon-io/helidon/pull/9210)
+- Dependencies: Upgrade microprofile-cdi-tck to 4.0.13 [9141](https://github.com/helidon-io/helidon/pull/9141)
+- Dependencies: Upgrade oci sdk to 3.46.1 [9179](https://github.com/helidon-io/helidon/pull/9179)
+- Dependencies: Upgrade slf4j to 2.0.16 [9143](https://github.com/helidon-io/helidon/pull/9143)
+- Deprecation: deprecate old injection integration for oci [9184](https://github.com/helidon-io/helidon/pull/9184)
+- Docs: Clarify description of config profiles [9188](https://github.com/helidon-io/helidon/pull/9188)
+- Docs: Documents gRPC MP Client API [9150](https://github.com/helidon-io/helidon/pull/9150)
+- Tests: Builder tests that confidential options are not printed in toString() [9154](https://github.com/helidon-io/helidon/pull/9154)
+
+## [4.1.0]
+
+This release contains important bugfixes and enhancements and is recommended for all users of Helidon 4. It is compatible with Helidon 4.0.X.
+
+A minimum of Java 21 is required to use Helidon 4.
+
+### Notable Changes
+
+- Support for MicroProfile 6.1 [8704](https://github.com/helidon-io/helidon/issues/8704)
+- gRPC support [5418](https://github.com/helidon-io/helidon/issues/5418)
+- Support for Java 22 and Java 23
+
+### CHANGES
+
+- Builders: Fixed configuration metadata of blueprints that are configured and provide a service [8891](https://github.com/helidon-io/helidon/pull/8891)
+- Common: Convert `ConcurrentHashMap` which does service loading to `HashMap` with `ReentrantLock` [8977](https://github.com/helidon-io/helidon/pull/8977)
+- Common: Fix SetCookie to work for client side as well [9029](https://github.com/helidon-io/helidon/pull/9029)
+- Common: Improved parsing of HTTP/1 prologue and headers. [8890](https://github.com/helidon-io/helidon/pull/8890)
+- Common: Introduction of HSON library to write and parse Helidon metadata files. [9050](https://github.com/helidon-io/helidon/pull/9050)
+- Common: Mapper manager cache key fix [9121](https://github.com/helidon-io/helidon/pull/9121)
+- Common: Methods to retrieve optional typed entity [8939](https://github.com/helidon-io/helidon/pull/8939)
+- Common: Remove unused parameters from JsonpWriter [8979](https://github.com/helidon-io/helidon/pull/8979)
+- Common: Replace deprecated method Header.value() on Header.get() [8873](https://github.com/helidon-io/helidon/pull/8873)
+- Common: Update UriEncoding.decode to expose a decodeQuery method [9006](https://github.com/helidon-io/helidon/pull/9006)
+- Common: Use Helidon metadata format (HSON) for service registry generated file. [9061](https://github.com/helidon-io/helidon/pull/9061)
+- Common: Use Hson.Struct instead of Hson.Object to prevent confusion with java.lang.Object [9080](https://github.com/helidon-io/helidon/pull/9080)
+- Common: Use System.Logger instead of JUL where applicable #7792 [8791](https://github.com/helidon-io/helidon/pull/8791)
+- Common: Use string constructor of BigDecimal to avoid bad decimals in output. [9074](https://github.com/helidon-io/helidon/pull/9074)
+- Config: Upgrade to MP Config 3.1 and fix an issue with profile specific properties [8757](https://github.com/helidon-io/helidon/pull/8757)
+- DBClient: Add uses io.helidon.dbclient.jdbc.spi.JdbcConnectionPoolProvider to io.helidon.dbclient.jdbc module (#8237) [8850](https://github.com/helidon-io/helidon/pull/8850)
+- DBClient: Consider missing named parameters values in the parameters Map as null [9035](https://github.com/helidon-io/helidon/pull/9035)
+- DBClient: Fix DbClientService for Mongo DbClient [9102](https://github.com/helidon-io/helidon/pull/9102)
+- FT: Fix confusing log message on breach of overallTimeout duration [8936](https://github.com/helidon-io/helidon/pull/8936)
+- FT: Remove unused constructor parameter from io.helidon.faulttolerance.AsyncImpl [9020](https://github.com/helidon-io/helidon/pull/9020)
+- FT: Use correct exception when retrying in FT [8983](https://github.com/helidon-io/helidon/pull/8983)
+- gRPC: Client Implementation [8423](https://github.com/helidon-io/helidon/pull/8423)
+- gRPC: MP Implementation [8878](https://github.com/helidon-io/helidon/pull/8878)
+- JEP290: forward port of serial-config fix [8814](https://github.com/helidon-io/helidon/pull/8814)
+- JTA: Refactors JtaConnection to allow status enforcement by JTA implementation [8479](https://github.com/helidon-io/helidon/pull/8479)
+- JTA: Removes usage of ConcurrentHashMap in LocalXAResource.java to avoid thread pinning in JDKs of version 22 and lower [8900](https://github.com/helidon-io/helidon/pull/8900)
+- Logging: Bugfixes log builder [9051](https://github.com/helidon-io/helidon/pull/9051)
+- MDC: propagation without context [8957](https://github.com/helidon-io/helidon/pull/8957)
+- Metrics: Add RW locking to better manage concurrency [8997](https://github.com/helidon-io/helidon/pull/8997)
+- Metrics: Add deprecation logging and mention in Micrometer integration doc pages [9100](https://github.com/helidon-io/helidon/pull/9100)
+- Metrics: MP Metrics 5.1 support [9032](https://github.com/helidon-io/helidon/pull/9032)
+- Metrics: Mark deprecations for Micrometer integration component [9085](https://github.com/helidon-io/helidon/pull/9085)
+- Metrics: Properly handle disabled metrics in MP [8908](https://github.com/helidon-io/helidon/pull/8908)
+- Metrics: Update metrics config default for `rest-request-enabled` and add doc text explaining SE vs. MP defaults for some values [8912](https://github.com/helidon-io/helidon/pull/8912)
+- Native image fixes (required for Java 22) [9028](https://github.com/helidon-io/helidon/pull/9028)
+- Native image: Add required reflection configuration for EclipseLink [8871](https://github.com/helidon-io/helidon/pull/8871)
+- Native image: to support latest dev release of GraalVM native image [8838](https://github.com/helidon-io/helidon/pull/8838)
+- OCI: Add Imds data retriever as a service provider [8928](https://github.com/helidon-io/helidon/pull/8928)
+- OCI: Oci integration fixes [8927](https://github.com/helidon-io/helidon/pull/8927)
+- OCI: Service registry OCI integration update [8921](https://github.com/helidon-io/helidon/pull/8921)
+- OCI: Support for OKE Workload identity in OCI integration for Service registry [8862](https://github.com/helidon-io/helidon/pull/8862)
+- OCI: Update oci.auth-strategy values in generated OCI archetype to avoid UnsatisfiedResolutionException [9073](https://github.com/helidon-io/helidon/pull/9073)
+- SSE mediaType comes null after first consumed event [8922](https://github.com/helidon-io/helidon/pull/8922)
+- Security: ConcurrentHashMap guarding added [9114](https://github.com/helidon-io/helidon/pull/9114)
+- Security: Correctly guard concurrent access to hash map [9031](https://github.com/helidon-io/helidon/pull/9031)
+- Security: Fixed concurrent access to identity hash map with reentrant lock. [9030](https://github.com/helidon-io/helidon/pull/9030)
+- Security: Jwt improvements [8865](https://github.com/helidon-io/helidon/pull/8865)
+- Service Registry [8766](https://github.com/helidon-io/helidon/pull/8766)
+- Tracing: Adopt MP Telemetry 1.1 [8984](https://github.com/helidon-io/helidon/pull/8984)
+- Tracing: After retrieval check baggage entry for null before dereferencing it [8885](https://github.com/helidon-io/helidon/pull/8885)
+- Tracing: Fix tracer information propagation across threads using Helidon context [8841](https://github.com/helidon-io/helidon/pull/8841)
+- Tracing: Reorder checking of delegate vs. wrapper in OTel tracer unwrap [8855](https://github.com/helidon-io/helidon/pull/8855)
+- Tracing: Replace deprecated method Span.baggage(key) on Span.baggage().get(key) [9042](https://github.com/helidon-io/helidon/pull/9042)
+- WebClient: Attempt to read an unconsumed response entity to allow connection caching [8943](https://github.com/helidon-io/helidon/pull/8943)
+- WebClient: Client connection properly returned to the cache [9115](https://github.com/helidon-io/helidon/pull/9115)
+- WebClient: Fix multi-value query string parsing [8889](https://github.com/helidon-io/helidon/pull/8889)
+- WebClient: Moves client protocol ID caching from HttpClientRequest to WebClient [8933](https://github.com/helidon-io/helidon/pull/8933)
+- WebClient: Remove unnecessary field length from ContentLengthInputStream [8915](https://github.com/helidon-io/helidon/pull/8915)
+- WebClient: not routing the requests through proxy configured using Proxy Builder. #9022 [9023](https://github.com/helidon-io/helidon/pull/9023)
+- WebServer: Avoids running the encoders (such as GZIP) when no data is written [9117](https://github.com/helidon-io/helidon/pull/9117)
+- WebServer: Fix problem where throwing an Error would close connection but send keep-alive [9014](https://github.com/helidon-io/helidon/pull/9014)
+- WebServer: HTTP2-Settings needs to be encoded/decoded to Base64 with url dialect [8845](https://github.com/helidon-io/helidon/pull/8845)
+- WebServer: Replaces ConcurrentHashMap to avoid potential thread pinning [8995](https://github.com/helidon-io/helidon/pull/8995)
+- WebServer: Retrieve the correct requested URI info path value, indpt of the routing path used to locate the handler [8823](https://github.com/helidon-io/helidon/pull/8823)
+- WebServer: Return correct status on too long prologue [9001](https://github.com/helidon-io/helidon/pull/9001)
+- WebServer: Server TLS - Add path key description [8937](https://github.com/helidon-io/helidon/pull/8937)
+- WebServer: Skips content encoding of empty entities [9000](https://github.com/helidon-io/helidon/pull/9000)
+- WebServer: Update max-prologue-length from 2048 to 4096 to align with 3.x [9007](https://github.com/helidon-io/helidon/pull/9007)
+- WebServer: improvement of header parsing error handling [8831](https://github.com/helidon-io/helidon/pull/8831)
+- WebServer: register routing in weighted order of Server and HTTP Features [8826](https://github.com/helidon-io/helidon/pull/8826)
+- WebSocket: Makes SocketContext available to a WsSession [8944](https://github.com/helidon-io/helidon/pull/8944)
+- Archetype: Remove unused config property from generated code [8965](https://github.com/helidon-io/helidon/pull/8965)
+- Archetype: fix Native image build for `quickstart` with `jackson` [8835](https://github.com/helidon-io/helidon/pull/8835)
+- Archetype: fix database app-type typo [8963](https://github.com/helidon-io/helidon/pull/8963)
+- Build: Add post pr merge workflow to support continuous snapshot deployments [8919](https://github.com/helidon-io/helidon/pull/8919) [8924](https://github.com/helidon-io/helidon/pull/8924) [8923](https://github.com/helidon-io/helidon/pull/8923)
+- Build: Cleanup validate workflow [9108](https://github.com/helidon-io/helidon/pull/9108)
+- Build: Fix release.sh [9087](https://github.com/helidon-io/helidon/pull/9087)
+- Build: POM cleanups [9110](https://github.com/helidon-io/helidon/pull/9110)
+- Build: Parallelized pipelines [9111](https://github.com/helidon-io/helidon/pull/9111)
+- Build: ShellCheck [9078](https://github.com/helidon-io/helidon/pull/9078)
+- Build: Uptake Helidon Build Tools v4.0.9 [9086](https://github.com/helidon-io/helidon/pull/9086)
+- Dependencies: Bump up cron-utils [9120](https://github.com/helidon-io/helidon/pull/9120)
+- Dependencies: GraphQL upgrade [9109](https://github.com/helidon-io/helidon/pull/9109)
+- Dependencies: Java 22 support. Upgrade ASM, byte-buddy, and eclipselink [8956](https://github.com/helidon-io/helidon/pull/8956)
+- Dependencies: Update eclipselink to 4.0.4 [9015](https://github.com/helidon-io/helidon/pull/9015)
+- Dependencies: Upgrade oci-sdk to 3.45.0 [9083](https://github.com/helidon-io/helidon/pull/9083)
+- Dependencies: Upgrade snakeyaml to 2.2 [9072](https://github.com/helidon-io/helidon/pull/9072)
+- Dependencies: Upgrades gRPC dependencies to latest versions [9105](https://github.com/helidon-io/helidon/pull/9105)
+- Dependencies: jakarta ee upgrades [9089](https://github.com/helidon-io/helidon/pull/9089)
+- Docs: Add back and enhance the page describing OpenAPI generation for Helidon 4 [9052](https://github.com/helidon-io/helidon/pull/9052)
+- Docs: Clarify javadoc for HealthCheckResponse.Builder.status(boolean) [9043](https://github.com/helidon-io/helidon/pull/9043)
+- Docs: Cleanup prerequisites and use of prereq table [9063](https://github.com/helidon-io/helidon/pull/9063)
+- Docs: Config reference documentation [9053](https://github.com/helidon-io/helidon/pull/9053)
+- Docs: Correct the ordering of whenSent in doc snippet [8884](https://github.com/helidon-io/helidon/pull/8884)
+- Docs: Doc for @AddConfigBlock #8807 [8825](https://github.com/helidon-io/helidon/pull/8825)
+- Docs: Document supported GraalVM version for native-image [8938](https://github.com/helidon-io/helidon/pull/8938)
+- Docs: Documents the gRPC MP server API [9123](https://github.com/helidon-io/helidon/pull/9123)
+- Docs: Excluding generated service descriptors from javadoc plugin(s). [9082](https://github.com/helidon-io/helidon/pull/9082)
+- Docs: Generate config docs during build [9103](https://github.com/helidon-io/helidon/pull/9103)
+- Docs: Mocking documentation [8787](https://github.com/helidon-io/helidon/pull/8787)
+- Docs: Update Keycloak version to 24 in OIDC guide [8868](https://github.com/helidon-io/helidon/pull/8868)
+- Docs: Update generated config reference [8852](https://github.com/helidon-io/helidon/pull/8852)
+- Docs: Update microprofile spec versions in docs [9095](https://github.com/helidon-io/helidon/pull/9095)
+- Docs: Updates links to examples that are in documentation to point to the `helidon-examples` repository. [9094](https://github.com/helidon-io/helidon/pull/9094)
+- Examples: Fix example to use the configured values. [8994](https://github.com/helidon-io/helidon/pull/8994)
+- Examples: Skip test if InstancePrincipal UT if Imds is available [8985](https://github.com/helidon-io/helidon/pull/8985)
+- Examples: Updates versions of beans.xml resources to 4.0 [9038](https://github.com/helidon-io/helidon/pull/9038)
+- Examples: examples removal [9034](https://github.com/helidon-io/helidon/pull/9034)
+- Test: add helidon-logging-jul as a test dependency to some modules #779 [8810](https://github.com/helidon-io/helidon/pull/8810)
+- Test: Add `classesDirectory` configuration to failsafe plugin [9059](https://github.com/helidon-io/helidon/pull/9059)
+- Test: DbClient IT tests job [9107](https://github.com/helidon-io/helidon/pull/9107)
+- Test: Packaging Integration Tests [9106](https://github.com/helidon-io/helidon/pull/9106)
+- Test: Re-add tck-fault-tolerance module in the reactor [9112](https://github.com/helidon-io/helidon/pull/9112)
+- Test: Reenables failing JPA test [9037](https://github.com/helidon-io/helidon/pull/9037)
+- Test: Refactor DbClient integration tests [9104](https://github.com/helidon-io/helidon/pull/9104)
+- Test: Restored test TenantTest#test2 after changes in FT [8832](https://github.com/helidon-io/helidon/pull/8832)
+- Test: Update microprofile tck artifact install [9077](https://github.com/helidon-io/helidon/pull/9077)
+- Test: Use Hamcrest assertions instead of JUnit in common/buffers (#1749) [8883](https://github.com/helidon-io/helidon/pull/8883)
+- Test: Use Hamcrest assertions instead of JUnit in dbclient/mongodb (#1749) [8934](https://github.com/helidon-io/helidon/pull/8934)
+- Test: Use Hamcrest assertions instead of JUnit in webclient/http1 (#1749) [8914](https://github.com/helidon-io/helidon/pull/8914)
+
+
+## [4.0.11]
+
+This release contains important bugfixes and is recommended for all users of Helidon 4.
+
+Java 21 is required to use Helidon 4
+
+### CHANGES
+
+- Common: Update UriEncoding.decode to expose a decodeQuery method [9009](https://github.com/helidon-io/helidon/pull/9009)
+- JTA: Removes usage of ConcurrentHashMap in LocalXAResource.java [8988](https://github.com/helidon-io/helidon/pull/8988)
+- Metrics: Add RW locking to better manage concurrency [8999](https://github.com/helidon-io/helidon/pull/8999)
+- Metrics: Properly handle disabled metrics in MP [8976](https://github.com/helidon-io/helidon/pull/8976)
+- Observability: Convert `ConcurrentHashMap` which does service loading to `HashMap` with reentrant lock [8991](https://github.com/helidon-io/helidon/pull/8991)
+- Tracing: After retrieval check baggage entry for null before dereferencing it [8975](https://github.com/helidon-io/helidon/pull/8975)
+- WebClient: Attempt to read an unconsumed response entity to allow connection caching [8996](https://github.com/helidon-io/helidon/pull/8996)
+- WebClient: Moves client protocol ID caching from HttpClientRequest to WebClient [8987](https://github.com/helidon-io/helidon/pull/8987)
+- WebServer: Fix problem where throwing an Error would close connection but send keep-alive [9016](https://github.com/helidon-io/helidon/pull/9016)
+- WebServer: Skips content encoding of empty entities. [9008](https://github.com/helidon-io/helidon/pull/9008)
+- WebServer: Update max-prologue-length from 2048 to 4096 to align with 3.x [9010](https://github.com/helidon-io/helidon/pull/9010)
+- Dependencies: Update eclipselink to 4.0.4 [9017](https://github.com/helidon-io/helidon/pull/9017)
+- Dependencies: Upgrade oci-sdk to 3.43.2 [8961](https://github.com/helidon-io/helidon/pull/8961)
+- Examples: Archetype: Remove unused config property from generated code [8990](https://github.com/helidon-io/helidon/pull/8990)
+- Examples: Archetype: fix database app-type typo (#8963) [8989](https://github.com/helidon-io/helidon/pull/8989)
+- Testing: Skip test if InstancePrincipal UT if Imds is available [8992](https://github.com/helidon-io/helidon/pull/8992)
+
+## [4.0.10]
+
+This release contains important bugfixes and enhancements and is recommended for all users of Helidon 4.
+
+Java 21 is required to use Helidon 4.0.10.
+
+### CHANGES
+
+- Fault Tolerance: implement a new method caching strategy in fault tolerance. [8842](https://github.com/helidon-io/helidon/pull/8842)
+- Tracing: Reorder checking of delegate vs. wrapper in OTel tracer unwrap ( [8859](https://github.com/helidon-io/helidon/pull/8859)
+- Tracing: tracer information propagation across threads using Helidon context [8847](https://github.com/helidon-io/helidon/pull/8847)
+- WebServer: HTTP2-Settings needs to be encoded/decoded to Base64 with url dialect [8853](https://github.com/helidon-io/helidon/pull/8853)
+- WebServer: Fix handling of invalid end of line in HTTP header parsing. Added tests [8843](https://github.com/helidon-io/helidon/pull/8843)
+- WebServer: Retrieve the correct requested URI info path value, indpt of the routing path used to locate the handler [8844](https://github.com/helidon-io/helidon/pull/8844)
+- WebServer: register routing in weighted order of Server and HTTP Features [8840](https://github.com/helidon-io/helidon/pull/8840)
+- Native Image: Updates to support latest dev release of GraalVM native image [8838](https://github.com/helidon-io/helidon/pull/8838)
+- Security: JWT improvements [8865](https://github.com/helidon-io/helidon/pull/8865)
+
## [4.0.9]
This release contains important bugfixes and ehancements and is recommended for all users of Helidon 4.
@@ -1217,6 +1459,11 @@ Helidon 4.0.0 is a major release that includes significant new features and fixe
- MicroProfile: MP path based static content should use index.html (4.x) [4737](https://github.com/oracle/helidon/pull/4737)
- Build: 4.0 version and poms [4655](https://github.com/oracle/helidon/pull/4655)
+[4.1.2]: https://github.com/oracle/helidon/compare/4.1.1...4.1.2
+[4.1.1]: https://github.com/oracle/helidon/compare/4.1.0...4.1.1
+[4.1.0]: https://github.com/oracle/helidon/compare/4.0.11...4.1.0
+[4.0.11]: https://github.com/oracle/helidon/compare/4.0.10...4.0.11
+[4.0.10]: https://github.com/oracle/helidon/compare/4.0.9...4.0.10
[4.0.9]: https://github.com/oracle/helidon/compare/4.0.8...4.0.9
[4.0.8]: https://github.com/oracle/helidon/compare/4.0.7...4.0.8
[4.0.7]: https://github.com/oracle/helidon/compare/4.0.6...4.0.7
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 8409097403d..c1f4b46a8c8 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -7,7 +7,7 @@ We welcome your contributions! There are multiple ways to contribute.
Join us at [#helidon-users](http://slack.helidon.io) and participate in discussions.
-## Issues
+## Opening Issues
If you hit a bug or have an enhancement request then file a [GitHub issue](https://github.com/oracle/helidon/issues).
When filing a bug remember that the better written the bug is, the more likely it is
@@ -19,20 +19,22 @@ to be fixed. Please include:
4. Version of Docker or Kubernetes or other software if it's relevant to your issue
5. Steps to reproduce
-## Code
+## Contributing Code
We welcome code contributions, but we need the contributor to sign the
[Oracle Contributor Agreement (OCA)](https://oca.opensource.oracle.com)
first.
-The process:
+## Pull Request Process
0. Sign the [OCA](https://oca.opensource.oracle.com)
-1. Fork the repo
-2. Fix an issue or create an issue and fix it
-3. Create a Pull Request that fixes the issue. Follow [DEV-GUIDELINES](DEV-GUIDELINES.md) for a list of rules and best practices followed by project Helidon.
-4. Watch your PR for pipeline results. If there are failures then fix them.
-5. We will review your PR and merge as appropriate.
+1. Ensure there is an issue created to track and discuss the fix or enhancement you intend to submit.
+2. Fork this repository.
+3. Create a branch in your fork to implement the changes. We recommend using the issue number as part of your branch name, e.g. 1234-fixes. Follow [DEV-GUIDELINES](DEV-GUIDELINES.md) for a list of rules and best practices followed by project Helidon.
+4. Ensure that any documentation is updated with the changes that are required by your change.
+5. Ensure that any samples are updated if the base image has been changed.
+6. Submit the pull request. Do not leave the pull request blank. Explain exactly what your changes are meant to do and provide simple steps on how to validate. your changes. Ensure that you reference the issue you created as well.
+7. We will assign the pull request to 2-3 people for review before it is merged
## Code of Conduct
diff --git a/README.md b/README.md
index f76cd1ee152..9c69fe62aaf 100644
--- a/README.md
+++ b/README.md
@@ -107,7 +107,7 @@ $ mvn validate -Pcopyright
$ mvn verify -Pspotbugs
```
-**Documentatonn**
+**Documentation**
```bash
# At the root of the project
@@ -128,7 +128,7 @@ but a couple are handy to use on your desktop to verify your changes.
* Ask questions on Stack Overflow using the [helidon tag](https://stackoverflow.com/tags/helidon)
* Join us on Slack: [#helidon-users](http://slack.helidon.io)
-## Get Involved
+## Contributing
* Learn how to [contribute](CONTRIBUTING.md)
* See [issues](https://github.com/oracle/helidon/issues) for issues you can help with
diff --git a/all-config-meta.json b/all-config-meta.json
deleted file mode 100644
index fe6f2421c93..00000000000
--- a/all-config-meta.json
+++ /dev/null
@@ -1,5804 +0,0 @@
-[
- {
- "module": "io.helidon.webclient.http1",
- "types": [
- {
- "annotatedType": "io.helidon.webclient.http1.Http1ClientProtocolConfig",
- "type": "io.helidon.webclient.http1.Http1ClientProtocolConfig",
- "producers": [
- "io.helidon.webclient.http1.Http1ClientProtocolConfig#create(io.helidon.common.config.Config)",
- "io.helidon.webclient.http1.Http1ClientProtocolConfig#builder()"
- ],
- "options": [
- {
- "defaultValue": "true",
- "description": "Sets whether the response header format is validated or not.\n
\n Defaults to `true`.\n
\n\n @return whether response header validation should be enabled",
- "key": "validate-response-headers",
- "method": "io.helidon.webclient.http1.Http1ClientProtocolConfig.Builder#validateResponseHeaders(boolean)",
- "type": "java.lang.Boolean"
- },
- {
- "defaultValue": "256",
- "description": "Configure the maximum allowed length of the status line from the response.\n\n @return maximum status line length",
- "key": "max-status-line-length",
- "method": "io.helidon.webclient.http1.Http1ClientProtocolConfig.Builder#maxStatusLineLength(int)",
- "type": "java.lang.Integer"
- },
- {
- "defaultValue": "false",
- "description": "Sets whether the request header format is validated or not.\n
\n Defaults to `false` as user has control on the header creation.\n
\n\n @return whether request header validation should be enabled",
- "key": "validate-request-headers",
- "method": "io.helidon.webclient.http1.Http1ClientProtocolConfig.Builder#validateRequestHeaders(boolean)",
- "type": "java.lang.Boolean"
- },
- {
- "defaultValue": "http_1_1",
- "description": "",
- "key": "name",
- "method": "io.helidon.webclient.http1.Http1ClientProtocolConfig.Builder#name(java.lang.String)"
- },
- {
- "defaultValue": "16384",
- "description": "Configure the maximum allowed header size of the response.\n\n @return maximum header size",
- "key": "max-header-size",
- "method": "io.helidon.webclient.http1.Http1ClientProtocolConfig.Builder#maxHeaderSize(int)",
- "type": "java.lang.Integer"
- },
- {
- "defaultValue": "true",
- "description": "Whether to use keep alive by default.\n\n @return `true` for keeping connections alive and re-using them for multiple requests (default), `false`\n to create a new connection for each request",
- "key": "default-keep-alive",
- "method": "io.helidon.webclient.http1.Http1ClientProtocolConfig.Builder#defaultKeepAlive(boolean)",
- "type": "java.lang.Boolean"
- }
- ]
- }
- ]
- }
-]
-[
- {
- "module": "io.helidon.webclient.websocket",
- "types": [
- {
- "annotatedType": "io.helidon.webclient.websocket.WsClientProtocolConfig",
- "type": "io.helidon.webclient.websocket.WsClientProtocolConfig",
- "producers": [
- "io.helidon.webclient.websocket.WsClientProtocolConfig#create(io.helidon.common.config.Config)",
- "io.helidon.webclient.websocket.WsClientProtocolConfig#builder()"
- ],
- "options": [
- {
- "description": "",
- "key": "sub-protocols",
- "kind": "LIST",
- "method": "io.helidon.webclient.websocket.WsClientProtocolConfig.Builder#subProtocols(java.util.List)"
- },
- {
- "defaultValue": "websocket",
- "description": "",
- "key": "name",
- "method": "io.helidon.webclient.websocket.WsClientProtocolConfig.Builder#name(java.lang.String)"
- }
- ]
- },
- {
- "annotatedType": "io.helidon.webclient.websocket.WsClientConfig",
- "type": "io.helidon.webclient.websocket.WsClient",
- "producers": [
- "io.helidon.webclient.websocket.WsClientConfig#create(io.helidon.common.config.Config)",
- "io.helidon.webclient.websocket.WsClientConfig#builder()",
- "io.helidon.webclient.websocket.WsClient#create(io.helidon.webclient.websocket.WsClientConfig)"
- ],
- "options": [
- {
- "defaultValue": "create()",
- "description": "WebSocket specific configuration.\n\n @return protocol specific configuration",
- "key": "protocol-config",
- "method": "io.helidon.webclient.websocket.WsClientConfig.Builder#protocolConfig(io.helidon.webclient.websocket.WsClientProtocolConfig)",
- "type": "io.helidon.webclient.websocket.WsClientProtocolConfig"
- }
- ]
- }
- ]
- }
-]
-[
- {
- "module": "io.helidon.webclient.http2",
- "types": [
- {
- "annotatedType": "io.helidon.webclient.http2.Http2ClientProtocolConfig",
- "type": "io.helidon.webclient.http2.Http2ClientProtocolConfig",
- "producers": [
- "io.helidon.webclient.http2.Http2ClientProtocolConfig#create(io.helidon.common.config.Config)",
- "io.helidon.webclient.http2.Http2ClientProtocolConfig#builder()"
- ],
- "options": [
- {
- "defaultValue": "false",
- "description": "Prior knowledge of HTTP/2 capabilities of the server. If server we are connecting to does not\n support HTTP/2 and prior knowledge is set to `false`, only features supported by HTTP/1 will be available\n and attempts to use HTTP/2 specific will throw an UnsupportedOperationException.\n
Plain text connection
\n If prior knowledge is set to `true`, we will not attempt an upgrade of connection and use prior knowledge.\n If prior knowledge is set to `false`, we will initiate an HTTP/1 connection and upgrade it to HTTP/2,\n if supported by the server.\n plaintext connection (`h2c`).\n
TLS protected connection
\n If prior knowledge is set to `true`, we will negotiate protocol using HTTP/2 only, failing if not supported.\n if prior knowledge is set to `false`, we will negotiate protocol using both HTTP/2 and HTTP/1, using the protocol\n supported by server.\n\n @return whether to use prior knowledge of HTTP/2",
- "key": "prior-knowledge",
- "method": "io.helidon.webclient.http2.Http2ClientProtocolConfig.Builder#priorKnowledge(boolean)",
- "type": "java.lang.Boolean"
- },
- {
- "defaultValue": "PT0.1S",
- "description": "Timeout for blocking between windows size check iterations.\n\n @return timeout",
- "key": "flow-control-block-timeout",
- "method": "io.helidon.webclient.http2.Http2ClientProtocolConfig.Builder#flowControlBlockTimeout(java.time.Duration)",
- "type": "java.time.Duration"
- },
- {
- "defaultValue": "PT0.5S",
- "description": "Timeout for ping probe used for checking healthiness of cached connections.\n Defaults to `PT0.5S`, which means 500 milliseconds.\n\n @return timeout",
- "key": "ping-timeout",
- "method": "io.helidon.webclient.http2.Http2ClientProtocolConfig.Builder#pingTimeout(java.time.Duration)",
- "type": "java.time.Duration"
- },
- {
- "defaultValue": "16384",
- "description": "Configure initial MAX_FRAME_SIZE setting for new HTTP/2 connections.\n Maximum size of data frames in bytes the client is prepared to accept from the server.\n Default value is 2^14(16_384).\n\n @return data frame size in bytes between 2^14(16_384) and 2^24-1(16_777_215)",
- "key": "max-frame-size",
- "method": "io.helidon.webclient.http2.Http2ClientProtocolConfig.Builder#maxFrameSize(int)",
- "type": "java.lang.Integer"
- },
- {
- "defaultValue": "false",
- "description": "Check healthiness of cached connections with HTTP/2.0 ping frame.\n Defaults to `false`.\n\n @return use ping if true",
- "key": "ping",
- "method": "io.helidon.webclient.http2.Http2ClientProtocolConfig.Builder#ping(boolean)",
- "type": "java.lang.Boolean"
- },
- {
- "defaultValue": "-1",
- "description": "Configure initial MAX_HEADER_LIST_SIZE setting for new HTTP/2 connections.\n Sends to the server the maximum header field section size client is prepared to accept.\n Defaults to `-1`, which means \"unconfigured\".\n\n @return units of octets",
- "key": "max-header-list-size",
- "method": "io.helidon.webclient.http2.Http2ClientProtocolConfig.Builder#maxHeaderListSize(long)",
- "type": "java.lang.Long"
- },
- {
- "defaultValue": "h2",
- "description": "",
- "key": "name",
- "method": "io.helidon.webclient.http2.Http2ClientProtocolConfig.Builder#name(java.lang.String)"
- },
- {
- "defaultValue": "65535",
- "description": "Configure INITIAL_WINDOW_SIZE setting for new HTTP/2 connections.\n Sends to the server the size of the largest frame payload client is willing to receive.\n Defaults to {@value io.helidon.http.http2.WindowSize#DEFAULT_WIN_SIZE}.\n\n @return units of octets",
- "key": "initial-window-size",
- "method": "io.helidon.webclient.http2.Http2ClientProtocolConfig.Builder#initialWindowSize(int)",
- "type": "java.lang.Integer"
- }
- ]
- }
- ]
- }
-]
-[
- {
- "module": "io.helidon.webclient.api",
- "types": [
- {
- "annotatedType": "io.helidon.webclient.api.WebClientConfig",
- "prefix": "clients",
- "type": "io.helidon.webclient.api.WebClient",
- "standalone": true,
- "inherits": [
- "io.helidon.webclient.api.HttpClientConfig"
- ],
- "producers": [
- "io.helidon.webclient.api.WebClientConfig#create(io.helidon.common.config.Config)",
- "io.helidon.webclient.api.WebClientConfig#builder()",
- "io.helidon.webclient.api.WebClient#create(io.helidon.webclient.api.WebClientConfig)"
- ],
- "options": [
- {
- "description": "Configuration of client protocols.\n\n @return client protocol configurations",
- "key": "protocol-configs",
- "kind": "LIST",
- "method": "io.helidon.webclient.api.WebClientConfig.Builder#protocolConfigs(java.util.List)",
- "providerType": "io.helidon.webclient.spi.ProtocolConfigProvider",
- "type": "io.helidon.webclient.spi.ProtocolConfig",
- "provider": true
- }
- ]
- },
- {
- "annotatedType": "io.helidon.webclient.api.HttpClientConfig",
- "type": "io.helidon.webclient.api.HttpClientConfig",
- "inherits": [
- "io.helidon.webclient.api.HttpConfigBase"
- ],
- "producers": [
- "io.helidon.webclient.api.HttpClientConfig#create(io.helidon.common.config.Config)",
- "io.helidon.webclient.api.HttpClientConfig#builder()"
- ],
- "options": [
- {
- "defaultValue": "false",
- "description": "Can be set to `true` to force the use of relative URIs in all requests,\n regardless of the presence or absence of proxies or no-proxy lists.\n\n @return relative URIs flag",
- "key": "relative-uris",
- "method": "io.helidon.webclient.api.HttpClientConfig.Builder#relativeUris(boolean)",
- "type": "java.lang.Boolean"
- },
- {
- "description": "Default headers to be used in every request from configuration.\n\n @return default headers",
- "key": "default-headers",
- "kind": "MAP",
- "method": "io.helidon.webclient.api.HttpClientConfig.Builder#defaultHeadersMap(java.util.Map)"
- },
- {
- "description": "Configure the listener specific io.helidon.http.encoding.ContentEncodingContext.\n This method discards all previously registered ContentEncodingContext.\n If no content encoding context is registered, default encoding context is used.\n\n @return content encoding context",
- "key": "content-encoding",
- "method": "io.helidon.webclient.api.HttpClientConfig.Builder#contentEncoding(io.helidon.http.encoding.ContentEncodingContext)",
- "type": "io.helidon.http.encoding.ContentEncodingContext"
- },
- {
- "defaultValue": "256",
- "description": "Maximal size of the connection cache.\n For most HTTP protocols, we may cache connections to various endpoints for keep alive (or stream reuse in case of HTTP/2).\n This option limits the size. Setting this number lower than the \"usual\" number of target services will cause connections\n to be closed and reopened frequently.",
- "key": "connection-cache-size",
- "method": "io.helidon.webclient.api.HttpClientConfig.Builder#connectionCacheSize(int)",
- "type": "java.lang.Integer"
- },
- {
- "description": "WebClient services.\n\n @return services to use with this web client",
- "key": "services",
- "kind": "LIST",
- "method": "io.helidon.webclient.api.HttpClientConfig.Builder#services(java.util.List)",
- "providerType": "io.helidon.webclient.spi.WebClientServiceProvider",
- "type": "io.helidon.webclient.spi.WebClientService",
- "provider": true
- },
- {
- "defaultValue": "create()",
- "description": "Configure the listener specific io.helidon.http.media.MediaContext.\n This method discards all previously registered MediaContext.\n If no media context is registered, default media context is used.\n\n @return media context",
- "key": "media-context",
- "method": "io.helidon.webclient.api.HttpClientConfig.Builder#mediaContext(io.helidon.http.media.MediaContext)",
- "type": "io.helidon.http.media.MediaContext"
- },
- {
- "description": "WebClient cookie manager.\n\n @return cookie manager to use",
- "key": "cookie-manager",
- "method": "io.helidon.webclient.api.HttpClientConfig.Builder#cookieManager(java.util.Optional)",
- "type": "io.helidon.webclient.api.WebClientCookieManager"
- },
- {
- "defaultValue": "131072",
- "description": "If the entity is expected to be smaller that this number of bytes, it would be buffered in memory to optimize performance.\n If bigger, streaming will be used.\n
\n Note that for some entity types we cannot use streaming, as they are already fully in memory (String, byte[]), for such\n cases, this option is ignored. Default is 128Kb.\n\n @return maximal number of bytes to buffer in memory for supported writers",
- "key": "max-in-memory-entity",
- "method": "io.helidon.webclient.api.HttpClientConfig.Builder#maxInMemoryEntity(int)",
- "type": "java.lang.Integer"
- },
- {
- "defaultValue": "true",
- "description": "Whether Expect-100-Continue header is sent to verify server availability before sending an entity.\n
\n Defaults to `true`.\n
\n\n @return whether Expect:100-Continue header should be sent on streamed transfers",
- "key": "send-expect-continue",
- "method": "io.helidon.webclient.api.HttpClientConfig.Builder#sendExpectContinue(boolean)",
- "type": "java.lang.Boolean"
- },
- {
- "description": "Socket options for connections opened by this client.\n If there is a value explicitly configured on this type and on the socket options,\n the one configured on this type's builder will win:\n
\n
#readTimeout()
\n
#connectTimeout()
\n
\n\n @return socket options",
- "key": "socket-options",
- "method": "io.helidon.webclient.api.HttpClientConfig.Builder#socketOptions(io.helidon.common.socket.SocketOptions)",
- "type": "io.helidon.common.socket.SocketOptions"
- },
- {
- "defaultValue": "true",
- "description": "Whether to share connection cache between all the WebClient instances in JVM.\n\n @return true if connection cache is shared",
- "key": "share-connection-cache",
- "method": "io.helidon.webclient.api.HttpClientConfig.Builder#shareConnectionCache(boolean)",
- "type": "java.lang.Boolean"
- },
- {
- "defaultValue": "STRICT",
- "description": "Configure media type parsing mode for HTTP `Content-Type` header.\n\n @return media type parsing mode",
- "key": "media-type-parser-mode",
- "method": "io.helidon.webclient.api.HttpClientConfig.Builder#mediaTypeParserMode(io.helidon.common.media.type.ParserMode)",
- "type": "io.helidon.common.media.type.ParserMode",
- "allowedValues": [
- {
- "description": "",
- "value": "STRICT"
- },
- {
- "description": "",
- "value": "RELAXED"
- }
- ]
- },
- {
- "description": "Base uri used by the client in all requests.\n\n @return base uri of the client requests",
- "key": "base-uri",
- "method": "io.helidon.webclient.api.HttpClientConfig.Builder#baseUri(java.util.Optional)",
- "type": "io.helidon.webclient.api.ClientUri"
- },
- {
- "defaultValue": "PT1S",
- "description": "Socket 100-Continue read timeout. Default is 1 second.\n This read timeout is used when 100-Continue is sent by the client, before it sends an entity.\n\n @return read 100-Continue timeout duration",
- "key": "read-continue-timeout",
- "method": "io.helidon.webclient.api.HttpClientConfig.Builder#readContinueTimeout(java.time.Duration)",
- "type": "java.time.Duration"
- }
- ]
- },
- {
- "annotatedType": "io.helidon.webclient.api.WebClientCookieManagerConfig",
- "type": "io.helidon.webclient.api.WebClientCookieManager",
- "producers": [
- "io.helidon.webclient.api.WebClientCookieManagerConfig#create(io.helidon.common.config.Config)",
- "io.helidon.webclient.api.WebClientCookieManagerConfig#builder()",
- "io.helidon.webclient.api.WebClientCookieManager#create(io.helidon.webclient.api.WebClientCookieManagerConfig)"
- ],
- "options": [
- {
- "defaultValue": "false",
- "description": "Whether automatic cookie store is enabled or not.\n\n @return status of cookie store",
- "key": "automatic-store-enabled",
- "method": "io.helidon.webclient.api.WebClientCookieManagerConfig.Builder#automaticStoreEnabled(boolean)",
- "type": "java.lang.Boolean"
- },
- {
- "defaultValue": "java.net.CookiePolicy.ACCEPT_ORIGINAL_SERVER",
- "description": "Current cookie policy for this client.\n\n @return the cookie policy",
- "key": "cookie-policy",
- "method": "io.helidon.webclient.api.WebClientCookieManagerConfig.Builder#cookiePolicy(java.net.CookiePolicy)",
- "type": "java.net.CookiePolicy"
- },
- {
- "description": "Map of default cookies to include in all requests if cookies enabled.\n\n @return map of default cookies",
- "key": "default-cookies",
- "kind": "MAP",
- "method": "io.helidon.webclient.api.WebClientCookieManagerConfig.Builder#defaultCookies(java.util.Map)"
- }
- ]
- },
- {
- "annotatedType": "io.helidon.webclient.api.HttpConfigBase",
- "type": "io.helidon.webclient.api.HttpConfigBase",
- "producers": [
- "io.helidon.webclient.api.HttpConfigBase#create(io.helidon.common.config.Config)",
- "io.helidon.webclient.api.HttpConfigBase#builder()"
- ],
- "options": [
- {
- "description": "Read timeout.\n\n @return read timeout\n @see io.helidon.common.socket.SocketOptions#readTimeout()",
- "key": "read-timeout",
- "method": "io.helidon.webclient.api.HttpConfigBase.Builder#readTimeout(java.util.Optional)",
- "type": "java.time.Duration"
- },
- {
- "defaultValue": "true",
- "description": "Determines if connection keep alive is enabled (NOT socket keep alive, but HTTP connection keep alive, to re-use\n the same connection for multiple requests).\n\n @return keep alive for this connection\n @see io.helidon.common.socket.SocketOptions#socketKeepAlive()",
- "key": "keep-alive",
- "method": "io.helidon.webclient.api.HttpConfigBase.Builder#keepAlive(boolean)",
- "type": "java.lang.Boolean"
- },
- {
- "description": "Proxy configuration to be used for requests.\n\n @return proxy to use, defaults to Proxy#noProxy()",
- "key": "proxy",
- "method": "io.helidon.webclient.api.HttpConfigBase.Builder#proxy(io.helidon.webclient.api.Proxy)",
- "type": "io.helidon.webclient.api.Proxy"
- },
- {
- "defaultValue": "true",
- "description": "Whether to follow redirects.\n\n @return whether to follow redirects",
- "key": "follow-redirects",
- "method": "io.helidon.webclient.api.HttpConfigBase.Builder#followRedirects(boolean)",
- "type": "java.lang.Boolean"
- },
- {
- "description": "Connect timeout.\n\n @return connect timeout\n @see io.helidon.common.socket.SocketOptions#connectTimeout()",
- "key": "connect-timeout",
- "method": "io.helidon.webclient.api.HttpConfigBase.Builder#connectTimeout(java.util.Optional)",
- "type": "java.time.Duration"
- },
- {
- "defaultValue": "10",
- "description": "Max number of followed redirects.\n This is ignored if #followRedirects() option is `false`.\n\n @return max number of followed redirects",
- "key": "max-redirects",
- "method": "io.helidon.webclient.api.HttpConfigBase.Builder#maxRedirects(int)",
- "type": "java.lang.Integer"
- },
- {
- "description": "TLS configuration for any TLS request from this client.\n TLS can also be configured per request.\n TLS is used when the protocol is set to `https`.\n\n @return TLS configuration to use",
- "key": "tls",
- "method": "io.helidon.webclient.api.HttpConfigBase.Builder#tls(io.helidon.common.tls.Tls)",
- "type": "io.helidon.common.tls.Tls"
- },
- {
- "description": "Properties configured for this client. These properties are propagated through client request, to be used by\n services (and possibly for other purposes).\n\n @return map of client properties",
- "key": "properties",
- "kind": "MAP",
- "method": "io.helidon.webclient.api.HttpConfigBase.Builder#properties(java.util.Map)"
- }
- ]
- },
- {
- "annotatedType": "io.helidon.webclient.api.Proxy.Builder",
- "type": "io.helidon.webclient.api.Proxy",
- "producers": [
- "io.helidon.webclient.api.Proxy.Builder#build()",
- "io.helidon.webclient.api.Proxy#create(io.helidon.common.config.Config)"
- ],
- "options": [
- {
- "description": "Sets a new password for the proxy.",
- "key": "password",
- "method": "io.helidon.webclient.api.Proxy.Builder#password(char[])"
- },
- {
- "description": "Sets a port value.",
- "key": "port",
- "method": "io.helidon.webclient.api.Proxy.Builder#port(int)",
- "type": "java.lang.Integer"
- },
- {
- "description": "Sets a new host value.",
- "key": "host",
- "method": "io.helidon.webclient.api.Proxy.Builder#host(java.lang.String)"
- },
- {
- "description": "Sets a new username for the proxy.",
- "key": "username",
- "method": "io.helidon.webclient.api.Proxy.Builder#username(java.lang.String)"
- },
- {
- "defaultValue": "HTTP",
- "description": "Sets a new proxy type.",
- "key": "type",
- "method": "io.helidon.webclient.api.Proxy.Builder#type(io.helidon.webclient.api.Proxy.ProxyType)",
- "type": "io.helidon.webclient.api.Proxy.ProxyType",
- "allowedValues": [
- {
- "description": "No proxy.",
- "value": "NONE"
- },
- {
- "description": "Proxy obtained from system.",
- "value": "SYSTEM"
- },
- {
- "description": "HTTP proxy.",
- "value": "HTTP"
- }
- ]
- },
- {
- "description": "Configure a host pattern that is not going through a proxy.\n
\n Options are:\n
\n
IP Address, such as `192.168.1.1`
\n
IP V6 Address, such as `[2001:db8:85a3:8d3:1319:8a2e:370:7348]`
\n
Hostname, such as `localhost`
\n
Domain name, such as `helidon.io`
\n
Domain name and all sub-domains, such as `.helidon.io` (leading dot)
\n
Combination of all options from above with a port, such as `.helidon.io:80`
\n
",
- "key": "no-proxy",
- "kind": "LIST",
- "method": "io.helidon.webclient.api.Proxy.Builder#addNoProxy(java.lang.String)"
- }
- ]
- }
- ]
- }
-]
-[
- {
- "module": "io.helidon.metrics.api",
- "types": [
- {
- "annotatedType": "io.helidon.metrics.api.KeyPerformanceIndicatorMetricsConfig",
- "type": "io.helidon.metrics.api.KeyPerformanceIndicatorMetricsConfig",
- "producers": [
- "io.helidon.metrics.api.KeyPerformanceIndicatorMetricsConfig#create(io.helidon.common.config.Config)",
- "io.helidon.metrics.api.KeyPerformanceIndicatorMetricsConfig#builder()"
- ],
- "options": [
- {
- "defaultValue": "PT10S",
- "description": "Threshold in ms that characterizes whether a request is long running.\n\n @return threshold in ms indicating a long-running request",
- "key": "long-running-requests.threshold",
- "method": "io.helidon.metrics.api.KeyPerformanceIndicatorMetricsConfig.Builder#longRunningRequestThreshold(java.time.Duration)",
- "type": "java.time.Duration"
- },
- {
- "defaultValue": "false",
- "description": "Whether KPI extended metrics are enabled.\n\n @return true if KPI extended metrics are enabled; false otherwise",
- "key": "extended",
- "method": "io.helidon.metrics.api.KeyPerformanceIndicatorMetricsConfig.Builder#extended(boolean)",
- "type": "java.lang.Boolean"
- }
- ]
- },
- {
- "annotatedType": "io.helidon.metrics.api.ScopingConfig",
- "type": "io.helidon.metrics.api.ScopingConfig",
- "producers": [
- "io.helidon.metrics.api.ScopingConfig#create(io.helidon.common.config.Config)",
- "io.helidon.metrics.api.ScopingConfig#builder()"
- ],
- "options": [
- {
- "defaultValue": "application",
- "description": "Default scope value to associate with meters that are registered without an explicit setting; no setting means meters\n are assigned scope {@value io.helidon.metrics.api.Meter.Scope#DEFAULT}.\n\n @return default scope value",
- "key": "default",
- "method": "io.helidon.metrics.api.ScopingConfig.Builder#defaultValue(java.util.Optional)"
- },
- {
- "defaultValue": "scope",
- "description": "Tag name for storing meter scope values in the underlying implementation meter registry.\n\n @return tag name for storing scope values",
- "key": "tag-name",
- "method": "io.helidon.metrics.api.ScopingConfig.Builder#tagName(java.util.Optional)"
- },
- {
- "description": "Settings for individual scopes.\n\n @return scope settings",
- "key": "scopes",
- "kind": "MAP",
- "method": "io.helidon.metrics.api.ScopingConfig.Builder#scopes(java.util.Map)",
- "type": "io.helidon.metrics.api.ScopeConfig"
- }
- ]
- },
- {
- "annotatedType": "io.helidon.metrics.api.MetricsConfig",
- "prefix": "metrics",
- "type": "io.helidon.metrics.api.MetricsConfig",
- "standalone": true,
- "producers": [
- "io.helidon.metrics.api.MetricsConfig#create(io.helidon.common.config.Config)",
- "io.helidon.metrics.api.MetricsConfig#builder()"
- ],
- "options": [
- {
- "description": "Whether automatic REST request metrics should be measured.\n\n @return true/false",
- "key": "rest-request-enabled",
- "method": "io.helidon.metrics.api.MetricsConfig.Builder#restRequestEnabled(boolean)",
- "type": "java.lang.Boolean"
- },
- {
- "description": "Name for the application tag to be added to each meter ID.\n\n @return application tag name",
- "key": "app-tag-name",
- "method": "io.helidon.metrics.api.MetricsConfig.Builder#appTagName(java.util.Optional)"
- },
- {
- "defaultValue": "observe",
- "description": "Hints for role names the user is expected to be in.\n\n @return list of hints",
- "key": "roles",
- "kind": "LIST",
- "method": "io.helidon.metrics.api.MetricsConfig.Builder#roles(java.util.List)"
- },
- {
- "description": "Key performance indicator metrics settings.\n\n @return key performance indicator metrics settings",
- "key": "key-performance-indicators",
- "method": "io.helidon.metrics.api.MetricsConfig.Builder#keyPerformanceIndicatorMetricsConfig(io.helidon.metrics.api.KeyPerformanceIndicatorMetricsConfig)",
- "type": "io.helidon.metrics.api.KeyPerformanceIndicatorMetricsConfig"
- },
- {
- "defaultValue": "true",
- "description": "Whether to allow anybody to access the endpoint.\n\n @return whether to permit access to metrics endpoint to anybody, defaults to `true`\n @see #roles()",
- "key": "permit-all",
- "method": "io.helidon.metrics.api.MetricsConfig.Builder#permitAll(boolean)",
- "type": "java.lang.Boolean"
- },
- {
- "description": "Settings related to scoping management.\n\n @return scoping settings",
- "key": "scoping",
- "method": "io.helidon.metrics.api.MetricsConfig.Builder#scoping(io.helidon.metrics.api.ScopingConfig)",
- "type": "io.helidon.metrics.api.ScopingConfig"
- },
- {
- "description": "Global tags.\n\n @return name/value pairs for global tags",
- "key": "tags",
- "kind": "LIST",
- "method": "io.helidon.metrics.api.MetricsConfig.Builder#tags(java.util.List)",
- "type": "io.helidon.metrics.api.Tag"
- },
- {
- "description": "Value for the application tag to be added to each meter ID.\n\n @return application tag value",
- "key": "app-name",
- "method": "io.helidon.metrics.api.MetricsConfig.Builder#appName(java.util.Optional)"
- },
- {
- "defaultValue": "true",
- "description": "Whether metrics functionality is enabled.\n\n @return if metrics are configured to be enabled",
- "key": "enabled",
- "method": "io.helidon.metrics.api.MetricsConfig.Builder#enabled(boolean)",
- "type": "java.lang.Boolean"
- }
- ]
- },
- {
- "annotatedType": "io.helidon.metrics.api.ScopeConfig",
- "type": "io.helidon.metrics.api.ScopeConfig",
- "producers": [
- "io.helidon.metrics.api.ScopeConfig#create(io.helidon.common.config.Config)",
- "io.helidon.metrics.api.ScopeConfig#builder()"
- ],
- "options": [
- {
- "description": "Regular expression for meter names to include.\n\n @return include expression",
- "key": "filter.include",
- "method": "io.helidon.metrics.api.ScopeConfig.Builder#include(java.util.Optional)",
- "type": "java.util.regex.Pattern"
- },
- {
- "description": "Name of the scope to which the configuration applies.\n\n @return scope name",
- "key": "name",
- "method": "io.helidon.metrics.api.ScopeConfig.Builder#name(java.lang.String)"
- },
- {
- "description": "Regular expression for meter names to exclude.\n\n @return exclude expression",
- "key": "filter.exclude",
- "method": "io.helidon.metrics.api.ScopeConfig.Builder#exclude(java.util.Optional)",
- "type": "java.util.regex.Pattern"
- },
- {
- "defaultValue": "true",
- "description": "Whether the scope is enabled.\n\n @return if the scope is enabled",
- "key": "enabled",
- "method": "io.helidon.metrics.api.ScopeConfig.Builder#enabled(boolean)",
- "type": "java.lang.Boolean"
- }
- ]
- },
- {
- "annotatedType": "io.helidon.metrics.api.ComponentMetricsSettings.Builder",
- "prefix": "metrics",
- "type": "io.helidon.metrics.api.ComponentMetricsSettings.Builder",
- "options": [
- {
- "description": "Sets whether metrics should be enabled for the component.",
- "key": "enabled",
- "method": "io.helidon.metrics.api.ComponentMetricsSettings.Builder#enabled(boolean)",
- "type": "java.lang.Boolean"
- }
- ]
- },
- {
- "annotatedType": "io.helidon.metrics.api.Tag",
- "type": "io.helidon.metrics.api.Tag",
- "options": []
- }
- ]
- }
-]
-[
- {
- "module": "io.helidon.metrics.api",
- "types": [
- {
- "annotatedType": "io.helidon.metrics.api.KeyPerformanceIndicatorMetricsConfig",
- "type": "io.helidon.metrics.api.KeyPerformanceIndicatorMetricsConfig",
- "producers": [
- "io.helidon.metrics.api.KeyPerformanceIndicatorMetricsConfig#create(io.helidon.common.config.Config)",
- "io.helidon.metrics.api.KeyPerformanceIndicatorMetricsConfig#builder()"
- ],
- "options": [
- {
- "defaultValue": "PT10S",
- "description": "Threshold in ms that characterizes whether a request is long running.\n\n @return threshold in ms indicating a long-running request",
- "key": "long-running-requests.threshold",
- "method": "io.helidon.metrics.api.KeyPerformanceIndicatorMetricsConfig.Builder#longRunningRequestThreshold(java.time.Duration)",
- "type": "java.time.Duration"
- },
- {
- "defaultValue": "false",
- "description": "Whether KPI extended metrics are enabled.\n\n @return true if KPI extended metrics are enabled; false otherwise",
- "key": "extended",
- "method": "io.helidon.metrics.api.KeyPerformanceIndicatorMetricsConfig.Builder#extended(boolean)",
- "type": "java.lang.Boolean"
- }
- ]
- },
- {
- "annotatedType": "io.helidon.metrics.api.ScopingConfig",
- "type": "io.helidon.metrics.api.ScopingConfig",
- "producers": [
- "io.helidon.metrics.api.ScopingConfig#create(io.helidon.common.config.Config)",
- "io.helidon.metrics.api.ScopingConfig#builder()"
- ],
- "options": [
- {
- "defaultValue": "application",
- "description": "Default scope value to associate with meters that are registered without an explicit setting; no setting means meters\n are assigned scope {@value io.helidon.metrics.api.Meter.Scope#DEFAULT}.\n\n @return default scope value",
- "key": "default",
- "method": "io.helidon.metrics.api.ScopingConfig.Builder#defaultValue(java.util.Optional)"
- },
- {
- "defaultValue": "scope",
- "description": "Tag name for storing meter scope values in the underlying implementation meter registry.\n\n @return tag name for storing scope values",
- "key": "tag-name",
- "method": "io.helidon.metrics.api.ScopingConfig.Builder#tagName(java.util.Optional)"
- },
- {
- "description": "Settings for individual scopes.\n\n @return scope settings",
- "key": "scopes",
- "kind": "MAP",
- "method": "io.helidon.metrics.api.ScopingConfig.Builder#scopes(java.util.Map)",
- "type": "io.helidon.metrics.api.ScopeConfig"
- }
- ]
- },
- {
- "annotatedType": "io.helidon.metrics.api.MetricsConfig",
- "prefix": "metrics",
- "type": "io.helidon.metrics.api.MetricsConfig",
- "standalone": true,
- "producers": [
- "io.helidon.metrics.api.MetricsConfig#create(io.helidon.common.config.Config)",
- "io.helidon.metrics.api.MetricsConfig#builder()"
- ],
- "options": [
- {
- "description": "Whether automatic REST request metrics should be measured.\n\n @return true/false",
- "key": "rest-request-enabled",
- "method": "io.helidon.metrics.api.MetricsConfig.Builder#restRequestEnabled(boolean)",
- "type": "java.lang.Boolean"
- },
- {
- "description": "Name for the application tag to be added to each meter ID.\n\n @return application tag name",
- "key": "app-tag-name",
- "method": "io.helidon.metrics.api.MetricsConfig.Builder#appTagName(java.util.Optional)"
- },
- {
- "defaultValue": "observe",
- "description": "Hints for role names the user is expected to be in.\n\n @return list of hints",
- "key": "roles",
- "kind": "LIST",
- "method": "io.helidon.metrics.api.MetricsConfig.Builder#roles(java.util.List)"
- },
- {
- "description": "Key performance indicator metrics settings.\n\n @return key performance indicator metrics settings",
- "key": "key-performance-indicators",
- "method": "io.helidon.metrics.api.MetricsConfig.Builder#keyPerformanceIndicatorMetricsConfig(io.helidon.metrics.api.KeyPerformanceIndicatorMetricsConfig)",
- "type": "io.helidon.metrics.api.KeyPerformanceIndicatorMetricsConfig"
- },
- {
- "defaultValue": "true",
- "description": "Whether to allow anybody to access the endpoint.\n\n @return whether to permit access to metrics endpoint to anybody, defaults to `true`\n @see #roles()",
- "key": "permit-all",
- "method": "io.helidon.metrics.api.MetricsConfig.Builder#permitAll(boolean)",
- "type": "java.lang.Boolean"
- },
- {
- "description": "Settings related to scoping management.\n\n @return scoping settings",
- "key": "scoping",
- "method": "io.helidon.metrics.api.MetricsConfig.Builder#scoping(io.helidon.metrics.api.ScopingConfig)",
- "type": "io.helidon.metrics.api.ScopingConfig"
- },
- {
- "description": "Global tags.\n\n @return name/value pairs for global tags",
- "key": "tags",
- "kind": "LIST",
- "method": "io.helidon.metrics.api.MetricsConfig.Builder#tags(java.util.List)",
- "type": "io.helidon.metrics.api.Tag"
- },
- {
- "description": "Value for the application tag to be added to each meter ID.\n\n @return application tag value",
- "key": "app-name",
- "method": "io.helidon.metrics.api.MetricsConfig.Builder#appName(java.util.Optional)"
- },
- {
- "defaultValue": "true",
- "description": "Whether metrics functionality is enabled.\n\n @return if metrics are configured to be enabled",
- "key": "enabled",
- "method": "io.helidon.metrics.api.MetricsConfig.Builder#enabled(boolean)",
- "type": "java.lang.Boolean"
- }
- ]
- },
- {
- "annotatedType": "io.helidon.metrics.api.ScopeConfig",
- "type": "io.helidon.metrics.api.ScopeConfig",
- "producers": [
- "io.helidon.metrics.api.ScopeConfig#create(io.helidon.common.config.Config)",
- "io.helidon.metrics.api.ScopeConfig#builder()"
- ],
- "options": [
- {
- "description": "Regular expression for meter names to include.\n\n @return include expression",
- "key": "filter.include",
- "method": "io.helidon.metrics.api.ScopeConfig.Builder#include(java.util.Optional)",
- "type": "java.util.regex.Pattern"
- },
- {
- "description": "Name of the scope to which the configuration applies.\n\n @return scope name",
- "key": "name",
- "method": "io.helidon.metrics.api.ScopeConfig.Builder#name(java.lang.String)"
- },
- {
- "description": "Regular expression for meter names to exclude.\n\n @return exclude expression",
- "key": "filter.exclude",
- "method": "io.helidon.metrics.api.ScopeConfig.Builder#exclude(java.util.Optional)",
- "type": "java.util.regex.Pattern"
- },
- {
- "defaultValue": "true",
- "description": "Whether the scope is enabled.\n\n @return if the scope is enabled",
- "key": "enabled",
- "method": "io.helidon.metrics.api.ScopeConfig.Builder#enabled(boolean)",
- "type": "java.lang.Boolean"
- }
- ]
- },
- {
- "annotatedType": "io.helidon.metrics.api.ComponentMetricsSettings.Builder",
- "prefix": "metrics",
- "type": "io.helidon.metrics.api.ComponentMetricsSettings.Builder",
- "options": [
- {
- "description": "Sets whether metrics should be enabled for the component.",
- "key": "enabled",
- "method": "io.helidon.metrics.api.ComponentMetricsSettings.Builder#enabled(boolean)",
- "type": "java.lang.Boolean"
- }
- ]
- },
- {
- "annotatedType": "io.helidon.metrics.api.Tag",
- "type": "io.helidon.metrics.api.Tag",
- "options": []
- }
- ]
- }
-]
-[
- {
- "module": "io.helidon.tracing",
- "types": [
- {
- "annotatedType": "io.helidon.tracing.TracerBuilder",
- "description": "Tracer configuration.",
- "type": "io.helidon.tracing.TracerBuilder",
- "producers": [
- "io.helidon.tracing.TracerBuilder#create(io.helidon.common.config.Config)"
- ],
- "options": []
- }
- ]
- }
-]
-[
- {
- "module": "io.helidon.tracing.providers.opentracing",
- "types": [
- {
- "annotatedType": "io.helidon.tracing.providers.opentracing.OpenTracingTracerBuilder",
- "description": "OpenTracing tracer configuration.",
- "type": "io.helidon.tracing.providers.opentracing.OpenTracingTracerBuilder",
- "producers": [
- "io.helidon.tracing.providers.opentracing.OpenTracingTracerBuilder#create(io.helidon.common.config.Config)"
- ],
- "options": []
- }
- ]
- }
-]
-[
- {
- "module": "io.helidon.tracing",
- "types": [
- {
- "annotatedType": "io.helidon.tracing.providers.jaeger.JaegerTracerBuilder",
- "description": "Jaeger tracer configuration.",
- "prefix": "tracing",
- "type": "io.helidon.tracing.Tracer",
- "standalone": true,
- "inherits": [
- "io.helidon.tracing.TracerBuilder"
- ],
- "producers": [
- "io.helidon.tracing.providers.jaeger.JaegerTracerBuilder#build()"
- ],
- "options": [
- {
- "defaultValue": "512",
- "description": "Maximum Export Batch Size of exporter requests.",
- "key": "max-export-batch-size",
- "method": "io.helidon.tracing.providers.jaeger.JaegerTracerBuilder#maxExportBatchSize(int)",
- "type": "java.lang.Integer"
- },
- {
- "defaultValue": "PT5S",
- "description": "Schedule Delay of exporter requests.",
- "key": "schedule-delay",
- "method": "io.helidon.tracing.providers.jaeger.JaegerTracerBuilder#scheduleDelay(java.time.Duration)",
- "type": "java.time.Duration"
- },
- {
- "defaultValue": "JAEGER",
- "description": "Add propagation format to use.",
- "key": "propagation",
- "kind": "LIST",
- "method": "io.helidon.tracing.providers.jaeger.JaegerTracerBuilder#addPropagation(io.helidon.tracing.providers.jaeger.JaegerTracerBuilder.PropagationFormat)",
- "type": "io.helidon.tracing.providers.jaeger.JaegerTracerBuilder.PropagationFormat",
- "allowedValues": [
- {
- "description": "The Zipkin B3 trace context propagation format using multiple headers.",
- "value": "B3"
- },
- {
- "description": "B3 trace context propagation using a single header.",
- "value": "B3_SINGLE"
- },
- {
- "description": "The Jaeger trace context propagation format.",
- "value": "JAEGER"
- },
- {
- "description": "The W3C trace context propagation format.",
- "value": "W3C"
- }
- ]
- },
- {
- "description": "Private key in PEM format.",
- "key": "private-key-pem",
- "method": "io.helidon.tracing.providers.jaeger.JaegerTracerBuilder#privateKey(io.helidon.common.configurable.Resource)",
- "type": "io.helidon.common.configurable.Resource"
- },
- {
- "defaultValue": "PT10S",
- "description": "Timeout of exporter requests.",
- "key": "exporter-timeout",
- "method": "io.helidon.tracing.providers.jaeger.JaegerTracerBuilder#exporterTimeout(java.time.Duration)",
- "type": "java.time.Duration"
- },
- {
- "defaultValue": "CONSTANT",
- "description": "Sampler type.\n