Lukas Eder created JCR-3561:
-------------------------------

             Summary: Add JcrUtils.collect(Iterable) and collect(Iterator) to 
conveniently collect Nodes / Properties into Lists
                 Key: JCR-3561
                 URL: https://issues.apache.org/jira/browse/JCR-3561
             Project: Jackrabbit Content Repository
          Issue Type: Improvement
          Components: jackrabbit-jcr-commons
    Affects Versions: 2.7
            Reporter: Lukas Eder
            Priority: Minor
         Attachments: JcrUtils.java.patch

I repetitively find myself collecting nodes / properties into Lists as I want 
to perform multiple operations on a list of nodes (e.g. calling size() upon 
it). Instead of repeating this operation in client code, I'd like to add 
JcrUtils.collect(...) for this. These would be some sample implementations:

    /**
     * Collect all elements from an {@link Iterable} into a {@link List}.
     *
     * @param iterable The <code>Iterable</code> to collect values from.
     * @return The collection result.
     */
    public static <T> List<T> collect(Iterable<T> iterable) {
        List<T> result = new ArrayList<T>();

        for (T value : iterable) {
            result.add(value);
        }

        return result;
    }

    /**
     * Collect all elements from an {@link Iterator} into a {@link List}.
     *
     * @param iterator The <code>Iterator</code> to collect values from.
     * @return The collection result.
     */
    public static <T> List<T> collect(Iterator<T> iterator) {
        return collect(in(iterator));
    }

I've also attached a patch containing the above. I'm sure that these methods 
will also be useful to Jackrabbit core libraries.

Feel free to rename the method, e.g. to "list()" or "toList()" if you find that 
more suitable.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to