This commit is contained in:
woodser 2026-01-06 10:52:07 -05:00 committed by GitHub
commit 4b6d4e3fff
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 220 additions and 166 deletions

View file

@ -56,7 +56,7 @@ configure(subprojects) {
httpcoreVersion = '4.4.13'
ioVersion = '2.6'
jacksonVersion = '2.12.1'
javafxVersion = '21.0.2'
javafxVersion = '21.0.9'
javaxAnnotationVersion = '1.2'
jcsvVersion = '1.4.0'
jetbrainsAnnotationsVersion = '13.0'
@ -84,6 +84,10 @@ configure(subprojects) {
os = (osName == 'mac' && (osArch.contains('aarch64') || osArch.contains('arm'))) ? 'mac-aarch64' : osName
}
configurations {
javafxVerification
}
repositories {
mavenCentral()
//mavenLocal()
@ -685,6 +689,32 @@ configure(project(':desktop')) {
implementation "org.openjfx:javafx-swing:$javafxVersion:$os"
implementation "org.openjfx:javafx-base:$javafxVersion:$os"
implementation "org.openjfx:javafx-graphics:$javafxVersion:$os"
// verification-only dependencies
javafxVerification "org.openjfx:javafx-controls:$javafxVersion:mac"
javafxVerification "org.openjfx:javafx-controls:$javafxVersion:mac-aarch64"
javafxVerification "org.openjfx:javafx-controls:$javafxVersion:win"
javafxVerification "org.openjfx:javafx-controls:$javafxVersion:linux"
javafxVerification "org.openjfx:javafx-fxml:$javafxVersion:mac"
javafxVerification "org.openjfx:javafx-fxml:$javafxVersion:mac-aarch64"
javafxVerification "org.openjfx:javafx-fxml:$javafxVersion:win"
javafxVerification "org.openjfx:javafx-fxml:$javafxVersion:linux"
javafxVerification "org.openjfx:javafx-swing:$javafxVersion:mac"
javafxVerification "org.openjfx:javafx-swing:$javafxVersion:mac-aarch64"
javafxVerification "org.openjfx:javafx-swing:$javafxVersion:win"
javafxVerification "org.openjfx:javafx-swing:$javafxVersion:linux"
javafxVerification "org.openjfx:javafx-base:$javafxVersion:mac"
javafxVerification "org.openjfx:javafx-base:$javafxVersion:mac-aarch64"
javafxVerification "org.openjfx:javafx-base:$javafxVersion:win"
javafxVerification "org.openjfx:javafx-base:$javafxVersion:linux"
javafxVerification "org.openjfx:javafx-graphics:$javafxVersion:mac"
javafxVerification "org.openjfx:javafx-graphics:$javafxVersion:mac-aarch64"
javafxVerification "org.openjfx:javafx-graphics:$javafxVersion:win"
javafxVerification "org.openjfx:javafx-graphics:$javafxVersion:linux"
}
test {

View file

@ -1761,7 +1761,7 @@ public class OpenOfferManager implements PeerManager.Listener, DecryptedDirectMe
request.getReserveTxKeyImages(),
verifiedTx.getFee().longValueExact(),
signature); // TODO (woodser): no need for signature to be part of SignedOffer?
addSignedOffer(signedOffer);
UserThread.execute(() -> addSignedOffer(signedOffer));
requestPersistence();
// send response with signature

View file

@ -420,7 +420,12 @@ public abstract class DisputeManager<T extends DisputeList<Dispute>> extends Sup
if (reOpen) {
dispute = storedDisputeOptional.get();
} else {
disputeList.add(dispute);
final Dispute finalDispute = dispute;
UserThread.execute(() -> {
synchronized (disputeList.getObservableList()) {
disputeList.add(finalDispute);
}
});
}
}
@ -556,15 +561,17 @@ public abstract class DisputeManager<T extends DisputeList<Dispute>> extends Sup
}
public void removeDisputes(Trade trade) {
T disputeList = getDisputeList();
synchronized (disputeList.getObservableList()) {
for (Dispute dispute : trade.getDisputes()) {
disputeList.remove(dispute);
UserThread.execute(() -> {
T disputeList = getDisputeList();
synchronized (disputeList.getObservableList()) {
for (Dispute dispute : trade.getDisputes()) {
disputeList.remove(dispute);
}
}
}
trade.setDisputeState(Trade.DisputeState.NO_DISPUTE);
clearPendingMessage();
requestPersistence();
trade.setDisputeState(Trade.DisputeState.NO_DISPUTE);
clearPendingMessage();
requestPersistence();
});
}
// arbitrator receives dispute opened message from opener, opener's peer receives from arbitrator
@ -694,7 +701,11 @@ public abstract class DisputeManager<T extends DisputeList<Dispute>> extends Sup
if (reOpen) {
trade.setDisputeState(Trade.DisputeState.DISPUTE_OPENED);
} else {
disputeList.add(dispute);
UserThread.execute(() -> {
synchronized (disputeList) {
disputeList.add(dispute);
}
});
trade.advanceDisputeState(Trade.DisputeState.DISPUTE_OPENED);
}
@ -822,9 +833,12 @@ public abstract class DisputeManager<T extends DisputeList<Dispute>> extends Sup
dispute = storedDisputeOptional.get();
dispute.reOpen();
} else {
synchronized (disputeList) {
disputeList.add(dispute);
}
final Dispute finalDispute = dispute;
UserThread.execute(() -> {
synchronized (disputeList) {
disputeList.add(finalDispute);
}
});
}
// get trade

