DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
...
Four new methods are added to KStream. They mirror the four existing stream-globalTable join overloads that take a ValueJoinerWithKey .
| Code Block | ||
|---|---|---|
| ||
/** As {@link #join(GlobalKTable, KeyValueMapper, ValueJoiner)}, but the joiner's {@code readOnlyKey} is the mapped join key. */ <GlobalKey, GlobalValue, VOut> KStream<K, VOut> joinOnForeignKeyjoinOnMappedKey( final GlobalKTable<GlobalKey, GlobalValue> globalTable, final KeyValueMapper<? super K, ? super V, ? extends GlobalKey> keySelector, final ValueJoinerWithKey<? super GlobalKey, ? super V, ? super GlobalValue, ? extends VOut> joiner ) /** As above, with a {@link Named} processor name. */ <GlobalKey, GlobalValue, VOut> KStream<K, VOut> joinOnForeignKeyjoinOnMappedKey( final GlobalKTable<GlobalKey, GlobalValue> globalTable, final KeyValueMapper<? super K, ? super V, ? extends GlobalKey> keySelector, final ValueJoinerWithKey<? super GlobalKey, ? super V, ? super GlobalValue, ? extends VOut> joiner, final Named named ) /** As {@link #leftJoin(GlobalKTable, KeyValueMapper, ValueJoiner)}, but the joiner's {@code readOnlyKey} is the mapped join key. */ <GlobalKey, GlobalValue, VOut> KStream<K, VOut> leftJoinOnForeignKeyleftJoinOnMappedKey( final GlobalKTable<GlobalKey, GlobalValue> globalTable, final KeyValueMapper<? super K, ? super V, ? extends GlobalKey> keySelector, final ValueJoinerWithKey<? super GlobalKey, ? super V, ? super GlobalValue, ? extends VOut> joiner ) /** As above, with a {@link Named} processor name. */ <GlobalKey, GlobalValue, VOut> KStream<K, VOut> leftJoinOnForeignKeyleftJoinOnMappedKey( final GlobalKTable<GlobalKey, GlobalValue> globalTable, final KeyValueMapper<? super K, ? super V, ? extends GlobalKey> keySelector, final ValueJoinerWithKey<? super GlobalKey, ? super V, ? super GlobalValue, ? extends VOut> joiner, final Named named ) |
...
The new overloads would differ from the existing ones only in the generic parameterization of ValueJoinerWithKey (the first type parameter would bind to the mapped key type instead of the stream key type). After type erasure, both have identical signatures, and Java rejects them as duplicate method declarations.
Add a new functional interface exposing both the stream key and the mapped key
Would require introducing a new ValueJoinerWithKeys interface accepting both keys. Rejected for this KIP, whose scope is limited to honoring KIP-149's existing readOnlyKey contract. It can be revisited as a separate KIP if demand