Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagejava
titleKTable.java
   /**
     * 
     * Joins one record of this KTable to n records of the other KTable,
     * an update in this KTable will update all n matching records, an update
     * in other table will update only the one matching record.
     * 
     * @param the table containing n records for each K of this table
     * @param keyExtractor a {@code ValueMapper} returning the key of this table from the others value
     * @param joinPrefixFaker a {@code ValueMapper} returning an outputkey that when serialized only produces the
     *                             prefix of the output key which is the same as serializing K 
     * @param leftKeyExtractor a {@code ValueMapper} extracting the Key of this table from the resulting Key 
     * @param <K0><KO> the resultings tables Key
     * @param <V0><VO> the resultings tables Value
     * @param joiner
     * @return
     */
    <K0<KO, V0VO, KOK1, VO>V1> KTable<K0KTable<KO, V0>VO> oneToManyJoin(KTable<KOKTable<K1, VO>V1> other,
            ValueMapper<VOValueMapper<V1, K> keyExtractor,
            ValueMapper<K, K0>KO> joinPrefixFaker,
            ValueMapper<K0ValueMapper<KO, K> leftKeyExtractor, 
            ValueJoiner<V, VOV1, V0>VO> joiner,
            Serde<KO>Serde<K1> keyOtherSerde, Serde<VO>Serde<V1> valueOtherSerde,
            Serde<K0>Serde<KO> joinKeySerde, Serde<V0>Serde<VO> joinValueSerde);

More intrusive

...

Code Block
languagejava
titleKTable.java
   /**
     * 
     * Joins one record of this KTable to n records of the other KTable,
     * an update in this KTable will update all n matching records, an update
     * in other table will update only the one matching record.
     * 
     * @param the table containing n records for each K of this table
     * @param keyExtractor a {@code ValueMapper} returning the key of this table from the others value
     * @param leftKeyExtractor a {@code ValueMapper} extracting the Key of this table from the resulting Key 
     * @param <V0><VO> the resultings tables Value
     * @param joiner
     * @return
     */
    <V0<VO, KOK1, VO>V1> KTable<CombinedKey<K,KO>K1>,V0>VO> oneToManyJoin(KTable<KOKTable<K1, VO>V1> other,
            ValueMapper<VOValueMapper<V1, K> keyExtractor, 
            ValueJoiner<V, VOV1, V0>VO> joiner,
            Serde<KO>Serde<K1> keyOtherSerde, Serde<VO>Serde<V1> valueOtherSerde,
            Serde<V0>Serde<VO> joinValueSerde);

Tradeoffs

...