From: <fg...@us...> - 2011-03-08 09:48:56
|
Revision: 3374 http://openutils.svn.sourceforge.net/openutils/?rev=3374&view=rev Author: fgiust Date: 2011-03-08 09:48:50 +0000 (Tue, 08 Mar 2011) Log Message: ----------- CRIT-36 AccessibleResultItemResultIterator.getPosition() may return an invalid value Modified Paths: -------------- 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/AdvancedResultImpl.java trunk/openutils-mgnlcriteria/src/test/java/net/sourceforge/openutils/mgnlcriteria/advanced/OrderingTest.java Modified: 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 2011-03-05 20:34:54 UTC (rev 3373) +++ trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/advanced/impl/AccessibleResultItemResultIterator.java 2011-03-08 09:48:50 UTC (rev 3374) @@ -120,4 +120,13 @@ next = null; return result; } + + /** + * {@inheritDoc} + */ + @Override + public long getPosition() + { + return next == null ? super.getPosition() : super.getPosition() - 1; + } } 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 2011-03-05 20:34:54 UTC (rev 3373) +++ trunk/openutils-mgnlcriteria/src/main/java/net/sourceforge/openutils/mgnlcriteria/advanced/impl/AdvancedResultImpl.java 2011-03-08 09:48:50 UTC (rev 3374) @@ -157,8 +157,7 @@ */ public int getNumberOfPages() { - return itemsPerPage > 0 ? (int) Math - .round(Math.ceil(((float) jcrQueryResult.getTotalSize() / (float) itemsPerPage))) : 1; + return itemsPerPage > 0 ? (int) Math.round(Math.ceil(((float) getTotalSize() / (float) itemsPerPage))) : 1; } /** Modified: trunk/openutils-mgnlcriteria/src/test/java/net/sourceforge/openutils/mgnlcriteria/advanced/OrderingTest.java =================================================================== --- trunk/openutils-mgnlcriteria/src/test/java/net/sourceforge/openutils/mgnlcriteria/advanced/OrderingTest.java 2011-03-05 20:34:54 UTC (rev 3373) +++ trunk/openutils-mgnlcriteria/src/test/java/net/sourceforge/openutils/mgnlcriteria/advanced/OrderingTest.java 2011-03-08 09:48:50 UTC (rev 3374) @@ -155,7 +155,27 @@ + LETTERS_ARRAY[i]); i++; } + Assert.assertEquals(i, PAGINATION_LENGTH, "Wrong number of results returned by the iterator."); - Assert.assertEquals(i, PAGINATION_LENGTH, "Wrong number of results returned by the iterator."); + resultIterator = advResult.getItems(); + i = 0; + + // check that hasNext doesn't change the result of getPosition() + while (resultIterator.hasNext() && resultIterator.hasNext() && resultIterator.hasNext()) + { + AdvancedResultItem currentResult = resultIterator.next(); + Assert.assertEquals(currentResult.getTitle(), LETTERS_ARRAY[i], "Position " + + i + + ": found " + + currentResult.getTitle() + + " instead of " + + LETTERS_ARRAY[i]); + i++; + } + + Assert.assertEquals( + i, + PAGINATION_LENGTH, + "Wrong number of results returned by the iterator when calling hasNext() more than once."); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |