001package com.box.sdkgen.schemas.aillmendpointparams;
002
003import com.box.sdkgen.internal.OneOfFour;
004import com.box.sdkgen.schemas.aillmendpointparamsaws.AiLlmEndpointParamsAws;
005import com.box.sdkgen.schemas.aillmendpointparamsgoogle.AiLlmEndpointParamsGoogle;
006import com.box.sdkgen.schemas.aillmendpointparamsibm.AiLlmEndpointParamsIbm;
007import com.box.sdkgen.schemas.aillmendpointparamsopenai.AiLlmEndpointParamsOpenAi;
008import com.box.sdkgen.serialization.json.EnumWrapper;
009import com.box.sdkgen.serialization.json.JsonManager;
010import com.fasterxml.jackson.core.JsonParser;
011import com.fasterxml.jackson.databind.DeserializationContext;
012import com.fasterxml.jackson.databind.JsonDeserializer;
013import com.fasterxml.jackson.databind.JsonMappingException;
014import com.fasterxml.jackson.databind.JsonNode;
015import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
016import com.fasterxml.jackson.databind.annotation.JsonSerialize;
017import java.io.IOException;
018
019@JsonDeserialize(using = AiLlmEndpointParams.AiLlmEndpointParamsDeserializer.class)
020@JsonSerialize(using = OneOfFour.OneOfFourSerializer.class)
021public class AiLlmEndpointParams
022    extends OneOfFour<
023        AiLlmEndpointParamsOpenAi,
024        AiLlmEndpointParamsGoogle,
025        AiLlmEndpointParamsAws,
026        AiLlmEndpointParamsIbm> {
027
028  protected final String type;
029
030  protected final Double temperature;
031
032  protected final Double topP;
033
034  public AiLlmEndpointParams(AiLlmEndpointParamsOpenAi aiLlmEndpointParamsOpenAi) {
035    super(aiLlmEndpointParamsOpenAi, null, null, null);
036    this.type = EnumWrapper.convertToString(aiLlmEndpointParamsOpenAi.getType());
037    this.temperature = aiLlmEndpointParamsOpenAi.getTemperature();
038    this.topP = aiLlmEndpointParamsOpenAi.getTopP();
039  }
040
041  public AiLlmEndpointParams(AiLlmEndpointParamsGoogle aiLlmEndpointParamsGoogle) {
042    super(null, aiLlmEndpointParamsGoogle, null, null);
043    this.type = EnumWrapper.convertToString(aiLlmEndpointParamsGoogle.getType());
044    this.temperature = aiLlmEndpointParamsGoogle.getTemperature();
045    this.topP = aiLlmEndpointParamsGoogle.getTopP();
046  }
047
048  public AiLlmEndpointParams(AiLlmEndpointParamsAws aiLlmEndpointParamsAws) {
049    super(null, null, aiLlmEndpointParamsAws, null);
050    this.type = EnumWrapper.convertToString(aiLlmEndpointParamsAws.getType());
051    this.temperature = aiLlmEndpointParamsAws.getTemperature();
052    this.topP = aiLlmEndpointParamsAws.getTopP();
053  }
054
055  public AiLlmEndpointParams(AiLlmEndpointParamsIbm aiLlmEndpointParamsIbm) {
056    super(null, null, null, aiLlmEndpointParamsIbm);
057    this.type = EnumWrapper.convertToString(aiLlmEndpointParamsIbm.getType());
058    this.temperature = aiLlmEndpointParamsIbm.getTemperature();
059    this.topP = aiLlmEndpointParamsIbm.getTopP();
060  }
061
062  public boolean isAiLlmEndpointParamsOpenAi() {
063    return value0 != null;
064  }
065
066  public AiLlmEndpointParamsOpenAi getAiLlmEndpointParamsOpenAi() {
067    return value0;
068  }
069
070  public boolean isAiLlmEndpointParamsGoogle() {
071    return value1 != null;
072  }
073
074  public AiLlmEndpointParamsGoogle getAiLlmEndpointParamsGoogle() {
075    return value1;
076  }
077
078  public boolean isAiLlmEndpointParamsAws() {
079    return value2 != null;
080  }
081
082  public AiLlmEndpointParamsAws getAiLlmEndpointParamsAws() {
083    return value2;
084  }
085
086  public boolean isAiLlmEndpointParamsIbm() {
087    return value3 != null;
088  }
089
090  public AiLlmEndpointParamsIbm getAiLlmEndpointParamsIbm() {
091    return value3;
092  }
093
094  public String getType() {
095    return type;
096  }
097
098  public double getTemperature() {
099    return temperature;
100  }
101
102  public double getTopP() {
103    return topP;
104  }
105
106  static class AiLlmEndpointParamsDeserializer extends JsonDeserializer<AiLlmEndpointParams> {
107
108    public AiLlmEndpointParamsDeserializer() {
109      super();
110    }
111
112    @Override
113    public AiLlmEndpointParams deserialize(JsonParser jp, DeserializationContext ctxt)
114        throws IOException {
115      JsonNode node = JsonManager.jsonToSerializedData(jp);
116      JsonNode discriminant0 = node.get("type");
117      if (!(discriminant0 == null)) {
118        switch (discriminant0.asText()) {
119          case "openai_params":
120            return new AiLlmEndpointParams(
121                JsonManager.deserialize(node, AiLlmEndpointParamsOpenAi.class));
122          case "google_params":
123            return new AiLlmEndpointParams(
124                JsonManager.deserialize(node, AiLlmEndpointParamsGoogle.class));
125          case "aws_params":
126            return new AiLlmEndpointParams(
127                JsonManager.deserialize(node, AiLlmEndpointParamsAws.class));
128          case "ibm_params":
129            return new AiLlmEndpointParams(
130                JsonManager.deserialize(node, AiLlmEndpointParamsIbm.class));
131        }
132      }
133      throw new JsonMappingException(jp, "Unable to deserialize AiLlmEndpointParams");
134    }
135  }
136}