001package com.box.sdkgen.schemas.signrequest;
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 SignRequestStatusField implements Valuable {
016  CONVERTING("converting"),
017  CREATED("created"),
018  SENT("sent"),
019  VIEWED("viewed"),
020  SIGNED("signed"),
021  CANCELLED("cancelled"),
022  DECLINED("declined"),
023  ERROR_CONVERTING("error_converting"),
024  ERROR_SENDING("error_sending"),
025  EXPIRED("expired"),
026  FINALIZING("finalizing"),
027  ERROR_FINALIZING("error_finalizing");
028
029  private final String value;
030
031  SignRequestStatusField(String value) {
032    this.value = value;
033  }
034
035  @JsonValue
036  public String getValue() {
037    return value;
038  }
039
040  public static class SignRequestStatusFieldDeserializer
041      extends JsonDeserializer<EnumWrapper<SignRequestStatusField>> {
042
043    public SignRequestStatusFieldDeserializer() {
044      super();
045    }
046
047    @Override
048    public EnumWrapper<SignRequestStatusField> deserialize(
049        JsonParser p, DeserializationContext ctxt) throws IOException {
050      String value = p.getValueAsString();
051      return Arrays.stream(SignRequestStatusField.values())
052          .filter((v) -> v.getValue().equalsIgnoreCase(value))
053          .findFirst()
054          .map(EnumWrapper::new)
055          .orElse(new EnumWrapper<SignRequestStatusField>(value));
056    }
057  }
058
059  public static class SignRequestStatusFieldSerializer
060      extends JsonSerializer<EnumWrapper<SignRequestStatusField>> {
061
062    public SignRequestStatusFieldSerializer() {
063      super();
064    }
065
066    @Override
067    public void serialize(
068        EnumWrapper<SignRequestStatusField> value,
069        JsonGenerator gen,
070        SerializerProvider serializers)
071        throws IOException {
072      gen.writeString(value.getStringValue());
073    }
074  }
075}