Skip to content

Commit

Permalink
Add deserializer
Browse files Browse the repository at this point in the history
  • Loading branch information
jdm717 committed Jan 16, 2024
1 parent 1211696 commit 515629f
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/main/java/com/vertexvis/JSON.java
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,10 @@ public JSON() {
.registerTypeAdapter(
OneOfQueuedExportCompletedEventQueuedSceneItemCompletedEventQueuedTranslationCompletedEventSceneCreatedEventSceneDeletedEventSceneUpdatedEvent.class,
new OneOfQueuedExportCompletedEventQueuedSceneItemCompletedEventQueuedTranslationCompletedEventSceneCreatedEventSceneDeletedEventSceneUpdatedEventTypeAdaptor(() -> gson))
.registerTypeAdapter(
OneOfWebhookEventSceneIncludedData.class,
new OneOfWebhookEventSceneIncludedDataTypeAdapter(() -> gson)
)
.create();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.vertexvis.model.serialization;

import com.google.gson.*;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import com.vertexvis.model.*;

import java.io.IOException;
import java.util.function.Supplier;

public class OneOfWebhookEventSceneIncludedDataTypeAdapter extends TypeAdapter<OneOfWebhookEventSceneIncludedData> {
private Supplier<Gson> gsonSupplier;

public OneOfWebhookEventSceneIncludedDataTypeAdapter(Supplier<Gson> gsonSupplier) {
this.gsonSupplier = gsonSupplier;
}

@Override
public void write(JsonWriter out, OneOfWebhookEventSceneIncludedData value) throws IOException {
TypeAdapter<JsonElement> jsonAdapter = gsonSupplier.get().getAdapter(JsonElement.class);
TypeAdapter<WebhookEventSceneIncludedData> sceneIncludedDataTypeAdapter = gsonSupplier.get().getAdapter(TypeToken.get(WebhookEventSceneIncludedData.class));

if (value.getData() instanceof WebhookEventSceneIncludedData) {
jsonAdapter.write(out, sceneIncludedDataTypeAdapter.toJsonTree(value.getSceneIncludedData()));
}
}

@Override
public OneOfWebhookEventSceneIncludedData read(JsonReader in) throws IOException {
TypeAdapter<JsonElement> jsonAdapter = gsonSupplier.get().getAdapter(JsonElement.class);
TypeAdapter<WebhookEventSceneIncludedData> sceneIncludedDataTypeAdapter = gsonSupplier.get().getAdapter(TypeToken.get(WebhookEventSceneIncludedData.class));

JsonObject json = jsonAdapter.read(in).getAsJsonObject();
String type = json.get("type").getAsString();

switch (type) {
case "scene":
return new OneOfWebhookEventSceneIncludedData(sceneIncludedDataTypeAdapter.fromJsonTree(json));
default:
throw new IOException("JSON deserializer not implemented for type " + type);
}
}
}

0 comments on commit 515629f

Please sign in to comment.