From 5632fafe6bae25992759a82e40b42c4cfbf1ddf8 Mon Sep 17 00:00:00 2001
From: dgelessus <dgelessus@users.noreply.github.com>
Date: Thu, 14 May 2020 20:31:25 +0200
Subject: [PATCH] Change kernelspec JSON generation to use JsonElement APIs

This way we do not need to define a custom class with naming
annotations, etc. and can instead create the needed JSON structure
directly by hand. We only need to use this JSON structure exactly once,
so it's not worth the effort to properly map it to a native Java class
representation.
---
 src/main/java/de/prob2/jupyter/Main.java | 25 +++++++-----------------
 1 file changed, 7 insertions(+), 18 deletions(-)

diff --git a/src/main/java/de/prob2/jupyter/Main.java b/src/main/java/de/prob2/jupyter/Main.java
index de37197..574ab1f 100644
--- a/src/main/java/de/prob2/jupyter/Main.java
+++ b/src/main/java/de/prob2/jupyter/Main.java
@@ -13,13 +13,12 @@ import java.nio.file.StandardCopyOption;
 import java.security.CodeSource;
 import java.security.InvalidKeyException;
 import java.security.NoSuchAlgorithmException;
-import java.util.ArrayList;
-import java.util.List;
 import java.util.stream.Stream;
 
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
-import com.google.gson.annotations.SerializedName;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 import com.google.inject.Stage;
@@ -30,16 +29,6 @@ import io.github.spencerpark.jupyter.kernel.KernelConnectionProperties;
 import org.jetbrains.annotations.Nullable;
 
 public final class Main {
-	private static final class KernelJsonData {
-		List<String> argv;
-		@SerializedName("display_name") String displayName;
-		String language;
-		
-		KernelJsonData() {
-			super();
-		}
-	}
-	
 	private Main() {
 		super();
 		
@@ -110,7 +99,7 @@ public final class Main {
 			}
 		});
 		
-		final List<String> kernelJsonArgv = new ArrayList<>();
+		final JsonArray kernelJsonArgv = new JsonArray();
 		kernelJsonArgv.add("java");
 		
 		final String probHome = System.getProperty("prob.home");
@@ -126,10 +115,10 @@ public final class Main {
 		kernelJsonArgv.add("run");
 		kernelJsonArgv.add("{connection_file}");
 		
-		final Main.KernelJsonData kernelJsonData = new Main.KernelJsonData();
-		kernelJsonData.argv = kernelJsonArgv;
-		kernelJsonData.displayName = "ProB 2";
-		kernelJsonData.language = "prob";
+		final JsonObject kernelJsonData = new JsonObject();
+		kernelJsonData.add("argv", kernelJsonArgv);
+		kernelJsonData.addProperty("display_name", "ProB 2");
+		kernelJsonData.addProperty("language", "prob");
 		
 		final Gson gson = new GsonBuilder()
 			.setPrettyPrinting()
-- 
GitLab