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

jio.ListExpSeq Maven / Gradle / Ivy

The newest version!
package jio;

import static java.util.Objects.requireNonNull;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.function.BiConsumer;
import java.util.function.Function;
import java.util.function.Predicate;
import jio.Result.Failure;
import jio.Result.Success;

final class ListExpSeq extends ListExp {

  ListExpSeq(final List> list,
             final Function, Throwable>> debugger
            ) {
    super(list,
          debugger);
  }

  @Override
  public ListExp append(final IO val) {
    var xs = new ArrayList<>(list);
    xs.add(requireNonNull(val));
    return new ListExpSeq<>(xs,
                            jfrPublisher);
  }

  @Override
  public ListExp tail() {
    return new ListExpSeq<>(list.subList(1,
                                         list.size()
                                        ),
                            jfrPublisher
    );
  }

  @Override
  public ListExp retryEach(final Predicate predicate,
                                 final RetryPolicy policy
                                ) {
    requireNonNull(policy);
    requireNonNull(predicate);
    return new ListExpSeq<>(list.stream()
                                .map(it -> it.retry(predicate,
                                                    policy
                                                   )
                                    )
                                .toList(),
                            jfrPublisher
    );
  }

  @Override
  Result> reduceExp() {
    List xs = new ArrayList<>(list.size());
    for (var entry : list) {
      try {
        xs.add(entry.call()
                    .getOutputOrThrow()
              );
      } catch (Exception e) {
        return new Failure<>(e);
      }
    }

    return new Success<>(xs);

  }

  @Override
  public ListExp debugEach(final EventBuilder> eventBuilder) {
    return new ListExpSeq<>(DebuggerHelper.debugList(list,
                                                     eventBuilder.exp,
                                                     Objects.requireNonNull(eventBuilder).context
                                                    ),
                            getJFRPublisher(eventBuilder)
    );
  }

  @Override
  public ListExp debugEach(final String context) {
    return debugEach(EventBuilder.of(this.getClass()
                                         .getSimpleName(),
                                     context));

  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy