SearchCursorImpl breaks java.lang.Iterable
------------------------------------------

                 Key: DIRSHARED-124
                 URL: https://issues.apache.org/jira/browse/DIRSHARED-124
             Project: Directory Shared
          Issue Type: Bug
    Affects Versions: 1.0.0-M3
            Reporter: Gerald Turner
            Priority: Minor


Code like:

  SearchCursor search = connection.search(...);
  for (Response response : search) { ... }

Does not work (no elements iterated), even though SearchCursor is advertised as 
being Iterable<Response>.

The problem begins with the CursorIterator constructor:

    public CursorIterator( Cursor<E> cursor )
    {
        this.cursor = cursor;
        this.available = cursor.available();
    }

The available field will be set to false for SearchCursorImpl, just as the 
javadoc in Cursor implies "Determines whether or not a call to get() will 
succeed." - since next() must be called first.

Initially I thought about patching the CursorIterator to call next() instead of 
available(), however next throws an exception and it is impractical to handle 
an exception in the iterator constructor.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to