@@ -259,7 +259,8 @@ public void refresh(T item, boolean refreshChildren) {
259259
260260 @ Override
261261 public Stream <T > fetchFromProvider (int offset , int limit ) {
262- return fetchDataProviderChildren (null , Range .withLength (offset , limit ));
262+ return fetchDataProviderChildren (null , Range .withLength (offset , limit ))
263+ .stream ();
263264 }
264265
265266 @ Override
@@ -516,8 +517,7 @@ && isExpanded(item)) {
516517 private void preloadRange (Cache <T > cache , int start , int length ) {
517518 var range = Range .withLength (start , length )
518519 .restrictTo (Range .withLength (0 , cache .getSize ()));
519- var items = fetchDataProviderChildren (cache .getParentItem (), range )
520- .toList ();
520+ var items = fetchDataProviderChildren (cache .getParentItem (), range );
521521 cache .setItems (range .getStart (), items );
522522 }
523523
@@ -751,16 +751,21 @@ public HierarchicalQuery<T, Object> buildQuery(T parent, int offset,
751751 }
752752
753753 @ SuppressWarnings ("unchecked" )
754- private Stream <T > fetchDataProviderChildren (T parent , Range range ) {
754+ private List <T > fetchDataProviderChildren (T parent , Range range ) {
755755 var query = buildQuery (parent , range .getStart (), range .length ());
756756
757- return ((HierarchicalDataProvider <T , Object >) getDataProvider ())
758- .fetchChildren (query ).peek ((item ) -> {
759- if (item == null ) {
760- throw new IllegalStateException (
761- "Data provider returned a null item. Null values are not supported" );
762- }
763- });
757+ var items = ((HierarchicalDataProvider <T , Object >) getDataProvider ())
758+ .fetchChildren (query ).toList ();
759+ if (items .size () > range .length ()) {
760+ throw new IllegalStateException (
761+ "Data provider returned more items than requested. Requested %d but got %d."
762+ .formatted (range .length (), items .size ()));
763+ }
764+ if (items .contains (null )) {
765+ throw new IllegalStateException (
766+ "Data provider returned a null item. Null values are not supported" );
767+ }
768+ return items ;
764769 }
765770
766771 @ SuppressWarnings ("unchecked" )
0 commit comments