Refactor Gson saving to Kotlin

This commit is contained in:
Wieland Schöbl
2021-04-12 15:22:43 +02:00
parent d94c34580b
commit 2304261a62
4 changed files with 22 additions and 33 deletions

View File

@@ -1,30 +0,0 @@
package org.hmcore.registration.config;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import org.hmcore.modules.Module;
public class ObjectInfoConfigHandler {
public static String generateFreshJSON(Module<?,?>[] modules) {
ModuleInfo[] moduleInfos = new ModuleInfo[modules.length];
for (int i = 0; i < modules.length; i++) {
Module<?,?> module = modules[i];
moduleInfos[i] = new ModuleInfo(module.getName(),
module.getObjectInfoArray());
}
ObjectInfoConfig objectInfoConfig = new ObjectInfoConfig(moduleInfos);
GsonBuilder builder = new GsonBuilder().setPrettyPrinting();
Gson gson = builder.create();
return gson.toJson(objectInfoConfig);
}
}

View File

@@ -5,12 +5,12 @@ import org.jetbrains.annotations.Nullable;
public class ObjectInfoData {
public final String objectName;
public final String objectInfoChoosen;
public final String objectInfoChosen;
public final String _availableOptions;
public ObjectInfoData(String objectName, @Nullable String objectInfoChoosen, String availableOptions) {
public ObjectInfoData(String objectName, @Nullable String objectInfoChosen, String availableOptions) {
this.objectName = objectName;
this.objectInfoChoosen = objectInfoChoosen == null ? "default" : objectInfoChoosen;
this.objectInfoChosen = objectInfoChosen == null ? "default" : objectInfoChosen;
_availableOptions = availableOptions;
}
}

View File

@@ -0,0 +1,7 @@
package extensions
/**
* Map a Java array to another Java array
*/
inline fun <T, reified I> Array<T>.map(crossinline transform: (T) -> I) =
Array(size) { transform(this[it]) }

View File

@@ -0,0 +1,12 @@
@file:JvmName("ObjectInfoConfigHandler")
package org.hmcore.registration.config
import com.google.gson.GsonBuilder
import org.hmcore.modules.Module
import extensions.map
private val GSON = GsonBuilder().setPrettyPrinting().create()
fun Array<Module<*, *>>.generateFreshJSON(): String =
GSON.toJson(ObjectInfoConfig(map { ModuleInfo(it.name, it.objectInfoArray) }))