1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.portals.graffito.jcr.persistence.impl;
19
20 import java.util.Iterator;
21
22 import javax.jcr.Node;
23 import javax.jcr.NodeIterator;
24 import javax.jcr.Session;
25
26 import org.apache.portals.graffito.jcr.persistence.objectconverter.ObjectConverter;
27
28
29 /***
30 * ObjectIterator is a wrapper class for JCR NodeIterator
31 *
32 * @author <a href="mailto:christophe.lombart@gmail.com">Christophe Lombart</a>
33 *
34 */
35 public class ObjectIterator implements Iterator
36 {
37
38 private NodeIterator nodeIterator;
39
40 private Class objectClass;
41
42 private Session session;
43
44 private ObjectConverter objectConverter;
45
46
47 /***
48 * Constructor
49 *
50 * @param iterator JCR node iterator
51 * @param objectClass the object class used to instantiate the objects
52 * @param converter The object converter
53 * @param session the JCR session
54 */
55 public ObjectIterator(NodeIterator iterator, Class objectClass, ObjectConverter converter, Session session)
56 {
57 nodeIterator = iterator;
58 this.objectClass = objectClass;
59 objectConverter = converter;
60 this.session = session;
61 }
62
63 /***
64 *
65 * @see java.util.Iterator#hasNext()
66 */
67 public boolean hasNext()
68 {
69 return nodeIterator.hasNext();
70 }
71
72 /***
73 *
74 * @see java.util.Iterator#next()
75 */
76 public Object next()
77 {
78
79 try
80 {
81 Node node = nodeIterator.nextNode();
82 return objectConverter.getObject(session, node.getPath());
83 }
84 catch (Exception e)
85 {
86 return null;
87 }
88
89 }
90
91 /***
92 *
93 * @see java.util.Iterator#remove()
94 */
95 public void remove()
96 {
97 nodeIterator.remove();
98 }
99
100 }