summaryrefslogtreecommitdiff
path: root/src/main/java/org/javacs/lsp/MarkedString.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/javacs/lsp/MarkedString.java')
-rw-r--r--src/main/java/org/javacs/lsp/MarkedString.java34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/main/java/org/javacs/lsp/MarkedString.java b/src/main/java/org/javacs/lsp/MarkedString.java
index d042d78..280225b 100644
--- a/src/main/java/org/javacs/lsp/MarkedString.java
+++ b/src/main/java/org/javacs/lsp/MarkedString.java
@@ -1,12 +1,46 @@
package org.javacs.lsp;
+import java.io.IOException;
+
+import com.google.gson.annotations.JsonAdapter;
+import com.google.gson.stream.JsonReader;
+import com.google.gson.stream.JsonWriter;
+import com.google.gson.stream.JsonWriter;
+import com.google.gson.TypeAdapter;
+
+@JsonAdapter(MarkedString.Adapter.class)
public class MarkedString {
public String language, value;
public MarkedString() {}
+ public MarkedString(String value) {
+ this.value = value;
+ }
+
public MarkedString(String language, String value) {
this.language = language;
this.value = value;
}
+
+ public static class Adapter extends TypeAdapter<MarkedString> {
+ @Override
+ public void write(JsonWriter out, MarkedString markedString) throws IOException {
+ if (markedString.language == null) {
+ out.value(markedString.value);
+ } else {
+ out.beginObject();
+ out.name("language");
+ out.value(markedString.language);
+ out.name("value");
+ out.value(markedString.value);
+ out.endObject();
+ }
+ }
+
+ @Override
+ public MarkedString read(JsonReader reader) throws IOException {
+ throw new UnsupportedOperationException("Deserializing MarkedString's is unsupported.");
+ }
+ }
}