001package com.box.sdkgen.schemas.v2025r0.hubitemreferencev2025r0;
002
003import com.box.sdkgen.internal.OneOfThree;
004import com.box.sdkgen.schemas.v2025r0.filereferencev2025r0.FileReferenceV2025R0;
005import com.box.sdkgen.schemas.v2025r0.folderreferencev2025r0.FolderReferenceV2025R0;
006import com.box.sdkgen.schemas.v2025r0.weblinkreferencev2025r0.WeblinkReferenceV2025R0;
007import com.box.sdkgen.serialization.json.EnumWrapper;
008import com.box.sdkgen.serialization.json.JsonManager;
009import com.fasterxml.jackson.core.JsonParser;
010import com.fasterxml.jackson.databind.DeserializationContext;
011import com.fasterxml.jackson.databind.JsonDeserializer;
012import com.fasterxml.jackson.databind.JsonMappingException;
013import com.fasterxml.jackson.databind.JsonNode;
014import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
015import com.fasterxml.jackson.databind.annotation.JsonSerialize;
016import java.io.IOException;
017
018@JsonDeserialize(using = HubItemReferenceV2025R0.HubItemReferenceV2025R0Deserializer.class)
019@JsonSerialize(using = OneOfThree.OneOfThreeSerializer.class)
020public class HubItemReferenceV2025R0
021    extends OneOfThree<FileReferenceV2025R0, FolderReferenceV2025R0, WeblinkReferenceV2025R0> {
022
023  protected final String type;
024
025  protected final String id;
026
027  public HubItemReferenceV2025R0(FileReferenceV2025R0 fileReferenceV2025R0) {
028    super(fileReferenceV2025R0, null, null);
029    this.type = EnumWrapper.convertToString(fileReferenceV2025R0.getType());
030    this.id = fileReferenceV2025R0.getId();
031  }
032
033  public HubItemReferenceV2025R0(FolderReferenceV2025R0 folderReferenceV2025R0) {
034    super(null, folderReferenceV2025R0, null);
035    this.type = EnumWrapper.convertToString(folderReferenceV2025R0.getType());
036    this.id = folderReferenceV2025R0.getId();
037  }
038
039  public HubItemReferenceV2025R0(WeblinkReferenceV2025R0 weblinkReferenceV2025R0) {
040    super(null, null, weblinkReferenceV2025R0);
041    this.type = EnumWrapper.convertToString(weblinkReferenceV2025R0.getType());
042    this.id = weblinkReferenceV2025R0.getId();
043  }
044
045  public boolean isFileReferenceV2025R0() {
046    return value0 != null;
047  }
048
049  public FileReferenceV2025R0 getFileReferenceV2025R0() {
050    return value0;
051  }
052
053  public boolean isFolderReferenceV2025R0() {
054    return value1 != null;
055  }
056
057  public FolderReferenceV2025R0 getFolderReferenceV2025R0() {
058    return value1;
059  }
060
061  public boolean isWeblinkReferenceV2025R0() {
062    return value2 != null;
063  }
064
065  public WeblinkReferenceV2025R0 getWeblinkReferenceV2025R0() {
066    return value2;
067  }
068
069  public String getType() {
070    return type;
071  }
072
073  public String getId() {
074    return id;
075  }
076
077  static class HubItemReferenceV2025R0Deserializer
078      extends JsonDeserializer<HubItemReferenceV2025R0> {
079
080    public HubItemReferenceV2025R0Deserializer() {
081      super();
082    }
083
084    @Override
085    public HubItemReferenceV2025R0 deserialize(JsonParser jp, DeserializationContext ctxt)
086        throws IOException {
087      JsonNode node = JsonManager.jsonToSerializedData(jp);
088      JsonNode discriminant0 = node.get("type");
089      if (!(discriminant0 == null)) {
090        switch (discriminant0.asText()) {
091          case "file":
092            return new HubItemReferenceV2025R0(
093                JsonManager.deserialize(node, FileReferenceV2025R0.class));
094          case "folder":
095            return new HubItemReferenceV2025R0(
096                JsonManager.deserialize(node, FolderReferenceV2025R0.class));
097          case "web_link":
098            return new HubItemReferenceV2025R0(
099                JsonManager.deserialize(node, WeblinkReferenceV2025R0.class));
100        }
101      }
102      throw new JsonMappingException(jp, "Unable to deserialize HubItemReferenceV2025R0");
103    }
104  }
105}