Skip to content

Commit cb29b36

Browse files
bestbeforetodaydenyeart
authored andcommitted
Use Java 21 runtime
Using Java 21 as the runtime allows chaincode developers to exploit newer Java features, and provides JVM performance improvements. Java 11 is no longer supported by RedHat and public support from other vendors ends in 2027. This change removes a test for a security manager failure since the security manager is deprecated and its use is disallowed by Java 21. Chaincode must now use Gradle wrappers at version 8.5 or later, since that version of Gradle added support for execution using Java 21. Signed-off-by: Mark S. Lewis <[email protected]>
1 parent 0d50c5f commit cb29b36

File tree

5 files changed

+12
-58
lines changed

5 files changed

+12
-58
lines changed

.github/workflows/release.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
- uses: actions/setup-java@v4
3434
with:
3535
distribution: 'temurin'
36-
java-version: 11
36+
java-version: 21
3737
- uses: gradle/actions/setup-gradle@v4
3838
- name: Push to registry ${{ matrix.publish_target }}
3939
run: |
@@ -65,7 +65,7 @@ jobs:
6565
- uses: actions/setup-java@v4
6666
with:
6767
distribution: 'temurin'
68-
java-version: 11
68+
java-version: 21
6969
- uses: gradle/actions/setup-gradle@v4
7070
- name: Build the dependencies needed for the image
7171
run: ./gradlew :fabric-chaincode-docker:copyAllDeps

.github/workflows/scan.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
- uses: actions/setup-java@v4
2323
with:
2424
distribution: temurin
25-
java-version: 11
25+
java-version: 21
2626
- uses: gradle/actions/setup-gradle@v4
2727
- name: Set up Go
2828
uses: actions/setup-go@v5

.github/workflows/test.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
- uses: actions/setup-java@v4
2323
with:
2424
distribution: temurin
25-
java-version: 11
25+
java-version: 21
2626
- uses: gradle/actions/setup-gradle@v4
2727
- name: Build and Unit test
2828
run: ./gradlew :fabric-chaincode-shim:build
@@ -36,7 +36,7 @@ jobs:
3636
- uses: actions/setup-java@v4
3737
with:
3838
distribution: temurin
39-
java-version: 11
39+
java-version: 21
4040
- uses: gradle/actions/setup-gradle@v4
4141
- name: Populate chaincode with latest java-version
4242
run: |
@@ -69,7 +69,7 @@ jobs:
6969
- uses: actions/setup-java@v4
7070
with:
7171
distribution: temurin
72-
java-version: 11
72+
java-version: 21
7373
- uses: gradle/actions/setup-gradle@v4
7474
- name: Build Docker image
7575
run: ./gradlew :fabric-chaincode-docker:buildImage

fabric-chaincode-docker/Dockerfile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
ARG JAVA_IMAGE=eclipse-temurin:11-jdk
1+
ARG JAVA_IMAGE=eclipse-temurin:21-jdk
22

3-
FROM ${JAVA_IMAGE} as builder
3+
FROM ${JAVA_IMAGE} AS builder
44
ENV DEBIAN_FRONTEND=noninteractive
55

66
# Build tools
@@ -16,7 +16,7 @@ RUN source /root/.sdkman/bin/sdkman-init.sh \
1616
&& sdk install gradle 8.11.1 \
1717
&& sdk install maven 3.9.9
1818

19-
FROM ${JAVA_IMAGE} as dependencies
19+
FROM ${JAVA_IMAGE} AS dependencies
2020

2121
COPY --from=builder /root/.sdkman/candidates/gradle/current /usr/bin/gradle
2222
COPY --from=builder /root/.sdkman/candidates/maven/current /usr/bin/maven

fabric-chaincode-shim/src/test/java/org/hyperledger/fabric/contract/routing/ContractDefinitionTest.java

Lines changed: 3 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -5,69 +5,23 @@
55
*/
66
package org.hyperledger.fabric.contract.routing;
77

8+
import static org.assertj.core.api.Assertions.assertThat;
89
import static org.assertj.core.api.Assertions.assertThatThrownBy;
9-
import static org.hamcrest.MatcherAssert.assertThat;
10-
import static org.hamcrest.Matchers.equalTo;
11-
import static org.hamcrest.Matchers.startsWith;
1210

1311
import contract.SampleContract;
1412
import java.lang.reflect.Method;
15-
import java.security.Permission;
1613
import org.hyperledger.fabric.contract.Context;
1714
import org.hyperledger.fabric.contract.ContractInterface;
1815
import org.hyperledger.fabric.contract.ContractRuntimeException;
19-
import org.hyperledger.fabric.contract.annotation.Contract;
20-
import org.hyperledger.fabric.contract.annotation.Info;
2116
import org.hyperledger.fabric.contract.routing.impl.ContractDefinitionImpl;
2217
import org.junit.jupiter.api.Test;
2318

2419
final class ContractDefinitionTest {
2520
@Test
26-
void constructor() throws NoSuchMethodException, SecurityException {
21+
void constructor() throws SecurityException {
2722

2823
final ContractDefinition cf = new ContractDefinitionImpl(SampleContract.class);
29-
assertThat(cf.toString(), startsWith("samplecontract:"));
30-
}
31-
32-
@Contract(name = "", info = @Info())
33-
public class FailureTestObject {}
34-
35-
private boolean fail;
36-
private static final int STEP = 1;
37-
38-
@Test
39-
void unknownRoute() {
40-
41-
final SecurityManager tmp = new SecurityManager() {
42-
private int count = 0;
43-
44-
@Override
45-
public void checkPackageAccess(final String pkg) {
46-
47-
if (pkg.startsWith("org.hyperledger.fabric.contract")) {
48-
if (count >= STEP) {
49-
throw new SecurityException("Sorry I can't do that");
50-
}
51-
count++;
52-
}
53-
super.checkPackageAccess(pkg);
54-
}
55-
56-
@Override
57-
public void checkPermission(final Permission perm) {}
58-
};
59-
60-
try {
61-
final ContractDefinition cf = new ContractDefinitionImpl(SampleContract.class);
62-
System.setSecurityManager(tmp);
63-
this.fail = true;
64-
65-
cf.getUnknownRoute();
66-
} catch (final Exception e) {
67-
assertThat(e.getMessage(), equalTo("Failure to find unknownTransaction method"));
68-
} finally {
69-
System.setSecurityManager(null);
70-
}
24+
assertThat(cf.toString()).startsWith("samplecontract:");
7125
}
7226

7327
@Test

0 commit comments

Comments
 (0)