1 package org
.argeo
.fm
.jcr
;
3 import java
.util
.ArrayList
;
7 import javax
.jcr
.NodeIterator
;
9 import freemarker
.template
.TemplateModel
;
10 import freemarker
.template
.TemplateModelException
;
11 import freemarker
.template
.TemplateSequenceModel
;
13 public class NodeIteratorModel
implements TemplateSequenceModel
{
14 private final NodeIterator nodeIterator
;
16 private final List
<Node
> nodes
;
19 public NodeIteratorModel(NodeIterator nodeIterator
) {
21 this.nodeIterator
= nodeIterator
;
22 this.size
= (int) nodeIterator
.getSize();
23 this.nodes
= new ArrayList
<>(this.size
);
24 // TODO optimize with lazy loading
25 while (this.nodeIterator
.hasNext()) {
26 Node node
= this.nodeIterator
.nextNode();
29 this.size
= nodes
.size();
33 public TemplateModel
get(int index
) throws TemplateModelException
{
34 return new JcrModel(nodes
.get(index
));
38 public int size() throws TemplateModelException
{