You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by Julian Reschke <ju...@gmx.de> on 2009/05/20 14:22:27 UTC
Re: svn commit: r776654 - /jackrabbit/trunk/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/commons/JcrUtils.java
jukka@apache.org 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?
BR, Julian
Re: svn commit: r776654 - /jackrabbit/trunk/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/commons/JcrUtils.java
Posted by Jukka Zitting <ju...@gmail.com>.
Hi,
On Wed, May 20, 2009 at 2:22 PM, Julian Reschke <ju...@gmx.de> wrote:
> Jukka, is it really a good idea to catch the RepositoryException here,
> mapping it to an unchecked exception?
Good point. The alternative I was thinking about doing is:
@SuppressWarnings("unchecked")
public static Iterable<Node> getNodes(Node node)
throws RepositoryException {
final Iterator<Node> iterator = node.getNodes();
return new Iterable<Node>() {
public Iterator<Node> iterator() {
return iterator;
}
};
}
The only problem with this one is that it only ever returns the same
iterator, but I guess we could simply document that in the javadoc.
BR,
Jukka Zitting
Re: svn commit: r776654 - /jackrabbit/trunk/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/commons/JcrUtils.java
Posted by Jukka Zitting <ju...@gmail.com>.
Hi,
On Wed, May 20, 2009 at 2:28 PM, Tobias Bocanegra <tr...@day.com> wrote:
> 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.
Yep, I'll change it as suggested.
BR,
Jukka Zitting
Re: svn commit: r776654 - /jackrabbit/trunk/jackrabbit-jcr-commons/src/main/java/org/apache/jackrabbit/commons/JcrUtils.java
Posted by Tobias Bocanegra <tr...@day.com>.
On Wed, May 20, 2009 at 2:22 PM, Julian Reschke <ju...@gmx.de> wrote:
> jukka@apache.org 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