001package com.box.sdkgen.schemas.metadatainstancevalue; 002 003import com.box.sdkgen.internal.OneOfFour; 004import com.box.sdkgen.serialization.json.JsonManager; 005import com.fasterxml.jackson.core.JsonParser; 006import com.fasterxml.jackson.databind.DeserializationContext; 007import com.fasterxml.jackson.databind.JsonDeserializer; 008import com.fasterxml.jackson.databind.JsonMappingException; 009import com.fasterxml.jackson.databind.JsonNode; 010import com.fasterxml.jackson.databind.annotation.JsonDeserialize; 011import com.fasterxml.jackson.databind.annotation.JsonSerialize; 012import java.io.IOException; 013import java.util.List; 014 015@JsonDeserialize(using = MetadataInstanceValue.MetadataInstanceValueDeserializer.class) 016@JsonSerialize(using = OneOfFour.OneOfFourSerializer.class) 017public class MetadataInstanceValue extends OneOfFour<String, Long, Double, List<String>> { 018 019 public MetadataInstanceValue(String string) { 020 super(string, null, null, null); 021 } 022 023 public MetadataInstanceValue(Long longNumber) { 024 super(null, longNumber, null, null); 025 } 026 027 public MetadataInstanceValue(Double doubleNumber) { 028 super(null, null, doubleNumber, null); 029 } 030 031 public MetadataInstanceValue(List<String> listOfString) { 032 super(null, null, null, listOfString); 033 } 034 035 public boolean isString() { 036 return value0 != null; 037 } 038 039 public String getString() { 040 return value0; 041 } 042 043 public boolean isLongNumber() { 044 return value1 != null; 045 } 046 047 public Long getLongNumber() { 048 return value1; 049 } 050 051 public boolean isDoubleNumber() { 052 return value2 != null; 053 } 054 055 public Double getDoubleNumber() { 056 return value2; 057 } 058 059 public boolean isListOfString() { 060 return value3 != null; 061 } 062 063 public List<String> getListOfString() { 064 return value3; 065 } 066 067 static class MetadataInstanceValueDeserializer extends JsonDeserializer<MetadataInstanceValue> { 068 069 public MetadataInstanceValueDeserializer() { 070 super(); 071 } 072 073 @Override 074 public MetadataInstanceValue deserialize(JsonParser jp, DeserializationContext ctxt) 075 throws IOException { 076 JsonNode node = JsonManager.jsonToSerializedData(jp); 077 try { 078 return new MetadataInstanceValue(OneOfFour.OBJECT_MAPPER.convertValue(node, Long.class)); 079 } catch (Exception ignored) { 080 } 081 try { 082 return new MetadataInstanceValue(OneOfFour.OBJECT_MAPPER.convertValue(node, Double.class)); 083 } catch (Exception ignored) { 084 } 085 try { 086 return new MetadataInstanceValue(OneOfFour.OBJECT_MAPPER.convertValue(node, List.class)); 087 } catch (Exception ignored) { 088 } 089 try { 090 return new MetadataInstanceValue(OneOfFour.OBJECT_MAPPER.convertValue(node, String.class)); 091 } catch (Exception ignored) { 092 } 093 throw new JsonMappingException(jp, "Unable to deserialize MetadataInstanceValue"); 094 } 095 } 096}