package org.etk.orm.plugins.query; import javax.jcr.Node; import javax.jcr.NodeIterator; import org.etk.orm.core.DomainSession; import org.etk.orm.plugins.common.JCR; import org.etk.orm.plugins.common.collection.AbstractFilterIterator; public class QueryResultImpl<O> extends AbstractFilterIterator<O, Node> implements QueryResult<O> { /** . */ private final Class<O> clazz; /** . */ private final NodeIterator iterator; /** . */ private final int hits; /** . */ private final DomainSession session; QueryResultImpl(DomainSession session, NodeIterator iterator, int hits, Class<O> clazz) throws NullPointerException { super(JCR.adapt(iterator)); // this.session = session; this.iterator = iterator; this.hits = hits; this.clazz = clazz; } protected O adapt(Node internal) { Object o = session.findByNode(Object.class, internal); if (clazz.isInstance(o)) { return clazz.cast(o); } else { return null; } } public int size() { return (int)iterator.getSize(); } public int hits() { return hits; } }