[ https://issues.apache.org/jira/browse/KAFKA-8035?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Bruno Cadonna updated KAFKA-8035: --------------------------------- Summary: Add tests for generics in KStream API (was: Add tests for generic bounds for KStream API ) > Add tests for generics in KStream API > -------------------------------------- > > Key: KAFKA-8035 > URL: https://issues.apache.org/jira/browse/KAFKA-8035 > Project: Kafka > Issue Type: Test > Components: streams > Reporter: Bruno Cadonna > Priority: Major > > During the work on KAFKA-4217, it was discovered that some combinations of > Java generics block the usage of lambda functions ([see this > discussion|https://github.com/apache/kafka/pull/5273#discussion_r216810275]). > To avoid using those blocking combinations of generics, tests shall be > implemented that verify that lambda functions can be used with the KStream > API. Those tests may also serve as regression tests to ensure that future > changes to the generics in the KStream API may not block lambda functions and > make the API incompatible with previous versions. > Unlike other tests, the tests required here pass if they compile. For > example, to verify that the parameter {{mapper}} in > {code:java} > <KR, VR> KStream<KR, VR> flatMap(final KeyValueMapper<? super K, ? super V, ? > extends Iterable<? extends KeyValue<? extends KR, ? extends VR>>> mapper); > {code} > accepts a {{KeyValueMapper}} specified as a lambda function that returns an > implementation of the {{Iterable}} interface, the following stream could be > specified in the test: > {code:java} > stream > .flatMap((Integer key, Integer value) -> Arrays.asList( > KeyValue.pair(key, value), > KeyValue.pair(key, value), > KeyValue.pair(key, value))) > .foreach(action); > {code} > If the test compiles, the test passes. > Other tests for {{flatMap}} need to check the bounds of the generics, e.g., > if the {{mapper}} accepts a {{KeyValueMapper}} specified as a lambda function > that takes a super class of K and V as inputs. -- This message was sent by Atlassian JIRA (v7.6.3#76005)