org.eclipse.microprofile.reactive.streams.operators

## Interface TransformingOperators<T>

Type Parameters:
  `T` - The type of the elements that this stream emits.

All Known Subinterfaces:
  ProcessorBuilder<T,R>, PublisherBuilder<T>

    public interface TransformingOperators<T>

Operations for transforming a stream.

The documentation for each operator uses marble diagrams to visualize how the operator functions. Each element flowing in and out of the stream is represented as a coloured marble that has a value, with the operator applying some transformation or some side effect, termination and error signals potentially being passed, and for operators that subscribe to the stream, an output value being redeemed at the end.

Below is an example diagram labelling all the parts of the stream.

### Method Summary

All Methods Instance Methods Abstract Methods
`<S> TransformingOperators<S>` `flatMap(Function<? super T,? extends PublisherBuilder<? extends S>> mapper)` Map the elements to publishers, and flatten so that the elements emitted by publishers produced by the `mapper` function are emitted from this stream.
`<S> TransformingOperators<S>` `flatMapCompletionStage(Function<? super T,? extends CompletionStage<? extends S>> mapper)` Map the elements to `CompletionStage`, and flatten so that the elements the values redeemed by each `CompletionStage` are emitted from this stream.
`<S> TransformingOperators<S>` `flatMapIterable(Function<? super T,? extends Iterable<? extends S>> mapper)` Map the elements to `Iterable`'s, and flatten so that the elements contained in each iterable are emitted by this stream.
`<S> TransformingOperators<S>` `flatMapRsPublisher(Function<? super T,? extends org.reactivestreams.Publisher<? extends S>> mapper)` Map the elements to publishers, and flatten so that the elements emitted by publishers produced by the `mapper` function are emitted from this stream.
`<R> TransformingOperators<R>` `map(Function<? super T,? extends R> mapper)` Map the elements emitted by this stream using the `mapper` function.

### Method Detail

#### map

    <R> TransformingOperators<R> map(Function<? super T,? extends R> mapper)

Map the elements emitted by this stream using the `mapper` function.

Type Parameters:
  `R` - The type of elements that the `mapper` function emits.
Parameters:
  `mapper` - The function to use to map the elements.
Returns:
  A new stream builder that emits the mapped elements.

#### flatMap

    <S> TransformingOperators<S> flatMap(Function<? super T,? extends PublisherBuilder<? extends S>> mapper)

Map the elements to publishers, and flatten so that the elements emitted by publishers produced by the `mapper` function are emitted from this stream.

This method operates on one publisher at a time. The result is a concatenation of elements emitted from all the publishers produced by the mapper function.

Unlike `flatMapRsPublisher(Function)`}, the mapper function returns a `org.eclipse.microprofile.reactive.streams` type instead of an `org.reactivestreams` type.

Type Parameters:
  `S` - The type of the elements emitted from the new stream.
Parameters:
  `mapper` - The mapper function.
Returns:
  A new stream builder.

#### flatMapRsPublisher

    <S> TransformingOperators<S> flatMapRsPublisher(Function<? super T,? extends org.reactivestreams.Publisher<? extends S>> mapper)

Map the elements to publishers, and flatten so that the elements emitted by publishers produced by the `mapper` function are emitted from this stream.

This method operates on one publisher at a time. The result is a concatenation of elements emitted from all the publishers produced by the mapper function.

Unlike `flatMap(Function)`, the mapper function returns a `org.eclipse.microprofile.reactive.streams` builder instead of an `org.reactivestreams` type.

Type Parameters:
  `S` - The type of the elements emitted from the new stream.
Parameters:
  `mapper` - The mapper function.
Returns:
  A new stream builder.

#### flatMapCompletionStage

    <S> TransformingOperators<S> flatMapCompletionStage(Function<? super T,? extends CompletionStage<? extends S>> mapper)

Map the elements to `CompletionStage`, and flatten so that the elements the values redeemed by each `CompletionStage` are emitted from this stream. If the element is `null`, this operation should be failed with a `NullPointerException`.

This method only works with one element at a time. When an element is received, the `mapper` function is executed, and the next element is not consumed or passed to the `mapper` function until the previous `CompletionStage` is redeemed. Hence this method also guarantees that ordering of the stream is maintained.

Type Parameters:
  `S` - The type of the elements emitted from the new stream.
Parameters:
  `mapper` - The mapper function.
Returns:
  A new stream builder.

#### flatMapIterable

    <S> TransformingOperators<S> flatMapIterable(Function<? super T,? extends Iterable<? extends S>> mapper)

Map the elements to `Iterable`'s, and flatten so that the elements contained in each iterable are emitted by this stream.

This method operates on one iterable at a time. The result is a concatenation of elements contain in all the iterables returned by the `mapper` function.

Type Parameters:
  `S` - The type of the elements emitted from the new stream.
Parameters:
  `mapper` - The mapper function.
Returns:
  A new stream builder.