From 284869455b15bffa10e797a0580a1b792d8b614f Mon Sep 17 00:00:00 2001 From: Janis Date: Tue, 21 Apr 2026 11:06:14 +0200 Subject: [PATCH] refactor: change scala3-compiler dependency from implementation to compileOnly --- modules/api/build.gradle.kts | 2 +- modules/bot/build.gradle.kts | 2 +- modules/core/build.gradle.kts | 2 +- .../core/reachability-metadata.json | 27 +++++++++++++++++++ .../resources/{resources => }/application.yml | 1 + .../main/resources/{resources => }/import.sql | 0 .../nowchess/chess/config/JacksonConfig.scala | 8 +++++- .../chess/config/NativeReflectionConfig.scala | 23 ++++++++++++++++ .../chess/registry/GameRegistryImpl.scala | 5 ++-- .../chess/resource/GameResource.scala | 1 + modules/io/build.gradle.kts | 2 +- modules/rule/build.gradle.kts | 2 +- 12 files changed, 67 insertions(+), 8 deletions(-) create mode 100644 modules/core/src/main/resources/META-INF/native-image/de.nowchess/core/reachability-metadata.json rename modules/core/src/main/resources/{resources => }/application.yml (96%) rename modules/core/src/main/resources/{resources => }/import.sql (100%) create mode 100644 modules/core/src/main/scala/de/nowchess/chess/config/NativeReflectionConfig.scala diff --git a/modules/api/build.gradle.kts b/modules/api/build.gradle.kts index 934c6eb..311b187 100644 --- a/modules/api/build.gradle.kts +++ b/modules/api/build.gradle.kts @@ -34,7 +34,7 @@ configurations.scoverage { dependencies { - implementation("org.scala-lang:scala3-compiler_3") { + compileOnly("org.scala-lang:scala3-compiler_3") { version { strictly(versions["SCALA3"]!!) } diff --git a/modules/bot/build.gradle.kts b/modules/bot/build.gradle.kts index f861543..8041789 100644 --- a/modules/bot/build.gradle.kts +++ b/modules/bot/build.gradle.kts @@ -37,7 +37,7 @@ tasks.withType { dependencies { - implementation("org.scala-lang:scala3-compiler_3") { + compileOnly("org.scala-lang:scala3-compiler_3") { version { strictly(versions["SCALA3"]!!) } diff --git a/modules/core/build.gradle.kts b/modules/core/build.gradle.kts index 3e5df5e..a02a07c 100644 --- a/modules/core/build.gradle.kts +++ b/modules/core/build.gradle.kts @@ -36,7 +36,7 @@ val quarkusPlatformVersion: String by project dependencies { - implementation("org.scala-lang:scala3-compiler_3") { + compileOnly("org.scala-lang:scala3-compiler_3") { version { strictly(versions["SCALA3"]!!) } diff --git a/modules/core/src/main/resources/META-INF/native-image/de.nowchess/core/reachability-metadata.json b/modules/core/src/main/resources/META-INF/native-image/de.nowchess/core/reachability-metadata.json new file mode 100644 index 0000000..7245246 --- /dev/null +++ b/modules/core/src/main/resources/META-INF/native-image/de.nowchess/core/reachability-metadata.json @@ -0,0 +1,27 @@ +{ + "reflection": [ + { "type": "scala.Tuple1[]" }, + { "type": "scala.Tuple2[]" }, + { "type": "scala.Tuple3[]" }, + { "type": "scala.Tuple4[]" }, + { "type": "scala.Tuple5[]" }, + { "type": "scala.Tuple6[]" }, + { "type": "scala.Tuple7[]" }, + { "type": "scala.Tuple8[]" }, + { "type": "scala.Tuple9[]" }, + { "type": "scala.Tuple10[]" }, + { "type": "scala.Tuple11[]" }, + { "type": "scala.Tuple12[]" }, + { "type": "scala.Tuple13[]" }, + { "type": "scala.Tuple14[]" }, + { "type": "scala.Tuple15[]" }, + { "type": "scala.Tuple16[]" }, + { "type": "scala.Tuple17[]" }, + { "type": "scala.Tuple18[]" }, + { "type": "scala.Tuple19[]" }, + { "type": "scala.Tuple20[]" }, + { "type": "scala.Tuple21[]" }, + { "type": "scala.Tuple22[]" }, + { "type": "com.fasterxml.jackson.module.scala.introspect.PropertyDescriptor[]" } + ] +} diff --git a/modules/core/src/main/resources/resources/application.yml b/modules/core/src/main/resources/application.yml similarity index 96% rename from modules/core/src/main/resources/resources/application.yml rename to modules/core/src/main/resources/application.yml index 527a35f..0d92446 100644 --- a/modules/core/src/main/resources/resources/application.yml +++ b/modules/core/src/main/resources/application.yml @@ -1,2 +1,3 @@ greeting: message: "hello" + diff --git a/modules/core/src/main/resources/resources/import.sql b/modules/core/src/main/resources/import.sql similarity index 100% rename from modules/core/src/main/resources/resources/import.sql rename to modules/core/src/main/resources/import.sql diff --git a/modules/core/src/main/scala/de/nowchess/chess/config/JacksonConfig.scala b/modules/core/src/main/scala/de/nowchess/chess/config/JacksonConfig.scala index 188a328..b252cec 100644 --- a/modules/core/src/main/scala/de/nowchess/chess/config/JacksonConfig.scala +++ b/modules/core/src/main/scala/de/nowchess/chess/config/JacksonConfig.scala @@ -1,5 +1,6 @@ package de.nowchess.chess.config +import com.fasterxml.jackson.core.Version import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.scala.DefaultScalaModule import io.quarkus.jackson.ObjectMapperCustomizer @@ -8,4 +9,9 @@ import jakarta.inject.Singleton @Singleton class JacksonConfig extends ObjectMapperCustomizer: def customize(mapper: ObjectMapper): Unit = - mapper.registerModule(DefaultScalaModule) + mapper.registerModule(new DefaultScalaModule() { + override def version(): Version = + // scalafix:off DisableSyntax.null + new Version(2, 21, 1, null, "com.fasterxml.jackson.module", "jackson-module-scala") + // scalafix:on DisableSyntax.null + }) diff --git a/modules/core/src/main/scala/de/nowchess/chess/config/NativeReflectionConfig.scala b/modules/core/src/main/scala/de/nowchess/chess/config/NativeReflectionConfig.scala new file mode 100644 index 0000000..c8ce0fe --- /dev/null +++ b/modules/core/src/main/scala/de/nowchess/chess/config/NativeReflectionConfig.scala @@ -0,0 +1,23 @@ +package de.nowchess.chess.config + +import de.nowchess.api.dto.* +import io.quarkus.runtime.annotations.RegisterForReflection + +@RegisterForReflection( + targets = Array( + classOf[ApiErrorDto], + classOf[CreateGameRequestDto], + classOf[ErrorEventDto], + classOf[GameFullDto], + classOf[GameFullEventDto], + classOf[GameStateDto], + classOf[GameStateEventDto], + classOf[ImportFenRequestDto], + classOf[ImportPgnRequestDto], + classOf[LegalMoveDto], + classOf[LegalMovesResponseDto], + classOf[OkResponseDto], + classOf[PlayerInfoDto], + ), +) +class NativeReflectionConfig diff --git a/modules/core/src/main/scala/de/nowchess/chess/registry/GameRegistryImpl.scala b/modules/core/src/main/scala/de/nowchess/chess/registry/GameRegistryImpl.scala index 83dd98e..61668d4 100644 --- a/modules/core/src/main/scala/de/nowchess/chess/registry/GameRegistryImpl.scala +++ b/modules/core/src/main/scala/de/nowchess/chess/registry/GameRegistryImpl.scala @@ -1,12 +1,13 @@ package de.nowchess.chess.registry import jakarta.enterprise.context.ApplicationScoped +import java.security.SecureRandom import java.util.concurrent.ConcurrentHashMap -import scala.util.Random @ApplicationScoped class GameRegistryImpl extends GameRegistry: private val games = ConcurrentHashMap[String, GameEntry]() + private val rng = new SecureRandom() def store(entry: GameEntry): Unit = games.put(entry.gameId, entry) @@ -19,4 +20,4 @@ class GameRegistryImpl extends GameRegistry: def generateId(): String = val chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" - Iterator.continually(Random.nextInt(chars.length)).map(chars).take(8).mkString // NOSONAR + Iterator.continually(rng.nextInt(chars.length)).map(chars).take(8).mkString // NOSONAR diff --git a/modules/core/src/main/scala/de/nowchess/chess/resource/GameResource.scala b/modules/core/src/main/scala/de/nowchess/chess/resource/GameResource.scala index 0bb23b9..e8258bb 100644 --- a/modules/core/src/main/scala/de/nowchess/chess/resource/GameResource.scala +++ b/modules/core/src/main/scala/de/nowchess/chess/resource/GameResource.scala @@ -142,6 +142,7 @@ class GameResource: val black = playerInfoFrom(req.black, DefaultBlack) val entry = newEntry(GameContext.initial, white, black) registry.store(entry) + println(s"Created game ${entry.gameId}") created(toGameFullDto(entry)) @GET diff --git a/modules/io/build.gradle.kts b/modules/io/build.gradle.kts index 752ab28..84475e4 100644 --- a/modules/io/build.gradle.kts +++ b/modules/io/build.gradle.kts @@ -30,7 +30,7 @@ tasks.withType { dependencies { - implementation("org.scala-lang:scala3-compiler_3") { + compileOnly("org.scala-lang:scala3-compiler_3") { version { strictly(versions["SCALA3"]!!) } diff --git a/modules/rule/build.gradle.kts b/modules/rule/build.gradle.kts index 07a8017..093fe12 100644 --- a/modules/rule/build.gradle.kts +++ b/modules/rule/build.gradle.kts @@ -27,7 +27,7 @@ tasks.withType { dependencies { - implementation("org.scala-lang:scala3-compiler_3") { + compileOnly("org.scala-lang:scala3-compiler_3") { version { strictly(versions["SCALA3"]!!) }