From 6b67e8cff8ef550b8734eafeeda321a3e12f9764 Mon Sep 17 00:00:00 2001 From: Tanish Azad Date: Thu, 30 May 2024 12:21:16 +0530 Subject: [PATCH 01/17] rebase --- gradle/wrapper/gradle-wrapper.jar | Bin 43462 -> 43461 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index d64cd4917707c1f8861d8cb53dd15194d4248596..933486d825af8377635acd7cb3fb7bb529199ae7 100644 GIT binary patch delta 14 WcmX?hnd#_drVTgqH{Z&CV+jC0#t2UU delta 16 YcmX?lnd#VNrVTgq8F@F~%ztAE07-BNTmS$7 From c7a14dcb29173aa6510859b2a75991b50f818aaf Mon Sep 17 00:00:00 2001 From: Tanish Azad Date: Sat, 23 Mar 2024 00:09:38 +0530 Subject: [PATCH 02/17] upgrade to java 22 --- .github/workflows/basic-checks.yml | 2 +- .github/workflows/code-analysis.yml | 2 +- .github/workflows/docker-publish.yaml | 2 +- .github/workflows/docker-verify.yaml | 2 +- .github/workflows/releases.yaml | 2 +- README.md | 2 +- .../features/code/CodeMessageHandler.java | 4 +- .../help/GuildLeaveCloseThreadListener.java | 2 +- .../tjbot/features/help/HelpSystemHelper.java | 4 +- .../features/help/HelpThreadAutoArchiver.java | 2 +- .../features/help/HelpThreadCommand.java | 10 +- .../help/HelpThreadCreatedListener.java | 2 +- .../mediaonly/MediaOnlyChannelListener.java | 2 +- .../moderation/TransferQuestionCommand.java | 2 +- .../BlacklistedAttachmentListener.java | 2 +- .../features/moderation/scam/ScamBlocker.java | 2 +- .../features/reminder/RemindRoutine.java | 2 +- .../tjbot/features/utils/LinkPreviews.java | 2 +- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew.bat | 95 +++++++++++++++++++ 21 files changed, 121 insertions(+), 26 deletions(-) diff --git a/.github/workflows/basic-checks.yml b/.github/workflows/basic-checks.yml index 863a69e0da..b8a789bda1 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: 22 jobs: spotless: diff --git a/.github/workflows/code-analysis.yml b/.github/workflows/code-analysis.yml index ba425f7d88..9563d9dff6 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: 22 jobs: sonar: diff --git a/.github/workflows/docker-publish.yaml b/.github/workflows/docker-publish.yaml index a539fba120..e01c40486e 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: 22 jobs: docker: diff --git a/.github/workflows/docker-verify.yaml b/.github/workflows/docker-verify.yaml index c23528646d..bde26ae12c 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: 22 jobs: docker: diff --git a/.github/workflows/releases.yaml b/.github/workflows/releases.yaml index 1f4dfa40fa..280596cfb9 100644 --- a/.github/workflows/releases.yaml +++ b/.github/workflows/releases.yaml @@ -10,7 +10,7 @@ defaults: shell: bash env: - JAVA_VERSION: 21 + JAVA_VERSION: 22 jobs: diff --git a/README.md b/README.md index 846e897549..8223d3d0e8 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-22-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/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/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..51593b2700 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 @@ -1,4 +1,4 @@ -package org.togetherjava.tjbot.features.help; +package org.togetherjava.tjbot.features.help; import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.entities.Guild; @@ -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..9acd2d0fb4 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)); @@ -158,7 +158,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 +185,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 +195,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 +206,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..7815fa39e9 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; } 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/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/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..6b8e4a58f5 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(); }); diff --git a/build.gradle b/build.gradle index 7858bdea6a..cf2817a61b 100644 --- a/build.gradle +++ b/build.gradle @@ -55,7 +55,7 @@ subprojects { java { toolchain { // Nails the Java-Version of every Subproject - languageVersion = JavaLanguageVersion.of(21) + languageVersion = JavaLanguageVersion.of(22) } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 1af9e0930b..b82aa23a4f 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.7-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew.bat b/gradlew.bat index 93e3f59f13..7a5b26c187 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,3 +1,4 @@ +<<<<<<< HEAD @rem @rem Copyright 2015 the original author or authors. @rem @@ -90,3 +91,97 @@ exit /b %EXIT_CODE% if "%OS%"=="Windows_NT" endlocal :omega +======= +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +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 + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +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 + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega +>>>>>>> 78d0197 (upgrade to java 22) From fd8e6e2a43cbce22ae587dfe6749206ff3b67e7a Mon Sep 17 00:00:00 2001 From: Tanish Azad Date: Sat, 23 Mar 2024 00:14:53 +0530 Subject: [PATCH 03/17] downgraded workflow to java 21 --- .github/workflows/basic-checks.yml | 2 +- .github/workflows/code-analysis.yml | 2 +- .github/workflows/docker-publish.yaml | 2 +- .github/workflows/docker-verify.yaml | 2 +- .github/workflows/releases.yaml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/basic-checks.yml b/.github/workflows/basic-checks.yml index b8a789bda1..863a69e0da 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: 22 + JAVA_VERSION: 21 jobs: spotless: diff --git a/.github/workflows/code-analysis.yml b/.github/workflows/code-analysis.yml index 9563d9dff6..ba425f7d88 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: 22 + JAVA_VERSION: 21 jobs: sonar: diff --git a/.github/workflows/docker-publish.yaml b/.github/workflows/docker-publish.yaml index e01c40486e..a539fba120 100644 --- a/.github/workflows/docker-publish.yaml +++ b/.github/workflows/docker-publish.yaml @@ -7,7 +7,7 @@ on: - 'master' env: - JAVA_VERSION: 22 + JAVA_VERSION: 21 jobs: docker: diff --git a/.github/workflows/docker-verify.yaml b/.github/workflows/docker-verify.yaml index bde26ae12c..c23528646d 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: 22 + JAVA_VERSION: 21 jobs: docker: diff --git a/.github/workflows/releases.yaml b/.github/workflows/releases.yaml index 280596cfb9..1f4dfa40fa 100644 --- a/.github/workflows/releases.yaml +++ b/.github/workflows/releases.yaml @@ -10,7 +10,7 @@ defaults: shell: bash env: - JAVA_VERSION: 22 + JAVA_VERSION: 21 jobs: From 3e6a01ca3010499bd2de6be284efc0abc013a4cb Mon Sep 17 00:00:00 2001 From: Tanish Azad Date: Sat, 23 Mar 2024 00:39:01 +0530 Subject: [PATCH 04/17] ignored -> _ --- .../features/github/GitHubReference.java | 2 +- .../help/HelpThreadCreatedListener.java | 6 +- gradlew.bat | 95 ------------------- 3 files changed, 4 insertions(+), 99 deletions(-) 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..fa2041db21 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); 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 7815fa39e9..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 @@ -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/gradlew.bat b/gradlew.bat index 7a5b26c187..93e3f59f13 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,4 +1,3 @@ -<<<<<<< HEAD @rem @rem Copyright 2015 the original author or authors. @rem @@ -91,97 +90,3 @@ exit /b %EXIT_CODE% if "%OS%"=="Windows_NT" endlocal :omega -======= -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -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 - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -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 - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega ->>>>>>> 78d0197 (upgrade to java 22) From c930e9b5c69e913d586f5118db11322c4df97e42 Mon Sep 17 00:00:00 2001 From: Tanish Azad Date: Thu, 30 May 2024 19:22:00 +0530 Subject: [PATCH 05/17] gradle wrapper --- gradle/wrapper/gradle-wrapper.jar | Bin 43461 -> 43452 bytes gradlew.bat | 20 ++++++++++---------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 933486d825af8377635acd7cb3fb7bb529199ae7..8b437bdeab6ec76716a39711cdc491c5ac03c0b4 100644 GIT binary patch delta 34187 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 BoQnVe delta 34198 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 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,11 +57,11 @@ 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 From fcab2f34fb3099185c5395abdedd279b71c6d84f Mon Sep 17 00:00:00 2001 From: Tanish Azad Date: Fri, 7 Jun 2024 04:42:00 +0530 Subject: [PATCH 06/17] 8.8 --- gradle/wrapper/gradle-wrapper.jar | Bin 43452 -> 43453 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 8b437bdeab6ec76716a39711cdc491c5ac03c0b4..e6441136f3d4ba8a0da8d277868979cfbc8ad796 100644 GIT binary patch delta 16 YcmdmUnQ8B3rVUaFjJ%tr5*B#^06mWebN~PV delta 14 WcmdmcnQ6~urVUaFo23&Lc>(}5r3PmJ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b82aa23a4f..a4413138c9 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.7-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index 1aa94a4269..b740cf1339 100755 --- a/gradlew +++ b/gradlew @@ -55,7 +55,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/. From 911549ca34a3eb0e0835469424538858734ecddb Mon Sep 17 00:00:00 2001 From: Tanish Azad Date: Fri, 7 Jun 2024 04:50:34 +0530 Subject: [PATCH 07/17] workflow --- .github/workflows/basic-checks.yml | 2 +- .github/workflows/code-analysis.yml | 2 +- .github/workflows/docker-publish.yaml | 2 +- .github/workflows/docker-verify.yaml | 2 +- .github/workflows/releases.yaml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/basic-checks.yml b/.github/workflows/basic-checks.yml index 863a69e0da..b8a789bda1 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: 22 jobs: spotless: diff --git a/.github/workflows/code-analysis.yml b/.github/workflows/code-analysis.yml index ba425f7d88..9563d9dff6 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: 22 jobs: sonar: diff --git a/.github/workflows/docker-publish.yaml b/.github/workflows/docker-publish.yaml index a539fba120..e01c40486e 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: 22 jobs: docker: diff --git a/.github/workflows/docker-verify.yaml b/.github/workflows/docker-verify.yaml index c23528646d..bde26ae12c 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: 22 jobs: docker: diff --git a/.github/workflows/releases.yaml b/.github/workflows/releases.yaml index 1f4dfa40fa..280596cfb9 100644 --- a/.github/workflows/releases.yaml +++ b/.github/workflows/releases.yaml @@ -10,7 +10,7 @@ defaults: shell: bash env: - JAVA_VERSION: 21 + JAVA_VERSION: 22 jobs: From 30d772bd04852955ca7899d77f15907b71847a0c Mon Sep 17 00:00:00 2001 From: Tanish Azad Date: Fri, 7 Jun 2024 05:00:32 +0530 Subject: [PATCH 08/17] no ignored will get ignored --- .../org/togetherjava/tjbot/features/github/GitHubReference.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 fa2041db21..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 @@ -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); From 768e79923010af4b42b8015bac45476c7a46a15a Mon Sep 17 00:00:00 2001 From: Tanish Azad Date: Tue, 25 Jun 2024 02:32:22 +0530 Subject: [PATCH 09/17] upgraded docker build java version --- application/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/build.gradle b/application/build.gradle index e4b1b27ae8..9dc231e48f 100644 --- a/application/build.gradle +++ b/application/build.gradle @@ -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:22' to { image = outputImage auth { From 5a71ea03bd33f9aa7e95e45eb4b8b89896e2b49b Mon Sep 17 00:00:00 2001 From: Tanish Azad Date: Tue, 25 Jun 2024 02:35:51 +0530 Subject: [PATCH 10/17] upgrade solarlint --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index cf2817a61b..a9ab67863d 100644 --- a/build.gradle +++ b/build.gradle @@ -1,8 +1,8 @@ -plugins { +plugins { id 'java' id "com.diffplug.spotless" version "7.0.3" id "org.sonarqube" version "6.2.0.5505" - id "name.remal.sonarlint" version "4.2.2" + id "name.remal.sonarlint" version "4.2.4" } group 'org.togetherjava' From d317275c0837edb7dd37e5bb1428d4d8ef245566 Mon Sep 17 00:00:00 2001 From: Tanish Azad Date: Sun, 1 Sep 2024 14:09:40 +0530 Subject: [PATCH 11/17] . --- application/build.gradle | 2 +- build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/application/build.gradle b/application/build.gradle index 9dc231e48f..65d30e2bc7 100644 --- a/application/build.gradle +++ b/application/build.gradle @@ -1,4 +1,4 @@ -buildscript { +buildscript { dependencies { classpath 'org.xerial:sqlite-jdbc:3.50.1.0' } diff --git a/build.gradle b/build.gradle index a9ab67863d..c89aae15f2 100644 --- a/build.gradle +++ b/build.gradle @@ -2,7 +2,7 @@ id 'java' id "com.diffplug.spotless" version "7.0.3" id "org.sonarqube" version "6.2.0.5505" - id "name.remal.sonarlint" version "4.2.4" + id "name.remal.sonarlint" version "4.2.8" } group 'org.togetherjava' From ebe65e6416b77ce038e2613483de9b38ccaf88dd Mon Sep 17 00:00:00 2001 From: Tanish Azad Date: Sun, 1 Sep 2024 14:21:21 +0530 Subject: [PATCH 12/17] . --- build.gradle | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index c89aae15f2..31bda15471 100644 --- a/build.gradle +++ b/build.gradle @@ -62,9 +62,8 @@ subprojects { // sonarlint configuration, not to be confused with sonarqube/sonarcloud. sonarLint { rules { - disable( - 'java:S1135' // Disables "Track uses of "TO-DO" tags" rule. - ) + disable('java:S1135') // Disables "Track uses of "TO-DO" tags" rule. + disable('java:S00117') } } From 2ad738bb78cabba6009c9650028184e6f5d268c8 Mon Sep 17 00:00:00 2001 From: Tanish Azad Date: Sun, 1 Sep 2024 14:25:43 +0530 Subject: [PATCH 13/17] . --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 31bda15471..575a9b6f30 100644 --- a/build.gradle +++ b/build.gradle @@ -63,7 +63,7 @@ subprojects { sonarLint { rules { disable('java:S1135') // Disables "Track uses of "TO-DO" tags" rule. - disable('java:S00117') + disable('java:S1190') } } From e6b0646e8a963db5621e78dcd60f651404dc35eb Mon Sep 17 00:00:00 2001 From: Tanish Azad Date: Sun, 1 Sep 2024 14:32:06 +0530 Subject: [PATCH 14/17] . --- build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle b/build.gradle index 575a9b6f30..406d8513a4 100644 --- a/build.gradle +++ b/build.gradle @@ -64,6 +64,7 @@ subprojects { rules { disable('java:S1135') // Disables "Track uses of "TO-DO" tags" rule. disable('java:S1190') + disable('java:S117') } } From 4f13b70014707fe87fcb90b75fc3e6dcf0bbe1a8 Mon Sep 17 00:00:00 2001 From: Zabuzard Date: Tue, 1 Jul 2025 10:21:42 +0200 Subject: [PATCH 15/17] for some reasons those files had unprintable characters at the beginning --- application/build.gradle | 2 +- .../org/togetherjava/tjbot/features/help/HelpSystemHelper.java | 2 +- build.gradle | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/application/build.gradle b/application/build.gradle index 65d30e2bc7..9dc231e48f 100644 --- a/application/build.gradle +++ b/application/build.gradle @@ -1,4 +1,4 @@ -buildscript { +buildscript { dependencies { classpath 'org.xerial:sqlite-jdbc:3.50.1.0' } 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 51593b2700..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 @@ -1,4 +1,4 @@ -package org.togetherjava.tjbot.features.help; +package org.togetherjava.tjbot.features.help; import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.entities.Guild; diff --git a/build.gradle b/build.gradle index 406d8513a4..8b8efe0e68 100644 --- a/build.gradle +++ b/build.gradle @@ -1,4 +1,4 @@ -plugins { +plugins { id 'java' id "com.diffplug.spotless" version "7.0.3" id "org.sonarqube" version "6.2.0.5505" From 896de0ec1ad2351e46b25d39ce702666437c3648 Mon Sep 17 00:00:00 2001 From: Zabuzard Date: Tue, 1 Jul 2025 11:13:04 +0200 Subject: [PATCH 16/17] Java 24 and other version bumps --- .github/workflows/basic-checks.yml | 2 +- .github/workflows/code-analysis.yml | 2 +- .github/workflows/docker-publish.yaml | 2 +- .github/workflows/docker-verify.yaml | 2 +- .github/workflows/releases.yaml | 2 +- README.md | 2 +- application/build.gradle | 4 ++-- .../features/SlashCommandAdapterTest.java | 1 - .../tjbot/jda/ButtonClickEventBuilder.java | 2 -- build.gradle | 21 ++++++++++-------- gradle/wrapper/gradle-wrapper.jar | Bin 43453 -> 43764 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 10 +++++---- gradlew.bat | 6 +++-- 14 files changed, 31 insertions(+), 27 deletions(-) diff --git a/.github/workflows/basic-checks.yml b/.github/workflows/basic-checks.yml index b8a789bda1..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: 22 + JAVA_VERSION: 24 jobs: spotless: diff --git a/.github/workflows/code-analysis.yml b/.github/workflows/code-analysis.yml index 9563d9dff6..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: 22 + JAVA_VERSION: 24 jobs: sonar: diff --git a/.github/workflows/docker-publish.yaml b/.github/workflows/docker-publish.yaml index e01c40486e..edd933f799 100644 --- a/.github/workflows/docker-publish.yaml +++ b/.github/workflows/docker-publish.yaml @@ -7,7 +7,7 @@ on: - 'master' env: - JAVA_VERSION: 22 + JAVA_VERSION: 24 jobs: docker: diff --git a/.github/workflows/docker-verify.yaml b/.github/workflows/docker-verify.yaml index bde26ae12c..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: 22 + JAVA_VERSION: 24 jobs: docker: diff --git a/.github/workflows/releases.yaml b/.github/workflows/releases.yaml index 280596cfb9..fbd106930b 100644 --- a/.github/workflows/releases.yaml +++ b/.github/workflows/releases.yaml @@ -10,7 +10,7 @@ defaults: shell: bash env: - JAVA_VERSION: 22 + JAVA_VERSION: 24 jobs: diff --git a/README.md b/README.md index 8223d3d0e8..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-22-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 9dc231e48f..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:22' + from.image = 'eclipse-temurin:24' to { image = outputImage auth { 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 8b8efe0e68..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.8" + 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,16 +58,16 @@ subprojects { java { toolchain { // Nails the Java-Version of every Subproject - languageVersion = JavaLanguageVersion.of(22) + languageVersion = JavaLanguageVersion.of(24) } } // sonarlint configuration, not to be confused with sonarqube/sonarcloud. sonarLint { rules { - disable('java:S1135') // Disables "Track uses of "TO-DO" tags" rule. - disable('java:S1190') - disable('java:S117') + disable( + '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 e6441136f3d4ba8a0da8d277868979cfbc8ad796..1b33c55baabb587c669f562ae36f953de2481846 100644 GIT binary patch delta 35073 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 delta 34912 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

