diff options
Diffstat (limited to 'src/main/java/org/javacs/lsp/MarkedString.java')
-rw-r--r-- | src/main/java/org/javacs/lsp/MarkedString.java | 34 |
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."); + } + } } |