NullableEncoding.java

  1. package com.github.princesslana.eriscasper.data.immutable.encoding;

  2. import com.github.princesslana.eriscasper.data.util.Nullable;
  3. import org.immutables.encode.Encoding;
  4. import org.immutables.encode.Encoding.StandardNaming;

  5. @Encoding
  6. public class NullableEncoding<T> {
  7.   @Encoding.Impl private Nullable<T> value = Nullable.ofNull();

  8.   @Encoding.Builder
  9.   static class Builder<T> {
  10.     private Nullable<T> value = Nullable.ofNull();

  11.     @Encoding.Init
  12.     @Encoding.Copy
  13.     public void set(Nullable<T> value) {
  14.       this.value = value;
  15.     }

  16.     @Encoding.Init
  17.     @Encoding.Naming("null*")
  18.     public void ofNull() {
  19.       this.value = Nullable.ofNull();
  20.     }

  21.     @Encoding.Init
  22.     @Encoding.Naming(standard = StandardNaming.INIT)
  23.     public void ofNullable(T value) {
  24.       this.value = Nullable.of(value);
  25.     }

  26.     @Encoding.Build
  27.     public Nullable<T> build() {
  28.       return value;
  29.     }
  30.   }
  31. }