001package com.box.sdkgen.schemas.collaborationaccessgrantee;
002
003import com.box.sdkgen.internal.OneOfTwo;
004import com.box.sdkgen.schemas.groupmini.GroupMini;
005import com.box.sdkgen.schemas.usercollaborations.UserCollaborations;
006import com.box.sdkgen.serialization.json.EnumWrapper;
007import com.box.sdkgen.serialization.json.JsonManager;
008import com.fasterxml.jackson.core.JsonParser;
009import com.fasterxml.jackson.databind.DeserializationContext;
010import com.fasterxml.jackson.databind.JsonDeserializer;
011import com.fasterxml.jackson.databind.JsonMappingException;
012import com.fasterxml.jackson.databind.JsonNode;
013import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
014import com.fasterxml.jackson.databind.annotation.JsonSerialize;
015import java.io.IOException;
016
017@JsonDeserialize(using = CollaborationAccessGrantee.CollaborationAccessGranteeDeserializer.class)
018@JsonSerialize(using = OneOfTwo.OneOfTwoSerializer.class)
019public class CollaborationAccessGrantee extends OneOfTwo<UserCollaborations, GroupMini> {
020
021  protected final String name;
022
023  protected final String id;
024
025  protected final String type;
026
027  public CollaborationAccessGrantee(UserCollaborations userCollaborations) {
028    super(userCollaborations, null);
029    this.name = userCollaborations.getName();
030    this.id = userCollaborations.getId();
031    this.type = EnumWrapper.convertToString(userCollaborations.getType());
032  }
033
034  public CollaborationAccessGrantee(GroupMini groupMini) {
035    super(null, groupMini);
036    this.name = groupMini.getName();
037    this.id = groupMini.getId();
038    this.type = EnumWrapper.convertToString(groupMini.getType());
039  }
040
041  public boolean isUserCollaborations() {
042    return value0 != null;
043  }
044
045  public UserCollaborations getUserCollaborations() {
046    return value0;
047  }
048
049  public boolean isGroupMini() {
050    return value1 != null;
051  }
052
053  public GroupMini getGroupMini() {
054    return value1;
055  }
056
057  public String getName() {
058    return name;
059  }
060
061  public String getId() {
062    return id;
063  }
064
065  public String getType() {
066    return type;
067  }
068
069  static class CollaborationAccessGranteeDeserializer
070      extends JsonDeserializer<CollaborationAccessGrantee> {
071
072    public CollaborationAccessGranteeDeserializer() {
073      super();
074    }
075
076    @Override
077    public CollaborationAccessGrantee deserialize(JsonParser jp, DeserializationContext ctxt)
078        throws IOException {
079      JsonNode node = JsonManager.jsonToSerializedData(jp);
080      JsonNode discriminant0 = node.get("type");
081      if (!(discriminant0 == null)) {
082        switch (discriminant0.asText()) {
083          case "user":
084            return new CollaborationAccessGrantee(
085                JsonManager.deserialize(node, UserCollaborations.class));
086          case "group":
087            return new CollaborationAccessGrantee(JsonManager.deserialize(node, GroupMini.class));
088        }
089      }
090      throw new JsonMappingException(jp, "Unable to deserialize CollaborationAccessGrantee");
091    }
092  }
093}