Expand my Community achievements bar.

SOLVED

VersionHistory - Unable to get size directly by getAllVersions.getSize()

Avatar

Community Advisor

Hi All,

 

Recently tried to use VersionHistory API (https://docs.adobe.com/content/docs/en/spec/jsr170/javadocs/jcr-2.0/javax/jcr/version/VersionHistory...) I am able to use getAllVersions() but getAllVersions().getSize() gives me -1. To get the actual size so far I am having to loop the iterator and add the count within the loop. 

 

Is there a better way or I missed something?

1 Accepted Solution

Avatar

Correct answer by
Employee

https://docs.adobe.com/content/docs/en/spec/jsr170/javadocs/jcr-2.0/javax/jcr/RangeIterator.html#get...

 

Returns the total number of of items available through this iterator. For example, for some node NN.getNodes().getSize() returns the number of child nodes of N visible through the current Session. In some implementations precise information about the number of elements may not be available. In such cases this method must return -1. API clients will then be able to use RangeIterator.getNumberRemaining to get an estimate on the number of elements.

 

---

Iterators in Java don't know how many items they contain, hence why you iterate over it and count.  getAllVersions() in the VersionHistory class just returns an Iterator. It can't determine the size therefore gives you a -1. 

View solution in original post

2 Replies

Avatar

Correct answer by
Employee

https://docs.adobe.com/content/docs/en/spec/jsr170/javadocs/jcr-2.0/javax/jcr/RangeIterator.html#get...

 

Returns the total number of of items available through this iterator. For example, for some node NN.getNodes().getSize() returns the number of child nodes of N visible through the current Session. In some implementations precise information about the number of elements may not be available. In such cases this method must return -1. API clients will then be able to use RangeIterator.getNumberRemaining to get an estimate on the number of elements.

 

---

Iterators in Java don't know how many items they contain, hence why you iterate over it and count.  getAllVersions() in the VersionHistory class just returns an Iterator. It can't determine the size therefore gives you a -1.