From e9f23c0115b1c1697aca9d66f73a9f05051f41fb Mon Sep 17 00:00:00 2001 From: noidcoffee Date: Thu, 11 Jun 2026 14:18:50 -0400 Subject: [PATCH] Fixing jackson parsing --- .../sdk/models/experiment/ExperimentData.java | 42 +++++++++++++++++++ .../ExperimentEvaluationResponse.java | 11 +++++ .../models/experiment/ExperimentVariant.java | 9 ++++ 3 files changed, 62 insertions(+) diff --git a/src/main/java/gg/hoglin/sdk/models/experiment/ExperimentData.java b/src/main/java/gg/hoglin/sdk/models/experiment/ExperimentData.java index b9ebfb0..e9b9b6b 100644 --- a/src/main/java/gg/hoglin/sdk/models/experiment/ExperimentData.java +++ b/src/main/java/gg/hoglin/sdk/models/experiment/ExperimentData.java @@ -1,5 +1,6 @@ package gg.hoglin.sdk.models.experiment; +import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import gg.hoglin.sdk.Hoglin; import lombok.Data; @@ -55,6 +56,16 @@ public enum Trigger { @JsonProperty("experiment_id") private final String experimentId; + /** The internal ID of the visualization linked to this experiment */ + @NotNull + @JsonProperty("visualization_id") + private final String visualizationId; + + /** The goal of the experiment */ + @NotNull + @JsonProperty("experiment_goal") + private final String goal; + /** A description explaining what this experiment is aimed to accomplish */ @Nullable private final String description; @@ -82,6 +93,37 @@ public enum Trigger { @JsonProperty("experiment_variants") private final Map variants; + @JsonCreator + public ExperimentData( + @JsonProperty("id") @NotNull Integer id, + @JsonProperty("name") @NotNull String name, + @JsonProperty("created_at") @NotNull Instant createdAt, + @JsonProperty("server_id") @NotNull Integer serverId, + @JsonProperty("experiment_id") @NotNull String experimentId, + @JsonProperty("visualization_id") @NotNull String visualizationId, + @JsonProperty("experiment_goal") @NotNull String goal, + @JsonProperty("description") @Nullable String description, + @JsonProperty("enabled") @NotNull Boolean enabled, + @JsonProperty("rollout_percentage") @NotNull Integer rolloutPercentage, + @JsonProperty("allowlist") @NotNull List allowlist, + @JsonProperty("experiment_trigger") @NotNull Trigger trigger, + @JsonProperty("experiment_variants") @NotNull Map variants + ) { + this.id = id; + this.name = name; + this.createdAt = createdAt; + this.serverId = serverId; + this.experimentId = experimentId; + this.visualizationId = visualizationId; + this.goal = goal; + this.description = description; + this.enabled = enabled; + this.rolloutPercentage = rolloutPercentage; + this.allowlist = allowlist; + this.trigger = trigger; + this.variants = variants; + } + /** * Evaluates whether the specified experiment is currently enabled for this instance. This is a non-player-specific * experiment evaluation and will only evaluate as true if its rollout percentage is set to 100. For player-specific diff --git a/src/main/java/gg/hoglin/sdk/models/experiment/ExperimentEvaluationResponse.java b/src/main/java/gg/hoglin/sdk/models/experiment/ExperimentEvaluationResponse.java index faa6796..279b73b 100644 --- a/src/main/java/gg/hoglin/sdk/models/experiment/ExperimentEvaluationResponse.java +++ b/src/main/java/gg/hoglin/sdk/models/experiment/ExperimentEvaluationResponse.java @@ -1,5 +1,7 @@ package gg.hoglin.sdk.models.experiment; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import org.jetbrains.annotations.NotNull; @@ -15,4 +17,13 @@ public class ExperimentEvaluationResponse { /** The UUID of the player */ @NotNull private UUID uuid; + + @JsonCreator + public ExperimentEvaluationResponse( + @JsonProperty("inExperiment") @NotNull Boolean inExperiment, + @JsonProperty("uuid") @NotNull UUID uuid + ) { + this.inExperiment = inExperiment; + this.uuid = uuid; + } } diff --git a/src/main/java/gg/hoglin/sdk/models/experiment/ExperimentVariant.java b/src/main/java/gg/hoglin/sdk/models/experiment/ExperimentVariant.java index 9a03832..a19fe3b 100644 --- a/src/main/java/gg/hoglin/sdk/models/experiment/ExperimentVariant.java +++ b/src/main/java/gg/hoglin/sdk/models/experiment/ExperimentVariant.java @@ -2,6 +2,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; +import org.checkerframework.checker.units.qual.A; import org.jetbrains.annotations.NotNull; import java.util.UUID; @@ -40,6 +41,14 @@ public enum Action { @NotNull private String payload; + public ExperimentVariant( + @JsonProperty("action") @NotNull Action action, + @JsonProperty("payload") @NotNull String payload + ) { + this.action = action; + this.payload = payload; + } + /** Format the payload, replacing the appropriate placeholders */ public String formatPayload(String playerName, UUID uuid, Variant variant) { return payload.replace("{player}", playerName).replace("{uuid}", uuid.toString()).replace("{variant}", variant.name());