From f11b95b3d163a80dd2f2685d9ce02584e398a3f3 Mon Sep 17 00:00:00 2001
From: lorenz <stu203404@mail.uni-kiel.de>
Date: Tue, 23 Mar 2021 12:43:01 +0100
Subject: [PATCH] Add @RegisterForReflection

---
 theodolite-quarkus/build.gradle                                | 1 +
 .../theodolite/benchmark/KubernetesBenchmarkDeployment.kt      | 2 ++
 .../main/kotlin/theodolite/execution/BenchmarkExecutorImpl.kt  | 2 ++
 .../theodolite/strategies/restriction/RestrictionStrategy.kt   | 2 ++
 .../theodolite/strategies/searchstrategy/CompositeStrategy.kt  | 2 ++
 .../theodolite/strategies/searchstrategy/SearchStrategy.kt     | 2 ++
 theodolite-quarkus/src/main/kotlin/theodolite/util/Config.kt   | 2 ++
 .../src/main/kotlin/theodolite/util/KafkaConfig.kt             | 1 +
 .../src/main/kotlin/theodolite/util/LoadDimension.kt           | 3 +++
 theodolite-quarkus/src/main/kotlin/theodolite/util/Resource.kt | 3 +++
 theodolite-quarkus/src/main/kotlin/theodolite/util/Results.kt  | 3 +++
 11 files changed, 23 insertions(+)

diff --git a/theodolite-quarkus/build.gradle b/theodolite-quarkus/build.gradle
index 1ceb09377..7f32c0c5b 100644
--- a/theodolite-quarkus/build.gradle
+++ b/theodolite-quarkus/build.gradle
@@ -25,6 +25,7 @@ dependencies {
     implementation 'org.slf4j:slf4j-simple:1.7.29'
     implementation 'io.github.microutils:kotlin-logging:1.12.0'
     implementation 'io.fabric8:kubernetes-client:5.0.0-alpha-2'
+    implementation 'io.quarkus:quarkus-kubernetes-client'
     implementation 'org.apache.kafka:kafka-clients:2.7.0'
     implementation 'khttp:khttp:1.0.0'
 }
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/KubernetesBenchmarkDeployment.kt b/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/KubernetesBenchmarkDeployment.kt
index 342ceebb8..d8656bc3c 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/KubernetesBenchmarkDeployment.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/KubernetesBenchmarkDeployment.kt
@@ -2,10 +2,12 @@ package theodolite.benchmark
 
 import io.fabric8.kubernetes.api.model.KubernetesResource
 import io.fabric8.kubernetes.client.DefaultKubernetesClient
+import io.quarkus.runtime.annotations.RegisterForReflection
 import org.apache.kafka.clients.admin.NewTopic
 import theodolite.k8s.K8sManager
 import theodolite.k8s.TopicManager
 
