diff --git a/.github/workflows/basic-checks.yml b/.github/workflows/basic-checks.yml index 863a69e0da..2619863c74 100644 --- a/.github/workflows/basic-checks.yml +++ b/.github/workflows/basic-checks.yml @@ -3,7 +3,7 @@ name: Basic checks on: [pull_request] env: - JAVA_VERSION: 21 + JAVA_VERSION: 24 jobs: spotless: diff --git a/.github/workflows/code-analysis.yml b/.github/workflows/code-analysis.yml index ba425f7d88..f51c39e724 100644 --- a/.github/workflows/code-analysis.yml +++ b/.github/workflows/code-analysis.yml @@ -8,7 +8,7 @@ on: - cron: '0 20 * * 4' env: - JAVA_VERSION: 21 + JAVA_VERSION: 24 jobs: sonar: diff --git a/.github/workflows/docker-publish.yaml b/.github/workflows/docker-publish.yaml index a539fba120..edd933f799 100644 --- a/.github/workflows/docker-publish.yaml +++ b/.github/workflows/docker-publish.yaml @@ -7,7 +7,7 @@ on: - 'master' env: - JAVA_VERSION: 21 + JAVA_VERSION: 24 jobs: docker: diff --git a/.github/workflows/docker-verify.yaml b/.github/workflows/docker-verify.yaml index c23528646d..560c6f61d9 100644 --- a/.github/workflows/docker-verify.yaml +++ b/.github/workflows/docker-verify.yaml @@ -3,7 +3,7 @@ name: Docker Verify on: [pull_request] env: - JAVA_VERSION: 21 + JAVA_VERSION: 24 jobs: docker: diff --git a/.github/workflows/releases.yaml b/.github/workflows/releases.yaml index 1f4dfa40fa..fbd106930b 100644 --- a/.github/workflows/releases.yaml +++ b/.github/workflows/releases.yaml @@ -10,7 +10,7 @@ defaults: shell: bash env: - JAVA_VERSION: 21 + JAVA_VERSION: 24 jobs: diff --git a/README.md b/README.md index 846e897549..3c9c50cb40 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # TJ-Bot [![codefactor](https://img.shields.io/codefactor/grade/github/together-java/tj-bot)](https://www.codefactor.io/repository/github/together-java/tj-bot) -![Java](https://img.shields.io/badge/Java-21-ff696c) +![Java](https://img.shields.io/badge/Java-24-ff696c) [![license](https://img.shields.io/github/license/Together-Java/TJ-Bot)](https://github.com/Together-Java/TJ-Bot/blob/master/LICENSE) ![GitHub release (latest by date)](https://img.shields.io/github/v/release/Together-Java/TJ-Bot?label=release) diff --git a/application/build.gradle b/application/build.gradle index e4b1b27ae8..653fde0965 100644 --- a/application/build.gradle +++ b/application/build.gradle @@ -6,7 +6,7 @@ buildscript { plugins { id 'application' - id 'com.google.cloud.tools.jib' version '3.4.0' + id 'com.google.cloud.tools.jib' version '3.4.5' id 'com.github.johnrengelman.shadow' version '8.1.1' id 'database-settings' } @@ -18,7 +18,7 @@ repositories { var outputImage = 'togetherjava.org:5001/togetherjava/tjbot:' + System.getenv('BRANCH_NAME') ?: 'latest' jib { - from.image = 'eclipse-temurin:21' + from.image = 'eclipse-temurin:24' to { image = outputImage auth { diff --git a/application/src/main/java/org/togetherjava/tjbot/features/code/CodeMessageHandler.java b/application/src/main/java/org/togetherjava/tjbot/features/code/CodeMessageHandler.java index 5e9e7b69d9..601f91663f 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/code/CodeMessageHandler.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/code/CodeMessageHandler.java @@ -224,7 +224,7 @@ public void onMessageUpdated(MessageUpdateEvent event) { // Re-apply the current action return codeReplyMessage.editMessageEmbeds(maybeCodeAction.orElseThrow().apply(code)); - }).queue(any -> { + }).queue(_ -> { }, failure -> logger.warn( "Attempted to update a code-reply-message ({}), but failed. The original code-message was {}", codeReplyMessageId, originalMessageId, failure)); @@ -253,7 +253,7 @@ public void onMessageDeleted(MessageDeleteEvent event) { // Delete the code reply as well originalMessageToCodeReply.invalidate(originalMessageId); - event.getChannel().deleteMessageById(codeReplyMessageId).queue(any -> { + event.getChannel().deleteMessageById(codeReplyMessageId).queue(_ -> { }, failure -> logger.warn( "Attempted to delete a code-reply-message ({}), but failed. The original code-message was {}", codeReplyMessageId, originalMessageId, failure)); diff --git a/application/src/main/java/org/togetherjava/tjbot/features/componentids/ComponentIdStore.java b/application/src/main/java/org/togetherjava/tjbot/features/componentids/ComponentIdStore.java index 7ada38e67d..2543a4aa8f 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/componentids/ComponentIdStore.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/componentids/ComponentIdStore.java @@ -165,7 +165,7 @@ public void addComponentIdRemovedListener(Consumer listener) { * @throws InvalidComponentIdFormatException if the given component ID was in an unexpected * format and could not be serialized */ - @SuppressWarnings("WeakerAccess") + @SuppressWarnings({"WeakerAccess", "squid:S2259"}) public Optional get(UUID uuid) { synchronized (storeLock) { // Get it from the cache or, if not found, the database diff --git a/application/src/main/java/org/togetherjava/tjbot/features/github/GitHubReference.java b/application/src/main/java/org/togetherjava/tjbot/features/github/GitHubReference.java index 5592e04592..960587e8a4 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/github/GitHubReference.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/github/GitHubReference.java @@ -236,7 +236,7 @@ Optional findIssue(int id, String targetIssueTitle) { if (issue.getTitle().equals(targetIssueTitle)) { return Optional.of(issue); } - } catch (FileNotFoundException ignored) { + } catch (FileNotFoundException _) { return Optional.empty(); } catch (IOException ex) { throw new UncheckedIOException(ex); @@ -255,7 +255,7 @@ Optional findIssue(int id, long defaultRepoId) { issue = repository.getPullRequest(id); } return Optional.of(issue); - } catch (FileNotFoundException ignored) { + } catch (FileNotFoundException _) { return Optional.empty(); } catch (IOException ex) { throw new UncheckedIOException(ex); diff --git a/application/src/main/java/org/togetherjava/tjbot/features/help/GuildLeaveCloseThreadListener.java b/application/src/main/java/org/togetherjava/tjbot/features/help/GuildLeaveCloseThreadListener.java index 0e4cff2eba..5d1a4d7260 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/help/GuildLeaveCloseThreadListener.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/help/GuildLeaveCloseThreadListener.java @@ -36,7 +36,7 @@ public void onGuildMemberRemove(GuildMemberRemoveEvent event) { .filter(thread -> thread.getOwnerIdLong() == event.getUser().getIdLong()) .filter(thread -> thread.getParentChannel().getName().matches(helpForumPattern)) .forEach(thread -> thread.sendMessageEmbeds(embed) - .flatMap(any -> thread.getManager().setArchived(true)) + .flatMap(_ -> thread.getManager().setArchived(true)) .queue())); } } diff --git a/application/src/main/java/org/togetherjava/tjbot/features/help/HelpSystemHelper.java b/application/src/main/java/org/togetherjava/tjbot/features/help/HelpSystemHelper.java index 7f37d8f8cd..222a8bfb66 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/help/HelpSystemHelper.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/help/HelpSystemHelper.java @@ -168,7 +168,7 @@ RestAction constructChatGptAttempt(ThreadChannel threadChannel, } MessageEmbed responseEmbed = generateGptResponseEmbed(answer, selfUser, originalQuestion); - return post.flatMap(any -> threadChannel.sendMessageEmbeds(responseEmbed) + return post.flatMap(_ -> threadChannel.sendMessageEmbeds(responseEmbed) .addActionRow(generateDismissButton(componentIdInteractor, messageId.get()))); } diff --git a/application/src/main/java/org/togetherjava/tjbot/features/help/HelpThreadAutoArchiver.java b/application/src/main/java/org/togetherjava/tjbot/features/help/HelpThreadAutoArchiver.java index 4b0b6a317a..41792957ff 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/help/HelpThreadAutoArchiver.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/help/HelpThreadAutoArchiver.java @@ -151,7 +151,7 @@ private void triggerArchiveFlow(ThreadChannel threadChannel, long authorId, return sendEmbedWithMention.apply(authorResults.get()); }) - .flatMap(any -> threadChannel.getManager().setArchived(true)) + .flatMap(_ -> threadChannel.getManager().setArchived(true)) .queue(); } diff --git a/application/src/main/java/org/togetherjava/tjbot/features/help/HelpThreadCommand.java b/application/src/main/java/org/togetherjava/tjbot/features/help/HelpThreadCommand.java index 0adcd14a22..fd6b264e0c 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/help/HelpThreadCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/help/HelpThreadCommand.java @@ -102,7 +102,7 @@ public HelpThreadCommand(Config config, HelpSystemHelper helper) { .collect(Collectors.toMap(Subcommand::getCommandName, Function.identity())); subcommandToCooldownCache = new EnumMap<>(streamSubcommands() .filter(Subcommand::hasCooldown) - .collect(Collectors.toMap(Function.identity(), any -> createCooldownCache.get()))); + .collect(Collectors.toMap(Function.identity(), _ -> createCooldownCache.get()))); subcommandToEventHandler = new EnumMap<>(Map.of(Subcommand.CHANGE_CATEGORY, this::changeCategory, Subcommand.CHANGE_TITLE, this::changeTitle, Subcommand.CLOSE, this::closeThread, Subcommand.RESET_ACTIVITY, this::resetActivity)); @@ -124,6 +124,7 @@ && isHelpThreadOnCooldown(invokedSubcommand, helpThread)) { subcommandToEventHandler.get(invokedSubcommand).accept(event, helpThread); } + @SuppressWarnings("squid:S2259") private boolean isHelpThreadOnCooldown(Subcommand subcommand, ThreadChannel helpThread) { Cache helpThreadIdToLastAction = requireCooldownCache(subcommand); return Optional.ofNullable(helpThreadIdToLastAction.getIfPresent(helpThread.getIdLong())) @@ -158,7 +159,7 @@ private void changeCategory(SlashCommandInteractionEvent event, ThreadChannel he refreshCooldownFor(Subcommand.CHANGE_CATEGORY, helpThread); helper.changeChannelCategory(helpThread, category) - .flatMap(any -> sendCategoryChangedMessage(helpThread.getGuild(), event.getHook(), + .flatMap(_ -> sendCategoryChangedMessage(helpThread.getGuild(), event.getHook(), helpThread, category)) .queue(); } @@ -185,7 +186,7 @@ private RestAction sendCategoryChangedMessage(Guild guild, InteractionH String headsUpPattern = "%s please have a look, thanks."; String headsUpWithoutRole = headsUpPattern.formatted(""); String headsUpWithRole = headsUpPattern.formatted(helperRole.orElseThrow().getAsMention()); - return action.flatMap(any -> helpThread.sendMessage(headsUpWithoutRole) + return action.flatMap(_ -> helpThread.sendMessage(headsUpWithoutRole) .flatMap(message -> message.editMessage(headsUpWithRole))); } @@ -195,7 +196,7 @@ private void changeTitle(SlashCommandInteractionEvent event, ThreadChannel helpT refreshCooldownFor(Subcommand.CHANGE_TITLE, helpThread); helper.renameChannel(helpThread, title) - .flatMap(any -> event.reply("Changed the title to **%s**.".formatted(title))) + .flatMap(_ -> event.reply("Changed the title to **%s**.".formatted(title))) .queue(); } @@ -206,7 +207,7 @@ private void closeThread(SlashCommandInteractionEvent event, ThreadChannel helpT .setColor(HelpSystemHelper.AMBIENT_COLOR) .build(); - event.replyEmbeds(embed).flatMap(any -> helpThread.getManager().setArchived(true)).queue(); + event.replyEmbeds(embed).flatMap(_ -> helpThread.getManager().setArchived(true)).queue(); } private void resetActivity(SlashCommandInteractionEvent event, ThreadChannel helpThread) { diff --git a/application/src/main/java/org/togetherjava/tjbot/features/help/HelpThreadCreatedListener.java b/application/src/main/java/org/togetherjava/tjbot/features/help/HelpThreadCreatedListener.java index 12ee788fa1..cd453eab63 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/help/HelpThreadCreatedListener.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/help/HelpThreadCreatedListener.java @@ -76,7 +76,7 @@ private boolean wasThreadAlreadyHandled(long threadChannelId) { // the threads we already handled Instant now = Instant.now(); // NOTE It is necessary to do the "check if exists, otherwise insert" atomic - Instant createdAt = threadIdToCreatedAtCache.get(threadChannelId, any -> now); + Instant createdAt = threadIdToCreatedAtCache.get(threadChannelId, _ -> now); return createdAt != now; } @@ -84,9 +84,9 @@ private void handleHelpThreadCreated(ThreadChannel threadChannel) { threadChannel.retrieveStartMessage().flatMap(message -> { registerThreadDataInDB(message, threadChannel); return sendHelperHeadsUp(threadChannel) - .flatMap(any -> HelpThreadCreatedListener.isContextSufficient(message), - any -> createAIResponse(threadChannel, message)) - .flatMap(any -> pinOriginalQuestion(message)); + .flatMap(_ -> HelpThreadCreatedListener.isContextSufficient(message), + _ -> createAIResponse(threadChannel, message)) + .flatMap(_ -> pinOriginalQuestion(message)); }).queue(); } diff --git a/application/src/main/java/org/togetherjava/tjbot/features/mediaonly/MediaOnlyChannelListener.java b/application/src/main/java/org/togetherjava/tjbot/features/mediaonly/MediaOnlyChannelListener.java index 083dd193ec..11f666beaa 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/mediaonly/MediaOnlyChannelListener.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/mediaonly/MediaOnlyChannelListener.java @@ -46,7 +46,7 @@ public void onMessageReceived(MessageReceivedEvent event) { } if (messageHasNoMediaAttached(message)) { - message.delete().flatMap(any -> dmUser(message)).queue(any -> { + message.delete().flatMap(_ -> dmUser(message)).queue(_ -> { }, failure -> tempNotifyUserInChannel(message)); } } diff --git a/application/src/main/java/org/togetherjava/tjbot/features/moderation/ReportCommand.java b/application/src/main/java/org/togetherjava/tjbot/features/moderation/ReportCommand.java index 61eeb0f3ae..ced7aaec4a 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/moderation/ReportCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/moderation/ReportCommand.java @@ -125,6 +125,7 @@ private boolean handleIsOnCooldown(MessageContextInteractionEvent event) { return true; } + @SuppressWarnings("squid:S2259") private boolean isAuthorOnCooldown(long userId) { return Optional.ofNullable(authorToLastReportInvocation.getIfPresent(userId)) .map(sinceCommandInvoked -> sinceCommandInvoked.plus(COOLDOWN_DURATION_VALUE, diff --git a/application/src/main/java/org/togetherjava/tjbot/features/moderation/TransferQuestionCommand.java b/application/src/main/java/org/togetherjava/tjbot/features/moderation/TransferQuestionCommand.java index 99e0ed8408..69e59f9358 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/moderation/TransferQuestionCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/moderation/TransferQuestionCommand.java @@ -149,7 +149,7 @@ public void onModalSubmitted(ModalInteractionEvent event, List args) { // Has been handled if original message was deleted by now. // Deleted messages cause retrieveMessageById to fail. Consumer notHandledAction = - any -> transferFlow(event, channelId, authorId, messageId); + _ -> transferFlow(event, channelId, authorId, messageId); Consumer handledAction = failure -> { if (failure instanceof ErrorResponseException errorResponseException diff --git a/application/src/main/java/org/togetherjava/tjbot/features/moderation/attachment/BlacklistedAttachmentListener.java b/application/src/main/java/org/togetherjava/tjbot/features/moderation/attachment/BlacklistedAttachmentListener.java index db1060aefb..c7cd224f18 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/moderation/attachment/BlacklistedAttachmentListener.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/moderation/attachment/BlacklistedAttachmentListener.java @@ -49,7 +49,7 @@ public void onMessageReceived(MessageReceivedEvent event) { } private void handleBadMessage(Message message) { - message.delete().flatMap(any -> dmUser(message)).queue(any -> warnMods(message)); + message.delete().flatMap(_ -> dmUser(message)).queue(_ -> warnMods(message)); } private RestAction dmUser(Message message) { diff --git a/application/src/main/java/org/togetherjava/tjbot/features/moderation/modmail/ModMailCommand.java b/application/src/main/java/org/togetherjava/tjbot/features/moderation/modmail/ModMailCommand.java index c29a7382a8..b43748ec7a 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/moderation/modmail/ModMailCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/moderation/modmail/ModMailCommand.java @@ -214,6 +214,7 @@ private MessageEmbed createModMailMessage(@Nullable User author, String userMess .build(); } + @SuppressWarnings("squid:S2259") private boolean isChannelOnCooldown(long userId) { return Optional.ofNullable(authorToLastModMailInvocation.getIfPresent(userId)) .map(sinceCommandInvoked -> sinceCommandInvoked.plus(COOLDOWN_DURATION_VALUE, diff --git a/application/src/main/java/org/togetherjava/tjbot/features/moderation/scam/ScamBlocker.java b/application/src/main/java/org/togetherjava/tjbot/features/moderation/scam/ScamBlocker.java index 0816e2fb5c..057a71cee6 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/moderation/scam/ScamBlocker.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/moderation/scam/ScamBlocker.java @@ -273,7 +273,7 @@ private void dmUser(MessageReceivedEvent event) { } private void dmUser(Guild guild, long userId, JDA jda) { - jda.openPrivateChannelById(userId).flatMap(channel -> dmUser(guild, channel)).queue(any -> { + jda.openPrivateChannelById(userId).flatMap(channel -> dmUser(guild, channel)).queue(_ -> { }, failure -> logger.debug( "Unable to send dm message to user {} in guild {} to inform them about a scam message being blocked", userId, guild.getId(), failure)); diff --git a/application/src/main/java/org/togetherjava/tjbot/features/reminder/RemindRoutine.java b/application/src/main/java/org/togetherjava/tjbot/features/reminder/RemindRoutine.java index 1da5871a1d..0f2f0417d2 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/reminder/RemindRoutine.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/reminder/RemindRoutine.java @@ -154,7 +154,7 @@ Failed to send a reminder with (authorID '{}') skipping it. This can be due to a int failureAttempts = pendingReminder.getFailureAttempts() + 1; Instant remindAt = Instant.now().plus(1, ChronoUnit.MINUTES); - database.write(any -> { + database.write(_ -> { pendingReminder.setRemindAt(remindAt); pendingReminder.setFailureAttempts(failureAttempts); pendingReminder.insert(); diff --git a/application/src/main/java/org/togetherjava/tjbot/features/utils/LinkPreviews.java b/application/src/main/java/org/togetherjava/tjbot/features/utils/LinkPreviews.java index cc84fa3083..6126e05e57 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/utils/LinkPreviews.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/utils/LinkPreviews.java @@ -63,7 +63,7 @@ public static CompletableFuture> createLinkPreviews(List extractResults(tasks)).exceptionally(e -> { + return allDoneTask.thenApply(_ -> extractResults(tasks)).exceptionally(e -> { logger.error("Unknown error during link preview creation", e); return List.of(); }); @@ -184,6 +184,7 @@ private static Optional parseMetaProperty(Document doc, String metaPrope .filter(Predicate.not(String::isBlank)); } + @SuppressWarnings("squid:S2259") private static Optional selectFirstMetaTag(Document doc, String key, String value) { return Optional.ofNullable(doc.selectFirst("meta[%s=%s]".formatted(key, value))) .map(element -> element.attr("content")); diff --git a/application/src/test/java/org/togetherjava/tjbot/features/SlashCommandAdapterTest.java b/application/src/test/java/org/togetherjava/tjbot/features/SlashCommandAdapterTest.java index 745731031b..cff9818d17 100644 --- a/application/src/test/java/org/togetherjava/tjbot/features/SlashCommandAdapterTest.java +++ b/application/src/test/java/org/togetherjava/tjbot/features/SlashCommandAdapterTest.java @@ -15,7 +15,6 @@ final class SlashCommandAdapterTest { UserInteractionType.SLASH_COMMAND.getPrefix() + NAME; private static final String DESCRIPTION = "Foo command"; private static final CommandVisibility VISIBILITY = CommandVisibility.GUILD; - private static final int UNIQUE_ID_ITERATIONS = 20; static SlashCommandAdapter createAdapter() { // noinspection AnonymousInnerClass diff --git a/application/src/test/java/org/togetherjava/tjbot/jda/ButtonClickEventBuilder.java b/application/src/test/java/org/togetherjava/tjbot/jda/ButtonClickEventBuilder.java index a2a474dbcc..140bfc8e0f 100644 --- a/application/src/test/java/org/togetherjava/tjbot/jda/ButtonClickEventBuilder.java +++ b/application/src/test/java/org/togetherjava/tjbot/jda/ButtonClickEventBuilder.java @@ -1,6 +1,5 @@ package org.togetherjava.tjbot.jda; -import com.fasterxml.jackson.databind.ObjectMapper; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.MessageEmbed; @@ -67,7 +66,6 @@ * */ public final class ButtonClickEventBuilder { - private static final ObjectMapper JSON = new ObjectMapper(); private final JdaTester jdaTester; private final Supplier mockEventSupplier; private final UnaryOperator mockMessageOperator; diff --git a/build.gradle b/build.gradle index 7858bdea6a..67759b5bb5 100644 --- a/build.gradle +++ b/build.gradle @@ -1,17 +1,20 @@ plugins { id 'java' - id "com.diffplug.spotless" version "7.0.3" + id "com.diffplug.spotless" version "7.0.4" id "org.sonarqube" version "6.2.0.5505" - id "name.remal.sonarlint" version "4.2.2" + id "name.remal.sonarlint" version "5.1.10" +} +repositories { + mavenCentral() } group 'org.togetherjava' version '1.0-SNAPSHOT' ext { - jooqVersion = '3.20.4' - jacksonVersion = '2.19.0' - chatGPTVersion = '0.18.0' + jooqVersion = '3.20.5' + jacksonVersion = '2.19.1' + chatGPTVersion = '0.18.2' } // Skips sonarlint during the build, useful for testing purposes. @@ -55,7 +58,7 @@ subprojects { java { toolchain { // Nails the Java-Version of every Subproject - languageVersion = JavaLanguageVersion.of(21) + languageVersion = JavaLanguageVersion.of(24) } } @@ -63,7 +66,7 @@ subprojects { sonarLint { rules { disable( - 'java:S1135' // Disables "Track uses of "TO-DO" tags" rule. + 'java:S1135', // Disables "Track uses of "TO-DO" tags" rule. ) } } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index d64cd49177..1b33c55baa 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 1af9e0930b..ff23a68d70 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-8.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index 1aa94a4269..23d15a9367 100755 --- a/gradlew +++ b/gradlew @@ -15,6 +15,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################## # @@ -55,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/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/. @@ -84,7 +86,7 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -112,7 +114,7 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar +CLASSPATH="\\\"\\\"" # Determine the Java command to use to start the JVM. @@ -203,7 +205,7 @@ fi DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, # and any embedded shellness will be escaped. # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be # treated as '${Hostname}' itself on the command line. @@ -211,7 +213,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" # Stop when "xargs" is not available. diff --git a/gradlew.bat b/gradlew.bat index 93e3f59f13..db3a6ac207 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -13,6 +13,8 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## @@ -43,11 +45,11 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -57,22 +59,22 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar +set CLASSPATH= @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* :end @rem End local scope for the variables with windows NT shell