package com.googlecode.objectify;
import java.io.Serializable;
import java.util.Iterator;
import com.googlecode.objectify.helper.TranslatingIterator;
/**
* <p>This is a typesafe version of the KeyRange object. It represents a number
* of ids preallocated with {@code ObjectifyFactory#allocateIds(Class, long)}.</p>
*
* @author Jeff Schnitzer <jeff@infohazard.org>
*/
public class KeyRange<T> implements Iterable<Key<T>>, Serializable
{
private static final long serialVersionUID = 1L;
/** */
ObjectifyFactory fact;
/** */
com.google.appengine.api.datastore.KeyRange raw;
/** */
KeyRange(ObjectifyFactory fact, com.google.appengine.api.datastore.KeyRange raw)
{
this.fact = fact;
this.raw = raw;
}
/* (non-Javadoc)
* @see java.lang.Iterable#iterator()
*/
@Override
public Iterator<Key<T>> iterator()
{
return new TranslatingIterator<com.google.appengine.api.datastore.Key, Key<T>>(this.raw.iterator()) {
@Override
protected Key<T> translate(com.google.appengine.api.datastore.Key from)
{
return fact.rawKeyToTypedKey(from);
}
};
}
}