> You can call nextOptional() forever which is odd.

This is just as true of nextOrElse*, so they're not better in that regard.

I agree that the semantics don't really work here, and I think Claude is right 
to point at Streams as the place Optional really fits (e.g. Stream::findFirst).

ExtendedIterator (< Iterator) just isn't a Stream.

ajs6f

> On Dec 6, 2017, at 12:21 PM, Andy Seaborne <[email protected]> wrote:
> 
> What this all shows to me is that Optional for end of iterator is not what 
> Optional is for.
> 
> next() has two return paths: an object reference or NoSuchElementException. 
> Converting NSEE into Optional goes against the intent of Optional (see the EG 
> email).  The argument of reusing machinery would be OK if the usage pattern 
> was compatible.
> 
> You can call nextOptional() forever which is odd.
> 
> The nextOptional is looking like it does not stand up to scrutiny even if we 
> accept that ExtendedIterator does not yield nulls.
> 
> Which leaves nextOrElse*
> 
> On 06/12/17 15:21, Claude Warren wrote:
>> Is optional.get() == null an expected or acceptable solution?  I supose it
>> might be in this case.
> 
> Checking the code it looks like you can't create an optional with null in it. 
>  The JDK will throw NPE.
> 
>> However i am beginning to believe that streaming
>> operations should not be applied to iterators and rather that methods to
>> convert the iterator to a stream should be sufficient.  And i believe that
>> has been implemented.
>> Claude
>> On 6 Dec 2017 15:38, "Andy Seaborne (JIRA)" <[email protected]> wrote:
>>> 
>>>      [ https://issues.apache.org/jira/browse/JENA-1427?page=
>>> com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
>>> 
>>> Andy Seaborne resolved JENA-1427.
>>> ---------------------------------
>>>        Resolution: Done
>>>          Assignee: Andy Seaborne
>>>     Fix Version/s: Jena 3.6.0
>>> 
>>>> Add nextOrElse() method in ExtendedIterator
>>>> -------------------------------------------
>>>> 
>>>>                 Key: JENA-1427
>>>>                 URL: https://issues.apache.org/jira/browse/JENA-1427
>>>>             Project: Apache Jena
>>>>          Issue Type: Improvement
>>>>          Components: Core
>>>>    Affects Versions: Jena 3.5.0
>>>>            Reporter: Adam Jacobs
>>>>            Assignee: Andy Seaborne
>>>>            Priority: Trivial
>>>>              Labels: easytask
>>>>             Fix For: Jena 3.6.0
>>>> 
>>>> 
>>>> Allow a functional approach for returning a default value or throwing a
>>> custom exception from a Jena iterator.
>>>> The following method may be added to the ExtendedIterator interface.
>>>> {noformat}
>>>>     /**
>>>>          Answer the next object, if it exists, otherwise invoke the
>>> _supplier_.
>>>>      */
>>>>     public default T nextOrElse( Supplier<T> supplier ) {
>>>>         return hasNext() ? next() : supplier.get();
>>>>     }
>>>> {noformat}
>>> 
>>> 
>>> 
>>> --
>>> This message was sent by Atlassian JIRA
>>> (v6.4.14#64029)
>>> 

Reply via email to