IndexPage page=(IndexPage)streams.readImmovableObject(offset);
Comparable previous=null;
if ( parentKey!=null)
{
if ( parentKey.compareTo( page.keyArray[0])!=0)
throw new ObjectStoreException( "Key in parent page doesn't match first key in child");
}
for ( int i=0; i<page.size; ++i)
{
Comparable next=page.keyArray[i];
if ( previous!=null)
{
if ( previous.compareTo(next)>=0)
throw new ObjectStoreException( "Keys in wrong order in index page");
}
previous=next;
if ( page.reuseArray==null)
{
validateIndexPage( freeSet, page.nextOffsetArray[i], previous);
}
else if (freeSet != null)
{
DAKey objKey=new DAKey( page.nextOffsetArray[i], page.reuseArray[i]);
Serializable obj=manager.retrieve( objKey);
Comparable compareKey=entry.generator.generateKey( obj);
if ( ! entry.unique)
{
compareKey=new UniqueKey(compareKey,objKey);
}
if ( compareKey.compareTo( previous)!=0)
throw new ObjectStoreException( "Keys fail to compare");
if (freeSet.contains(objKey.index))
{
throw new ObjectStoreException("Free set contains object index for object " + obj.toString());
}
}
}
}