class ThymeleafController {


    private PlaylistEntryRepository playlistEntryRepository;



    public ThymeleafController() {
        super();
    }


    @Autowired
    public void setPlaylistEntryRepository(final PlaylistEntryRepository playlistEntryRepository) {
        this.playlistEntryRepository = playlistEntryRepository;
    }



    @RequestMapping({"/", "/thymeleaf"})
    public String index() {
        return "thymeleaf/index";
    }


    @RequestMapping("/smalllist.thymeleaf")
    public String smallList(final Model model) {
        model.addAttribute("entries", this.playlistEntryRepository.findAllPlaylistEntries());
        return "thymeleaf/smalllist";
    }


    @RequestMapping("/biglist-datadriven.thymeleaf")
    public String bigListDataDriven(final Model model) {

        final Flux<PlaylistEntry> playlistStream = this.playlistEntryRepository.findLargeCollectionPlaylistEntries();
        // No need to fully resolve the Publisher! We will just let it drive
        model.addAttribute("dataSource", new ReactiveDataDriverContextVariable(playlistStream, 1000));

        return "thymeleaf/biglist-datadriven";

    }


    @RequestMapping("/biglist-chunked.thymeleaf")
    public String bigListChunked(final Model model) {<FILL_FUNCTION_BODY>}


    @RequestMapping("/biglist-full.thymeleaf")
    public String bigListFull(final Model model) {

        // Will be async resolved by Spring WebFlux before calling the view
        final Flux<PlaylistEntry> playlistStream = this.playlistEntryRepository.findLargeCollectionPlaylistEntries();

        model.addAttribute("dataSource", playlistStream);

        return "thymeleaf/biglist-full";

    }

}


        // Will be async resolved by Spring WebFlux before calling the view
        final Flux<PlaylistEntry> playlistStream = this.playlistEntryRepository.findLargeCollectionPlaylistEntries();

        model.addAttribute("dataSource", playlistStream);

        return "thymeleaf/biglist-chunked";

    
<no_super_class>