Gn4F+B~IivciU9^t0j-Mgao3 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 dDuazZG^u*-) zCV{{p$D*4m=Z;!QJ0C3EBfaUv#@3CmRgS-#a4+Uk9LtR(mzdSt-?*B-Q{Jgs!F;+_ zT&Jc~{N951OskjVtnWOLnfUacmSEkQ#fQojqa=HN?aN#ubFA){K&TrfoSnBphJ<43S zS5?OUrqPYpEqf;(zc;IIty0d`-n-Ke%PlArJt^DN>ZYW)ZS5z$Rnx=cxbM1#zPRNS1N0u>c z*gpBeTvyKAjdr#Uz%$J3C+p2~l9`-P6`=_1Y83#nAp`Kd5jfb*H#u;=%w#=&g~|Q% z1!N9S7n+#|tj#t98*^$X3S9)i3I*n?N+YghXJ9Z!QN%wvV7|W$;;Lx|1{)Ol%c4L- zlz|txtAK4ozLL`xMPZR7Sm6grRj@+Db&BXF9#sG|gMywm=IO1O01imHv3 zFjX9ri>su;HX}wK85k5$R0A&?fdtA5_Q_vX$jc(elo%M~QB>A-K~#2igOjH$d^80Z zC8#NjzZarXrcVZJJEF73z+ix4=7c`5N>TJt7>~rfl$^E}UAMlP2$P)vS26{cE?ONf_&Vd@-E2?PMU+S~pB diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a4413138c9..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.8-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 b740cf1339..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 +# ############################################################################## # @@ -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 25da30dbde..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 ########################################################################## @@ -68,11 +70,11 @@ 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 From 1ca420fe74e029ed67b19d50b007541ceceb78b9 Mon Sep 17 00:00:00 2001 From: Zabuzard Date: Tue, 1 Jul 2025 11:23:29 +0200 Subject: [PATCH 17/17] suppressed some false positive sonars see bug report for details: https://community.sonarsource.com/t/a-nullpointerexception-could-be-thrown-ofnullable-can-return-null/134892 --- .../tjbot/features/componentids/ComponentIdStore.java | 2 +- .../org/togetherjava/tjbot/features/help/HelpThreadCommand.java | 1 + .../togetherjava/tjbot/features/moderation/ReportCommand.java | 1 + .../tjbot/features/moderation/modmail/ModMailCommand.java | 1 + .../org/togetherjava/tjbot/features/utils/LinkPreviews.java | 1 + 5 files changed, 5 insertions(+), 1 deletion(-) 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/help/HelpThreadCommand.java b/application/src/main/java/org/togetherjava/tjbot/features/help/HelpThreadCommand.java index 9acd2d0fb4..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 @@ -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())) 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/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/utils/LinkPreviews.java b/application/src/main/java/org/togetherjava/tjbot/features/utils/LinkPreviews.java index 6b8e4a58f5..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 @@ -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"));