On Wed, May 20, 2009 at 2:22 PM, Julian Reschke <[email protected]> wrote:
> [email protected] wrote:
>>
>> +    /**
>> +     * Returns the nodes in the given query result as an {...@link Iterable}
>> +     * for use in a Java 5 for-each loop. The return value encapsulates
>> +     * the {...@link QueryResult#getNodes()} method call. Potential
>> +     * {...@link RepositoryException}s are converted to {...@link
>> RuntimeException}s.
>> +     *
>> +     * @param result query result
>> +     * @return nodes in the query result
>> +     */
>> +    public static Iterable<Node> getNodes(final QueryResult result) {
>> +        return new Iterable<Node>() {
>> +           �...@suppresswarnings("unchecked")
>> +            public Iterator<Node> iterator() {
>> +                try {
>> +                    return result.getNodes();
>> +                } catch (RepositoryException e) {
>> +                    throw new RuntimeException(
>> +                            "Unable to access nodes in " + result, e);
>> +                }
>> +            }
>> +        };
>> +    }
>
> Jukka, is it really a good idea to catch the RepositoryException here,
> mapping it to an unchecked exception?

i don't like this either. how about:

public static Iterable<Node> getNodes(final QueryResult result) throws
RepositoryException {
     final Iterator iter = result.getNodes();
     return new Iterable<Node>() {
           @SuppressWarnings("unchecked")
           public Iterator<Node> iterator() {
               return iter;
           }
      };

i don't now about the exact semantics of the Iterable interface - i.e.
if a new iterator needs to be fetched for each call. but for the sake
of the "foreach" loop, this should work.

regards, toby

Reply via email to