View file

@ -1,6 +1,8 @@
package haveno.daemon.grpc;
import com.google.inject.Inject;
import haveno.common.UserThread;
import haveno.common.config.Config;
import haveno.common.proto.ProtoUtil;
import haveno.core.api.CoreApi;
@ -66,64 +68,72 @@ public class GrpcDisputesService extends DisputesImplBase {
@Override
public void getDispute(GetDisputeRequest req, StreamObserver<GetDisputeReply> responseObserver) {
try {
var dispute = coreApi.getDispute(req.getTradeId());
var reply = GetDisputeReply.newBuilder()
.setDispute(dispute.toProtoMessage())
.build();
responseObserver.onNext(reply);
responseObserver.onCompleted();
} catch (Throwable cause) {
exceptionHandler.handleExceptionAsWarning(log, getClass().getName() + ".getDispute", cause, responseObserver);
}
UserThread.execute(() -> {
try {
var dispute = coreApi.getDispute(req.getTradeId());
var reply = GetDisputeReply.newBuilder()
.setDispute(dispute.toProtoMessage())
.build();
responseObserver.onNext(reply);
responseObserver.onCompleted();
} catch (Throwable cause) {
exceptionHandler.handleExceptionAsWarning(log, getClass().getName() + ".getDispute", cause, responseObserver);
}
});
}
@Override
public void getDisputes(GetDisputesRequest req, StreamObserver<GetDisputesReply> responseObserver) {
try {
var disputes = coreApi.getDisputes();
var disputesProtobuf = disputes.stream()
.map(d -> d.toProtoMessage())
.collect(Collectors.toList());
var reply = GetDisputesReply.newBuilder()
.addAllDisputes(disputesProtobuf)
.build();
responseObserver.onNext(reply);
responseObserver.onCompleted();
} catch (Throwable cause) {
exceptionHandler.handleException(log, cause, responseObserver);
}
UserThread.execute(() -> {
try {
var disputes = coreApi.getDisputes();
var disputesProtobuf = disputes.stream()
.map(d -> d.toProtoMessage())
.collect(Collectors.toList());
var reply = GetDisputesReply.newBuilder()
.addAllDisputes(disputesProtobuf)
.build();
responseObserver.onNext(reply);
responseObserver.onCompleted();
} catch (Throwable cause) {
exceptionHandler.handleException(log, cause, responseObserver);
}
});
}
@Override
public void resolveDispute(ResolveDisputeRequest req, StreamObserver<ResolveDisputeReply> responseObserver) {
try {
var winner = ProtoUtil.enumFromProto(DisputeResult.Winner.class, req.getWinner().name());
var reason = ProtoUtil.enumFromProto(DisputeResult.Reason.class, req.getReason().name());
coreApi.resolveDispute(req.getTradeId(), winner, reason, req.getSummaryNotes(), req.getCustomPayoutAmount());
var reply = ResolveDisputeReply.newBuilder().build();
responseObserver.onNext(reply);
responseObserver.onCompleted();
} catch (Throwable cause) {
cause.printStackTrace();
exceptionHandler.handleExceptionAsWarning(log, getClass().getName() + ".resolveDispute", cause, responseObserver);
}
UserThread.execute(() -> {
try {
var winner = ProtoUtil.enumFromProto(DisputeResult.Winner.class, req.getWinner().name());
var reason = ProtoUtil.enumFromProto(DisputeResult.Reason.class, req.getReason().name());
coreApi.resolveDispute(req.getTradeId(), winner, reason, req.getSummaryNotes(), req.getCustomPayoutAmount());
var reply = ResolveDisputeReply.newBuilder().build();
responseObserver.onNext(reply);
responseObserver.onCompleted();
} catch (Throwable cause) {
cause.printStackTrace();
exceptionHandler.handleExceptionAsWarning(log, getClass().getName() + ".resolveDispute", cause, responseObserver);
}
});
}
@Override
public void sendDisputeChatMessage(SendDisputeChatMessageRequest req,
StreamObserver<SendDisputeChatMessageReply> responseObserver) {
try {
var attachmentsProto = req.getAttachmentsList();
var attachments = attachmentsProto.stream().map(a -> Attachment.fromProto(a))
.collect(Collectors.toList());
coreApi.sendDisputeChatMessage(req.getDisputeId(), req.getMessage(), new ArrayList(attachments));
var reply = SendDisputeChatMessageReply.newBuilder().build();
responseObserver.onNext(reply);
responseObserver.onCompleted();
} catch (Throwable cause) {
exceptionHandler.handleException(log, cause, responseObserver);
}
UserThread.execute(() -> {
try {
var attachmentsProto = req.getAttachmentsList();
var attachments = attachmentsProto.stream().map(a -> Attachment.fromProto(a))
.collect(Collectors.toList());
coreApi.sendDisputeChatMessage(req.getDisputeId(), req.getMessage(), new ArrayList(attachments));
var reply = SendDisputeChatMessageReply.newBuilder().build();
responseObserver.onNext(reply);
responseObserver.onCompleted();
} catch (Throwable cause) {
exceptionHandler.handleException(log, cause, responseObserver);
}
});
}
final ServerInterceptor[] interceptors() {

View file

@ -77,18 +77,18 @@ task getJavaBinariesDownloadURLs {
// -- macOS ( -> use the tar.gz JDK link)
// -- windows ( -> use the .zip JDK link)
Map jdk21Binaries = [
'linux' : 'https://download.bell-sw.com/java/21.0.2+14/bellsoft-jdk21.0.2+14-linux-amd64-full.tar.gz',
'linux-sha256' : '7eda80851fba1da023e03446c77100f19e7c770491b0d5bc9f893044e1b2b69b',
'linux-aarch64' : 'https://download.bell-sw.com/java/21.0.2+14/bellsoft-jdk21.0.2+14-linux-aarch64-full.tar.gz',
'linux-aarch64-sha256' : 'a477fc72085f30b03bf71fbed47923cea3b6f33b5b6a5a74718623b772a3a043',
'mac' : 'https://download.bell-sw.com/java/21.0.2+14/bellsoft-jdk21.0.2+14-macos-amd64-full.tar.gz',
'mac-sha256' : '42b528206595e559803b6f9f6bdbbf236ec6d10684058f46bc5261f5498d345c',
'mac-aarch64' : 'https://download.bell-sw.com/java/21.0.2+14/bellsoft-jdk21.0.2+14-macos-aarch64-full.tar.gz',
'mac-aarch64-sha256' : 'eba73a9bff7234220dc9a1da7f44b3d7ed2a562663eadc1c53bd74b355839a55',
'windows' : 'https://download.bell-sw.com/java/21.0.2+14/bellsoft-jdk21.0.2+14-windows-amd64-full.zip',
'windows-sha256' : 'f823eff0234af5bef095e53e5431191dbee8c2e42ca321eda23148a15cbf8d5b',
'windows-aarch64' : 'https://download.bell-sw.com/java/21.0.2+14/bellsoft-jdk21.0.2+14-windows-aarch64-full.zip',
'windows-aarch64-sha256': 'a2e9edecaf9637f83ef1cddab3a74f39ac55f8e1a479f10f3584ad939dfadd0a'
'linux' : 'https://download.bell-sw.com/java/21.0.9+15/bellsoft-jdk21.0.9+15-linux-amd64-full.tar.gz',
'linux-sha256' : 'cada3343156c10dab634a7caca586941665af8f58a680664846adc2a27542968',
'linux-aarch64' : 'https://download.bell-sw.com/java/21.0.9+15/bellsoft-jdk21.0.9+15-linux-aarch64-full.tar.gz',
'linux-aarch64-sha256' : '09081d587a59f48d2900d62f3008f5a786a27932d68d64eeb4938aa715bf1ea8',
'mac' : 'https://download.bell-sw.com/java/21.0.9+15/bellsoft-jdk21.0.9+15-macos-amd64-full.tar.gz',
'mac-sha256' : 'f7ceb9743fe96da0e3b07f64aa23c6f54c39d134af01ed56869db0864c0cd13d',
'mac-aarch64' : 'https://download.bell-sw.com/java/21.0.9+15/bellsoft-jdk21.0.9+15-macos-aarch64-full.tar.gz',
'mac-aarch64-sha256' : '6af4be6c59c2ac4e2d89ee940e26f19ec09ea86fac0405058bc3d7f1f805b78c',
'windows' : 'https://download.bell-sw.com/java/21.0.9+15/bellsoft-jdk21.0.9+15-windows-amd64-full.zip',
'windows-sha256' : 'ff1260f6c234799cebeb4df08b68da3fd066ad6e4209c67dd3de7bc4fb7e9a35',
'windows-aarch64' : 'https://download.bell-sw.com/java/21.0.9+15/bellsoft-jdk21.0.9+15-windows-aarch64-full.zip',
'windows-aarch64-sha256': '5396566e494ebca5119681cb9961f69310b5b315d24ca1b4c897b71ebfc4fbed'
]
String osKey

View file

@ -314,37 +314,39 @@ public class PendingTradesDataModel extends ActivatableDataModel {
///////////////////////////////////////////////////////////////////////////////////////////
private void onListChanged() {
synchronized (tradeManager.getObservableList()) {
UserThread.execute(() -> {
synchronized (tradeManager.getObservableList()) {
// add or remove listener for hidden trades
for (Trade trade : tradeManager.getObservableList()) {
if (isTradeShown(trade)) {
if (hiddenTrades.contains(trade)) {
UserThread.execute(() -> trade.stateProperty().removeListener(hiddenStateChangeListener));
hiddenTrades.remove(trade);
}
} else {
if (!hiddenTrades.contains(trade)) {
UserThread.execute(() -> trade.stateProperty().addListener(hiddenStateChangeListener));
hiddenTrades.add(trade);
// add or remove listener for hidden trades
for (Trade trade : tradeManager.getObservableList()) {
if (isTradeShown(trade)) {
if (hiddenTrades.contains(trade)) {
UserThread.execute(() -> trade.stateProperty().removeListener(hiddenStateChangeListener));
hiddenTrades.remove(trade);
}
} else {
if (!hiddenTrades.contains(trade)) {
UserThread.execute(() -> trade.stateProperty().addListener(hiddenStateChangeListener));
hiddenTrades.add(trade);
}
}
}
}
// add shown trades to list
synchronized (list) {
list.clear();
list.addAll(tradeManager.getObservableList().stream()
.filter(trade -> isTradeShown(trade))
.map(trade -> new PendingTradesListItem(trade, btcFormatter))
.collect(Collectors.toList()));
// add shown trades to list
synchronized (list) {
list.clear();
list.addAll(tradeManager.getObservableList().stream()
.filter(trade -> isTradeShown(trade))
.map(trade -> new PendingTradesListItem(trade, btcFormatter))
.collect(Collectors.toList()));
// we sort by date, earliest first
list.sort((o1, o2) -> o2.getTrade().getDate().compareTo(o1.getTrade().getDate()));
// we sort by date, earliest first
list.sort((o1, o2) -> o2.getTrade().getDate().compareTo(o1.getTrade().getDate()));
}
}
}
selectBestItem();
selectBestItem();
});
}
private boolean isTradeShown(Trade trade) {

View file

@ -29,7 +29,7 @@ On Linux and macOS, install Java JDK 21:
```
curl -s "https://get.sdkman.io" | bash
sdk install java 21.0.2.fx-librca
sdk install java 21.0.9.fx-librca
```
Alternatively, on Ubuntu 22.04:
@ -47,7 +47,7 @@ On Windows, install MSYS2 and Java JDK 21:
32-bit: `pacman -S mingw-w64-i686-toolchain make mingw-w64-i686-cmake git`
6. `curl -s "https://get.sdkman.io" | bash`
7. `sdk install java 21.0.2.fx-librca`
7. `sdk install java 21.0.9.fx-librca`
## Fork and build Haveno

View file

@ -27,7 +27,7 @@ On all platforms, install Java JDK 21:
```
curl -s "https://get.sdkman.io" | bash
sdk install java 21.0.2.fx-librca
sdk install java 21.0.9.fx-librca
```
Restart the terminal for the changes to take effect.

View file

@ -2405,86 +2405,83 @@
<sha256 value="0859ba0d5cfeefb13964e5862c036faa48a0bccff4932638fb13fe3445df33f7" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.openjfx" name="javafx-base" version="21.0.2">
<artifact name="javafx-base-21.0.2-linux.jar">
<sha256 value="a8f3674bac12b07acda55191579586cfe9f842b91bf06bee08b14d06397a3ffd" origin="Generated by Gradle"/>
<component group="org.openjfx" name="javafx-base" version="21.0.9">
<artifact name="javafx-base-21.0.9-linux.jar">
<sha256 value="c31ce9b91ae005b461f1839d1e0d39ebf1872e71dad12672961b099f7fb25db7" origin="Generated by Gradle"/>
</artifact>
<artifact name="javafx-base-21.0.2-mac-aarch64.jar">
<sha256 value="41d00909245d4af11ef53962171abe01c36ac02b916a6b37cc3860d48b3c471e" origin="Generated by Gradle"/>
<artifact name="javafx-base-21.0.9-mac-aarch64.jar">
<sha256 value="eb41a8159be86e3e76ee0f2e18b2bce85e8613da3188fdce13527a7dda644222" origin="Generated by Gradle"/>
</artifact>
<artifact name="javafx-base-21.0.2-mac.jar">
<sha256 value="94e7dee515ab829a3911cf5d5ccb00c7144056190195cc1725d052f70a21ffe5" origin="Generated by Gradle"/>
<artifact name="javafx-base-21.0.9-mac.jar">
<sha256 value="77563ef0a587cb61069253e793bda6db6c05e7a08024b3a21ced2f0d8a5130c9" origin="Generated by Gradle"/>
</artifact>
<artifact name="javafx-base-21.0.2-win.jar">
<sha256 value="c7628cdb5bd36029d7cb8fd087ac2f69c407f8f4b959f416eddaaf50a6f57323" origin="Generated by Gradle"/>
<artifact name="javafx-base-21.0.9-win.jar">
<sha256 value="95d680b5d0b1ed9358376b12fc2f30f10e813f04f929e51698eb5507867cd408" origin="Generated by Gradle"/>
</artifact>
<artifact name="javafx-base-21.0.2.jar">
<sha256 value="6437ceabf3c0da57ccc08b1cd5430f655923cfef0bcfdae89273f4a267912fbd" origin="Generated by Gradle"/>
<artifact name="javafx-base-21.0.9.jar">
<sha256 value="31bcb252641eed1fdfc6a89d361ad75532a02af8fea198fd3bc48b5ec128c1b0" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.openjfx" name="javafx-controls" version="21.0.2">
<artifact name="javafx-controls-21.0.2-linux.jar">
<sha256 value="c6ddb7e90c0fe256c212fd331d297a03a4840c61a6b330893ffc54c2d7c6326b" origin="Generated by Gradle"/>
<component group="org.openjfx" name="javafx-controls" version="21.0.9">
<artifact name="javafx-controls-21.0.9-linux.jar">
<sha256 value="1ccf2346e15fed71e8ca93ad6201789c26723fb50baf65209627430a24991c15" origin="Generated by Gradle"/>
</artifact>
<artifact name="javafx-controls-21.0.2-mac-aarch64.jar">
<sha256 value="5b6a41895b1fa5e2a52acc08f7be9494e87d3ed307b76fd2c698b4eadbc5ab35" origin="Generated by Gradle"/>
<artifact name="javafx-controls-21.0.9-mac-aarch64.jar">
<sha256 value="d5abb1fbfccf5cd678e13ff79446f4b4bf306413b3147e8df78dccd1c98a43f1" origin="Generated by Gradle"/>
</artifact>
<artifact name="javafx-controls-21.0.2-mac.jar">
<sha256 value="6cd73004e5ef92ce7be00c4f2ac4be2ab26fdd4a8dba3a58cf95d261a10f352b" origin="Generated by Gradle"/>
<artifact name="javafx-controls-21.0.9-mac.jar">
<sha256 value="5d32885166eba7f8e6d347ea9f95844b2f3e5f8acdb6b51bd8be92727a98d38e" origin="Generated by Gradle"/>
</artifact>
<artifact name="javafx-controls-21.0.2-win.jar">
<sha256 value="3be19bed6f59f0c6fa022d9ecc7a7b9ab5a062867864054f78e1bd4836037093" origin="Generated by Gradle"/>
<artifact name="javafx-controls-21.0.9-win.jar">
<sha256 value="991a8fbdcb289e717b3f5ada39d2c948d9a7cd8c798a9e2311a4b574274dd1e2" origin="Generated by Gradle"/>
</artifact>
<artifact name="javafx-controls-21.0.2.jar">
<sha256 value="0673842ff63bfe06476ee095a6b25bb0a1d074d87b9f8d42148ecb5b036081b0" origin="Generated by Gradle"/>
<artifact name="javafx-controls-21.0.9.jar">
<sha256 value="44a3ee7fc4ef878dc4bbf72cbf54d9c3d829c02196ec1077f69e8b02a9892f19" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.openjfx" name="javafx-fxml" version="21.0.2">
<artifact name="javafx-fxml-21.0.2-linux.jar">
<sha256 value="24fefcf2354e183c5a5decb65f090c1fe896f88ec7f7a3730f473bd251a4ee19" origin="Generated by Gradle"/>
<component group="org.openjfx" name="javafx-fxml" version="21.0.9">
<artifact name="javafx-fxml-21.0.9-linux.jar">
<sha256 value="c5982ef2f73db64848f3cdea2d1c918a2c0a8891b454412bcc106a7dcf6e2217" origin="Generated by Gradle"/>
</artifact>
<artifact name="javafx-fxml-21.0.2-mac-aarch64.jar">
<sha256 value="c6521279f68bdbc5bba3082c6b3c50b5100c919aa34fedff66246bca89fd9201" origin="Generated by Gradle"/>
<artifact name="javafx-fxml-21.0.9-mac-aarch64.jar">
<sha256 value="f3f360e5d52b00e07f226fc141c443fd7c7fc46faac89f84190f45122088c6f5" origin="Generated by Gradle"/>
</artifact>
<artifact name="javafx-fxml-21.0.2-mac.jar">
<sha256 value="c599615e11b2d8ed9d68afa8f82b749fc46bc5eb0ee1611097c15f312e34950d" origin="Generated by Gradle"/>
<artifact name="javafx-fxml-21.0.9-mac.jar">
<sha256 value="b9b72f52aa3635f5f75bf13449c398191bf0f5a950caa8e1952aa90802317435" origin="Generated by Gradle"/>
</artifact>
<artifact name="javafx-fxml-21.0.2-win.jar">
<sha256 value="7bb4c8c58ebd241e425206bd5cb79e9cf0f624701ab85cf7802d4b91f68e1ce5" origin="Generated by Gradle"/>
<artifact name="javafx-fxml-21.0.9-win.jar">
<sha256 value="e5319d6e5e2b27e6f5b840d5fe7abd3a016857115cc0b2b733336b701d681acc" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.openjfx" name="javafx-graphics" version="21.0.2">
<artifact name="javafx-graphics-21.0.2-linux.jar">
<sha256 value="a1951e6db7616f143b2a4bc31e6cae26960e7956658015839f60830a9cf5016b" origin="Generated by Gradle"/>
<component group="org.openjfx" name="javafx-graphics" version="21.0.9">
<artifact name="javafx-graphics-21.0.9-linux.jar">
<sha256 value="5e68feb4acd2012ceafe5d2fe2f9eacae868936283c6f0de1ca3c83fbe0e34a3" origin="Generated by Gradle"/>
</artifact>
<artifact name="javafx-graphics-21.0.2-mac-aarch64.jar">
<sha256 value="098e545644378ad521f03686464d0be202c99d11b2a234cf4d51dd5d11287e61" origin="Generated by Gradle"/>
<artifact name="javafx-graphics-21.0.9-mac-aarch64.jar">
<sha256 value="e78affd7b4b2c3704716fa4097a7427152e23de353e384618ca87747068646df" origin="Generated by Gradle"/>
</artifact>
<artifact name="javafx-graphics-21.0.2-mac.jar">
<sha256 value="289fab031737ad5a4a5eabd9d5c7f52b6e2a506cab9dcab0356eb37c08a73a2e" origin="Generated by Gradle"/>
<artifact name="javafx-graphics-21.0.9-mac.jar">
<sha256 value="b18362d022a0071a8b5c21ec906d0a27587ed300eec7c0e8cd46beba5879b9a8" origin="Generated by Gradle"/>
</artifact>
<artifact name="javafx-graphics-21.0.2-win.jar">
<sha256 value="55947b98e30424b831f8e1f0e80656355d244f2d57df679841a2e07cbbd84729" origin="Generated by Gradle"/>
<artifact name="javafx-graphics-21.0.9-win.jar">
<sha256 value="97d85e83cf16964ab015ff735df6f7f11fe115f78144ca8f1949e89a8bfddd78" origin="Generated by Gradle"/>
</artifact>
<artifact name="javafx-graphics-21.0.2.jar">
<sha256 value="3d4585f884bf64094b0771a78c5046b62eb8db9f15cc01cdc4136d72f26d4188" origin="Generated by Gradle"/>
<artifact name="javafx-graphics-21.0.9.jar">
<sha256 value="f8374c61285d852ff16e4f576566bc6e049308a535d61851a611018fec5e7515" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.openjfx" name="javafx-swing" version="21.0.2">
<artifact name="javafx-swing-21.0.2-linux.jar">
<sha256 value="67a4369cd556ed9b8b6970116e5f5f7f55ef64e54aaddbcc3f7950f7590631b5" origin="Generated by Gradle"/>
<component group="org.openjfx" name="javafx-swing" version="21.0.9">
<artifact name="javafx-swing-21.0.9-linux.jar">
<sha256 value="fa86819f94a900ff723e12f878ad28e6233b1d881101f846abe992b53935fc5f" origin="Generated by Gradle"/>
</artifact>
<artifact name="javafx-swing-21.0.2-mac-aarch64.jar">
<sha256 value="5e6b5f10350915d92e2df8d602646eccf9b7f62c56fe04849a6b6f647d50fb74" origin="Generated by Gradle"/>
<artifact name="javafx-swing-21.0.9-mac-aarch64.jar">
<sha256 value="9559ca8feda141d60511a72b832a3e50d5aaa8ecbcf01fefcb629f13ed690065" origin="Generated by Gradle"/>
</artifact>
<artifact name="javafx-swing-21.0.2-mac.jar">
<sha256 value="2f047f7a4e5bc8e9603c23b168b472590a0a0607ba16b6c62d5f9b4f361d12ad" origin="Generated by Gradle"/>
<artifact name="javafx-swing-21.0.9-mac.jar">
<sha256 value="e3b3933b0d065e3a650c9ebb18b2a47146cfab390542b0464bcd87329af07054" origin="Generated by Gradle"/>
</artifact>
<artifact name="javafx-swing-21.0.2-mac.jar-aarch64">
<sha256 value="5e6b5f10350915d92e2df8d602646eccf9b7f62c56fe04849a6b6f647d50fb74" origin="Generated by Gradle"/>
</artifact>
<artifact name="javafx-swing-21.0.2-win.jar">
<sha256 value="d34a842a7e6fe4712f691dc578503376da8206352fefb17350005e89164db9ec" origin="Generated by Gradle"/>
<artifact name="javafx-swing-21.0.9-win.jar">
<sha256 value="66a8a72f6ac586c016d2372fb94dec509b5fdc6816d38d96586d8349b67e1e4f" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.opentest4j" name="opentest4j" version="1.2.0">

View file

@ -25,9 +25,10 @@ cd /D "%~dp0"
title Install Java
set jdk_version=21.0.2
set jdk_filename=openjdk-%jdk_version%_windows-x64_bin
set jdk_url=https://download.java.net/java/GA/jdk21.0.2/f2283984656d49d69e91c558476027ac/13/GPL/openjdk-21.0.2_windows-x64_bin.zip
set jdk_version=21.0.9
set jdk_build=10
set jdk_filename=OpenJDK21U-jdk_x64_windows_hotspot_%jdk_version%_%jdk_build%
set jdk_url=https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.9+10/OpenJDK21U-jdk_x64_windows_hotspot_21.0.9_10.zip
if exist "%PROGRAMFILES%\Java\openjdk\jdk-%jdk_version%" (
echo %PROGRAMFILES%\Java\openjdk\jdk-%jdk_version% already exists, skipping install

View file

@ -15,9 +15,9 @@ set -e
unameOut="$(uname -s)"
case "${unameOut}" in
Linux*)
JAVA_HOME=/usr/lib/jvm/openjdk-21.0.2
JDK_FILENAME=openjdk-21.0.2_linux-x64_bin.tar.gz
JDK_URL=https://download.java.net/java/GA/jdk21.0.2/f2283984656d49d69e91c558476027ac/13/GPL/openjdk-21.0.2_linux-x64_bin.tar.gz
JAVA_HOME=/usr/lib/jvm/openjdk-21.0.9
JDK_FILENAME=OpenJDK21U-jdk_x64_linux_hotspot_21.0.9_10.tar.gz
JDK_URL=https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.9+10/OpenJDK21U-jdk_x64_linux_hotspot_21.0.9_10.tar.gz
# Determine which package manager to use depending on the distribution
declare -A osInfo;
@ -52,9 +52,9 @@ case "${unameOut}" in
update-alternatives --set javac $JAVA_HOME/bin/javac
;;
Darwin*)
JAVA_HOME=/Library/Java/JavaVirtualMachines/openjdk-21.0.2.jdk/Contents/Home
JDK_FILENAME=openjdk-21.0.2_macos-x64_bin.tar.gz
JDK_URL=https://download.java.net/java/GA/jdk21.0.2/f2283984656d49d69e91c558476027ac/13/GPL/openjdk-21.0.2_macos-x64_bin.tar.gz
JAVA_HOME=/Library/Java/JavaVirtualMachines/openjdk-21.0.9.jdk/Contents/Home
JDK_FILENAME=OpenJDK21U-jdk_x64_mac_hotspot_21.0.9_10.tar.gz
JDK_URL=https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.9+10/OpenJDK21U-jdk_x64_mac_hotspot_21.0.9_10.tar.gz
if [ ! -d "$JAVA_HOME" ]; then
if [[ $(command -v brew) == "" ]]; then
echo "Installing Homebrew"
@ -66,10 +66,10 @@ case "${unameOut}" in
brew install curl
curl -L -O $JDK_URL
sudo mkdir /Library/Java/JavaVirtualMachines/openjdk-21.0.2.jdk | sudo bash
sudo mkdir /Library/Java/JavaVirtualMachines/openjdk-21.0.9.jdk | sudo bash
gunzip -c $JDK_FILENAME | tar xopf -
sudo mv jdk-21.0.2.jdk/* /Library/Java/JavaVirtualMachines/openjdk-21.0.2.jdk
sudo rmdir jdk-21.0.2.jdk
sudo mv jdk-21.0.9+10/* /Library/Java/JavaVirtualMachines/openjdk-21.0.9.jdk
sudo rmdir jdk-21.0.9+10
rm $JDK_FILENAME
fi