Versions Compared

Key

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

...

Code Block
languagejava
public class KafkaStreams {
 
    // deprecating old constructors

    @Deprecated
    public KafkaStreams(final TopologyBuilder builder, // old TopologyBuilder
                        final Properties props);

    @Deprecated
    public KafkaStreams(final TopologyBuilder builder, // old TopologyBuilder
                        final KStreamBuilderStreamsConfig config);

    @Deprecated
    public KafkaStreams(final TopologyBuilder builder, // old TopologyBuilder
                        final StreamsConfig config,
                        final KafkaClientSupplier clientSupplier);

    // adding new constructors
 
    public KafkaStreams(final TopologyBuilder builder, // new TopologyBuilder
                        final Properties props);

    public KafkaStreams(final TopologyBuilder builder, // new TopologyBuilder
                        final KStreamBuilderStreamsConfig config);

    public KafkaStreams(final TopologyBuilder builder, // new TopologyBuilder
                        final StreamsConfig config,
                        final KafkaClientSupplier clientSupplier);

    public KafkaStreams(final KStreamBuilder builder, // new KStreamBuilder
                        final Properties props);


    public KafkaStreams(final KStreamBuilder builder, // new KStreamBuilder
                        final KStreamBuilderStreamsConfig config);

    public KafkaStreams(final KStreamBuilder builder, // new KStreamBuilder
                        final StreamsConfig config,
                        final KafkaClientSupplier clientSupplier);


}

...

The newly added KStreamBuilder used the new TopologyBuilder as a member (no class hierarchy anymore – using it as member gives a clear separation between PAPI and DSL).

Because the new {{TKStreamBuilder does not inherit from new TopologyBuilder we need to add some more constructors to KafkaStreams.

 

Note: because of backward compatibility, removed DSL specific classes offered by old TopologyBuilder must be offered by InternalTopologyBuilder for now. However, after both deprecated classes got removed, this cleanup can be done (and does not require a KIP anymore, because it's internal refactoring -- we just need to create a JIRA for this). Thus, this KIP falls short of separating PAPI and DSL completely. But it's a necessary first step to do the separation in a backward compatible way (backward compatibility requires a two step approach).

...