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}