diff --git a/build.gradle.kts b/build.gradle.kts index 9d9447ff..cfc7112f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,7 +8,7 @@ val koin_version: String by project plugins { kotlin("jvm") version "1.8.10" id("io.ktor.plugin") version "2.2.4" - id("org.graalvm.buildtools.native") version "0.9.11" + id("org.graalvm.buildtools.native") version "0.9.21" // id("org.jetbrains.kotlin.plugin.serialization") version "1.8.10" } @@ -104,19 +104,22 @@ graalvmNative { named("main") { fallback.set(false) verbose.set(true) - + agent{ + enabled.set(false) + } buildArgs.add("--initialize-at-build-time=io.ktor,kotlin,kotlinx") - buildArgs.add("--trace-class-initialization=ch.qos.logback.classic.Logger") - buildArgs.add("--trace-object-instantiation=ch.qos.logback.core.AsyncAppenderBase"+"$"+"Worker") - buildArgs.add("--trace-object-instantiation=ch.qos.logback.classic.Logger") +// buildArgs.add("--trace-class-initialization=ch.qos.logback.classic.Logger") +// buildArgs.add("--trace-object-instantiation=ch.qos.logback.core.AsyncAppenderBase"+"$"+"Worker") +// buildArgs.add("--trace-object-instantiation=ch.qos.logback.classic.Logger") buildArgs.add("--initialize-at-build-time=org.slf4j.LoggerFactory,ch.qos.logback") - buildArgs.add("--trace-object-instantiation=kotlinx.coroutines.channels.ArrayChannel") +// buildArgs.add("--trace-object-instantiation=kotlinx.coroutines.channels.ArrayChannel") buildArgs.add("--initialize-at-build-time=kotlinx.coroutines.channels.ArrayChannel") buildArgs.add("-H:+InstallExitHandlers") buildArgs.add("-H:+ReportUnsupportedElementsAtRuntime") buildArgs.add("-H:+ReportExceptionStackTraces") + runtimeArgs.add("-config=$buildDir/resources/main/application-native.conf") imageName.set("graal-server") } } diff --git a/src/main/resources/META-INF/native-image/reflect-config.json b/src/main/resources/META-INF/native-image/reflect-config.json index c11cbd23..4d6b60e2 100644 --- a/src/main/resources/META-INF/native-image/reflect-config.json +++ b/src/main/resources/META-INF/native-image/reflect-config.json @@ -128,6 +128,12 @@ "name": "setPattern", "parameterTypes": [ ] + }, + { + "name": "setPattern", + "parameterTypes": [ + "java.lang.String" + ] } ] }, @@ -627,5 +633,728 @@ ] } ] + }, + { + "name": "dev.usbharu.hideout.domain.model.api.StatusForPost", + "allPublicMethods": true, + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allDeclaredConstructors": true + }, + { + "name": "dev.usbharu.hideout.domain.model.ap.Follow", + "allPublicMethods": true, + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allDeclaredConstructors": true + }, + { + "name": "dev.usbharu.hideout.EmptyKt", + "allDeclaredClasses": true, + "queryAllDeclaredMethods": true, + "queryAllPublicMethods": true, + "methods": [ + { + "name": "empty", + "parameterTypes": [ + "io.ktor.server.application.Application" + ] + } + ] + }, + { + "name": "dev.usbharu.hideout.domain.model.PostEntity", + "queryAllDeclaredMethods": true, + "allDeclaredFields": true, + "queryAllDeclaredConstructors": true, + "methods": [ + { + "name": "", + "parameterTypes": [ + "long", + "long", + "long", + "int" + ] + }, + { + "name": "", + "parameterTypes": [ + "long", + "long", + "long", + "int", + "int", + "kotlin.jvm.internal.DefaultConstructorMarker" + ] + }, + { + "name": "getCreatedAt", + "parameterTypes": [ + + ] + }, + { + "name": "getId", + "parameterTypes": [ + + ] + }, + { + "name": "getOverview", + "parameterTypes": [ + + ] + }, + { + "name": "getReplyId", + "parameterTypes": [ + + ] + }, + { + "name": "getRepostId", + "parameterTypes": [ + + ] + }, + { + "name": "getText", + "parameterTypes": [ + + ] + }, + { + "name": "getUrl", + "parameterTypes": [ + + ] + }, + { + "name": "getUserId", + "parameterTypes": [ + + ] + }, + { + "name": "getVisibility", + "parameterTypes": [ + + ] + } + ] + }, + { + "name": "dev.usbharu.hideout.domain.model.ap.Accept", + "queryAllDeclaredMethods": true, + "allDeclaredFields": true, + "queryAllDeclaredConstructors": true, + "methods": [ + { + "name": "", + "parameterTypes": [ + + ] + }, + { + "name": "", + "parameterTypes": [ + "dev.usbharu.hideout.domain.model.ap.Object" + ] + }, + { + "name": "getActor", + "parameterTypes": [ + + ] + }, + { + "name": "getObject", + "parameterTypes": [ + + ] + }, + { + "name": "setActor", + "parameterTypes": [ + + ] + }, + { + "name": "setObject", + "parameterTypes": [ + "dev.usbharu.hideout.domain.model.ap.Object" + ] + } + ] + }, + { + "name": "dev.usbharu.hideout.domain.model.ap.ContextDeserializer", + "methods": [ + { + "name": "", + "parameterTypes": [ + + ] + } + ] + }, + { + "name": "dev.usbharu.hideout.domain.model.ap.ContextSerializer", + "methods": [ + { + "name": "", + "parameterTypes": [ + + ] + } + ] + }, + { + "name": "dev.usbharu.hideout.domain.model.ap.Create", + "queryAllDeclaredMethods": true, + "allDeclaredFields": true, + "queryAllDeclaredConstructors": true, + "methods": [ + { + "name": "", + "parameterTypes": [ + + ] + }, + { + "name": "", + "parameterTypes": [ + "dev.usbharu.hideout.domain.model.ap.Object" + ] + }, + { + "name": "getObject", + "parameterTypes": [ + + ] + } + ] + }, + { + "name": "dev.usbharu.hideout.domain.model.ap.Follow", + "queryAllDeclaredMethods": true, + "allDeclaredFields": true, + "queryAllDeclaredConstructors": true, + "methods": [ + { + "name": "", + "parameterTypes": [ + + ] + }, + { + "name": "", + "parameterTypes": [ + + ] + }, + { + "name": "getActor", + "parameterTypes": [ + + ] + }, + { + "name": "getObject", + "parameterTypes": [ + + ] + }, + { + "name": "setActor", + "parameterTypes": [ + + ] + }, + { + "name": "setObject", + "parameterTypes": [ + + ] + } + ] + }, + { + "name": "dev.usbharu.hideout.domain.model.ap.Image", + "queryAllDeclaredMethods": true, + "allDeclaredFields": true, + "queryAllDeclaredConstructors": true, + "methods": [ + { + "name": "", + "parameterTypes": [ + + ] + }, + { + "name": "", + "parameterTypes": [ + + ] + } + ] + }, + { + "name": "dev.usbharu.hideout.domain.model.ap.JsonLd", + "queryAllDeclaredMethods": true, + "allDeclaredFields": true, + "queryAllDeclaredConstructors": true, + "methods": [ + { + "name": "", + "parameterTypes": [ + + ] + }, + { + "name": "getContext", + "parameterTypes": [ + + ] + }, + { + "name": "setContext", + "parameterTypes": [ + + ] + } + ] + }, + { + "name": "dev.usbharu.hideout.domain.model.ap.Key", + "queryAllDeclaredMethods": true, + "allDeclaredFields": true, + "queryAllDeclaredConstructors": true, + "methods": [ + { + "name": "", + "parameterTypes": [ + + ] + }, + { + "name": "", + "parameterTypes": [ + + ] + }, + { + "name": "getId", + "parameterTypes": [ + + ] + }, + { + "name": "getOwner", + "parameterTypes": [ + + ] + }, + { + "name": "getPublicKeyPem", + "parameterTypes": [ + + ] + }, + { + "name": "setId", + "parameterTypes": [ + + ] + }, + { + "name": "setOwner", + "parameterTypes": [ + + ] + }, + { + "name": "setPublicKeyPem", + "parameterTypes": [ + + ] + } + ] + }, + { + "name": "dev.usbharu.hideout.domain.model.ap.Note", + "queryAllDeclaredMethods": true, + "allDeclaredFields": true, + "queryAllDeclaredConstructors": true, + "methods": [ + { + "name": "", + "parameterTypes": [ + + ] + }, + { + "name": "", + "parameterTypes": [ + + ] + }, + { + "name": "getAttributedTo", + "parameterTypes": [ + + ] + }, + { + "name": "getContent", + "parameterTypes": [ + + ] + }, + { + "name": "getId", + "parameterTypes": [ + + ] + }, + { + "name": "getPublished", + "parameterTypes": [ + + ] + }, + { + "name": "getTo", + "parameterTypes": [ + + ] + }, + { + "name": "setAttributedTo", + "parameterTypes": [ + + ] + }, + { + "name": "setContent", + "parameterTypes": [ + + ] + }, + { + "name": "setId", + "parameterTypes": [ + + ] + }, + { + "name": "setPublished", + "parameterTypes": [ + + ] + } + ] + }, + { + "name": "dev.usbharu.hideout.domain.model.ap.Object", + "queryAllDeclaredMethods": true, + "allDeclaredFields": true, + "queryAllDeclaredConstructors": true, + "methods": [ + { + "name": "", + "parameterTypes": [ + + ] + }, + { + "name": "", + "parameterTypes": [ + + ] + }, + { + "name": "getName", + "parameterTypes": [ + + ] + }, + { + "name": "setName", + "parameterTypes": [ + + ] + } + ] + }, + { + "name": "dev.usbharu.hideout.domain.model.ap.Object$Companion", + "methods": [ + { + "name": "add", + "parameterTypes": [ + + ] + } + ] + }, + { + "name": "dev.usbharu.hideout.domain.model.ap.Person", + "queryAllDeclaredMethods": true, + "allDeclaredFields": true, + "queryAllDeclaredConstructors": true, + "methods": [ + { + "name": "", + "parameterTypes": [ + + ] + }, + { + "name": "", + "parameterTypes": [ + "dev.usbharu.hideout.domain.model.ap.Image", + "dev.usbharu.hideout.domain.model.ap.Key" + ] + }, + { + "name": "getInbox", + "parameterTypes": [ + + ] + }, + { + "name": "getOutbox", + "parameterTypes": [ + + ] + }, + { + "name": "getPreferredUsername", + "parameterTypes": [ + + ] + }, + { + "name": "getPublicKey", + "parameterTypes": [ + + ] + }, + { + "name": "getSummary", + "parameterTypes": [ + + ] + }, + { + "name": "setInbox", + "parameterTypes": [ + + ] + }, + { + "name": "setOutbox", + "parameterTypes": [ + + ] + }, + { + "name": "setPreferredUsername", + "parameterTypes": [ + + ] + }, + { + "name": "setPublicKey", + "parameterTypes": [ + "dev.usbharu.hideout.domain.model.ap.Key" + ] + }, + { + "name": "setSummary", + "parameterTypes": [ + + ] + } + ] + }, + { + "name": "dev.usbharu.hideout.domain.model.ap.TypeSerializer", + "methods": [ + { + "name": "", + "parameterTypes": [ + + ] + } + ] + }, + { + "name": "dev.usbharu.hideout.exception.JsonParseException", + "allDeclaredFields": true, + "queryAllPublicConstructors": true, + "methods": [ + { + "name": "", + "parameterTypes": [ + + ] + } + ] + }, + { + "allDeclaredClasses": true, + "queryAllDeclaredConstructors": true, + "methods": [ + { + "name": "create", + "parameterTypes": [ + "dev.usbharu.hideout.domain.model.Post", + "kotlin.coroutines.Continuation" + ] + } + ], + "name": "dev.usbharu.hideout.service.IPostService", + "queryAllDeclaredMethods": true, + "allDeclaredFields": true, + "queryAllPublicMethods": true + }, + { + "allDeclaredClasses": true, + "queryAllDeclaredConstructors": true, + "methods": [ + { + "name": "parseActivity", + "parameterTypes": [ + + ] + }, + { + "name": "processActivity", + "parameterTypes": [ + "dev.usbharu.hideout.service.activitypub.ActivityType", + "kotlin.coroutines.Continuation" + ] + }, + { + "name": "processActivity", + "parameterTypes": [ + "kjob.core.dsl.JobContextWithProps", + "dev.usbharu.hideout.domain.model.job.HideoutJob", + "kotlin.coroutines.Continuation" + ] + } + ], + "name": "dev.usbharu.hideout.service.activitypub.ActivityPubService", + "queryAllDeclaredMethods": true, + "allDeclaredFields": true, + "queryAllPublicMethods": true + }, + { + "allDeclaredClasses": true, + "queryAllDeclaredConstructors": true, + "methods": [ + { + "name": "fetchPerson", + "parameterTypes": [ + "kotlin.coroutines.Continuation" + ] + }, + { + "name": "getPersonByName", + "parameterTypes": [ + "kotlin.coroutines.Continuation" + ] + } + ], + "name": "dev.usbharu.hideout.service.activitypub.ActivityPubUserService", + "queryAllDeclaredMethods": true, + "allDeclaredFields": true, + "queryAllPublicMethods": true + }, + { + "name": "dev.usbharu.hideout.service.impl.UserService", + "allDeclaredClasses": true, + "queryAllDeclaredMethods": true, + "allDeclaredFields": true, + "queryAllDeclaredConstructors": true, + "methods": [ + { + "name": "", + "parameterTypes": [ + "dev.usbharu.hideout.repository.IUserRepository" + ] + }, + { + "name": "addFollowers", + "parameterTypes": [ + "long", + "long", + "kotlin.coroutines.Continuation" + ] + }, + { + "name": "findById", + "parameterTypes": [ + "long", + "kotlin.coroutines.Continuation" + ] + }, + { + "name": "findByUrls", + "parameterTypes": [ + "kotlin.coroutines.Continuation" + ] + }, + { + "name": "findFollowersById", + "parameterTypes": [ + "long", + "kotlin.coroutines.Continuation" + ] + } + ] + }, + { + "allDeclaredClasses": true, + "queryAllDeclaredConstructors": true, + "methods": [ + { + "name": "init", + "parameterTypes": [ + + ] + }, + { + "name": "schedule", + "parameterTypes": [ + "kjob.core.Job", + "kotlin.jvm.functions.Function2", + "kotlin.coroutines.Continuation" + ] + } + ], + "name": "dev.usbharu.hideout.service.job.JobQueueParentService", + "queryAllDeclaredMethods": true, + "allDeclaredFields": true, + "queryAllPublicMethods": true + }, + { + "allDeclaredClasses": true, + "queryAllDeclaredConstructors": true, + "methods": [ + { + "name": "verify", + "parameterTypes": [ + "io.ktor.http.Headers" + ] + } + ], + "name": "dev.usbharu.hideout.service.signature.HttpSignatureVerifyService", + "queryAllDeclaredMethods": true, + "allDeclaredFields": true, + "queryAllPublicMethods": true } ] diff --git a/src/main/resources/application-native.conf b/src/main/resources/application-native.conf new file mode 100644 index 00000000..c3b3081f --- /dev/null +++ b/src/main/resources/application-native.conf @@ -0,0 +1,22 @@ +ktor { + development = false + deployment { + port = 8080 + port = ${?PORT} +// watch = [classes, resources] + } + application { + modules = [dev.usbharu.hideout.ApplicationKt.parent,dev.usbharu.hideout.ApplicationKt.worker] + } +} + +hideout { + url = "http://localhost:8080" + + database { + url = "jdbc:h2:./test;MODE=POSTGRESQL" + driver = "org.h2.Driver" + username = "" + password = "" + } +}