+@RegisterForReflection
 class KubernetesBenchmarkDeployment(
     val namespace: String,
     val resources: List<KubernetesResource>,
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutorImpl.kt b/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutorImpl.kt
index 19a0cb61c..da7d2328b 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutorImpl.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutorImpl.kt
@@ -1,5 +1,6 @@
 package theodolite.execution
 
+import io.quarkus.runtime.annotations.RegisterForReflection
 import mu.KotlinLogging
 import theodolite.benchmark.Benchmark
 import theodolite.benchmark.BenchmarkExecution
@@ -13,6 +14,7 @@ import java.time.Instant
 
 private val logger = KotlinLogging.logger {}
 
+@RegisterForReflection
 class BenchmarkExecutorImpl(
     benchmark: Benchmark,
     results: Results,
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/strategies/restriction/RestrictionStrategy.kt b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/restriction/RestrictionStrategy.kt
index b2e09a0cc..75c7e86b5 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/strategies/restriction/RestrictionStrategy.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/restriction/RestrictionStrategy.kt
@@ -1,5 +1,6 @@
 package theodolite.strategies.restriction
 
+import io.quarkus.runtime.annotations.RegisterForReflection
 import theodolite.util.LoadDimension
 import theodolite.util.Resource
 import theodolite.util.Results
@@ -8,6 +9,7 @@ import theodolite.util.Results
  * A "Restriction Strategy" restricts a list of resources based on the current
  * results of all previously performed benchmarks.
  */
+@RegisterForReflection
 abstract class RestrictionStrategy(val results: Results) {
     /**
      * Next Restrict the given resource list for the given load based on the result object.
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/CompositeStrategy.kt b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/CompositeStrategy.kt
index 8ffca54fa..01d841c91 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/CompositeStrategy.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/CompositeStrategy.kt
@@ -1,10 +1,12 @@
 package theodolite.strategies.searchstrategy
 
+import io.quarkus.runtime.annotations.RegisterForReflection
 import theodolite.execution.BenchmarkExecutor
 import theodolite.strategies.restriction.RestrictionStrategy
 import theodolite.util.LoadDimension
 import theodolite.util.Resource
 
+@RegisterForReflection
 class CompositeStrategy(
     benchmarkExecutor: BenchmarkExecutor,
     private val searchStrategy: SearchStrategy,
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/SearchStrategy.kt b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/SearchStrategy.kt
index d57246ca4..888a58585 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/SearchStrategy.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/SearchStrategy.kt
@@ -1,9 +1,11 @@
 package theodolite.strategies.searchstrategy
 
+import io.quarkus.runtime.annotations.RegisterForReflection
 import theodolite.execution.BenchmarkExecutor
 import theodolite.util.LoadDimension
 import theodolite.util.Resource
 
+@RegisterForReflection
 abstract class SearchStrategy(val benchmarkExecutor: BenchmarkExecutor) {
     /**
      * Find smallest suitable resource from the specified resource list for the given load.
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/util/Config.kt b/theodolite-quarkus/src/main/kotlin/theodolite/util/Config.kt
index a6120564c..15defa6c7 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/util/Config.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/util/Config.kt
@@ -1,7 +1,9 @@
 package theodolite.util
 
+import io.quarkus.runtime.annotations.RegisterForReflection
 import theodolite.strategies.searchstrategy.CompositeStrategy
 
+@RegisterForReflection
 data class Config(
     val loads: List<LoadDimension>,
     val resources: List<Resource>,
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/util/KafkaConfig.kt b/theodolite-quarkus/src/main/kotlin/theodolite/util/KafkaConfig.kt
index d21e8c77f..46960ccdb 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/util/KafkaConfig.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/util/KafkaConfig.kt
@@ -13,6 +13,7 @@ class KafkaConfig {
         return topics.map { topic -> NewTopic(topic.name, topic.numPartitions, topic.replicationFactor) }
     }
 
+    @RegisterForReflection
     class TopicWrapper {
         lateinit var name: String
         var numPartitions by Delegates.notNull<Int>()
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/util/LoadDimension.kt b/theodolite-quarkus/src/main/kotlin/theodolite/util/LoadDimension.kt
index 29d47460b..654c4d0cc 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/util/LoadDimension.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/util/LoadDimension.kt
@@ -1,5 +1,8 @@
 package theodolite.util
 
+import io.quarkus.runtime.annotations.RegisterForReflection
+
+@RegisterForReflection
 data class LoadDimension(private val number: Int, private val type: String) {
     fun get(): Int {
         return this.number
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/util/Resource.kt b/theodolite-quarkus/src/main/kotlin/theodolite/util/Resource.kt
index cb172e0b8..c62f785a4 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/util/Resource.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/util/Resource.kt
@@ -1,5 +1,8 @@
 package theodolite.util
 
+import io.quarkus.runtime.annotations.RegisterForReflection
+
+@RegisterForReflection
 data class Resource(private val number: Int, private val type: String) {
     fun get(): Int {
         return this.number
diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/util/Results.kt b/theodolite-quarkus/src/main/kotlin/theodolite/util/Results.kt
index 91bde7179..2f746a17a 100644
--- a/theodolite-quarkus/src/main/kotlin/theodolite/util/Results.kt
+++ b/theodolite-quarkus/src/main/kotlin/theodolite/util/Results.kt
@@ -1,5 +1,8 @@
 package theodolite.util
 
+import io.quarkus.runtime.annotations.RegisterForReflection
+
+@RegisterForReflection
 class Results {
     private val results: MutableMap<Pair<LoadDimension, Resource>, Boolean> = mutableMapOf()
 
-- 
GitLab