return new SimpleResultList(rop);
// if built around a paging list, use a window provider with the
// same window size
if (rop instanceof PagingResultObjectProvider)
return new WindowResultList(rop, ((PagingResultObjectProvider)
rop).getPageSize());
// if fetch size < 0 just read in all results immediately
if (getFetchBatchSize() < 0)
return new EagerResultList(rop);
// if foward only or forward direction use a forward window
if (_state.type == ResultSet.TYPE_FORWARD_ONLY
|| _state.direction == ResultSet.FETCH_FORWARD
|| !rop.supportsRandomAccess()) {
if (getFetchBatchSize() > 0 && getFetchBatchSize() <= 50)
return new WindowResultList(rop, getFetchBatchSize());
return new WindowResultList(rop, 50);
}
// if skipping around use a caching random access list
if (_state.direction == ResultSet.FETCH_UNKNOWN)
return new SoftRandomAccessResultList(rop);