From 2dc84eab00c82de0ddb0ebaabc2d1493a2987f81 Mon Sep 17 00:00:00 2001
From: Kai Reinhard <k.reinhard@micromata.de>
Date: Sun, 16 Feb 2025 16:21:23 +0000
Subject: [PATCH] New gradle version, new jars, ...

---
 borgbutler-core/src/main/java/de/micromata/borgbutler/cache/JCSCache.java                               |    4 
 borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/RequestLog.kt                     |    6 
 borgbutler-server/src/main/java/de/micromata/borgbutler/server/BorgInstallation.java                    |   32 +++--
 borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/user/UserFilter.kt                     |    2 
 borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/FilesystemBrowserRest.kt          |    2 
 gradle/wrapper/gradle-wrapper.properties                                                                |    2 
 borgbutler-server/build.gradle.kts                                                                      |   69 +++++++++++++
 /dev/null                                                                                               |   79 ---------------
 build.gradle.kts                                                                                        |   43 ++++++++
 borgbutler-core/build.gradle.kts                                                                        |   35 +++++++
 borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/GlobalDefaultExceptionHandling.kt |    2 
 borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/BorgButlerApplication.kt               |    2 
 borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/JacksonConfig.kt                  |    2 
 borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/VersionRest.kt                    |    2 
 borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/RestUtils.kt                      |    4 
 borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java                            |    4 
 borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/LoggingRest.kt                    |    2 
 borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/I18nRest.kt                       |    2 
 18 files changed, 184 insertions(+), 110 deletions(-)

diff --git a/borgbutler-core/build.gradle b/borgbutler-core/build.gradle
deleted file mode 100644
index e16426a..0000000
--- a/borgbutler-core/build.gradle
+++ /dev/null
@@ -1,42 +0,0 @@
-plugins {
-    id 'java'
-}
-
-description = 'borgbutler-core'
-
-dependencies {
-    implementation group: 'commons-io', name: 'commons-io', version: '2.8.0'
-    implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.8.1'
-    implementation group: 'org.apache.commons', name: 'commons-exec', version: '1.3'
-    implementation group: 'org.apache.commons', name: 'commons-collections4', version: '4.2'
-    implementation group: 'org.apache.commons', name: 'commons-compress', version: '1.20'
-    implementation group: 'org.apache.commons', name: 'commons-jcs-core', version: '2.2.1'
-    // https://mvnrepository.com/artifact/com.esotericsoftware/kryo
-    implementation group: 'com.esotericsoftware', name: 'kryo', version: '5.1.0'
-    // Serialization (faster than Java built-in)
-    implementation 'io.github.microutils:kotlin-logging-jvm:2.0.6'
-
-    implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.12.3'
-    implementation group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.12.3'
-    // https://mvnrepository.com/artifact/com.fasterxml.jackson.datatype/jackson-datatype-jsr310
-    implementation group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-yaml', version: '2.12.3'
-
-
-    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
-}
-
-repositories {
-    mavenCentral()
-    jcenter()
-}
-
-sourceSets {
-    main.java.srcDirs += 'src/main/java'
-    main.java.srcDirs += 'src/main/kotlin'
-}
-
-test {
-    // set heap size for the test JVM(s)
-    minHeapSize = "128m"
-    maxHeapSize = "1500m"
-}
diff --git a/borgbutler-core/build.gradle.kts b/borgbutler-core/build.gradle.kts
new file mode 100644
index 0000000..0476bdd
--- /dev/null
+++ b/borgbutler-core/build.gradle.kts
@@ -0,0 +1,35 @@
+plugins {
+    java
+}
+
+description = "borgbutler-core"
+
+repositories {
+    mavenCentral()
+}
+
+dependencies {
+    implementation("commons-io:commons-io:2.18.0")
+    implementation("org.apache.commons:commons-lang3:3.17.0")
+    implementation("org.apache.commons:commons-exec:1.4.0")
+    implementation("org.apache.commons:commons-collections4:4.4")
+    implementation("org.apache.commons:commons-compress:1.27.1")
+    implementation("org.apache.commons:commons-jcs3-core:3.2.1")
+    implementation("com.esotericsoftware:kryo:5.1.0")
+    implementation("io.github.microutils:kotlin-logging-jvm:3.0.5")
+    implementation("com.fasterxml.jackson.core:jackson-databind:2.18.2")
+    implementation("com.fasterxml.jackson.core:jackson-annotations:2.18.2")
+    implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.18.2")
+    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
+}
+
+sourceSets {
+    main {
+        java.srcDirs("src/main/java", "src/main/kotlin")
+    }
+}
+
+tasks.test {
+    minHeapSize = "128m"
+    maxHeapSize = "1500m"
+}
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java
index 9ed4852..902daae 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/ButlerCache.java
@@ -11,8 +11,8 @@
 import de.micromata.borgbutler.data.Repository;
 import de.micromata.borgbutler.json.borg.BorgFilesystemItem;
 import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.jcs.JCS;
-import org.apache.commons.jcs.access.CacheAccess;
+import org.apache.commons.jcs3.JCS;
+import org.apache.commons.jcs3.access.CacheAccess;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/JCSCache.java b/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/JCSCache.java
index 7cea260..5766dcc 100644
--- a/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/JCSCache.java
+++ b/borgbutler-core/src/main/java/de/micromata/borgbutler/cache/JCSCache.java
@@ -1,8 +1,8 @@
 package de.micromata.borgbutler.cache;
 
 import de.micromata.borgbutler.config.ConfigurationHandler;
-import org.apache.commons.jcs.JCS;
-import org.apache.commons.jcs.access.CacheAccess;
+import org.apache.commons.jcs3.JCS;
+import org.apache.commons.jcs3.access.CacheAccess;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/borgbutler-server/build.gradle b/borgbutler-server/build.gradle
deleted file mode 100644
index ea18ddc..0000000
--- a/borgbutler-server/build.gradle
+++ /dev/null
@@ -1,63 +0,0 @@
-plugins {
-    id 'java'
-}
-
-description = 'borgbutler-server'
-
-dependencies {
-    implementation project(':borgbutler-core')
-    implementation project(':borgbutler-webapp')
-    // https://mvnrepository.com/artifact/org.apache.commons/commons-text
-    implementation group: 'org.apache.commons', name: 'commons-text', version: '1.6'
-    implementation group: 'org.apache.commons', name: 'commons-collections4', version: '4.2'
-    implementation group: 'org.apache.commons', name: 'commons-compress', version: '1.18'
-    implementation group: 'commons-io', name: 'commons-io', version: '2.8.0'
-
-    // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web
-    implementation group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.4.5'
-    implementation group: 'com.fasterxml.jackson.module', name: 'jackson-module-kotlin', version: '2.12.3'
-
-    implementation 'io.github.microutils:kotlin-logging-jvm:2.0.6'
-
-    // https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient
-    implementation group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.13'
-
-    // https://mvnrepository.com/artifact/commons-cli/commons-cli
-    implementation group: 'commons-cli', name: 'commons-cli', version: '1.4'
-    testImplementation group: 'org.mockito', name: 'mockito-core', version: '2.21.0'
-    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
-}
-
-repositories {
-    mavenCentral()
-    jcenter()
-}
-
-sourceSets {
-    main.java.srcDirs += 'src/main/java'
-    main.java.srcDirs += 'src/main/kotlin'
-}
-
-apply plugin: 'application'
-mainClassName = 'de.micromata.borgbutler.server.BorgButlerApplication'
-
-apply plugin: 'distribution'
-
-task createVersionProperties(dependsOn: processResources) {
-    doLast {
-        new File("$buildDir/resources/main/version.properties").withWriter { w ->
-            Properties p = new Properties()
-            p['version'] = project.version.toString()
-            p['name'] = project.name
-            p['build.date.millis'] = '' + System.currentTimeMillis()
-            p.store w, null
-        }
-    }
-}
-
-classes {
-    dependsOn createVersionProperties
-}
-
-distZip.dependsOn ':borgbutler-webapp:packageWebApp'
-task(dist).dependsOn distZip
diff --git a/borgbutler-server/build.gradle.kts b/borgbutler-server/build.gradle.kts
new file mode 100644
index 0000000..94a99f6
--- /dev/null
+++ b/borgbutler-server/build.gradle.kts
@@ -0,0 +1,69 @@
+import org.gradle.api.tasks.bundling.Zip
+import java.util.Properties
+
+plugins {
+    java
+    application
+    distribution
+    id("org.springframework.boot") version "3.4.2" // Füge das Spring Boot Plugin hinzu
+    id("io.spring.dependency-management") version "1.1.4" // Dependency Management Plugin für Spring Boot
+}
+
+description = "borgbutler-server"
+
+repositories {
+    mavenCentral()
+}
+
+dependencies {
+    implementation(project(":borgbutler-core"))
+    implementation(project(":borgbutler-webapp"))
+    implementation("org.apache.commons:commons-text:1.13.0")
+    implementation("org.apache.commons:commons-collections4:4.4")
+    implementation("org.apache.commons:commons-compress:1.27.1")
+    implementation("commons-io:commons-io:2.18.0")
+    implementation("org.springframework:spring-core:6.2.3")
+
+    implementation("org.springframework.boot:spring-boot-starter-web:3.4.2")
+    implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.18.2")
+    implementation("io.github.microutils:kotlin-logging-jvm:2.0.6")
+    implementation("org.apache.httpcomponents.client5:httpclient5:5.4.2")
+    implementation("commons-cli:commons-cli:1.9.0")
+    testImplementation("org.mockito:mockito-core:5.15.2")
+    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
+}
+
+sourceSets {
+    main {
+        java.srcDirs("src/main/java", "src/main/kotlin")
+    }
+}
+
+application {
+    mainClass.set("de.micromata.borgbutler.server.BorgButlerApplication")
+}
+
+tasks.register("createVersionProperties") {
+    dependsOn(tasks.processResources)
+    doLast {
+        val versionFile = file("$buildDir/resources/main/version.properties")
+        val properties = Properties().apply {
+            setProperty("version", project.version.toString())
+            setProperty("name", project.name)
+            setProperty("build.date.millis", System.currentTimeMillis().toString())
+        }
+        versionFile.writer().use { properties.store(it, null) }
+    }
+}
+
+tasks.classes {
+    dependsOn(tasks.named("createVersionProperties"))
+}
+
+tasks.named("distZip", Zip::class) {
+    dependsOn(":borgbutler-webapp:packageWebApp")
+}
+
+tasks.register("dist") {
+    dependsOn(tasks.named("distZip"))
+}
diff --git a/borgbutler-server/src/main/java/de/micromata/borgbutler/server/BorgInstallation.java b/borgbutler-server/src/main/java/de/micromata/borgbutler/server/BorgInstallation.java
index 4516747..49bc4f0 100644
--- a/borgbutler-server/src/main/java/de/micromata/borgbutler/server/BorgInstallation.java
+++ b/borgbutler-server/src/main/java/de/micromata/borgbutler/server/BorgInstallation.java
@@ -5,18 +5,19 @@
 import de.micromata.borgbutler.config.ConfigurationHandler;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.config.CookieSpecs;
-import org.apache.http.client.config.RequestConfig;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClientBuilder;
-import org.apache.http.impl.client.HttpClients;
+import org.apache.hc.client5.http.classic.methods.HttpGet;
+import org.apache.hc.client5.http.config.RequestConfig;
+import org.apache.hc.client5.http.cookie.StandardCookieSpec;
+import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
+import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
+import org.apache.hc.client5.http.impl.classic.HttpClients;
+import org.apache.hc.core5.http.ClassicHttpResponse;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStream;
 
 public class BorgInstallation {
     private Logger log = LoggerFactory.getLogger(BorgInstallation.class);
@@ -173,17 +174,22 @@
         log.info("Trying to download borg binary '" + binary[0] + "' (" + binary[1] + ") from url: " + url + "...");
         HttpClientBuilder builder = HttpClients.custom()
                 .setDefaultRequestConfig(RequestConfig.custom()
-                        .setCookieSpec(CookieSpecs.STANDARD).build());
+                        .setCookieSpec(StandardCookieSpec.STRICT).build());
+
         try (CloseableHttpClient httpClient = builder.build()) {
             HttpGet getRequest = new HttpGet(url);
+            try (ClassicHttpResponse response = (ClassicHttpResponse) httpClient.execute(getRequest);
+                 InputStream inputStream = response.getEntity().getContent()) {
 
-            HttpResponse response = httpClient.execute(getRequest);
+                int statusCode = response.getCode();
 
-            if (response.getStatusLine().getStatusCode() != 200) {
-                throw new RuntimeException("Failed : HTTP error code : "
-                        + response.getStatusLine().getStatusCode());
+                if (statusCode != 200) {
+                    throw new RuntimeException("Failed : HTTP error code : " + statusCode);
+                }
+
+                FileUtils.copyInputStreamToFile(inputStream, file);
             }
-            FileUtils.copyInputStreamToFile(response.getEntity().getContent(), file);
+
             log.info("Downloaded: " + file.getAbsolutePath());
             file.setExecutable(true, false);
             return file;
diff --git a/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/BorgButlerApplication.kt b/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/BorgButlerApplication.kt
index 0e99edd..2b6aa87 100644
--- a/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/BorgButlerApplication.kt
+++ b/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/BorgButlerApplication.kt
@@ -22,7 +22,7 @@
 import java.text.DateFormat
 import java.text.SimpleDateFormat
 import java.util.*
-import javax.annotation.PreDestroy
+import jakarta.annotation.PreDestroy
 
 private val log = KotlinLogging.logger {}
 
diff --git a/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/FilesystemBrowserRest.kt b/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/FilesystemBrowserRest.kt
index 8dc708c..dde6f67 100644
--- a/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/FilesystemBrowserRest.kt
+++ b/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/FilesystemBrowserRest.kt
@@ -11,7 +11,7 @@
 import java.awt.Color
 import java.awt.FileDialog
 import java.io.File
-import javax.servlet.http.HttpServletRequest
+import jakarta.servlet.http.HttpServletRequest
 import javax.swing.JFileChooser
 import javax.swing.JFrame
 import javax.swing.JLabel
diff --git a/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/GlobalDefaultExceptionHandling.kt b/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/GlobalDefaultExceptionHandling.kt
index 4681483..65cd6ad 100644
--- a/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/GlobalDefaultExceptionHandling.kt
+++ b/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/GlobalDefaultExceptionHandling.kt
@@ -30,7 +30,7 @@
 import org.springframework.web.bind.annotation.ControllerAdvice
 import org.springframework.web.bind.annotation.ExceptionHandler
 import org.springframework.web.bind.annotation.ResponseStatus
-import javax.servlet.http.HttpServletRequest
+import jakarta.servlet.http.HttpServletRequest
 
 private val log = KotlinLogging.logger {}
 
diff --git a/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/I18nRest.kt b/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/I18nRest.kt
index 6ab0e6c..65b7e84 100644
--- a/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/I18nRest.kt
+++ b/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/I18nRest.kt
@@ -8,7 +8,7 @@
 import org.springframework.web.bind.annotation.RequestParam
 import org.springframework.web.bind.annotation.RestController
 import java.util.*
-import javax.servlet.http.HttpServletRequest
+import jakarta.servlet.http.HttpServletRequest
 
 @RestController
 @RequestMapping("/rest/i18n")
diff --git a/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/JacksonConfig.kt b/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/JacksonConfig.kt
index f6726a9..8f80ea4 100644
--- a/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/JacksonConfig.kt
+++ b/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/JacksonConfig.kt
@@ -22,7 +22,7 @@
             return it
         }
         val mapper = ObjectMapper()
-        mapper.registerModule(KotlinModule())
+        mapper.registerModule((KotlinModule.Builder().build()))
         mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true)
         mapper.configure(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES, false)
         val failOnUnknownJsonProperties = RunningMode.runningInIDE
