Compare commits
121 commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 71bf0b2c75 | |||
| 27dd86c39c | |||
| 7bd94aab4b | |||
| 7de87aa0a4 | |||
| 83a86ff867 | |||
| 29d7a68c14 | |||
| be8d6222a2 | |||
| 3de14515a8 | |||
| 9badd81d20 | |||
| f376d848ee | |||
| b99921b56a | |||
| 19f36a78b5 | |||
| 7dcb51b290 | |||
| 3411d750f0 | |||
| 551a596256 | |||
| 34d9d30488 | |||
| 95fd68b622 | |||
| 83f41c119e | |||
| 7b648b6631 | |||
| 5226ab89cb | |||
| 423dd7750b | |||
| 71d5ad5cbf | |||
| caff91d1aa | |||
| 5cd0d7a0e7 | |||
| 4cf733f2e0 | |||
| 69c09b38c8 | |||
| 01bd8f0e5e | |||
| 015ffc41a9 | |||
| 811cc349ef | |||
| 2f488e0670 | |||
| 5ff50a9635 | |||
| 1f2cc4b05a | |||
| 68455c65a8 | |||
| ffcc764133 | |||
| 6fa9b23a99 | |||
| babb8145b9 | |||
| ff9716514e | |||
| 2daa09cfde | |||
| 52e73ce137 | |||
| bb82c8d043 | |||
| 15e8b6129d | |||
| 7cf442b65f | |||
| 7b3f0c4389 | |||
| 36e99650e1 | |||
| 3b34ef1c67 | |||
| c158d595a9 | |||
| 552132ec05 | |||
| 2efb1ec4f8 | |||
| bb5c3348ea | |||
| 3f6bae2b49 | |||
| 9bc298643a | |||
| b98d342f5b | |||
| 4334faf044 | |||
| efe5cf1e22 | |||
| d2d2b225cb | |||
| b6a3bdd9fa | |||
| b80e078903 | |||
| d449192dae | |||
| f2d02491ee | |||
| e4a357b745 | |||
| d2e57e413b | |||
| debea7a86c | |||
| e0ebbe8c02 | |||
| 80af944f35 | |||
| 715d6b173e | |||
| 105ab75b3a | |||
| 31e09c76b2 | |||
| 8dfa709ca8 | |||
| 7562823671 | |||
| 8562c61910 | |||
| 05d59f136a | |||
| 8c606c4c3c | |||
| 66eb4b91ec | |||
| ec02ad9bc3 | |||
| 4d18ae0fd8 | |||
| 22f5cd98f2 | |||
| 32c173f7a6 | |||
| 3e9a386578 | |||
| 592005798f | |||
| 5a3607d866 | |||
| 3ae3142dbf | |||
| 97b0086002 | |||
| 1715fdec6a | |||
| 58cf377d9f | |||
| 9b7d54a288 | |||
| b562756ced | |||
| 8a8efac2e7 | |||
| 4274fd2d73 | |||
| 03d6766a4a | |||
| 9c26dffc6d | |||
| 9ff271e2a3 | |||
| 469977f079 | |||
| 2804fde899 | |||
| 8078904ded | |||
| 4dd3a66fbb | |||
| a4caed576a | |||
| 62451c7396 | |||
| 95a7552826 | |||
| fa360dd569 | |||
| d84e02cbc6 | |||
| ee9d43fd39 | |||
| 4b4c1ca439 | |||
| f21c1cdb16 | |||
| 27ffd8efb1 | |||
| 5ce7cb6724 | |||
| 893c192dc9 | |||
| 4ffbe941f2 | |||
| 0116346899 | |||
| 8ab95b1bd2 | |||
| 00a3e423c1 | |||
| 667dd806cd | |||
| a1a151764d | |||
| ec7b794e50 | |||
| 3a74fb5ddc | |||
| 3100279338 | |||
| 1e9ab13c97 | |||
| 58a53fe280 | |||
| 584ffc85f2 | |||
| 9621f913e3 | |||
| 25ea6c556d | |||
| 7a33e9cdbb |
27 changed files with 530 additions and 237 deletions
4
.github/project.yaml
vendored
4
.github/project.yaml
vendored
|
|
@ -1,5 +1,5 @@
|
||||||
name: Quarkus Commons
|
name: Quarkus Commons
|
||||||
release:
|
release:
|
||||||
current-version: "1.0.7"
|
current-version: "1.1.4"
|
||||||
next-version: "1.0.8-SNAPSHOT"
|
next-version: "1.1.5-SNAPSHOT"
|
||||||
|
|
||||||
|
|
|
||||||
18
.github/workflows/build.yaml
vendored
18
.github/workflows/build.yaml
vendored
|
|
@ -25,12 +25,12 @@ jobs:
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout the code
|
- name: Checkout the code
|
||||||
uses: actions/checkout@v4
|
uses: https://github.com/actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
|
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
|
||||||
|
|
||||||
- name: Set up JDK 21
|
- name: Set up JDK 21
|
||||||
uses: https://github.com/actions/setup-java@v4
|
uses: https://github.com/actions/setup-java@v5
|
||||||
with:
|
with:
|
||||||
distribution: 'temurin'
|
distribution: 'temurin'
|
||||||
java-version: '21'
|
java-version: '21'
|
||||||
|
|
@ -48,7 +48,7 @@ jobs:
|
||||||
|
|
||||||
- name: Cache Maven Repository
|
- name: Cache Maven Repository
|
||||||
id: cache-maven
|
id: cache-maven
|
||||||
uses: actions/cache@v4
|
uses: https://github.com/actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: ~/.m2/repository
|
path: ~/.m2/repository
|
||||||
# The cache is per branch but in case we don't find a branch for a given branch, we will get a cache from another branch.
|
# The cache is per branch but in case we don't find a branch for a given branch, we will get a cache from another branch.
|
||||||
|
|
@ -58,19 +58,13 @@ jobs:
|
||||||
${{ steps.cache-key.outputs.m2-monthly-cache-key }}
|
${{ steps.cache-key.outputs.m2-monthly-cache-key }}
|
||||||
|
|
||||||
- name: Configure Maven CI/CD settings
|
- name: Configure Maven CI/CD settings
|
||||||
uses: https://github.com/s4u/maven-settings-action@v3.1.0
|
uses: https://github.com/s4u/maven-settings-action@v4.0.0
|
||||||
with:
|
with:
|
||||||
servers: |
|
servers: |
|
||||||
[{
|
[{
|
||||||
"id": "phoenix-oss",
|
"id": "phoenix-oss",
|
||||||
"configuration": {
|
"username": "${{ vars.ORG_PACKAGE_WRITER_USERNAME }}",
|
||||||
"httpHeaders": {
|
"password": "${{ secrets.ORG_PACKAGE_WRITER_TOKEN }}"
|
||||||
"property": {
|
|
||||||
"name": "Authorization",
|
|
||||||
"value": "token ${{ secrets.ORG_PACKAGE_WRITER_TOKEN }}"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}]
|
}]
|
||||||
|
|
||||||
- name: Make maven wrapper executable
|
- name: Make maven wrapper executable
|
||||||
|
|
|
||||||
6
.github/workflows/release.yaml
vendored
6
.github/workflows/release.yaml
vendored
|
|
@ -17,7 +17,7 @@ jobs:
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout the code
|
- name: Checkout the code
|
||||||
uses: actions/checkout@v4
|
uses: https://github.com/actions/checkout@v6
|
||||||
|
|
||||||
- name: Retrieve project metadata
|
- name: Retrieve project metadata
|
||||||
uses: https://github.com/radcortez/project-metadata-action@main
|
uses: https://github.com/radcortez/project-metadata-action@main
|
||||||
|
|
@ -60,7 +60,7 @@ jobs:
|
||||||
git config --global user.signingkey ${SSH_DIR}/id_rsa
|
git config --global user.signingkey ${SSH_DIR}/id_rsa
|
||||||
|
|
||||||
- name: Set up JDK 21
|
- name: Set up JDK 21
|
||||||
uses: https://github.com/actions/setup-java@v4
|
uses: https://github.com/actions/setup-java@v5
|
||||||
with:
|
with:
|
||||||
distribution: 'temurin'
|
distribution: 'temurin'
|
||||||
java-version: '21'
|
java-version: '21'
|
||||||
|
|
@ -78,7 +78,7 @@ jobs:
|
||||||
|
|
||||||
- name: Cache Maven Repository
|
- name: Cache Maven Repository
|
||||||
id: cache-maven
|
id: cache-maven
|
||||||
uses: actions/cache@v4
|
uses: https://github.com/actions/cache@v4
|
||||||
with:
|
with:
|
||||||
path: ~/.m2/repository
|
path: ~/.m2/repository
|
||||||
# The cache is per branch but in case we don't find a branch for a given branch, we will get a cache from another branch.
|
# The cache is per branch but in case we don't find a branch for a given branch, we will get a cache from another branch.
|
||||||
|
|
|
||||||
2
.github/workflows/validate-versions.yaml
vendored
2
.github/workflows/validate-versions.yaml
vendored
|
|
@ -11,7 +11,7 @@ jobs:
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout the code
|
- name: Checkout the code
|
||||||
uses: https://github.com/actions/checkout@v4
|
uses: https://github.com/actions/checkout@v6
|
||||||
|
|
||||||
- name: Retrieve project metadata
|
- name: Retrieve project metadata
|
||||||
uses: https://github.com/radcortez/project-metadata-action@main
|
uses: https://github.com/radcortez/project-metadata-action@main
|
||||||
|
|
|
||||||
19
.mvn/wrapper/maven-wrapper.properties
vendored
19
.mvn/wrapper/maven-wrapper.properties
vendored
|
|
@ -1,19 +1,2 @@
|
||||||
# Licensed to the Apache Software Foundation (ASF) under one
|
|
||||||
# or more contributor license agreements. See the NOTICE file
|
|
||||||
# distributed with this work for additional information
|
|
||||||
# regarding copyright ownership. The ASF licenses this file
|
|
||||||
# to you under the Apache License, Version 2.0 (the
|
|
||||||
# "License"); you may not use this file except in compliance
|
|
||||||
# with the License. You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing,
|
|
||||||
# software distributed under the License is distributed on an
|
|
||||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
||||||
# KIND, either express or implied. See the License for the
|
|
||||||
# specific language governing permissions and limitations
|
|
||||||
# under the License.
|
|
||||||
wrapperVersion=3.3.2
|
|
||||||
distributionType=only-script
|
distributionType=only-script
|
||||||
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip
|
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.11/apache-maven-3.9.11-bin.zip
|
||||||
|
|
|
||||||
14
README.md
14
README.md
|
|
@ -2,12 +2,12 @@ Quarkus Commons
|
||||||
===============
|
===============
|
||||||
|
|
||||||
[](https://openjdk.org/projects/jdk/21/)
|
[](https://openjdk.org/projects/jdk/21/)
|
||||||
[](https://sonarqube.pub.basel.kvant.cloud/dashboard?id=quarkus-commons)
|
[](https://sonarqube.pub.basel.kvant.cloud/dashboard?id=quarkus-commons)
|
||||||
[](https://sonarqube.pub.basel.kvant.cloud/dashboard?id=quarkus-commons)
|
[](https://sonarqube.pub.basel.kvant.cloud/dashboard?id=quarkus-commons)
|
||||||
[](https://sonarqube.pub.basel.kvant.cloud/dashboard?id=quarkus-commons)
|
[](https://sonarqube.pub.basel.kvant.cloud/dashboard?id=quarkus-commons)
|
||||||
[](https://sonarqube.pub.basel.kvant.cloud/dashboard?id=quarkus-commons)
|
[](https://sonarqube.pub.basel.kvant.cloud/dashboard?id=quarkus-commons)
|
||||||
[](https://sonarqube.pub.basel.kvant.cloud/dashboard?id=quarkus-commons)
|
[](https://sonarqube.pub.basel.kvant.cloud/dashboard?id=quarkus-commons)
|
||||||
[](https://sonarqube.pub.basel.kvant.cloud/dashboard?id=quarkus-commons)
|
[](https://sonarqube.pub.basel.kvant.cloud/dashboard?id=quarkus-commons)
|
||||||
|
|
||||||
# Introduction
|
# Introduction
|
||||||
|
|
||||||
|
|
@ -17,10 +17,12 @@ that can be used by Quarkus applications.
|
||||||
The modules are:
|
The modules are:
|
||||||
|
|
||||||
* `quarkus-audit-tools`
|
* `quarkus-audit-tools`
|
||||||
|
* `quarkus-client-logger`
|
||||||
* `quarkus-clock-service`
|
* `quarkus-clock-service`
|
||||||
* `quarkus-json-service`
|
* `quarkus-json-service`
|
||||||
* `quarkus-message-digest-service`
|
* `quarkus-message-digest-service`
|
||||||
* `quarkus-random-number-generator`
|
* `quarkus-random-number-generator`
|
||||||
|
* `quarkus-table-generator`
|
||||||
* `quarkus-tracing-service`
|
* `quarkus-tracing-service`
|
||||||
* `quarkus-uuid-generator`
|
* `quarkus-uuid-generator`
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
* @jorge.bornhausen
|
* @jorge.bornhausen @roque.caballero @joseluis.gutierrez @pawel.derehajlo @michal.tumilowicz @humberto.casanova
|
||||||
50
mvnw
vendored
50
mvnw
vendored
|
|
@ -19,7 +19,7 @@
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
# Apache Maven Wrapper startup batch script, version 3.3.2
|
# Apache Maven Wrapper startup batch script, version 3.3.3
|
||||||
#
|
#
|
||||||
# Optional ENV vars
|
# Optional ENV vars
|
||||||
# -----------------
|
# -----------------
|
||||||
|
|
@ -105,14 +105,17 @@ trim() {
|
||||||
printf "%s" "${1}" | tr -d '[:space:]'
|
printf "%s" "${1}" | tr -d '[:space:]'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
scriptDir="$(dirname "$0")"
|
||||||
|
scriptName="$(basename "$0")"
|
||||||
|
|
||||||
# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties
|
# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties
|
||||||
while IFS="=" read -r key value; do
|
while IFS="=" read -r key value; do
|
||||||
case "${key-}" in
|
case "${key-}" in
|
||||||
distributionUrl) distributionUrl=$(trim "${value-}") ;;
|
distributionUrl) distributionUrl=$(trim "${value-}") ;;
|
||||||
distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;;
|
distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;;
|
||||||
esac
|
esac
|
||||||
done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties"
|
done <"$scriptDir/.mvn/wrapper/maven-wrapper.properties"
|
||||||
[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties"
|
[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties"
|
||||||
|
|
||||||
case "${distributionUrl##*/}" in
|
case "${distributionUrl##*/}" in
|
||||||
maven-mvnd-*bin.*)
|
maven-mvnd-*bin.*)
|
||||||
|
|
@ -130,7 +133,7 @@ maven-mvnd-*bin.*)
|
||||||
distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip"
|
distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip"
|
||||||
;;
|
;;
|
||||||
maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;;
|
maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;;
|
||||||
*) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;;
|
*) MVN_CMD="mvn${scriptName#mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# apply MVNW_REPOURL and calculate MAVEN_HOME
|
# apply MVNW_REPOURL and calculate MAVEN_HOME
|
||||||
|
|
@ -227,7 +230,7 @@ if [ -n "${distributionSha256Sum-}" ]; then
|
||||||
echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
|
echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
|
||||||
exit 1
|
exit 1
|
||||||
elif command -v sha256sum >/dev/null; then
|
elif command -v sha256sum >/dev/null; then
|
||||||
if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then
|
if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c - >/dev/null 2>&1; then
|
||||||
distributionSha256Result=true
|
distributionSha256Result=true
|
||||||
fi
|
fi
|
||||||
elif command -v shasum >/dev/null; then
|
elif command -v shasum >/dev/null; then
|
||||||
|
|
@ -252,8 +255,41 @@ if command -v unzip >/dev/null; then
|
||||||
else
|
else
|
||||||
tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar"
|
tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar"
|
||||||
fi
|
fi
|
||||||
printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url"
|
|
||||||
mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME"
|
# Find the actual extracted directory name (handles snapshots where filename != directory name)
|
||||||
|
actualDistributionDir=""
|
||||||
|
|
||||||
|
# First try the expected directory name (for regular distributions)
|
||||||
|
if [ -d "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" ]; then
|
||||||
|
if [ -f "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/bin/$MVN_CMD" ]; then
|
||||||
|
actualDistributionDir="$distributionUrlNameMain"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If not found, search for any directory with the Maven executable (for snapshots)
|
||||||
|
if [ -z "$actualDistributionDir" ]; then
|
||||||
|
# enable globbing to iterate over items
|
||||||
|
set +f
|
||||||
|
for dir in "$TMP_DOWNLOAD_DIR"/*; do
|
||||||
|
if [ -d "$dir" ]; then
|
||||||
|
if [ -f "$dir/bin/$MVN_CMD" ]; then
|
||||||
|
actualDistributionDir="$(basename "$dir")"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
set -f
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$actualDistributionDir" ]; then
|
||||||
|
verbose "Contents of $TMP_DOWNLOAD_DIR:"
|
||||||
|
verbose "$(ls -la "$TMP_DOWNLOAD_DIR")"
|
||||||
|
die "Could not find Maven distribution directory in extracted archive"
|
||||||
|
fi
|
||||||
|
|
||||||
|
verbose "Found extracted Maven distribution directory: $actualDistributionDir"
|
||||||
|
printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$actualDistributionDir/mvnw.url"
|
||||||
|
mv -- "$TMP_DOWNLOAD_DIR/$actualDistributionDir" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME"
|
||||||
|
|
||||||
clean || :
|
clean || :
|
||||||
exec_maven "$@"
|
exec_maven "$@"
|
||||||
|
|
|
||||||
338
mvnw.cmd
vendored
338
mvnw.cmd
vendored
|
|
@ -1,149 +1,189 @@
|
||||||
<# : batch portion
|
<# : batch portion
|
||||||
@REM ----------------------------------------------------------------------------
|
@REM ----------------------------------------------------------------------------
|
||||||
@REM Licensed to the Apache Software Foundation (ASF) under one
|
@REM Licensed to the Apache Software Foundation (ASF) under one
|
||||||
@REM or more contributor license agreements. See the NOTICE file
|
@REM or more contributor license agreements. See the NOTICE file
|
||||||
@REM distributed with this work for additional information
|
@REM distributed with this work for additional information
|
||||||
@REM regarding copyright ownership. The ASF licenses this file
|
@REM regarding copyright ownership. The ASF licenses this file
|
||||||
@REM to you under the Apache License, Version 2.0 (the
|
@REM to you under the Apache License, Version 2.0 (the
|
||||||
@REM "License"); you may not use this file except in compliance
|
@REM "License"); you may not use this file except in compliance
|
||||||
@REM with the License. You may obtain a copy of the License at
|
@REM with the License. You may obtain a copy of the License at
|
||||||
@REM
|
@REM
|
||||||
@REM http://www.apache.org/licenses/LICENSE-2.0
|
@REM http://www.apache.org/licenses/LICENSE-2.0
|
||||||
@REM
|
@REM
|
||||||
@REM Unless required by applicable law or agreed to in writing,
|
@REM Unless required by applicable law or agreed to in writing,
|
||||||
@REM software distributed under the License is distributed on an
|
@REM software distributed under the License is distributed on an
|
||||||
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
@REM KIND, either express or implied. See the License for the
|
@REM KIND, either express or implied. See the License for the
|
||||||
@REM specific language governing permissions and limitations
|
@REM specific language governing permissions and limitations
|
||||||
@REM under the License.
|
@REM under the License.
|
||||||
@REM ----------------------------------------------------------------------------
|
@REM ----------------------------------------------------------------------------
|
||||||
|
|
||||||
@REM ----------------------------------------------------------------------------
|
@REM ----------------------------------------------------------------------------
|
||||||
@REM Apache Maven Wrapper startup batch script, version 3.3.2
|
@REM Apache Maven Wrapper startup batch script, version 3.3.3
|
||||||
@REM
|
@REM
|
||||||
@REM Optional ENV vars
|
@REM Optional ENV vars
|
||||||
@REM MVNW_REPOURL - repo url base for downloading maven distribution
|
@REM MVNW_REPOURL - repo url base for downloading maven distribution
|
||||||
@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
|
@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
|
||||||
@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output
|
@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output
|
||||||
@REM ----------------------------------------------------------------------------
|
@REM ----------------------------------------------------------------------------
|
||||||
|
|
||||||
@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0)
|
@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0)
|
||||||
@SET __MVNW_CMD__=
|
@SET __MVNW_CMD__=
|
||||||
@SET __MVNW_ERROR__=
|
@SET __MVNW_ERROR__=
|
||||||
@SET __MVNW_PSMODULEP_SAVE=%PSModulePath%
|
@SET __MVNW_PSMODULEP_SAVE=%PSModulePath%
|
||||||
@SET PSModulePath=
|
@SET PSModulePath=
|
||||||
@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @(
|
@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @(
|
||||||
IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B)
|
IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B)
|
||||||
)
|
)
|
||||||
@SET PSModulePath=%__MVNW_PSMODULEP_SAVE%
|
@SET PSModulePath=%__MVNW_PSMODULEP_SAVE%
|
||||||
@SET __MVNW_PSMODULEP_SAVE=
|
@SET __MVNW_PSMODULEP_SAVE=
|
||||||
@SET __MVNW_ARG0_NAME__=
|
@SET __MVNW_ARG0_NAME__=
|
||||||
@SET MVNW_USERNAME=
|
@SET MVNW_USERNAME=
|
||||||
@SET MVNW_PASSWORD=
|
@SET MVNW_PASSWORD=
|
||||||
@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*)
|
@IF NOT "%__MVNW_CMD__%"=="" ("%__MVNW_CMD__%" %*)
|
||||||
@echo Cannot start maven from wrapper >&2 && exit /b 1
|
@echo Cannot start maven from wrapper >&2 && exit /b 1
|
||||||
@GOTO :EOF
|
@GOTO :EOF
|
||||||
: end batch / begin powershell #>
|
: end batch / begin powershell #>
|
||||||
|
|
||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
if ($env:MVNW_VERBOSE -eq "true") {
|
if ($env:MVNW_VERBOSE -eq "true") {
|
||||||
$VerbosePreference = "Continue"
|
$VerbosePreference = "Continue"
|
||||||
}
|
}
|
||||||
|
|
||||||
# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties
|
# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties
|
||||||
$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl
|
$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl
|
||||||
if (!$distributionUrl) {
|
if (!$distributionUrl) {
|
||||||
Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties"
|
Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties"
|
||||||
}
|
}
|
||||||
|
|
||||||
switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) {
|
switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) {
|
||||||
"maven-mvnd-*" {
|
"maven-mvnd-*" {
|
||||||
$USE_MVND = $true
|
$USE_MVND = $true
|
||||||
$distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip"
|
$distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip"
|
||||||
$MVN_CMD = "mvnd.cmd"
|
$MVN_CMD = "mvnd.cmd"
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
default {
|
default {
|
||||||
$USE_MVND = $false
|
$USE_MVND = $false
|
||||||
$MVN_CMD = $script -replace '^mvnw','mvn'
|
$MVN_CMD = $script -replace '^mvnw','mvn'
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# apply MVNW_REPOURL and calculate MAVEN_HOME
|
# apply MVNW_REPOURL and calculate MAVEN_HOME
|
||||||
# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-<version>,maven-mvnd-<version>-<platform>}/<hash>
|
# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-<version>,maven-mvnd-<version>-<platform>}/<hash>
|
||||||
if ($env:MVNW_REPOURL) {
|
if ($env:MVNW_REPOURL) {
|
||||||
$MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" }
|
$MVNW_REPO_PATTERN = if ($USE_MVND -eq $False) { "/org/apache/maven/" } else { "/maven/mvnd/" }
|
||||||
$distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')"
|
$distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace "^.*$MVNW_REPO_PATTERN",'')"
|
||||||
}
|
}
|
||||||
$distributionUrlName = $distributionUrl -replace '^.*/',''
|
$distributionUrlName = $distributionUrl -replace '^.*/',''
|
||||||
$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$',''
|
$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$',''
|
||||||
$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain"
|
|
||||||
if ($env:MAVEN_USER_HOME) {
|
$MAVEN_M2_PATH = "$HOME/.m2"
|
||||||
$MAVEN_HOME_PARENT = "$env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain"
|
if ($env:MAVEN_USER_HOME) {
|
||||||
}
|
$MAVEN_M2_PATH = "$env:MAVEN_USER_HOME"
|
||||||
$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join ''
|
}
|
||||||
$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME"
|
|
||||||
|
if (-not (Test-Path -Path $MAVEN_M2_PATH)) {
|
||||||
if (Test-Path -Path "$MAVEN_HOME" -PathType Container) {
|
New-Item -Path $MAVEN_M2_PATH -ItemType Directory | Out-Null
|
||||||
Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME"
|
}
|
||||||
Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"
|
|
||||||
exit $?
|
$MAVEN_WRAPPER_DISTS = $null
|
||||||
}
|
if ((Get-Item $MAVEN_M2_PATH).Target[0] -eq $null) {
|
||||||
|
$MAVEN_WRAPPER_DISTS = "$MAVEN_M2_PATH/wrapper/dists"
|
||||||
if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) {
|
} else {
|
||||||
Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl"
|
$MAVEN_WRAPPER_DISTS = (Get-Item $MAVEN_M2_PATH).Target[0] + "/wrapper/dists"
|
||||||
}
|
}
|
||||||
|
|
||||||
# prepare tmp dir
|
$MAVEN_HOME_PARENT = "$MAVEN_WRAPPER_DISTS/$distributionUrlNameMain"
|
||||||
$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile
|
$MAVEN_HOME_NAME = ([System.Security.Cryptography.SHA256]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join ''
|
||||||
$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir"
|
$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME"
|
||||||
$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null
|
|
||||||
trap {
|
if (Test-Path -Path "$MAVEN_HOME" -PathType Container) {
|
||||||
if ($TMP_DOWNLOAD_DIR.Exists) {
|
Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME"
|
||||||
try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
|
Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"
|
||||||
catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
|
exit $?
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) {
|
||||||
New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null
|
Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl"
|
||||||
|
}
|
||||||
# Download and Install Apache Maven
|
|
||||||
Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
|
# prepare tmp dir
|
||||||
Write-Verbose "Downloading from: $distributionUrl"
|
$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile
|
||||||
Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"
|
$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir"
|
||||||
|
$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null
|
||||||
$webclient = New-Object System.Net.WebClient
|
trap {
|
||||||
if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) {
|
if ($TMP_DOWNLOAD_DIR.Exists) {
|
||||||
$webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD)
|
try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
|
||||||
}
|
catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
|
||||||
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
}
|
||||||
$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null
|
}
|
||||||
|
|
||||||
# If specified, validate the SHA-256 sum of the Maven distribution zip file
|
New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null
|
||||||
$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum
|
|
||||||
if ($distributionSha256Sum) {
|
# Download and Install Apache Maven
|
||||||
if ($USE_MVND) {
|
Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
|
||||||
Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties."
|
Write-Verbose "Downloading from: $distributionUrl"
|
||||||
}
|
Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"
|
||||||
Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash
|
|
||||||
if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) {
|
$webclient = New-Object System.Net.WebClient
|
||||||
Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property."
|
if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) {
|
||||||
}
|
$webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD)
|
||||||
}
|
}
|
||||||
|
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
||||||
# unzip and move
|
$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null
|
||||||
Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null
|
|
||||||
Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null
|
# If specified, validate the SHA-256 sum of the Maven distribution zip file
|
||||||
try {
|
$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum
|
||||||
Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null
|
if ($distributionSha256Sum) {
|
||||||
} catch {
|
if ($USE_MVND) {
|
||||||
if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) {
|
Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties."
|
||||||
Write-Error "fail to move MAVEN_HOME"
|
}
|
||||||
}
|
Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash
|
||||||
} finally {
|
if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) {
|
||||||
try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
|
Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property."
|
||||||
catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"
|
# unzip and move
|
||||||
|
Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null
|
||||||
|
|
||||||
|
# Find the actual extracted directory name (handles snapshots where filename != directory name)
|
||||||
|
$actualDistributionDir = ""
|
||||||
|
|
||||||
|
# First try the expected directory name (for regular distributions)
|
||||||
|
$expectedPath = Join-Path "$TMP_DOWNLOAD_DIR" "$distributionUrlNameMain"
|
||||||
|
$expectedMvnPath = Join-Path "$expectedPath" "bin/$MVN_CMD"
|
||||||
|
if ((Test-Path -Path $expectedPath -PathType Container) -and (Test-Path -Path $expectedMvnPath -PathType Leaf)) {
|
||||||
|
$actualDistributionDir = $distributionUrlNameMain
|
||||||
|
}
|
||||||
|
|
||||||
|
# If not found, search for any directory with the Maven executable (for snapshots)
|
||||||
|
if (!$actualDistributionDir) {
|
||||||
|
Get-ChildItem -Path "$TMP_DOWNLOAD_DIR" -Directory | ForEach-Object {
|
||||||
|
$testPath = Join-Path $_.FullName "bin/$MVN_CMD"
|
||||||
|
if (Test-Path -Path $testPath -PathType Leaf) {
|
||||||
|
$actualDistributionDir = $_.Name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$actualDistributionDir) {
|
||||||
|
Write-Error "Could not find Maven distribution directory in extracted archive"
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Verbose "Found extracted Maven distribution directory: $actualDistributionDir"
|
||||||
|
Rename-Item -Path "$TMP_DOWNLOAD_DIR/$actualDistributionDir" -NewName $MAVEN_HOME_NAME | Out-Null
|
||||||
|
try {
|
||||||
|
Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null
|
||||||
|
} catch {
|
||||||
|
if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) {
|
||||||
|
Write-Error "fail to move MAVEN_HOME"
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }
|
||||||
|
catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" }
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD"
|
||||||
|
|
|
||||||
25
pom.xml
25
pom.xml
|
|
@ -3,7 +3,7 @@
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>ch.phoenix.oss</groupId>
|
<groupId>ch.phoenix.oss</groupId>
|
||||||
<artifactId>quarkus-commons</artifactId>
|
<artifactId>quarkus-commons</artifactId>
|
||||||
<version>1.0.7</version>
|
<version>1.1.5-SNAPSHOT</version>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
|
|
@ -13,6 +13,7 @@
|
||||||
<module>quarkus-json-service</module>
|
<module>quarkus-json-service</module>
|
||||||
<module>quarkus-message-digest-service</module>
|
<module>quarkus-message-digest-service</module>
|
||||||
<module>quarkus-random-number-generator</module>
|
<module>quarkus-random-number-generator</module>
|
||||||
|
<module>quarkus-table-generator</module>
|
||||||
<module>quarkus-tracing-service</module>
|
<module>quarkus-tracing-service</module>
|
||||||
<module>quarkus-uuid-generator</module>
|
<module>quarkus-uuid-generator</module>
|
||||||
</modules>
|
</modules>
|
||||||
|
|
@ -21,17 +22,17 @@
|
||||||
<!-- Quarkus properties -->
|
<!-- Quarkus properties -->
|
||||||
<quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
|
<quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
|
||||||
<quarkus.platform.group-id>io.quarkus.platform</quarkus.platform.group-id>
|
<quarkus.platform.group-id>io.quarkus.platform</quarkus.platform.group-id>
|
||||||
<quarkus.platform.version>3.24.4</quarkus.platform.version>
|
<quarkus.platform.version>3.30.2</quarkus.platform.version>
|
||||||
|
|
||||||
<!-- Plugin versions -->
|
<!-- Plugin versions -->
|
||||||
<compiler-plugin.version>3.14.0</compiler-plugin.version>
|
<compiler-plugin.version>3.14.1</compiler-plugin.version>
|
||||||
<surefire-plugin.version>3.5.3</surefire-plugin.version>
|
<surefire-plugin.version>3.5.4</surefire-plugin.version>
|
||||||
<spotless-plugin.version>2.46.1</spotless-plugin.version>
|
<spotless-plugin.version>3.1.0</spotless-plugin.version>
|
||||||
<palantir-java-format.version>2.72.0</palantir-java-format.version>
|
<palantir-java-format.version>2.72.0</palantir-java-format.version>
|
||||||
<jacoco-plugin.version>0.8.13</jacoco-plugin.version> <!-- Match with version from Quarkus BOM -->
|
<jacoco-plugin.version>0.8.14</jacoco-plugin.version> <!-- Match with version from Quarkus BOM -->
|
||||||
<jandex-plugin.version>3.4.0</jandex-plugin.version>
|
<jandex-plugin.version>3.5.2</jandex-plugin.version>
|
||||||
<release-plugin.version>3.1.1</release-plugin.version>
|
<release-plugin.version>3.2.0</release-plugin.version>
|
||||||
<source-plugin.version>3.3.1</source-plugin.version>
|
<source-plugin.version>3.4.0</source-plugin.version>
|
||||||
|
|
||||||
<!-- Build properties -->
|
<!-- Build properties -->
|
||||||
<maven.compiler.release>21</maven.compiler.release>
|
<maven.compiler.release>21</maven.compiler.release>
|
||||||
|
|
@ -40,10 +41,10 @@
|
||||||
<skipITs>true</skipITs>
|
<skipITs>true</skipITs>
|
||||||
|
|
||||||
<!-- Dependencies -->
|
<!-- Dependencies -->
|
||||||
<java-uuid-generator.version>5.1.0</java-uuid-generator.version>
|
<java-uuid-generator.version>5.2.0</java-uuid-generator.version>
|
||||||
|
|
||||||
<!-- Test dependencies -->
|
<!-- Test dependencies -->
|
||||||
<assertj-core.version>3.27.3</assertj-core.version>
|
<assertj-core.version>3.27.6</assertj-core.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<distributionManagement>
|
<distributionManagement>
|
||||||
|
|
@ -73,7 +74,7 @@
|
||||||
<connection>scm:git:ssh://git@git-ssh.kvant.cloud:2222/phoenix-oss/quarkus-commons.git</connection>
|
<connection>scm:git:ssh://git@git-ssh.kvant.cloud:2222/phoenix-oss/quarkus-commons.git</connection>
|
||||||
<developerConnection>scm:git:ssh://git@git-ssh.kvant.cloud:2222/phoenix-oss/quarkus-commons.git</developerConnection>
|
<developerConnection>scm:git:ssh://git@git-ssh.kvant.cloud:2222/phoenix-oss/quarkus-commons.git</developerConnection>
|
||||||
<url>https://git.kvant.cloud/phoenix-oss/quarkus-commons.git</url>
|
<url>https://git.kvant.cloud/phoenix-oss/quarkus-commons.git</url>
|
||||||
<tag>1.0.7</tag>
|
<tag>HEAD</tag>
|
||||||
</scm>
|
</scm>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ch.phoenix.oss</groupId>
|
<groupId>ch.phoenix.oss</groupId>
|
||||||
<artifactId>quarkus-commons</artifactId>
|
<artifactId>quarkus-commons</artifactId>
|
||||||
<version>1.0.7</version>
|
<version>1.1.5-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>quarkus-audit-tools</artifactId>
|
<artifactId>quarkus-audit-tools</artifactId>
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ch.phoenix.oss</groupId>
|
<groupId>ch.phoenix.oss</groupId>
|
||||||
<artifactId>quarkus-commons</artifactId>
|
<artifactId>quarkus-commons</artifactId>
|
||||||
<version>1.0.7</version>
|
<version>1.1.5-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>quarkus-client-logger</artifactId>
|
<artifactId>quarkus-client-logger</artifactId>
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import jakarta.ws.rs.core.HttpHeaders;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@ConfigMapping(prefix = "phoenix.client-logger")
|
@ConfigMapping(prefix = "phoenix-oss.client-logger")
|
||||||
public interface RedactingClientLoggerConfiguration {
|
public interface RedactingClientLoggerConfiguration {
|
||||||
|
|
||||||
Headers headers();
|
Headers headers();
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ quarkus:
|
||||||
"ch.phoenix.oss.quarkus.commons.client.logger":
|
"ch.phoenix.oss.quarkus.commons.client.logger":
|
||||||
level: DEBUG
|
level: DEBUG
|
||||||
|
|
||||||
phoenix:
|
phoenix-oss:
|
||||||
client-logger:
|
client-logger:
|
||||||
headers:
|
headers:
|
||||||
redact:
|
redact:
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ch.phoenix.oss</groupId>
|
<groupId>ch.phoenix.oss</groupId>
|
||||||
<artifactId>quarkus-commons</artifactId>
|
<artifactId>quarkus-commons</artifactId>
|
||||||
<version>1.0.7</version>
|
<version>1.1.5-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>quarkus-clock-service</artifactId>
|
<artifactId>quarkus-clock-service</artifactId>
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ch.phoenix.oss</groupId>
|
<groupId>ch.phoenix.oss</groupId>
|
||||||
<artifactId>quarkus-commons</artifactId>
|
<artifactId>quarkus-commons</artifactId>
|
||||||
<version>1.0.7</version>
|
<version>1.1.5-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>quarkus-json-service</artifactId>
|
<artifactId>quarkus-json-service</artifactId>
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ch.phoenix.oss</groupId>
|
<groupId>ch.phoenix.oss</groupId>
|
||||||
<artifactId>quarkus-commons</artifactId>
|
<artifactId>quarkus-commons</artifactId>
|
||||||
<version>1.0.7</version>
|
<version>1.1.5-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>quarkus-message-digest-service</artifactId>
|
<artifactId>quarkus-message-digest-service</artifactId>
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ package ch.phoenix.oss.quarkus.commons.digest;
|
||||||
import io.smallrye.config.ConfigMapping;
|
import io.smallrye.config.ConfigMapping;
|
||||||
import io.smallrye.config.WithDefault;
|
import io.smallrye.config.WithDefault;
|
||||||
|
|
||||||
@ConfigMapping(prefix = "phoenix.message-digest")
|
@ConfigMapping(prefix = "phoenix-oss.message-digest")
|
||||||
public interface MessageDigestConfiguration {
|
public interface MessageDigestConfiguration {
|
||||||
|
|
||||||
@WithDefault("SHA-256")
|
@WithDefault("SHA-256")
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ch.phoenix.oss</groupId>
|
<groupId>ch.phoenix.oss</groupId>
|
||||||
<artifactId>quarkus-commons</artifactId>
|
<artifactId>quarkus-commons</artifactId>
|
||||||
<version>1.0.7</version>
|
<version>1.1.5-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>quarkus-random-number-generator</artifactId>
|
<artifactId>quarkus-random-number-generator</artifactId>
|
||||||
|
|
|
||||||
47
quarkus-table-generator/pom.xml
Normal file
47
quarkus-table-generator/pom.xml
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>ch.phoenix.oss</groupId>
|
||||||
|
<artifactId>quarkus-commons</artifactId>
|
||||||
|
<version>1.1.5-SNAPSHOT</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<artifactId>quarkus-table-generator</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.jacoco</groupId>
|
||||||
|
<artifactId>jacoco-maven-plugin</artifactId>
|
||||||
|
<version>${jacoco-plugin.version}</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>jacoco-check</id>
|
||||||
|
<goals>
|
||||||
|
<goal>check</goal>
|
||||||
|
</goals>
|
||||||
|
<phase>test</phase>
|
||||||
|
<configuration>
|
||||||
|
<dataFile>${project.build.directory}/jacoco-quarkus.exec</dataFile>
|
||||||
|
<rules>
|
||||||
|
<rule>
|
||||||
|
<element>BUNDLE</element>
|
||||||
|
<limits>
|
||||||
|
<limit>
|
||||||
|
<counter>INSTRUCTION</counter>
|
||||||
|
<value>COVEREDRATIO</value>
|
||||||
|
<minimum>1</minimum>
|
||||||
|
</limit>
|
||||||
|
</limits>
|
||||||
|
</rule>
|
||||||
|
</rules>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</project>
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
package ch.phoenix.oss.quarkus.commons.table;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface TableGenerator {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates a Jira-style table from a list of records.
|
||||||
|
* Refer to <a href="https://jira.atlassian.com/secure/WikiRendererHelpAction.jspa?section=all">notation</a>
|
||||||
|
*
|
||||||
|
* @param records List of records to generate the table from
|
||||||
|
* @param headers Optional custom headers, list must match record field order and count.
|
||||||
|
* If null, field names are used as headers.
|
||||||
|
* @return String representing the records as a table in Jira notation
|
||||||
|
* @throws IllegalArgumentException If records are null or empty, if the type is not a Record.
|
||||||
|
* Also throws if custom headers are provided but the size does not match the record's field count
|
||||||
|
* @throws IllegalStateException if an error occurs while invoking a record's accessor
|
||||||
|
*/
|
||||||
|
String generateJiraTable(List<?> records, List<String> headers);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,65 @@
|
||||||
|
package ch.phoenix.oss.quarkus.commons.table;
|
||||||
|
|
||||||
|
import jakarta.enterprise.context.ApplicationScoped;
|
||||||
|
import java.lang.reflect.RecordComponent;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@ApplicationScoped
|
||||||
|
class TableGeneratorImpl implements TableGenerator {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String generateJiraTable(List<?> records, List<String> headers) {
|
||||||
|
if (records == null || records.isEmpty()) {
|
||||||
|
throw new IllegalArgumentException("Records can't be null or empty");
|
||||||
|
}
|
||||||
|
|
||||||
|
Class<?> recordClass = records.getFirst().getClass();
|
||||||
|
if (!recordClass.isRecord()) {
|
||||||
|
throw new IllegalArgumentException("Only records are supported at the moment");
|
||||||
|
}
|
||||||
|
|
||||||
|
var components = recordClass.getRecordComponents();
|
||||||
|
var columns = components.length;
|
||||||
|
|
||||||
|
List<String> headerRow;
|
||||||
|
if (headers == null) {
|
||||||
|
headerRow = Arrays.stream(components).map(RecordComponent::getName).toList();
|
||||||
|
} else if (headers.size() == columns) {
|
||||||
|
headerRow = headers;
|
||||||
|
} else {
|
||||||
|
throw new IllegalArgumentException("Custom header count [%s] does not match actual number of columns [%s]"
|
||||||
|
.formatted(headers.size(), columns));
|
||||||
|
}
|
||||||
|
|
||||||
|
var dataRows = new ArrayList<List<String>>();
|
||||||
|
for (var record : records) {
|
||||||
|
var row = new ArrayList<String>(columns);
|
||||||
|
for (var component : components) {
|
||||||
|
try {
|
||||||
|
var val = component.getAccessor().invoke(record);
|
||||||
|
row.add(val == null ? "" : val.toString());
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new IllegalStateException(
|
||||||
|
"Unable to invoke accessor for component [%s] of class [%s]"
|
||||||
|
.formatted(component.getName(), recordClass.getName()),
|
||||||
|
e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dataRows.add(row);
|
||||||
|
}
|
||||||
|
|
||||||
|
var sb = new StringBuilder("||");
|
||||||
|
headerRow.forEach(header -> sb.append(" ").append(header).append(" ||"));
|
||||||
|
sb.append("\n");
|
||||||
|
for (var row : dataRows) {
|
||||||
|
sb.append("|");
|
||||||
|
for (String cell : row) {
|
||||||
|
sb.append(" ").append(cell).append(" |");
|
||||||
|
}
|
||||||
|
sb.append("\n");
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,106 @@
|
||||||
|
package ch.phoenix.oss.quarkus.commons.table;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||||
|
import static org.junit.jupiter.params.provider.Arguments.arguments;
|
||||||
|
|
||||||
|
import io.quarkus.test.junit.QuarkusTest;
|
||||||
|
import jakarta.inject.Inject;
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.time.temporal.ChronoUnit;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.params.ParameterizedTest;
|
||||||
|
import org.junit.jupiter.params.provider.Arguments;
|
||||||
|
import org.junit.jupiter.params.provider.MethodSource;
|
||||||
|
|
||||||
|
@QuarkusTest
|
||||||
|
class TableGeneratorImplTest {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
TableGenerator tableGenerator;
|
||||||
|
|
||||||
|
public record TestDto(String what, Instant instant, Double number) {}
|
||||||
|
|
||||||
|
static Stream<Arguments> generateJiraTable() {
|
||||||
|
var dtos = List.of(
|
||||||
|
new TestDto("What", Instant.ofEpochMilli(123).truncatedTo(ChronoUnit.MILLIS), 2.0d),
|
||||||
|
new TestDto("SupDog", Instant.ofEpochMilli(124313425).truncatedTo(ChronoUnit.MILLIS), null),
|
||||||
|
new TestDto(null, null, 214534.134d),
|
||||||
|
new TestDto(null, null, null));
|
||||||
|
return Stream.of(
|
||||||
|
arguments(
|
||||||
|
dtos,
|
||||||
|
List.of("What", "Instant", "SomeNumber"),
|
||||||
|
"""
|
||||||
|
|| What || Instant || SomeNumber ||
|
||||||
|
| What | 1970-01-01T00:00:00.123Z | 2.0 |
|
||||||
|
| SupDog | 1970-01-02T10:31:53.425Z | |
|
||||||
|
| | | 214534.134 |
|
||||||
|
| | | |
|
||||||
|
"""),
|
||||||
|
arguments(
|
||||||
|
dtos,
|
||||||
|
null,
|
||||||
|
"""
|
||||||
|
|| what || instant || number ||
|
||||||
|
| What | 1970-01-01T00:00:00.123Z | 2.0 |
|
||||||
|
| SupDog | 1970-01-02T10:31:53.425Z | |
|
||||||
|
| | | 214534.134 |
|
||||||
|
| | | |
|
||||||
|
"""));
|
||||||
|
}
|
||||||
|
|
||||||
|
@MethodSource
|
||||||
|
@ParameterizedTest
|
||||||
|
void generateJiraTable(List<TestDto> testDtos, List<String> headers, String expected) {
|
||||||
|
var actual = tableGenerator.generateJiraTable(testDtos, headers);
|
||||||
|
assertThat(actual).as("Generated table should match expected value").isEqualTo(expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void generateJiraTableWhenRecordsIsNull() {
|
||||||
|
assertThatThrownBy(() -> tableGenerator.generateJiraTable(null, null))
|
||||||
|
.isInstanceOf(IllegalArgumentException.class)
|
||||||
|
.hasMessageContaining("Records can't be null or empty");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void generateJiraTableWhenRecordsIsEmpty() {
|
||||||
|
assertThatThrownBy(() -> tableGenerator.generateJiraTable(List.of(), null))
|
||||||
|
.isInstanceOf(IllegalArgumentException.class)
|
||||||
|
.hasMessageContaining("Records can't be null or empty");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void generateJiraTableWhenNotRecord() {
|
||||||
|
var notARecord = List.of("just a string");
|
||||||
|
assertThatThrownBy(() -> tableGenerator.generateJiraTable(notARecord, null))
|
||||||
|
.isInstanceOf(IllegalArgumentException.class)
|
||||||
|
.hasMessageContaining("Only records are supported");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void generateJiraTableWhenCustomHeaderWrongSize() {
|
||||||
|
var dtos = List.of(new TestDto("foo", Instant.now(), 1.2d));
|
||||||
|
assertThatThrownBy(() -> tableGenerator.generateJiraTable(dtos, List.of("One", "Two")))
|
||||||
|
.isInstanceOf(IllegalArgumentException.class)
|
||||||
|
.hasMessageContaining("Custom header count [2] does not match actual number of columns [3]");
|
||||||
|
}
|
||||||
|
|
||||||
|
public record EvilRecord(String value) {
|
||||||
|
@Override
|
||||||
|
public String value() {
|
||||||
|
throw new RuntimeException("Accessor failure!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void generateJiraTableWhenAccessorThrows() {
|
||||||
|
var list = List.of(new EvilRecord("hi"));
|
||||||
|
assertThatThrownBy(() -> tableGenerator.generateJiraTable(list, null))
|
||||||
|
.isInstanceOf(IllegalStateException.class)
|
||||||
|
.hasMessageContaining("Unable to invoke accessor");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ch.phoenix.oss</groupId>
|
<groupId>ch.phoenix.oss</groupId>
|
||||||
<artifactId>quarkus-commons</artifactId>
|
<artifactId>quarkus-commons</artifactId>
|
||||||
<version>1.0.7</version>
|
<version>1.1.5-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>quarkus-tracing-service</artifactId>
|
<artifactId>quarkus-tracing-service</artifactId>
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import jakarta.ws.rs.core.HttpHeaders;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@ConfigMapping(prefix = "phoenix.commons.tracing")
|
@ConfigMapping(prefix = "phoenix-oss.tracing")
|
||||||
public interface TracingConfiguration {
|
public interface TracingConfiguration {
|
||||||
|
|
||||||
RequestFilterConfiguration requestFilter();
|
RequestFilterConfiguration requestFilter();
|
||||||
|
|
|
||||||
|
|
@ -23,17 +23,16 @@ quarkus:
|
||||||
category:
|
category:
|
||||||
"ch.phoenix.oss.quarkus.commons.tracing":
|
"ch.phoenix.oss.quarkus.commons.tracing":
|
||||||
level: TRACE
|
level: TRACE
|
||||||
phoenix:
|
phoenix-oss:
|
||||||
commons:
|
tracing:
|
||||||
tracing:
|
request-filter:
|
||||||
request-filter:
|
path:
|
||||||
path:
|
include-raw: true
|
||||||
include-raw: true
|
headers:
|
||||||
headers:
|
redact:
|
||||||
redact:
|
- AUTHORIZATION
|
||||||
- AUTHORIZATION
|
- X-SOMETHING-ELSE
|
||||||
- X-SOMETHING-ELSE
|
query:
|
||||||
query:
|
include-raw: true
|
||||||
include-raw: true
|
redact:
|
||||||
redact:
|
- ACCESS_TOKEN
|
||||||
- ACCESS_TOKEN
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>ch.phoenix.oss</groupId>
|
<groupId>ch.phoenix.oss</groupId>
|
||||||
<artifactId>quarkus-commons</artifactId>
|
<artifactId>quarkus-commons</artifactId>
|
||||||
<version>1.0.7</version>
|
<version>1.1.5-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>quarkus-uuid-generator</artifactId>
|
<artifactId>quarkus-uuid-generator</artifactId>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue