## Uses of Interface
com.hazelcast.jet.function.BiFunctionEx

- Packages that use BiFunctionEx
  Package | Description
  --- | ---
  com.hazelcast.jet.aggregate | Contains `AggregateOperation` and several its variants, as well as a builder object for the aggregate operations.
  com.hazelcast.jet.avro | Apache Avro file read/write support for Hazelcast Jet.
  com.hazelcast.jet.core.processor | Contains static utility classes with factories of Jet processors.
  com.hazelcast.jet.function | Serializable and exception-declaring variants of functional interfaces from `java.util.function`.
  com.hazelcast.jet.hadoop | Apache Hadoop HDFS read/write support for Hazelcast Jet.
  com.hazelcast.jet.pipeline | The Pipeline API is Jet's high-level API to build and execute distributed computation jobs.
  com.hazelcast.jet.s3 | AWS S3 read/write support for Hazelcast Jet.

- - ### Uses of BiFunctionEx in com.hazelcast.jet.aggregate

    Methods in com.hazelcast.jet.aggregate with parameters of type BiFunctionEx
    Modifier and Type | Method and Description
    --- | ---
    `static <T0,A0,R0,T1,A1,R1,R> AggregateOperation2<T0,T1,Tuple2<A0,A1>,R>` | AggregateOperations.`aggregateOperation2(AggregateOperation1<? super T0,A0,? extends R0> op0, AggregateOperation1<? super T1,A1,? extends R1> op1, BiFunctionEx<? super R0,? super R1,? extends R> exportFinishFn)` Returns an aggregate operation that is a composite of two independent aggregate operations, each one accepting its own input.
    `static <T,A0,A1,R0,R1,R> AggregateOperation1<T,Tuple2<A0,A1>,R>` | AggregateOperations.`allOf(AggregateOperation1<? super T,A0,? extends R0> op0, AggregateOperation1<? super T,A1,? extends R1> op1, BiFunctionEx<? super R0,? super R1,? extends R> exportFinishFn)` Returns an aggregate operation that is a composite of two aggregate operations.

  - ### Uses of BiFunctionEx in com.hazelcast.jet.avro

    Methods in com.hazelcast.jet.avro with parameters of type BiFunctionEx
    Modifier and Type | Method and Description
    --- | ---
    `<T> BatchSource<T>` | AvroSourceBuilder.`build(BiFunctionEx<String,? super D,T> mapOutputFn)` Builds a custom Avro file `BatchSource` with supplied components and the output function `mapOutputFn`.
    `static <D> BatchSource<D>` | AvroSources.`files(String directory, BiFunctionEx<String,org.apache.avro.generic.GenericRecord,D> mapOutputFn)` Convenience for `AvroSources.filesBuilder(String, SupplierEx)` which reads all the files in the supplied directory as generic records and emits the results of transforming each generic record with the supplied mapping function.
    `static <D,T> ProcessorMetaSupplier` | AvroProcessors.`readFilesP(String directory, String glob, boolean sharedFileSystem, SupplierEx<? extends org.apache.avro.io.DatumReader<D>> datumReaderSupplier, BiFunctionEx<String,? super D,T> mapOutputFn)` Returns a supplier of processors for `AvroSources.filesBuilder(java.lang.String, java.lang.Class<D>)`.

  - ### Uses of BiFunctionEx in com.hazelcast.jet.core.processor

    Methods in com.hazelcast.jet.core.processor with parameters of type BiFunctionEx
    Modifier and Type | Method and Description
    --- | ---
    `static <K,A,R,OUT> SupplierEx<Processor>` | Processors.`aggregateByKeyP(List<FunctionEx<?,? extends K>> keyFns, AggregateOperation<A,R> aggrOp, BiFunctionEx<? super K,? super R,OUT> mapToOutputFn)` Returns a supplier of processors for a vertex that groups items by key and performs the provided aggregate operation on each group.
    `static <K,A,R,OUT> SupplierEx<Processor>` | Processors.`combineByKeyP(AggregateOperation<A,R> aggrOp, BiFunctionEx<? super K,? super R,OUT> mapToOutputFn)` Returns a supplier of processors for the second-stage vertex in a two-stage group-and-aggregate setup.
    `static <C,T,K> ProcessorSupplier` | Processors.`filterUsingContextAsyncP(ContextFactory<C> contextFactory, FunctionEx<T,K> extractKeyFn, BiFunctionEx<? super C,? super T,CompletableFuture<Boolean>> filterAsyncFn)` Asynchronous version of `Processors.filterUsingContextP(com.hazelcast.jet.pipeline.ContextFactory<C>, com.hazelcast.jet.function.BiPredicateEx<? super C, ? super T>)`: the `filterAsyncFn` returns a `CompletableFuture<Boolean>` instead of just a `boolean`.
    `static <C,T,K,R> ProcessorSupplier` | Processors.`flatMapUsingContextAsyncP(ContextFactory<C> contextFactory, FunctionEx<? super T,? extends K> extractKeyFn, BiFunctionEx<? super C,? super T,CompletableFuture<Traverser<R>>> flatMapAsyncFn)` Asynchronous version of `Processors.flatMapUsingContextP(com.hazelcast.jet.pipeline.ContextFactory<C>, com.hazelcast.jet.function.BiFunctionEx<? super C, ? super T, ? extends com.hazelcast.jet.Traverser<? extends R>>)`: the `flatMapAsyncFn` returns a `CompletableFuture<Traverser<R>>` instead of just a `Traverser<R>`.
    `static <C,T,R> ProcessorSupplier` | Processors.`flatMapUsingContextP(ContextFactory<C> contextFactory, BiFunctionEx<? super C,? super T,? extends Traverser<? extends R>> flatMapFn)` Returns a supplier of processors for a vertex that applies the provided item-to-traverser mapping function to each received item and emits all the items from the resulting traverser.
    `static <C,T,K,R> ProcessorSupplier` | Processors.`mapUsingContextAsyncP(ContextFactory<C> contextFactory, FunctionEx<T,K> extractKeyFn, BiFunctionEx<? super C,? super T,CompletableFuture<R>> mapAsyncFn)` Asynchronous version of `Processors.mapUsingContextP(com.hazelcast.jet.pipeline.ContextFactory<C>, com.hazelcast.jet.function.BiFunctionEx<? super C, ? super T, ? extends R>)`: the `mapAsyncFn` returns a `CompletableFuture<R>` instead of just `R`.
    `static <C,T,R> ProcessorSupplier` | Processors.`mapUsingContextP(ContextFactory<C> contextFactory, BiFunctionEx<? super C,? super T,? extends R> mapFn)` Returns a supplier of processors for a vertex which, for each received item, emits the result of applying the given mapping function to it.
    `static <R> ProcessorMetaSupplier` | SourceProcessors.`readFilesP(String directory, Charset charset, String glob, boolean sharedFileSystem, BiFunctionEx<? super String,? super String,? extends R> mapOutputFn)` Returns a supplier of processors for `Sources.filesBuilder(java.lang.String)`.
    `static ProcessorMetaSupplier` | SourceProcessors.`streamFilesP(String watchedDirectory, Charset charset, String glob, boolean sharedFileSystem, BiFunctionEx<? super String,? super String,?> mapOutputFn)` Returns a supplier of processors for `Sources.filesBuilder(java.lang.String)`.
    `static <T,K,V> ProcessorMetaSupplier` | SinkProcessors.`updateMapP(String mapName, FunctionEx<? super T,? extends K> toKeyFn, BiFunctionEx<? super V,? super T,? extends V> updateFn)` Returns a supplier of processors for `Sinks.mapWithEntryProcessor(String, FunctionEx, FunctionEx)` .
    `static <T,K,V> ProcessorMetaSupplier` | SinkProcessors.`updateRemoteMapP(String mapName, ClientConfig clientConfig, FunctionEx<? super T,? extends K> toKeyFn, BiFunctionEx<? super V,? super T,? extends V> updateFn)` Returns a supplier of processors for `Sinks.remoteMapWithUpdating(String, ClientConfig, FunctionEx , BiFunctionEx)`.
    `static <T> ProcessorMetaSupplier` | SinkProcessors.`writeJmsQueueP(SupplierEx<? extends javax.jms.Connection> newConnectionFn, FunctionEx<? super javax.jms.Connection,? extends javax.jms.Session> newSessionFn, BiFunctionEx<? super javax.jms.Session,? super T,? extends javax.jms.Message> messageFn, BiConsumerEx<? super javax.jms.MessageProducer,? super javax.jms.Message> sendFn, ConsumerEx<? super javax.jms.Session> flushFn, String name)` Returns a supplier of processors for `Sinks.jmsQueueBuilder(com.hazelcast.jet.function.SupplierEx<javax.jms.ConnectionFactory>)`.
    `static <T> ProcessorMetaSupplier` | SinkProcessors.`writeJmsTopicP(SupplierEx<? extends javax.jms.Connection> newConnectionFn, FunctionEx<? super javax.jms.Connection,? extends javax.jms.Session> newSessionFn, BiFunctionEx<? super javax.jms.Session,? super T,? extends javax.jms.Message> messageFn, BiConsumerEx<? super javax.jms.MessageProducer,? super javax.jms.Message> sendFn, ConsumerEx<? super javax.jms.Session> flushFn, String name)` Returns a supplier of processors for `Sinks.jmsTopicBuilder(com.hazelcast.jet.function.SupplierEx<javax.jms.ConnectionFactory>)`.

  - ### Uses of BiFunctionEx in com.hazelcast.jet.function

    Methods in com.hazelcast.jet.function that return BiFunctionEx
    Modifier and Type | Method and Description
    --- | ---
    `default <V> BiFunctionEx<T,U,V>` | BiFunctionEx.`andThen(FunctionEx<? super R,? extends V> after)` `Serializable` variant of `java.util.function.BiFunction#andThen(Function)`.

  - ### Uses of BiFunctionEx in com.hazelcast.jet.hadoop

    Methods in com.hazelcast.jet.hadoop with parameters of type BiFunctionEx
    Modifier and Type | Method and Description
    --- | ---
    `static <K,V,E> BatchSource<E>` | HdfsSources.`hdfs(org.apache.hadoop.mapred.JobConf jobConf, BiFunctionEx<K,V,E> projectionFn)` Returns a source that reads records from Apache Hadoop HDFS and emits the results of transforming each record (a key-value pair) with the supplied mapping function.
    `static <K,V,R> com.hazelcast.jet.hadoop.impl.ReadHdfsP.MetaSupplier<K,V,R>` | HdfsProcessors.`readHdfsP(org.apache.hadoop.mapred.JobConf jobConf, BiFunctionEx<K,V,R> mapper)` Returns a supplier of processors for `HdfsSources.hdfs(JobConf, BiFunctionEx)`.

  - ### Uses of BiFunctionEx in com.hazelcast.jet.pipeline

    Methods in com.hazelcast.jet.pipeline with parameters of type BiFunctionEx
    Modifier and Type | Method and Description
    --- | ---
    `<R,OUT> BatchStage<OUT>` | GroupAggregateBuilder1.`build(AggregateOperation<?,R> aggrOp, BiFunctionEx<? super K,? super R,OUT> mapToOutputFn)` Deprecated. This is a leftover from an earlier development cycle of the Pipeline API. Use `GroupAggregateBuilder1.build(AggregateOperation)` instead and add a separate mapping stage with `mapToOutputFn`.
    `<T> BatchSource<T>` | FileSourceBuilder.`build(BiFunctionEx<String,String,? extends T> mapOutputFn)` Builds a custom file `BatchSource` with supplied components and the output function `mapOutputFn`.
    `<R> StreamStage<R>` | StreamHashJoinBuilder.`build(BiFunctionEx<T0,ItemsByTag,R> mapToOutputFn)` Builds a new pipeline stage that performs the hash-join operation.
    `<R> BatchStage<R>` | HashJoinBuilder.`build(BiFunctionEx<T0,ItemsByTag,R> mapToOutputFn)` Builds a new pipeline stage that performs the hash-join operation.
    `<T> StreamSource<T>` | FileSourceBuilder.`buildWatcher(BiFunctionEx<String,String,? extends T> mapOutputFn)` Builds a source that emits a stream of lines of text coming from files in the watched directory (but not its subdirectories).
    `<C> StreamStage<T>` | StreamStage.`filterUsingContextAsync(ContextFactory<C> contextFactory, BiFunctionEx<? super C,? super T,? extends CompletableFuture<Boolean>> filterAsyncFn)`
    `<C> GeneralStage<T>` | GeneralStage.`filterUsingContextAsync(ContextFactory<C> contextFactory, BiFunctionEx<? super C,? super T,? extends CompletableFuture<Boolean>> filterAsyncFn)` Asynchronous version of `GeneralStage.filterUsingContext(com.hazelcast.jet.pipeline.ContextFactory<C>, com.hazelcast.jet.function.BiPredicateEx<? super C, ? super T>)`: the `filterAsyncFn` returns a `CompletableFuture<Boolean>` instead of just a `boolean`.
    `<C> BatchStage<T>` | BatchStage.`filterUsingContextAsync(ContextFactory<C> contextFactory, BiFunctionEx<? super C,? super T,? extends CompletableFuture<Boolean>> filterAsyncFn)`
    `<S,R> StreamStage<R>` | StreamStage.`flatMapStateful(SupplierEx<? extends S> createFn, BiFunctionEx<? super S,? super T,? extends Traverser<R>> flatMapFn)`
    `<S,R> GeneralStage<R>` | GeneralStage.`flatMapStateful(SupplierEx<? extends S> createFn, BiFunctionEx<? super S,? super T,? extends Traverser<R>> flatMapFn)` Attaches a stage that performs a stateful flat-mapping operation.
    `<S,R> BatchStage<R>` | BatchStage.`flatMapStateful(SupplierEx<? extends S> createFn, BiFunctionEx<? super S,? super T,? extends Traverser<R>> flatMapFn)`
    `<C,R> StreamStage<R>` | StreamStage.`flatMapUsingContext(ContextFactory<C> contextFactory, BiFunctionEx<? super C,? super T,? extends Traverser<R>> flatMapFn)`
    `<C,R> GeneralStage<R>` | GeneralStage.`flatMapUsingContext(ContextFactory<C> contextFactory, BiFunctionEx<? super C,? super T,? extends Traverser<R>> flatMapFn)` Attaches a flat-mapping stage which applies the supplied function to each input item independently and emits all items from the `Traverser` it returns as the output items.
    `<C,R> BatchStage<R>` | BatchStage.`flatMapUsingContext(ContextFactory<C> contextFactory, BiFunctionEx<? super C,? super T,? extends Traverser<R>> flatMapFn)`
    `<C,R> StreamStage<R>` | StreamStage.`flatMapUsingContextAsync(ContextFactory<C> contextFactory, BiFunctionEx<? super C,? super T,? extends CompletableFuture<Traverser<R>>> flatMapAsyncFn)`
    `<C,R> GeneralStage<R>` | GeneralStage.`flatMapUsingContextAsync(ContextFactory<C> contextFactory, BiFunctionEx<? super C,? super T,? extends CompletableFuture<Traverser<R>>> flatMapAsyncFn)` Asynchronous version of `GeneralStage.flatMapUsingContext(com.hazelcast.jet.pipeline.ContextFactory<C>, com.hazelcast.jet.function.BiFunctionEx<? super C, ? super T, ? extends com.hazelcast.jet.Traverser<R>>)`: the `flatMapAsyncFn` returns a `CompletableFuture<Traverser<R>>` instead of just `Traverser<R>`.
    `<C,R> BatchStage<R>` | BatchStage.`flatMapUsingContextAsync(ContextFactory<C> contextFactory, BiFunctionEx<? super C,? super T,? extends CompletableFuture<Traverser<R>>> flatMapAsyncFn)`
    `<K,T1_IN,T1,R> StreamStage<R>` | StreamStage.`hashJoin(BatchStage<T1_IN> stage1, JoinClause<K,? super T,? super T1_IN,? extends T1> joinClause1, BiFunctionEx<T,T1,R> mapToOutputFn)`
    `<K,T1_IN,T1,R> GeneralStage<R>` | GeneralStage.`hashJoin(BatchStage<T1_IN> stage1, JoinClause<K,? super T,? super T1_IN,? extends T1> joinClause1, BiFunctionEx<T,T1,R> mapToOutputFn)` Attaches to both this and the supplied stage a hash-joining stage and returns it.
    `<K,T1_IN,T1,R> BatchStage<R>` | BatchStage.`hashJoin(BatchStage<T1_IN> stage1, JoinClause<K,? super T,? super T1_IN,? extends T1> joinClause1, BiFunctionEx<T,T1,R> mapToOutputFn)`
    `<S,R> StreamStage<R>` | StreamStage.`mapStateful(SupplierEx<? extends S> createFn, BiFunctionEx<? super S,? super T,? extends R> mapFn)`
    `<S,R> GeneralStage<R>` | GeneralStage.`mapStateful(SupplierEx<? extends S> createFn, BiFunctionEx<? super S,? super T,? extends R> mapFn)` Attaches a stage that performs a stateful mapping operation.
    `<S,R> BatchStage<R>` | BatchStage.`mapStateful(SupplierEx<? extends S> createFn, BiFunctionEx<? super S,? super T,? extends R> mapFn)`
    `<C,R> StreamStage<R>` | StreamStage.`mapUsingContext(ContextFactory<C> contextFactory, BiFunctionEx<? super C,? super T,? extends R> mapFn)`
    `<C,R> GeneralStage<R>` | GeneralStage.`mapUsingContext(ContextFactory<C> contextFactory, BiFunctionEx<? super C,? super T,? extends R> mapFn)` Attaches a mapping stage which applies the supplied function to each input item independently and emits the function's result as the output item.
    `<C,R> BatchStage<R>` | BatchStage.`mapUsingContext(ContextFactory<C> contextFactory, BiFunctionEx<? super C,? super T,? extends R> mapFn)`
    `<C,R> StreamStage<R>` | StreamStage.`mapUsingContextAsync(ContextFactory<C> contextFactory, BiFunctionEx<? super C,? super T,? extends CompletableFuture<R>> mapAsyncFn)`
    `<C,R> GeneralStage<R>` | GeneralStage.`mapUsingContextAsync(ContextFactory<C> contextFactory, BiFunctionEx<? super C,? super T,? extends CompletableFuture<R>> mapAsyncFn)` Asynchronous version of `GeneralStage.mapUsingContext(com.hazelcast.jet.pipeline.ContextFactory<C>, com.hazelcast.jet.function.BiFunctionEx<? super C, ? super T, ? extends R>)`: the `mapAsyncFn` returns a `CompletableFuture<R>` instead of just `R`.
    `<C,R> BatchStage<R>` | BatchStage.`mapUsingContextAsync(ContextFactory<C> contextFactory, BiFunctionEx<? super C,? super T,? extends CompletableFuture<R>> mapAsyncFn)`
    `default <V,R> StreamStage<R>` | StreamStageWithKey.`mapUsingIMap(IMap<K,V> iMap, BiFunctionEx<? super T,? super V,? extends R> mapFn)`
    `default <V,R> GeneralStage<R>` | GeneralStageWithKey.`mapUsingIMap(IMap<K,V> iMap, BiFunctionEx<? super T,? super V,? extends R> mapFn)` Attaches a mapping stage where for each item a lookup in the supplied `IMap` using the grouping key is performed and the result of the lookup is merged with the item and emitted.
    `default <V,R> BatchStage<R>` | BatchStageWithKey.`mapUsingIMap(IMap<K,V> iMap, BiFunctionEx<? super T,? super V,? extends R> mapFn)`
    `default <K,V,R> StreamStage<R>` | StreamStage.`mapUsingIMap(IMap<K,V> iMap, FunctionEx<? super T,? extends K> lookupKeyFn, BiFunctionEx<? super T,? super V,? extends R> mapFn)`
    `default <K,V,R> GeneralStage<R>` | GeneralStage.`mapUsingIMap(IMap<K,V> iMap, FunctionEx<? super T,? extends K> lookupKeyFn, BiFunctionEx<? super T,? super V,? extends R> mapFn)` Attaches a mapping stage where for each item a lookup in the supplied `IMap` is performed and the result of the lookup is merged with the item and emitted.
    `default <K,V,R> BatchStage<R>` | BatchStage.`mapUsingIMap(IMap<K,V> iMap, FunctionEx<? super T,? extends K> lookupKeyFn, BiFunctionEx<? super T,? super V,? extends R> mapFn)`
    `default <V,R> StreamStage<R>` | StreamStageWithKey.`mapUsingIMap(String mapName, BiFunctionEx<? super T,? super V,? extends R> mapFn)`
    `default <V,R> GeneralStage<R>` | GeneralStageWithKey.`mapUsingIMap(String mapName, BiFunctionEx<? super T,? super V,? extends R> mapFn)` Attaches a mapping stage where for each item a lookup in the `IMap` with the supplied name using the grouping key is performed and the result of the lookup is merged with the item and emitted.
    `default <V,R> BatchStage<R>` | BatchStageWithKey.`mapUsingIMap(String mapName, BiFunctionEx<? super T,? super V,? extends R> mapFn)`
    `default <K,V,R> StreamStage<R>` | StreamStage.`mapUsingIMap(String mapName, FunctionEx<? super T,? extends K> lookupKeyFn, BiFunctionEx<? super T,? super V,? extends R> mapFn)`
    `default <K,V,R> GeneralStage<R>` | GeneralStage.`mapUsingIMap(String mapName, FunctionEx<? super T,? extends K> lookupKeyFn, BiFunctionEx<? super T,? super V,? extends R> mapFn)` Attaches a mapping stage where for each item a lookup in the `IMap` with the supplied name is performed and the result of the lookup is merged with the item and emitted.
    `default <K,V,R> BatchStage<R>` | BatchStage.`mapUsingIMap(String mapName, FunctionEx<? super T,? extends K> lookupKeyFn, BiFunctionEx<? super T,? super V,? extends R> mapFn)`
    `default <K,V,R> StreamStage<R>` | StreamStage.`mapUsingReplicatedMap(ReplicatedMap<K,V> replicatedMap, FunctionEx<? super T,? extends K> lookupKeyFn, BiFunctionEx<? super T,? super V,? extends R> mapFn)`
    `default <K,V,R> GeneralStage<R>` | GeneralStage.`mapUsingReplicatedMap(ReplicatedMap<K,V> replicatedMap, FunctionEx<? super T,? extends K> lookupKeyFn, BiFunctionEx<? super T,? super V,? extends R> mapFn)` Attaches a mapping stage where for each item a lookup in the supplied `ReplicatedMap` is performed and the result of the lookup is merged with the item and emitted.
    `default <K,V,R> BatchStage<R>` | BatchStage.`mapUsingReplicatedMap(ReplicatedMap<K,V> replicatedMap, FunctionEx<? super T,? extends K> lookupKeyFn, BiFunctionEx<? super T,? super V,? extends R> mapFn)`
    `default <K,V,R> StreamStage<R>` | StreamStage.`mapUsingReplicatedMap(String mapName, FunctionEx<? super T,? extends K> lookupKeyFn, BiFunctionEx<? super T,? super V,? extends R> mapFn)`
    `default <K,V,R> GeneralStage<R>` | GeneralStage.`mapUsingReplicatedMap(String mapName, FunctionEx<? super T,? extends K> lookupKeyFn, BiFunctionEx<? super T,? super V,? extends R> mapFn)` Attaches a mapping stage where for each item a lookup in the `ReplicatedMap` with the supplied name is performed and the result of the lookup is merged with the item and emitted.
    `default <K,V,R> BatchStage<R>` | BatchStage.`mapUsingReplicatedMap(String mapName, FunctionEx<? super T,? extends K> lookupKeyFn, BiFunctionEx<? super T,? super V,? extends R> mapFn)`
    `static <K,V,E extends Map.Entry<K,V>> Sink<E>` | Sinks.`mapWithUpdating(IMap<? super K,? super V> map, BiFunctionEx<? super V,? super E,? extends V> updateFn)` Convenience for `Sinks.mapWithUpdating(IMap, FunctionEx, BiFunctionEx)` with `Map.Entry` as the input item.
    `static <T,K,V> Sink<T>` | Sinks.`mapWithUpdating(IMap<? super K,? super V> map, FunctionEx<? super T,? extends K> toKeyFn, BiFunctionEx<? super V,? super T,? extends V> updateFn)` Returns a sink that uses the supplied key-extracting and value-updating functions to update a Hazelcast `IMap`.
    `static <K,V,E extends Map.Entry<K,V>> Sink<E>` | Sinks.`mapWithUpdating(String mapName, BiFunctionEx<? super V,? super E,? extends V> updateFn)` Convenience for `Sinks.mapWithUpdating(String, FunctionEx, BiFunctionEx)` with `Map.Entry` as the input item.
    `static <T,K,V> Sink<T>` | Sinks.`mapWithUpdating(String mapName, FunctionEx<? super T,? extends K> toKeyFn, BiFunctionEx<? super V,? super T,? extends V> updateFn)` Returns a sink that uses the supplied key-extracting and value-updating functions to update a Hazelcast `IMap`.
    `JmsSinkBuilder<T>` | JmsSinkBuilder.`messageFn(BiFunctionEx<javax.jms.Session,T,javax.jms.Message> messageFn)` Sets the function which creates the message from the item.
    `static <K,V,E extends Map.Entry<K,V>> Sink<E>` | Sinks.`remoteMapWithUpdating(String mapName, ClientConfig clientConfig, BiFunctionEx<? super V,? super E,? extends V> updateFn)` Convenience for `Sinks.remoteMapWithUpdating(java.lang.String, com.hazelcast.client.config.ClientConfig, com.hazelcast.jet.function.FunctionEx<? super T, ? extends K>, com.hazelcast.jet.function.BiFunctionEx<? super V, ? super T, ? extends V>)` with `Map.Entry` as input item.
    `static <T,K,V> Sink<T>` | Sinks.`remoteMapWithUpdating(String mapName, ClientConfig clientConfig, FunctionEx<? super T,? extends K> toKeyFn, BiFunctionEx<? super V,? super T,? extends V> updateFn)` Returns a sink equivalent to `Sinks.mapWithUpdating(java.lang.String, com.hazelcast.jet.function.FunctionEx<? super T, ? extends K>, com.hazelcast.jet.function.BiFunctionEx<? super V, ? super T, ? extends V>)`, but for a map in a remote Hazelcast cluster identified by the supplied `ClientConfig`.

  - ### Uses of BiFunctionEx in com.hazelcast.jet.s3

    Methods in com.hazelcast.jet.s3 with parameters of type BiFunctionEx
    Modifier and Type | Method and Description
    --- | ---
    `static <T> BatchSource<T>` | S3Sources.`s3(List<String> bucketNames, String prefix, Charset charset, SupplierEx<? extends software.amazon.awssdk.services.s3.S3Client> clientSupplier, BiFunctionEx<String,String,? extends T> mapFn)` Creates an AWS S3 `BatchSource` which lists all the objects in the bucket-list using given `prefix`, reads them line by line, transforms each line to the desired output object using given `mapFn` and emits them to downstream.

Copyright © 2019. All rights reserved.