diff --git a/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/LoggingRest.kt b/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/LoggingRest.kt
index fa2a56e..5e0da0e 100644
--- a/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/LoggingRest.kt
+++ b/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/LoggingRest.kt
@@ -9,7 +9,7 @@
 import org.springframework.web.bind.annotation.RequestMapping
 import org.springframework.web.bind.annotation.RequestParam
 import org.springframework.web.bind.annotation.RestController
-import javax.servlet.http.HttpServletRequest
+import jakarta.servlet.http.HttpServletRequest
 
 private val log = KotlinLogging.logger {}
 
diff --git a/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/RequestLog.kt b/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/RequestLog.kt
index 4a2bb7f..9d68d24 100644
--- a/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/RequestLog.kt
+++ b/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/RequestLog.kt
@@ -26,9 +26,9 @@
 import de.micromata.borgbutler.json.JsonUtils
 import java.security.Principal
 import java.util.*
-import javax.servlet.http.Cookie
-import javax.servlet.http.HttpServletRequest
-import javax.servlet.http.Part
+import jakarta.servlet.http.Cookie
+import jakarta.servlet.http.HttpServletRequest
+import jakarta.servlet.http.Part
 
 /**
  * Helper class for debugging requests. Converts a given request to json.
diff --git a/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/RestUtils.kt b/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/RestUtils.kt
index f1c4e56..270eee5 100644
--- a/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/RestUtils.kt
+++ b/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/RestUtils.kt
@@ -14,8 +14,8 @@
 import java.net.InetAddress
 import java.net.UnknownHostException
 import java.util.*
-import javax.servlet.ServletRequest
-import javax.servlet.http.HttpServletRequest
+import jakarta.servlet.ServletRequest
+import jakarta.servlet.http.HttpServletRequest
 
 object RestUtils {
     /**
diff --git a/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/VersionRest.kt b/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/VersionRest.kt
index 548bbdd..c8aa80a 100644
--- a/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/VersionRest.kt
+++ b/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/rest/VersionRest.kt
@@ -8,7 +8,7 @@
 import org.springframework.web.bind.annotation.RequestMapping
 import org.springframework.web.bind.annotation.RestController
 import java.util.*
-import javax.servlet.http.HttpServletRequest
+import jakarta.servlet.http.HttpServletRequest
 
 @RestController
 @RequestMapping("/rest")
diff --git a/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/user/UserFilter.kt b/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/user/UserFilter.kt
index b7ea64c..51acd51 100644
--- a/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/user/UserFilter.kt
+++ b/borgbutler-server/src/main/kotlin/de/micromata/borgbutler/server/user/UserFilter.kt
@@ -4,7 +4,7 @@
 import org.slf4j.LoggerFactory
 import org.springframework.stereotype.Component
 import java.io.IOException
-import javax.servlet.*
+import jakarta.servlet.*
 
 /**
  * Ensuring the user data inside request threads. For now, it's only a simple implementation (no login required).
diff --git a/build.gradle b/build.gradle
deleted file mode 100644
index 69b94f2..0000000
--- a/build.gradle
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * This file was generated by the Gradle 'init' task.
- *
- * This generated file contains a sample Java project to get you started.
- * For more details take a look at the Java Quickstart chapter in the Gradle
- * user guide available at https://docs.gradle.org/5.0/userguide/tutorial_java_projects.html
- */
-
-plugins {
-    id "org.jetbrains.kotlin.jvm" version "1.4.32" apply false
-}
-
-allprojects {
-    group = 'de.micromata.borgbutler'
-    version = '0.7'
-}
-
-subprojects {
-    apply plugin: 'java'
-    apply plugin: 'org.jetbrains.kotlin.jvm'
-    sourceCompatibility = 9 // Needed: since 1.9 i18n properties in UTF-8 format.
-    targetCompatibility = 9
-
-    tasks.withType(JavaCompile) {
-        options.compilerArgs << '-Xlint:unchecked'
-        options.deprecation = true
-        options.encoding = 'UTF-8'
-    }
-
-    repositories {
-        jcenter()
-        maven { url "https://repo.maven.apache.org/maven2" }
-        maven { url "https://maven.ej-technologies.com/repository" }
-    }
-
-    dependencies {
-        testImplementation(
-                'org.junit.jupiter:junit-jupiter-api:5.3.0'
-        )
-        testRuntimeOnly(
-                'org.junit.jupiter:junit-jupiter-engine:5.3.0',
-                'org.junit.vintage:junit-vintage-engine:5.3.0'
-        )
-    }
-
-    test {
-        useJUnitPlatform()
-    }
-}
-
-wrapper {
-    gradleVersion = '6.8.3'
-}
-//buildscript {
-//    ext.kotlin_version = '1.4.32-release-371'
-//    repositories {
-//        mavenCentral()
-//    }
-//    dependencies {
-//        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
-//    }
-//}
-//apply plugin: 'kotlin'
-//repositories {
-//    mavenCentral()
-//}
-//dependencies {
-//    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
-//}
-//compileKotlin {
-//    kotlinOptions {
-//        jvmTarget = "1.8"
-//    }
-//}
-//compileTestKotlin {
-//    kotlinOptions {
-//        jvmTarget = "1.8"
-//    }
-//}
diff --git a/build.gradle.kts b/build.gradle.kts
new file mode 100644
index 0000000..4b4c461
--- /dev/null
+++ b/build.gradle.kts
@@ -0,0 +1,43 @@
+import org.gradle.api.JavaVersion
+import org.gradle.api.tasks.testing.Test
+import org.gradle.jvm.toolchain.JavaLanguageVersion
+
+plugins {
+    kotlin("jvm") version "1.8.22" apply false
+}
+
+allprojects {
+    group = "de.micromata.borgbutler"
+    version = "0.8"
+}
+
+subprojects {
+    apply(plugin = "java")
+    apply(plugin = "org.jetbrains.kotlin.jvm")
+
+    tasks.withType<JavaCompile> {
+        options.compilerArgs.add("-Xlint:unchecked")
+        options.isDeprecation = true
+        options.encoding = "UTF-8"
+    }
+
+    repositories {
+        mavenCentral()
+        maven("https://maven.ej-technologies.com/repository")
+    }
+
+    dependencies {
+        add("testImplementation", "org.junit.jupiter:junit-jupiter-api:5.11.4")
+        add("testRuntimeOnly", "org.junit.jupiter:junit-jupiter-engine:5.11.4")
+        add("testRuntimeOnly", "org.junit.vintage:junit-vintage-engine:5.11.4")
+    }
+
+    tasks.named<Test>("test") {
+        useJUnitPlatform()
+    }
+}
+
+// Gradle Wrapper Task für Version 8.0
+tasks.named<Wrapper>("wrapper") {
+    gradleVersion = "8.0"
+}
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 442d913..f8ea01e 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-all.zip
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists

--
Gitblit v1.10.0