Skip to content

Commit

Permalink
[PLAT-3808] Add type adapter for OneOfWebhookEventSceneIncludedData (#49
Browse files Browse the repository at this point in the history
)

* Update version

* Re-add adapter
  • Loading branch information
jdm717 authored Jan 16, 2024
1 parent f114dc4 commit 171b973
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 5 deletions.
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,21 +17,21 @@ The client can be used with Java 1.8+ and pulled into Maven or Gradle projects.
<dependency>
<groupId>com.vertexvis</groupId>
<artifactId>api-client-java</artifactId>
<version>0.7.5</version>
<version>0.7.6</version>
<scope>compile</scope>
</dependency>
```

### Gradle

```groovy
compile "com.vertexvis:api-client-java:0.7.5"
compile "com.vertexvis:api-client-java:0.7.6"
```

### Sbt

```sbt
libraryDependencies += "com.vertexvis" % "api-client-java" % "0.7.5"
libraryDependencies += "com.vertexvis" % "api-client-java" % "0.7.6"
```

### Others
Expand All @@ -44,7 +44,7 @@ mvn clean package

Then manually install the following JARs.

- `target/api-client-java-0.7.5.jar`
- `target/api-client-java-0.7.6.jar`
- `target/lib/*.jar`

## Usage
Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ plugins {
}

group = 'com.vertexvis'
version = '0.7.5'
version = '0.7.6'

repositories {
mavenCentral()
Expand Down
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 171b973

Please sign in to comment.