From: <die...@us...> - 2010-05-17 09:37:22
|
Revision: 2458 http://openutils.svn.sourceforge.net/openutils/?rev=2458&view=rev Author: diego_schivo Date: 2010-05-17 09:37:15 +0000 (Mon, 17 May 2010) Log Message: ----------- CRIT-12 Modified Paths: -------------- trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/advanced/impl/AdvancedResultImpl.java trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/AdvancedResult.java trunk/openutils-mgnlcriteria/src/test/java/net/sourceforge/openutils/mgnlcriteria/advanced/AclTest.java Added Paths: ----------- trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/advanced/impl/AccessibleResultItemResultIterator.java Removed Paths: ------------- trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/advanced/impl/AdvancedResultItemAccessibleResultIterator.java Added: trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/advanced/impl/AccessibleResultItemResultIterator.java =================================================================== --- trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/advanced/impl/AccessibleResultItemResultIterator.java (rev 0) +++ trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/advanced/impl/AccessibleResultItemResultIterator.java 2010-05-17 09:37:15 UTC (rev 2458) @@ -0,0 +1,76 @@ +package net.sourceforge.openutils.mgnlcriteria.advanced.impl; + +import info.magnolia.cms.core.HierarchyManager; +import info.magnolia.cms.security.AccessDeniedException; + +import java.util.NoSuchElementException; + +import javax.jcr.query.RowIterator; + +import net.sourceforge.openutils.mgnlcriteria.jcr.query.AdvancedResultItem; + + +/** + * @author dschivo + * @version $Id$ + */ +public class AccessibleResultItemResultIterator extends AdvancedResultItemResultIterator +{ + + private AdvancedResultItem next; + + /** + * + */ + public AccessibleResultItemResultIterator(RowIterator rowIterator, HierarchyManager hm) + { + super(rowIterator, hm); + } + + /** + * {@inheritDoc} + */ + @Override + public boolean hasNext() + { + if (next != null) + { + return true; + } + if (!super.hasNext()) + { + return false; + } + do + { + try + { + next = super.next(); + } + catch (RuntimeException e) + { + if (!(e.getCause() instanceof AccessDeniedException)) + { + throw e; + } + } + } + while (next == null && super.hasNext()); + return next != null; + } + + /** + * {@inheritDoc} + */ + @Override + public AdvancedResultItem next() + { + if (next == null && !hasNext()) + { + throw new NoSuchElementException(); + } + AdvancedResultItem result = next; + next = null; + return result; + } +} Property changes on: trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/advanced/impl/AccessibleResultItemResultIterator.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/advanced/impl/AdvancedResultImpl.java =================================================================== --- trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/advanced/impl/AdvancedResultImpl.java 2010-05-17 08:34:09 UTC (rev 2457) +++ trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/advanced/impl/AdvancedResultImpl.java 2010-05-17 09:37:15 UTC (rev 2458) @@ -21,8 +21,6 @@ import info.magnolia.cms.core.HierarchyManager; -import java.util.Iterator; - import javax.jcr.RepositoryException; import javax.jcr.Value; import javax.jcr.query.InvalidQueryException; @@ -141,20 +139,12 @@ throw jqe; } - return new AdvancedResultItemResultIterator(rows, this.hm); + return new AccessibleResultItemResultIterator(rows, this.hm); } /** * {@inheritDoc} */ - public Iterator<AdvancedResultItem> getAccessibleItems() - { - return new AdvancedResultItemAccessibleResultIterator(getItems()); - } - - /** - * {@inheritDoc} - */ public String getSpellCheckerSuggestion() { if (spellCheckerSuggestion == null && spellCheckerQuery != null) Deleted: trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/advanced/impl/AdvancedResultItemAccessibleResultIterator.java =================================================================== --- trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/advanced/impl/AdvancedResultItemAccessibleResultIterator.java 2010-05-17 08:34:09 UTC (rev 2457) +++ trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/advanced/impl/AdvancedResultItemAccessibleResultIterator.java 2010-05-17 09:37:15 UTC (rev 2458) @@ -1,84 +0,0 @@ -package net.sourceforge.openutils.mgnlcriteria.advanced.impl; - -import info.magnolia.cms.security.AccessDeniedException; - -import java.util.Iterator; -import java.util.NoSuchElementException; - -import net.sourceforge.openutils.mgnlcriteria.jcr.query.AdvancedResultItem; -import net.sourceforge.openutils.mgnlcriteria.jcr.query.ResultIterator; - - -/** - * @author dschivo - * @version $Id$ - */ -public class AdvancedResultItemAccessibleResultIterator implements Iterator<AdvancedResultItem> -{ - - private final ResultIterator<AdvancedResultItem> resultIterator; - - private AdvancedResultItem next; - - /** - * - */ - public AdvancedResultItemAccessibleResultIterator(ResultIterator<AdvancedResultItem> resultIterator) - { - this.resultIterator = resultIterator; - } - - /** - * {@inheritDoc} - */ - public boolean hasNext() - { - if (next != null) - { - return true; - } - if (!resultIterator.hasNext()) - { - return false; - } - do - { - try - { - next = resultIterator.next(); - } - catch (RuntimeException e) - { - if (!(e.getCause() instanceof AccessDeniedException)) - { - throw e; - } - } - } - while (next == null && resultIterator.hasNext()); - return next != null; - } - - /** - * {@inheritDoc} - */ - public AdvancedResultItem next() - { - if (next == null && !hasNext()) - { - throw new NoSuchElementException(); - } - AdvancedResultItem result = next; - next = null; - return result; - } - - /** - * {@inheritDoc} - */ - public void remove() - { - throw new UnsupportedOperationException(); - } - -} 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 2010-05-17 08:34:09 UTC (rev 2457) +++ trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/jcr/query/AdvancedResult.java 2010-05-17 09:37:15 UTC (rev 2458) @@ -66,14 +66,6 @@ */ ResultIterator<AdvancedResultItem> getItems(); - /** - * Gets an iterator over accessible results only. A simple Iterator instance instead of ResultIterator is returned, - * because the number of results is unknown (we want to keep a lazy iteration on content and not filtering nodes - * like the standard magnolia API does). - * @return - */ - Iterator<AdvancedResultItem> getAccessibleItems(); - public static AdvancedResult EMPTY_RESULT = new AdvancedResult() { Modified: trunk/openutils-mgnlcriteria/src/test/java/net/sourceforge/openutils/mgnlcriteria/advanced/AclTest.java =================================================================== --- trunk/openutils-mgnlcriteria/src/test/java/net/sourceforge/openutils/mgnlcriteria/advanced/AclTest.java 2010-05-17 08:34:09 UTC (rev 2457) +++ trunk/openutils-mgnlcriteria/src/test/java/net/sourceforge/openutils/mgnlcriteria/advanced/AclTest.java 2010-05-17 09:37:15 UTC (rev 2458) @@ -31,7 +31,6 @@ import java.lang.reflect.Field; import java.util.Calendar; import java.util.Collections; -import java.util.Iterator; import javax.jcr.RepositoryException; @@ -39,6 +38,7 @@ import net.sourceforge.openutils.mgnlcriteria.jcr.query.AdvancedResultItem; import net.sourceforge.openutils.mgnlcriteria.jcr.query.Criteria; import net.sourceforge.openutils.mgnlcriteria.jcr.query.JCRCriteriaFactory; +import net.sourceforge.openutils.mgnlcriteria.jcr.query.ResultIterator; import net.sourceforge.openutils.mgnlcriteria.jcr.query.criterion.Order; import net.sourceforge.openutils.mgnlcriteria.jcr.query.criterion.Restrictions; import net.sourceforge.openutils.mgnlcriteria.tests.RepositoryTestNgTestcase; @@ -168,7 +168,7 @@ // --- 4 (title=Jewel, petType=dog, birthDate=2000-03-07) // --- 12 (title=Lucky, petType=dog, birthDate=2000-06-24) // --- 3 (title=Rosy, petType=dog, birthDate=2001-04-17) - Iterator<AdvancedResultItem> iterator = result.getAccessibleItems(); + ResultIterator<AdvancedResultItem> iterator = result.getItems(); Assert.assertTrue(iterator.hasNext()); Assert.assertEquals(iterator.next().getName(), "4"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |