From: <fg...@us...> - 2011-01-24 18:07:52
|
Revision: 3283 http://openutils.svn.sourceforge.net/openutils/?rev=3283&view=rev Author: fgiust Date: 2011-01-24 18:07:46 +0000 (Mon, 24 Jan 2011) Log Message: ----------- CRIT-33 implements Iterable in order to allow use of foreach statements in ResultIterator Modified Paths: -------------- trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/advanced/impl/AdvancedResultItemImpl.java trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/AdvancedResult.java trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/ResultIterator.java trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/ResultIteratorImpl.java trunk/openutils-mgnlcriteria/src/test/java/net/sourceforge/openutils/mgnlcriteria/advanced/PaginationTest.java Modified: trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/advanced/impl/AdvancedResultItemImpl.java =================================================================== --- trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/advanced/impl/AdvancedResultItemImpl.java 2011-01-24 18:06:39 UTC (rev 3282) +++ trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/advanced/impl/AdvancedResultItemImpl.java 2011-01-24 18:07:46 UTC (rev 3283) @@ -51,28 +51,6 @@ */ private static Logger log = LoggerFactory.getLogger(AdvancedResultItemImpl.class); - private static Item getJCRNode(Row row) throws RepositoryException - { - - try - { - return (Item) PropertyUtils.getProperty(row, "node"); - } - catch (IllegalAccessException e) - { - } - catch (InvocationTargetException e) - { - } - catch (NoSuchMethodException e) - { - log - .error("Unsupported version of jackrabbit detected, you need at least 1.6.x or a jcr 2.0 compliant version"); - } - - return null; - } - /** * @param elem * @param hierarchyManager @@ -83,11 +61,11 @@ * @throws IllegalStateException * @throws IllegalArgumentException */ - public AdvancedResultItemImpl(Row row, HierarchyManager hierarchyManager) + public AdvancedResultItemImpl(Row row, Item item, HierarchyManager hierarchyManager) throws RepositoryException, AccessDeniedException { - super(getJCRNode(row), hierarchyManager); + super(item, hierarchyManager); this.row = row; } Modified: trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/AdvancedResult.java =================================================================== --- trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/AdvancedResult.java 2011-01-24 18:06:39 UTC (rev 3282) +++ trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/AdvancedResult.java 2011-01-24 18:07:46 UTC (rev 3283) @@ -19,6 +19,9 @@ package net.sourceforge.openutils.mgnlcriteria.jcr.query; +import java.util.Iterator; + + /** * The result of a jcr query. You can access to the actual result items using getItems(). This bean will also give you * information about the total number of available items, the current page number, the total number of pages. @@ -172,6 +175,14 @@ { // nothing to do } + + /** + * Adds foreach support. + */ + public Iterator iterator() + { + return this; + } } } Modified: trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/ResultIterator.java =================================================================== --- trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/ResultIterator.java 2011-01-24 18:06:39 UTC (rev 3282) +++ trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/ResultIterator.java 2011-01-24 18:07:46 UTC (rev 3283) @@ -28,7 +28,7 @@ * @author fgiust * @version $Id$ */ -public interface ResultIterator<T> extends RangeIterator +public interface ResultIterator<T> extends RangeIterator, Iterable<T> { /** Modified: trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/ResultIteratorImpl.java =================================================================== --- trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/ResultIteratorImpl.java 2011-01-24 18:06:39 UTC (rev 3282) +++ trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/ResultIteratorImpl.java 2011-01-24 18:07:46 UTC (rev 3283) @@ -21,6 +21,8 @@ import info.magnolia.cms.core.HierarchyManager; +import java.util.Iterator; + import javax.jcr.query.Row; import javax.jcr.query.RowIterator; @@ -102,6 +104,14 @@ } /** + * Adds foreach support. + */ + public Iterator<T> iterator() + { + return this; + } + + /** * Transforms a Row instance, adapting it to a specific type. * @param row the jcr Row to wrap * @return a transformed version Modified: trunk/openutils-mgnlcriteria/src/test/java/net/sourceforge/openutils/mgnlcriteria/advanced/PaginationTest.java =================================================================== --- trunk/openutils-mgnlcriteria/src/test/java/net/sourceforge/openutils/mgnlcriteria/advanced/PaginationTest.java 2011-01-24 18:06:39 UTC (rev 3282) +++ trunk/openutils-mgnlcriteria/src/test/java/net/sourceforge/openutils/mgnlcriteria/advanced/PaginationTest.java 2011-01-24 18:07:46 UTC (rev 3283) @@ -94,6 +94,26 @@ Assert.assertEquals(content.getTitle(), "Z"); } + @Test + public void testForEachSupport() throws Exception + { + Criteria criteria = JCRCriteriaFactory.createCriteria().setWorkspace(ContentRepository.WEBSITE); + criteria.setBasePath("/letters"); + criteria.add(Restrictions.eq("@jcr:primaryType", "mgnl:content")); + criteria.addOrder(Order.asc("@title")); + AdvancedResult advResult = criteria.execute(); + + int count = 0; + + for (AdvancedResultItem content : advResult.getItems()) + { + Assert.assertNotNull(content); + count++; + } + + Assert.assertEquals(count, 26); + } + /** * Retrieves letters from the tenth on. * @throws Exception This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |