Interface IDeserializeResult<T>

Type Parameters:
T - effectively immutable deserialized value type

@NonExtendable public interface IDeserializeResult<T>
Reports whether a custom serializer could use stored text and what was wrong with it.

Return one of these outcomes from IConfigValueSerializer.deserialize(String):

  • success: a non-null result and no diagnostics;
  • partial success: a non-null, usable result and one or more diagnostics;
  • failure: no result and one or more diagnostics.
Partial success lets a mod preserve a usable value while explaining a repair or ignored portion of the input.
Since:
0.1.0
  • Method Details

    • success

      static <T> IDeserializeResult<T> success(T result)
      Create a successful deserialization result.
      Since:
      0.1.0
    • partialSuccess

      static <T> IDeserializeResult<T> partialSuccess(T result, String diagnostic)
      Create a partially successful deserialization result with one diagnostic message.
      Since:
      0.1.0
    • partialSuccess

      static <T> IDeserializeResult<T> partialSuccess(T result, List<String> diagnostics)
      Create a partially successful deserialization result with one or more diagnostic messages.
      Since:
      0.1.0
    • failure

      static <T> IDeserializeResult<T> failure(String diagnostic)
      Create a failed deserialization result with one diagnostic message.
      Since:
      0.1.0
    • failure

      static <T> IDeserializeResult<T> failure(List<String> diagnostics)
      Create a failed deserialization result with one or more diagnostic messages.
      Since:
      0.1.0
    • getResult

      Optional<T> getResult()
      Get the usable value, or an empty optional when parsing failed.
      Since:
      0.1.0
    • getDiagnostics

      @Unmodifiable List<String> getDiagnostics()
      Get messages that explain a repaired or rejected input.

      This is empty for success and non-empty for partial success and failure.

      Since:
      0.1.0