1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.jcr.wrapper;
35
36 import javax.jcr.ItemExistsException;
37 import javax.jcr.Node;
38 import javax.jcr.NodeIterator;
39 import javax.jcr.PathNotFoundException;
40 import javax.jcr.RepositoryException;
41 import javax.jcr.lock.LockException;
42 import javax.jcr.nodetype.ConstraintViolationException;
43 import javax.jcr.nodetype.NoSuchNodeTypeException;
44 import javax.jcr.version.VersionException;
45
46 import info.magnolia.jcr.iterator.WrappingNodeIterator;
47
48
49
50
51
52
53
54 public abstract class ChildWrappingNodeWrapper extends DelegateNodeWrapper implements NodeWrapperFactory {
55
56 public ChildWrappingNodeWrapper(Node wrapped) {
57 super(wrapped);
58 }
59
60 @Override
61 public Node getNode(String relPath) throws PathNotFoundException, RepositoryException {
62 return wrapNode(super.getNode(relPath));
63 }
64
65 @Override
66 public Node addNode(String relPath) throws ItemExistsException, PathNotFoundException, VersionException, ConstraintViolationException, LockException, RepositoryException {
67 return wrapNode(super.addNode(relPath));
68 }
69
70 @Override
71 public Node addNode(String relPath, String primaryNodeTypeName) throws ItemExistsException, PathNotFoundException, NoSuchNodeTypeException, LockException, VersionException, ConstraintViolationException, RepositoryException {
72 return wrapNode(super.addNode(relPath, primaryNodeTypeName));
73 }
74
75 @Override
76 public NodeIterator getNodes() throws RepositoryException {
77 return wrapNodeIterator(super.getNodes());
78 }
79
80 @Override
81 public NodeIterator getNodes(String namePattern) throws RepositoryException {
82 return wrapNodeIterator(super.getNodes(namePattern));
83 }
84
85 @Override
86 public NodeIterator getNodes(String[] nameGlobs) throws RepositoryException {
87 return wrapNodeIterator(super.getNodes(nameGlobs));
88 }
89
90 @Override
91 public Node wrapNode(Node node) {
92 try {
93 ChildWrappingNodeWrapper clone = (ChildWrappingNodeWrapper) super.clone();
94 clone.wrapped = node;
95 return clone;
96 } catch (CloneNotSupportedException e) {
97 throw new RuntimeException("Unable to clone node wrapper [" + getClass() + "]", e);
98 }
99 }
100
101 protected NodeIterator wrapNodeIterator(NodeIterator nodeIterator) {
102 return new WrappingNodeIterator(nodeIterator, this);
103 }
104 }