[
https://issues.apache.org/jira/browse/JENA-966?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14598364#comment-14598364
]
Andy Seaborne commented on JENA-966:
------------------------------------
The contract for {{Supplier}} is not specific enough for that use.
{{Supplier::get}} can return a different object each time or not. It may be a
factory pattern, it may be container, it may be a delayed slot . The javadoc
contract does not say it is not the same object each time. When the result is
stateful, like an iterator, that matters.
For example: {{first.andThen(() -> bigThing.createIterator())}}. So I think
that {{Supplier::get}} must be called only once to be safe.
> LazyIterator
> ------------
>
> Key: JENA-966
> URL: https://issues.apache.org/jira/browse/JENA-966
> Project: Apache Jena
> Issue Type: Bug
> Components: Core
> Affects Versions: Jena 3.0.0
> Reporter: Claude Warren
> Assignee: Claude Warren
>
> LazyIterator is an abstract class. The documentation indicates that the
> create() method needs to be overridden to create an instance. From this I
> would expect that
> now LazyIterator(){
> @Override
> public ExtendedIterator<Model> create() {
> ...
> }};
> Would work however LazyIterator does not override:
> remoteNext(), andThen(), toList(), and toSet().
> I believe these should be implemented in the class.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)