001package com.box.sdkgen.schemas.resourcescope;
002
003import com.box.sdkgen.serialization.json.EnumWrapper;
004import com.box.sdkgen.serialization.json.Valuable;
005import com.fasterxml.jackson.annotation.JsonValue;
006import com.fasterxml.jackson.core.JsonGenerator;
007import com.fasterxml.jackson.core.JsonParser;
008import com.fasterxml.jackson.databind.DeserializationContext;
009import com.fasterxml.jackson.databind.JsonDeserializer;
010import com.fasterxml.jackson.databind.JsonSerializer;
011import com.fasterxml.jackson.databind.SerializerProvider;
012import java.io.IOException;
013import java.util.Arrays;
014
015public enum ResourceScopeScopeField implements Valuable {
016  ANNOTATION_EDIT("annotation_edit"),
017  ANNOTATION_VIEW_ALL("annotation_view_all"),
018  ANNOTATION_VIEW_SELF("annotation_view_self"),
019  BASE_EXPLORER("base_explorer"),
020  BASE_PICKER("base_picker"),
021  BASE_PREVIEW("base_preview"),
022  BASE_UPLOAD("base_upload"),
023  ITEM_DELETE("item_delete"),
024  ITEM_DOWNLOAD("item_download"),
025  ITEM_PREVIEW("item_preview"),
026  ITEM_RENAME("item_rename"),
027  ITEM_SHARE("item_share"),
028  ITEM_UPLOAD("item_upload"),
029  ITEM_READ("item_read");
030
031  private final String value;
032
033  ResourceScopeScopeField(String value) {
034    this.value = value;
035  }
036
037  @JsonValue
038  public String getValue() {
039    return value;
040  }
041
042  public static class ResourceScopeScopeFieldDeserializer
043      extends JsonDeserializer<EnumWrapper<ResourceScopeScopeField>> {
044
045    public ResourceScopeScopeFieldDeserializer() {
046      super();
047    }
048
049    @Override
050    public EnumWrapper<ResourceScopeScopeField> deserialize(
051        JsonParser p, DeserializationContext ctxt) throws IOException {
052      String value = p.getValueAsString();
053      return Arrays.stream(ResourceScopeScopeField.values())
054          .filter((v) -> v.getValue().equalsIgnoreCase(value))
055          .findFirst()
056          .map(EnumWrapper::new)
057          .orElse(new EnumWrapper<ResourceScopeScopeField>(value));
058    }
059  }
060
061  public static class ResourceScopeScopeFieldSerializer
062      extends JsonSerializer<EnumWrapper<ResourceScopeScopeField>> {
063
064    public ResourceScopeScopeFieldSerializer() {
065      super();
066    }
067
068    @Override
069    public void serialize(
070        EnumWrapper<ResourceScopeScopeField> value,
071        JsonGenerator gen,
072        SerializerProvider serializers)
073        throws IOException {
074      gen.writeString(value.getStringValue());
075    }
076  }
077}