diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 11b1b7fd..0c2d47dc 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -21,12 +21,12 @@ jobs:
contents: read
packages: write
steps:
- - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
- - uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: "temurin"
java-version: 25
- - uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0
+ - uses: gradle/actions/setup-gradle@50e97c2cd7a37755bbfafc9c5b7cafaece252f6e # v6.1.0
- name: Publish to GitHub Packages
run: |
./gradlew publishAllPublicationsToGitHubRepository
@@ -40,12 +40,12 @@ jobs:
permissions:
contents: read
steps:
- - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
- - uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: "temurin"
java-version: 25
- - uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0
+ - uses: gradle/actions/setup-gradle@50e97c2cd7a37755bbfafc9c5b7cafaece252f6e # v6.1.0
- name: Publish to Maven Central
run: |
./gradlew publishAggregationToCentralPortal
@@ -70,33 +70,33 @@ jobs:
- platform: linux-arm64
runner: ubuntu-24.04-arm
steps:
- - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
- - uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: "temurin"
java-version: 25
- - uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0
+ - uses: gradle/actions/setup-gradle@50e97c2cd7a37755bbfafc9c5b7cafaece252f6e # v6.1.0
- name: Build the dependencies needed for the image
run: ./gradlew :fabric-chaincode-docker:copyAllDeps
- name: Get commit timestamp
run: echo "SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct)" >> "${GITHUB_ENV}"
- name: Login to GitHub Container Registry
- uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
+ uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker Hub
- uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
+ uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
with:
registry: docker.io
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
+ uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
- name: Build image
id: build
- uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
+ uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
with:
file: fabric-chaincode-docker/Dockerfile
context: fabric-chaincode-docker
@@ -109,7 +109,7 @@ jobs:
digest="${{ steps.build.outputs.digest }}"
touch "${{ runner.temp }}/digests/${digest#sha256:}"
- name: Upload digest
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: digest-${{ matrix.arch.platform }}
path: ${{ runner.temp }}/digests/*
@@ -130,20 +130,20 @@ jobs:
- ghcr.io
steps:
- name: Download digests
- uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
+ uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
path: ${{ runner.temp }}/digests
pattern: digest-*
merge-multiple: true
- name: Login to ${{ matrix.registry }}
- uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
+ uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
with:
registry: ${{ matrix.registry }}
username: ${{ matrix.registry == 'docker.io' && secrets.DOCKERHUB_USERNAME || github.actor }}
password: ${{ matrix.registry == 'docker.io' && secrets.DOCKERHUB_TOKEN || secrets.GITHUB_TOKEN }}
- name: Docker metadata
id: meta
- uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051 # v5.10.0
+ uses: docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf # v6.0.0
with:
images: ${{ matrix.registry }}/${{ env.IMAGE_NAME }}
tags: |
@@ -151,7 +151,7 @@ jobs:
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}.{{minor}}.{{patch}}
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
+ uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
- name: Create and push manifest list
working-directory: ${{ runner.temp }}/digests
run: |
diff --git a/.github/workflows/scan.yml b/.github/workflows/scan.yml
index d5437266..c7065530 100644
--- a/.github/workflows/scan.yml
+++ b/.github/workflows/scan.yml
@@ -16,18 +16,19 @@ jobs:
osv-scanner:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ inputs.ref }}
# Go needed for scanning of v2.5.5 and earlier
- - uses: actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6.1.0
+ - uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
with:
go-version: stable
cache: false
- - uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
+ - uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: temurin
- java-version: 25
- - uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0
+ # Releases v2.5.7 and earlier do not support Java 25
+ java-version: 21
+ - uses: gradle/actions/setup-gradle@50e97c2cd7a37755bbfafc9c5b7cafaece252f6e # v6.1.0
- name: Scan
run: make scan
diff --git a/.github/workflows/scheduled-scan.yml b/.github/workflows/scheduled-scan.yml
index cfbe5687..191af837 100644
--- a/.github/workflows/scheduled-scan.yml
+++ b/.github/workflows/scheduled-scan.yml
@@ -9,7 +9,7 @@ permissions:
contents: read
jobs:
- latest-release-version:
+ release-version:
name: Get latest release tag
runs-on: ubuntu-latest
outputs:
@@ -18,9 +18,13 @@ jobs:
- id: tag-name
run: echo "value=$(curl --location --silent --fail "https://api.github.com/repos/${GITHUB_REPOSITORY}/releases/latest" | jq --raw-output '.tag_name')" >> "${GITHUB_OUTPUT}"
- scan:
- name: Scan ${{ needs.latest-release-version.outputs.tag_name }}
- needs: latest-release-version
+ scan-release:
+ name: Scan ${{ needs.release-version.outputs.tag_name }}
+ needs: release-version
uses: ./.github/workflows/scan.yml
with:
- ref: ${{ needs.latest-release-version.outputs.tag_name }}
+ ref: ${{ needs.release-version.outputs.tag_name }}
+
+ scan-latest:
+ name: Scan latest
+ uses: ./.github/workflows/scan.yml
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 695acd49..f03ba23c 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -16,31 +16,31 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ inputs.ref }}
- - uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
+ - uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: temurin
java-version: 25
- - uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0
+ - uses: gradle/actions/setup-gradle@50e97c2cd7a37755bbfafc9c5b7cafaece252f6e # v6.1.0
- name: Build and Unit test
run: ./gradlew :fabric-chaincode-shim:build
intergationtest:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ inputs.ref }}
- - uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
+ - uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: temurin
java-version: 25
- - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
+ - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: "lts/*"
- - uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0
+ - uses: gradle/actions/setup-gradle@50e97c2cd7a37755bbfafc9c5b7cafaece252f6e # v6.1.0
- name: Populate chaincode with latest java-version
run: |
./gradlew -I $GITHUB_WORKSPACE/fabric-chaincode-integration-test/chaincodebootstrap.gradle -PchaincodeRepoDir=$GITHUB_WORKSPACE/fabric-chaincode-integration-test/src/contracts/fabric-shim-api/repository publishShimPublicationToFabricRepository
@@ -66,13 +66,13 @@ jobs:
docker:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ inputs.ref }}
- - uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
+ - uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: temurin
java-version: 25
- - uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0
+ - uses: gradle/actions/setup-gradle@50e97c2cd7a37755bbfafc9c5b7cafaece252f6e # v6.1.0
- name: Build Docker image
run: ./gradlew :fabric-chaincode-docker:buildImage
diff --git a/COMPATIBILITY.md b/COMPATIBILITY.md
index 57924e50..b8087a77 100644
--- a/COMPATIBILITY.md
+++ b/COMPATIBILITY.md
@@ -11,7 +11,8 @@ This table shows the summary of the compatibility of the Java chaincode librarie
| v1.4 | 8 | 8 | amd64 |
| v2.2 | 11 | 11 | amd64 |
| v2.5.0 - v2.5.4 | 11 | 11 | amd64, arm64 |
-| v2.5.5+ | 11 | 21 | amd64, arm64 |
+| v2.5.5 - v2.5.7 | 11 | 21 | amd64, arm64 |
+| v2.5.8+ | 11 | 25 | amd64, arm64 |
The Java runtime provided by the chaincode Docker image determines the maximum Java version (and features) that smart contract code can exploit when using the default Java chaincode container.
diff --git a/build.gradle b/build.gradle
index af1ae99d..55c913bd 100644
--- a/build.gradle
+++ b/build.gradle
@@ -5,13 +5,13 @@
*/
plugins {
- id "com.github.ben-manes.versions" version "0.53.0"
- id "com.diffplug.spotless" version "8.0.0"
- id "com.gradleup.nmcp.aggregation" version "1.2.0"
- id "com.gradleup.nmcp" version "1.2.0" apply false
+ id "com.github.ben-manes.versions" version "0.54.0"
+ id "com.diffplug.spotless" version "8.4.0"
+ id "com.gradleup.nmcp.aggregation" version "1.4.4"
+ id "com.gradleup.nmcp" version "1.4.4" apply false
}
-version = '2.5.8'
+version = '2.5.9'
// If the nightly property is set, then this is the scheduled main
// build - and we should publish this to artifactory
@@ -66,14 +66,14 @@ subprojects {
}
dependencies {
- implementation 'commons-cli:commons-cli:1.10.0'
- implementation 'commons-logging:commons-logging:1.3.5'
+ implementation 'commons-cli:commons-cli:1.11.0'
+ implementation 'commons-logging:commons-logging:1.3.6'
- testImplementation platform('org.junit:junit-bom:6.0.0')
+ testImplementation platform('org.junit:junit-bom:6.0.3')
testImplementation 'org.junit.jupiter:junit-jupiter'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
- testImplementation 'org.assertj:assertj-core:3.27.6'
- testImplementation 'org.mockito:mockito-core:5.20.0'
+ testImplementation 'org.assertj:assertj-core:3.27.7'
+ testImplementation 'org.mockito:mockito-core:5.23.0'
testImplementation 'uk.org.webcompere:system-stubs-jupiter:2.1.8'
testImplementation 'org.hamcrest:hamcrest-library:3.0'
diff --git a/examples/fabric-contract-example-as-service/build.gradle b/examples/fabric-contract-example-as-service/build.gradle
index 4c2aaeba..e81439ac 100644
--- a/examples/fabric-contract-example-as-service/build.gradle
+++ b/examples/fabric-contract-example-as-service/build.gradle
@@ -1,5 +1,5 @@
plugins {
- id 'com.gradleup.shadow' version '9.2.2'
+ id 'com.gradleup.shadow' version '9.3.1'
id 'java'
}
@@ -13,12 +13,12 @@ repositories {
}
dependencies {
- implementation 'org.hyperledger.fabric-chaincode-java:fabric-chaincode-shim:2.5.7'
- implementation 'org.json:json:20250517'
- testImplementation platform('org.junit:junit-bom:6.0.0')
+ implementation 'org.hyperledger.fabric-chaincode-java:fabric-chaincode-shim:2.5.8'
+ implementation 'org.json:json:20251224'
+ testImplementation platform('org.junit:junit-bom:6.0.2')
testImplementation 'org.junit.jupiter:junit-jupiter'
- testImplementation 'org.assertj:assertj-core:3.27.6'
- testImplementation 'org.mockito:mockito-core:5.20.0'
+ testImplementation 'org.assertj:assertj-core:3.27.7'
+ testImplementation 'org.mockito:mockito-core:5.21.0'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
diff --git a/examples/fabric-contract-example-gradle-kotlin/build.gradle.kts b/examples/fabric-contract-example-gradle-kotlin/build.gradle.kts
index 67ef2e41..62da1a96 100644
--- a/examples/fabric-contract-example-gradle-kotlin/build.gradle.kts
+++ b/examples/fabric-contract-example-gradle-kotlin/build.gradle.kts
@@ -5,7 +5,7 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
plugins {
- id("com.gradleup.shadow") version "9.2.2"
+ id("com.gradleup.shadow") version "9.3.1"
id("org.jetbrains.kotlin.jvm") version "2.2.21"
}
@@ -14,11 +14,11 @@ plugins {
version = "0.0.1"
dependencies {
- implementation("org.hyperledger.fabric-chaincode-java:fabric-chaincode-shim:2.5.7")
+ implementation("org.hyperledger.fabric-chaincode-java:fabric-chaincode-shim:2.5.8")
implementation("org.json:json:20250517")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
- testImplementation("org.junit.jupiter:junit-jupiter:6.0.0")
+ testImplementation("org.junit.jupiter:junit-jupiter:6.0.1")
testImplementation("com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0")
}
diff --git a/examples/fabric-contract-example-gradle/build.gradle b/examples/fabric-contract-example-gradle/build.gradle
index eb1923b0..45dfd56b 100644
--- a/examples/fabric-contract-example-gradle/build.gradle
+++ b/examples/fabric-contract-example-gradle/build.gradle
@@ -1,5 +1,5 @@
plugins {
- id 'com.gradleup.shadow' version '9.2.2'
+ id 'com.gradleup.shadow' version '9.3.1'
id 'java'
}
@@ -13,12 +13,12 @@ repositories {
}
dependencies {
- implementation 'org.hyperledger.fabric-chaincode-java:fabric-chaincode-shim:2.5.7'
- implementation 'org.json:json:20250517'
- testImplementation platform('org.junit:junit-bom:6.0.0')
+ implementation 'org.hyperledger.fabric-chaincode-java:fabric-chaincode-shim:2.5.8'
+ implementation 'org.json:json:20251224'
+ testImplementation platform('org.junit:junit-bom:6.0.2')
testImplementation 'org.junit.jupiter:junit-jupiter'
- testImplementation 'org.assertj:assertj-core:3.27.6'
- testImplementation 'org.mockito:mockito-core:5.20.0'
+ testImplementation 'org.assertj:assertj-core:3.27.7'
+ testImplementation 'org.mockito:mockito-core:5.21.0'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
diff --git a/examples/fabric-contract-example-maven/pom.xml b/examples/fabric-contract-example-maven/pom.xml
index b1aa1ee1..b7657d2a 100644
--- a/examples/fabric-contract-example-maven/pom.xml
+++ b/examples/fabric-contract-example-maven/pom.xml
@@ -12,10 +12,10 @@
UTF-8
- 2.5.7
+ 2.5.8
- 1.5.21
+ 1.5.32
2.0.17
@@ -32,7 +32,7 @@
org.junit
junit-bom
- 6.0.1
+ 6.0.3
pom
import
@@ -89,18 +89,15 @@
junit-jupiter-engine
test
-
-
- org.mockito
- mockito-core
- 5.20.0
-
-
-
+
+ org.mockito
+ mockito-core
+ 5.23.0
+
org.json
json
- 20250517
+ 20251224
@@ -109,11 +106,11 @@
maven-surefire-plugin
- 3.5.4
+ 3.5.5
maven-compiler-plugin
- 3.14.1
+ 3.15.0
${java.version}
@@ -121,7 +118,7 @@
org.apache.maven.plugins
maven-shade-plugin
- 3.6.1
+ 3.6.2
package
diff --git a/examples/ledger-api/build.gradle b/examples/ledger-api/build.gradle
index 07863155..ca402576 100644
--- a/examples/ledger-api/build.gradle
+++ b/examples/ledger-api/build.gradle
@@ -1,5 +1,5 @@
plugins {
- id 'com.gradleup.shadow' version '9.2.2'
+ id 'com.gradleup.shadow' version '9.3.1'
id 'java'
}
@@ -13,12 +13,12 @@ repositories {
}
dependencies {
- implementation 'org.hyperledger.fabric-chaincode-java:fabric-chaincode-shim:2.5.7'
- implementation 'org.json:json:20250517'
- testImplementation platform('org.junit:junit-bom:6.0.0')
+ implementation 'org.hyperledger.fabric-chaincode-java:fabric-chaincode-shim:2.5.8'
+ implementation 'org.json:json:20251224'
+ testImplementation platform('org.junit:junit-bom:6.0.2')
testImplementation 'org.junit.jupiter:junit-jupiter'
- testImplementation 'org.assertj:assertj-core:3.27.6'
- testImplementation 'org.mockito:mockito-core:5.20.0'
+ testImplementation 'org.assertj:assertj-core:3.27.7'
+ testImplementation 'org.mockito:mockito-core:5.21.0'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
diff --git a/fabric-chaincode-docker/Dockerfile b/fabric-chaincode-docker/Dockerfile
index 75415c38..b3fc3da8 100644
--- a/fabric-chaincode-docker/Dockerfile
+++ b/fabric-chaincode-docker/Dockerfile
@@ -8,9 +8,9 @@ RUN curl -s "https://get.sdkman.io" | bash
SHELL ["/bin/bash", "-c"]
-RUN source /root/.sdkman/bin/sdkman-init.sh \
- && sdk install gradle 9.1.0 \
- && sdk install maven 3.9.11
+RUN . /root/.sdkman/bin/sdkman-init.sh \
+ && sdk install gradle 9.4.1 \
+ && sdk install maven 3.9.15
FROM ${JAVA_IMAGE} AS dependencies
@@ -48,7 +48,7 @@ RUN gradle \
WORKDIR /root/chaincode-java
# Run the Gradle and Maven commands to generate the wrapper variants
# of each tool
-#Gradle doesn't run without settings.gradle file, so create one
+# Gradle doesn't run without settings.gradle file, so create one
RUN touch settings.gradle \
&& gradle wrapper \
&& ./gradlew wrapper \
diff --git a/fabric-chaincode-docker/build.gradle b/fabric-chaincode-docker/build.gradle
index 3669c2c1..843ae2ce 100644
--- a/fabric-chaincode-docker/build.gradle
+++ b/fabric-chaincode-docker/build.gradle
@@ -5,7 +5,7 @@
*/
plugins {
- id 'com.bmuschko.docker-remote-api' version '9.4.0'
+ id 'com.bmuschko.docker-remote-api' version '10.0.0'
}
repositories {
@@ -59,5 +59,5 @@ tasks.register('copyAllDeps', Copy) {
tasks.register('buildImage', DockerBuildImage) {
dependsOn copyAllDeps
inputDir = project.file('Dockerfile').parentFile
- images = ['hyperledger/fabric-javaenv', 'hyperledger/fabric-javaenv:2.5', 'hyperledger/fabric-javaenv:2.5.8']
+ images = ['hyperledger/fabric-javaenv', 'hyperledger/fabric-javaenv:2.5', 'hyperledger/fabric-javaenv:2.5.9']
}
diff --git a/fabric-chaincode-integration-test/build.gradle b/fabric-chaincode-integration-test/build.gradle
index 240c506e..dc4ceeac 100644
--- a/fabric-chaincode-integration-test/build.gradle
+++ b/fabric-chaincode-integration-test/build.gradle
@@ -1,7 +1,7 @@
dependencies {
implementation project(':fabric-chaincode-docker')
implementation project(':fabric-chaincode-shim')
- implementation 'org.json:json:20250517'
+ implementation 'org.json:json:20251224'
}
diff --git a/fabric-chaincode-integration-test/src/contracts/bare-gradle/build.gradle b/fabric-chaincode-integration-test/src/contracts/bare-gradle/build.gradle
index f176b86b..43c964fb 100644
--- a/fabric-chaincode-integration-test/src/contracts/bare-gradle/build.gradle
+++ b/fabric-chaincode-integration-test/src/contracts/bare-gradle/build.gradle
@@ -1,5 +1,5 @@
plugins {
- id 'com.gradleup.shadow' version '9.2.2'
+ id 'com.gradleup.shadow' version '9.3.1'
id 'java'
}
@@ -18,7 +18,7 @@ repositories {
}
dependencies {
- implementation 'org.hyperledger.fabric-chaincode-java:fabric-chaincode-shim:2.5.8'
+ implementation 'org.hyperledger.fabric-chaincode-java:fabric-chaincode-shim:2.5.9'
implementation 'org.hyperledger.fabric:fabric-protos:0.3.7'
}
diff --git a/fabric-chaincode-integration-test/src/contracts/bare-maven/pom.xml b/fabric-chaincode-integration-test/src/contracts/bare-maven/pom.xml
index b6962bc2..4fcc03ad 100644
--- a/fabric-chaincode-integration-test/src/contracts/bare-maven/pom.xml
+++ b/fabric-chaincode-integration-test/src/contracts/bare-maven/pom.xml
@@ -12,7 +12,7 @@
UTF-8
- 2.5.8
+ 2.5.9
@@ -43,7 +43,7 @@
maven-compiler-plugin
- 3.14.1
+ 3.15.0
${java.version}
@@ -51,7 +51,7 @@
org.apache.maven.plugins
maven-shade-plugin
- 3.6.1
+ 3.6.2
package
diff --git a/fabric-chaincode-integration-test/src/contracts/fabric-ledger-api/build.gradle b/fabric-chaincode-integration-test/src/contracts/fabric-ledger-api/build.gradle
index 053c3dd5..c5cc4328 100644
--- a/fabric-chaincode-integration-test/src/contracts/fabric-ledger-api/build.gradle
+++ b/fabric-chaincode-integration-test/src/contracts/fabric-ledger-api/build.gradle
@@ -1,5 +1,5 @@
plugins {
- id 'com.gradleup.shadow' version '9.2.2'
+ id 'com.gradleup.shadow' version '9.3.1'
id 'java'
}
@@ -18,7 +18,7 @@ repositories {
}
dependencies {
- implementation 'org.hyperledger.fabric-chaincode-java:fabric-chaincode-shim:2.5.8'
+ implementation 'org.hyperledger.fabric-chaincode-java:fabric-chaincode-shim:2.5.9'
implementation 'org.hyperledger.fabric:fabric-protos:0.3.7'
}
diff --git a/fabric-chaincode-integration-test/src/contracts/fabric-shim-api/build.gradle b/fabric-chaincode-integration-test/src/contracts/fabric-shim-api/build.gradle
index 4fb54344..830b32c7 100644
--- a/fabric-chaincode-integration-test/src/contracts/fabric-shim-api/build.gradle
+++ b/fabric-chaincode-integration-test/src/contracts/fabric-shim-api/build.gradle
@@ -1,5 +1,5 @@
plugins {
- id 'com.gradleup.shadow' version '9.2.2'
+ id 'com.gradleup.shadow' version '9.3.1'
id 'java'
}
@@ -18,7 +18,7 @@ repositories {
}
dependencies {
- implementation 'org.hyperledger.fabric-chaincode-java:fabric-chaincode-shim:2.5.8'
+ implementation 'org.hyperledger.fabric-chaincode-java:fabric-chaincode-shim:2.5.9'
implementation 'org.hyperledger.fabric:fabric-protos:0.3.7'
implementation 'commons-logging:commons-logging:1.3.5'
implementation 'com.google.code.gson:gson:2.13.2'
diff --git a/fabric-chaincode-integration-test/src/contracts/wrapper-maven/pom.xml b/fabric-chaincode-integration-test/src/contracts/wrapper-maven/pom.xml
index 1b494496..bf64b273 100644
--- a/fabric-chaincode-integration-test/src/contracts/wrapper-maven/pom.xml
+++ b/fabric-chaincode-integration-test/src/contracts/wrapper-maven/pom.xml
@@ -12,7 +12,7 @@
UTF-8
- 2.5.8
+ 2.5.9
@@ -47,7 +47,7 @@
maven-compiler-plugin
- 3.14.1
+ 3.15.0
${java.version}
@@ -55,7 +55,7 @@
org.apache.maven.plugins
maven-shade-plugin
- 3.6.1
+ 3.6.2
package
diff --git a/fabric-chaincode-shim/build.gradle b/fabric-chaincode-shim/build.gradle
index 5aca7063..ecfe81f5 100644
--- a/fabric-chaincode-shim/build.gradle
+++ b/fabric-chaincode-shim/build.gradle
@@ -13,7 +13,7 @@ plugins {
}
pmd {
- toolVersion = '7.14.0'
+ toolVersion = '7.20.0'
ruleSetFiles = files('../pmd-ruleset.xml')
ruleSets = [] // explicitly set to empty to avoid using the default configuration
ignoreFailures = false
@@ -35,16 +35,17 @@ dependencies {
because('CVE-2025-48924')
}
}
- implementation platform('com.google.protobuf:protobuf-bom:4.33.0')
- implementation platform('io.grpc:grpc-bom:1.76.0')
- implementation platform('io.opentelemetry:opentelemetry-bom:1.55.0')
+ implementation platform('com.google.protobuf:protobuf-bom:4.34.1')
+ implementation platform('io.grpc:grpc-bom:1.80.0')
+ implementation platform('io.opentelemetry:opentelemetry-bom:1.61.0')
+ implementation platform("org.bouncycastle:bc-jdk18on-bom:1.84")
implementation 'org.hyperledger.fabric:fabric-protos:0.3.7'
- implementation 'org.bouncycastle:bcpkix-jdk18on:1.82'
- implementation 'org.bouncycastle:bcprov-jdk18on:1.82'
+ implementation 'org.bouncycastle:bcpkix-jdk18on'
+ implementation 'org.bouncycastle:bcprov-jdk18on'
implementation 'io.github.classgraph:classgraph:4.8.184'
implementation 'com.github.erosb:everit-json-schema:1.14.6'
- implementation 'org.json:json:20250517'
+ implementation 'org.json:json:20251224'
implementation 'com.google.protobuf:protobuf-java-util'
implementation 'io.grpc:grpc-netty-shaded'
@@ -53,14 +54,14 @@ dependencies {
testImplementation 'io.grpc:grpc-inprocess'
implementation 'io.opentelemetry:opentelemetry-api'
- implementation 'io.opentelemetry.proto:opentelemetry-proto:1.8.0-alpha'
+ implementation 'io.opentelemetry.proto:opentelemetry-proto:1.10.0-alpha'
implementation 'io.opentelemetry:opentelemetry-sdk'
implementation 'io.opentelemetry:opentelemetry-sdk-extension-autoconfigure'
implementation 'io.opentelemetry:opentelemetry-sdk-trace'
implementation 'io.opentelemetry:opentelemetry-exporter-otlp'
implementation 'io.opentelemetry:opentelemetry-extension-trace-propagators'
- implementation 'io.opentelemetry.semconv:opentelemetry-semconv:1.37.0'
- implementation 'io.opentelemetry.instrumentation:opentelemetry-grpc-1.6:2.21.0-alpha'
+ implementation 'io.opentelemetry.semconv:opentelemetry-semconv:1.40.0'
+ implementation 'io.opentelemetry.instrumentation:opentelemetry-grpc-1.6:2.26.1-alpha'
}
sourceSets {
diff --git a/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/contract/ContractRouter.java b/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/contract/ContractRouter.java
index d7b6f9e5..f8a4232c 100644
--- a/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/contract/ContractRouter.java
+++ b/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/contract/ContractRouter.java
@@ -102,7 +102,7 @@ void startRouting() {
}
}
- @SuppressWarnings("PMD.AvoidCatchingThrowable")
+ @SuppressWarnings("PMD.AvoidCatchingGenericException")
private Response processRequest(final ChaincodeStub stub) {
LOGGER.info(() -> "Got invoke routing request");
try {
diff --git a/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/contract/execution/JSONTransactionSerializer.java b/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/contract/execution/JSONTransactionSerializer.java
index ac2e33b9..c6dd1b92 100644
--- a/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/contract/execution/JSONTransactionSerializer.java
+++ b/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/contract/execution/JSONTransactionSerializer.java
@@ -26,7 +26,12 @@
/** Used as the default serialisation for transmission from SDK to Contract. */
@Serializer()
-@SuppressWarnings({"PMD.GodClass", "PMD.AvoidLiteralsInIfCondition", "PMD.AvoidDuplicateLiterals"})
+@SuppressWarnings({
+ "PMD.GodClass",
+ "PMD.AvoidLiteralsInIfCondition",
+ "PMD.AvoidDuplicateLiterals",
+ "PMD.AvoidDeeplyNestedIfStmts"
+})
public class JSONTransactionSerializer implements SerializerInterface {
private static final Logger LOGGER = Logger.getLogger(JSONTransactionSerializer.class.getName());
private final TypeRegistry typeRegistry = TypeRegistry.getRegistry();
diff --git a/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/ledger/impl/LedgerImpl.java b/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/ledger/impl/LedgerImpl.java
index 5d204ba2..347c516e 100644
--- a/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/ledger/impl/LedgerImpl.java
+++ b/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/ledger/impl/LedgerImpl.java
@@ -16,7 +16,6 @@ public final class LedgerImpl implements Ledger {
*
* @param ctx Context transactional context to use
*/
- @SuppressWarnings("PMD.UnusedFormalParameter")
public LedgerImpl(final Context ctx) {
// Empty stub
}
diff --git a/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/shim/ChaincodeBase.java b/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/shim/ChaincodeBase.java
index a90e6bda..b0831498 100644
--- a/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/shim/ChaincodeBase.java
+++ b/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/shim/ChaincodeBase.java
@@ -202,7 +202,7 @@ public void onNext(final ChaincodeMessage chaincodeMessage) {
@Override
public void onError(final Throwable t) {
LOGGER.severe(
- () -> "An error occured on the chaincode stream. Shutting down the chaincode stream."
+ () -> "An error occurred on the chaincode stream. Shutting down the chaincode stream."
+ Logging.formatError(t));
chaincodeSupportClient.shutdown(itm);
@@ -257,7 +257,7 @@ public void onNext(final ChaincodeMessage chaincodeMessage) {
@Override
public void onError(final Throwable t) {
- LOGGER.severe(() -> "An error occured on the chaincode stream. Shutting down the chaincode stream."
+ LOGGER.severe(() -> "An error occurred on the chaincode stream. Shutting down the chaincode stream."
+ Logging.formatError(t));
chaincodeSupportClient.shutdown(itm);
diff --git a/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/shim/ChaincodeServerProperties.java b/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/shim/ChaincodeServerProperties.java
index 8197be59..865c9381 100644
--- a/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/shim/ChaincodeServerProperties.java
+++ b/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/shim/ChaincodeServerProperties.java
@@ -41,7 +41,7 @@ public ChaincodeServerProperties() {
* @param permitKeepAliveWithoutCalls whether clients are allowed to send keep-alive HTTP/2 PINGs even if there are
* no outstanding RPCs on the connection.
*/
- @SuppressWarnings({"PMD.UnusedFormalParameter", "PMD.NullAssignment"})
+ @SuppressWarnings({"PMD.NullAssignment"})
public ChaincodeServerProperties(
final int portChaincodeServer,
final int maxInboundMetadataSize,
diff --git a/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/shim/ext/sbe/impl/StateBasedEndorsementImpl.java b/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/shim/ext/sbe/impl/StateBasedEndorsementImpl.java
index 56cae1a0..0cc6b08e 100644
--- a/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/shim/ext/sbe/impl/StateBasedEndorsementImpl.java
+++ b/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/shim/ext/sbe/impl/StateBasedEndorsementImpl.java
@@ -52,7 +52,7 @@ public byte[] policy() {
@Override
public void addOrgs(final RoleType role, final String... organizations) {
MSPRoleType mspRole;
- if (RoleType.RoleTypeMember.equals(role)) {
+ if (RoleType.RoleTypeMember == role) {
mspRole = MSPRoleType.MEMBER;
} else {
mspRole = MSPRoleType.PEER;
@@ -78,7 +78,7 @@ public List listOrgs() {
private void setMSPIDsFromSP(final SignaturePolicyEnvelope spe) {
spe.getIdentitiesList().stream()
- .filter(identity -> Classification.ROLE.equals(identity.getPrincipalClassification()))
+ .filter(identity -> Classification.ROLE == identity.getPrincipalClassification())
.forEach(this::addOrg);
}
diff --git a/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/shim/impl/ChaincodeInvocationTask.java b/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/shim/impl/ChaincodeInvocationTask.java
index 1f502b36..38865e2d 100644
--- a/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/shim/impl/ChaincodeInvocationTask.java
+++ b/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/shim/impl/ChaincodeInvocationTask.java
@@ -96,7 +96,7 @@ public ChaincodeMessage call() {
// Call chaincode's invoke
// Note in Fabric v2, there won't be any INIT
- if (this.type.equals(Type.INIT)) {
+ if (this.type == Type.INIT) {
result = chaincode.init(stub);
} else {
result = chaincode.invoke(stub);
diff --git a/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/traces/impl/OpenTelemetryTracesProvider.java b/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/traces/impl/OpenTelemetryTracesProvider.java
index 4801ebe3..a834af04 100644
--- a/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/traces/impl/OpenTelemetryTracesProvider.java
+++ b/fabric-chaincode-shim/src/main/java/org/hyperledger/fabric/traces/impl/OpenTelemetryTracesProvider.java
@@ -67,6 +67,6 @@ public Span createSpan(final ChaincodeStub stub) {
@Override
public ClientInterceptor createInterceptor() {
- return grpcTracer.newClientInterceptor();
+ return grpcTracer.createClientInterceptor();
}
}
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 8bdaf60c..d997cfc6 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 2e111328..c61a118f 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
diff --git a/gradlew b/gradlew
index adff685a..739907df 100755
--- a/gradlew
+++ b/gradlew
@@ -57,7 +57,7 @@
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
-# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# https://github.com/gradle/gradle/blob/2d6327017519d23b96af35865dc997fcb544fb40/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.