All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.vaadin.data.SimpleResult Maven / Gradle / Ivy

There is a newer version: 8.27.3
Show newest version
/*
 * Copyright (C) 2000-2024 Vaadin Ltd
 *
 * This program is available under Vaadin Commercial License and Service Terms.
 *
 * See  for the full
 * license.
 */
package com.vaadin.data;

import java.util.Objects;
import java.util.Optional;

import com.vaadin.server.SerializableConsumer;
import com.vaadin.server.SerializableFunction;

/**
 * An internal implementation of {@code Result}.
 *
 * @param 
 *            the result value type
 *
 * @since 8.0
 */
class SimpleResult implements Result {

    private final R value;
    private final String message;

    /**
     * Creates a new {@link Result} instance using {@code value} for a non error
     * {@link Result} and {@code message} for an error {@link Result}.
     * 

* If {@code message} is null then {@code value} is ignored and result is an * error. * * @param value * the value of the result, may be {@code null} * @param message * the error message of the result, may be {@code null} */ SimpleResult(R value, String message) { // value != null => message == null assert value == null || message == null : "Message must be null if value is provided"; this.value = value; this.message = message; } @Override @SuppressWarnings("unchecked") public Result flatMap(SerializableFunction> mapper) { Objects.requireNonNull(mapper, "mapper cannot be null"); if (isError()) { // Safe cast; valueless return (Result) this; } else { return mapper.apply(value); } } @Override public void handle(SerializableConsumer ifOk, SerializableConsumer ifError) { Objects.requireNonNull(ifOk, "ifOk cannot be null"); Objects.requireNonNull(ifError, "ifError cannot be null"); if (isError()) { ifError.accept(message); } else { ifOk.accept(value); } } @Override public Optional getMessage() { return Optional.ofNullable(message); } @Override public boolean isError() { return message != null; } @Override public String toString() { if (isError()) { return "error(" + message + ")"; } else { return "ok(" + value + ")"; } } @Override public R getOrThrow( SerializableFunction exceptionSupplier) throws X { Objects.requireNonNull(exceptionSupplier, "Exception supplier cannot be null"); if (isError()) { throw exceptionSupplier.apply(message); } else { return value; } } }