2727import java .util .Iterator ;
2828import java .util .Objects ;
2929import java .util .Set ;
30+ import java .util .stream .Collectors ;
3031import java .util .stream .Stream ;
3132
3233import org .apache .commons .rdf .api .*;
@@ -103,7 +104,9 @@ protected <T> T anyOrNull(final IRI p, final ValueMapping<T> m) {
103104 Objects .requireNonNull (p );
104105 Objects .requireNonNull (m );
105106
106- return objectStream (p , m ).findAny ().orElse (null );
107+ try (final Stream <T > stream = objectStream (p , m )) {
108+ return stream .findAny ().orElse (null );
109+ }
107110 }
108111
109112 /**
@@ -183,12 +186,19 @@ protected <T> T singleOrThrow(final IRI p, final ValueMapping<T> m) {
183186 * @param <T> the type of values returned
184187 *
185188 * @return the converted objects of statements with this subject and the given predicate
189+ *
190+ * @implNote Prior to returning the iterator, this implementation consumes (buffers) an underlying
191+ * {@link Graph#stream(BlankNodeOrIRI, IRI, RDFTerm) stream of statements} with the predicate {@code p} and the
192+ * mapping function {@code m} applied to each object.
186193 */
187194 protected <T > Iterator <T > objectIterator (final IRI p , final ValueMapping <T > m ) {
188195 Objects .requireNonNull (p );
189196 Objects .requireNonNull (m );
190197
191- return objectStream (p , m ).iterator ();
198+ try (final Stream <T > stream = objectStream (p , m )) {
199+ return stream .collect (Collectors .collectingAndThen (Collectors .toList (), Collections ::unmodifiableList ))
200+ .iterator ();
201+ }
192202 }
193203
194204 /**
@@ -204,7 +214,9 @@ protected <T> Set<T> objectsReadOnly(final IRI p, final ValueMapping<T> m) {
204214 Objects .requireNonNull (p );
205215 Objects .requireNonNull (m );
206216
207- return objectStream (p , m ).collect (collectingAndThen (toSet (), Collections ::unmodifiableSet ));
217+ try (final Stream <T > stream = objectStream (p , m )) {
218+ return stream .collect (collectingAndThen (toSet (), Collections ::unmodifiableSet ));
219+ }
208220 }
209221
210222 /**
0 commit comments