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.cms.core.version;
35
36 import info.magnolia.cms.core.ItemType;
37 import info.magnolia.jcr.wrapper.DelegateNodeWrapper;
38 import info.magnolia.jcr.wrapper.PropertyAndChildWrappingNodeWrapper;
39
40 import javax.jcr.AccessDeniedException;
41 import javax.jcr.Item;
42 import javax.jcr.ItemNotFoundException;
43 import javax.jcr.Node;
44 import javax.jcr.RepositoryException;
45 import javax.jcr.nodetype.NodeType;
46
47
48
49
50 public class VersionedNodeChild extends PropertyAndChildWrappingNodeWrapper {
51
52 private final DelegateNodeWrapper versionedParent;
53
54 public VersionedNodeChild(VersionedNode versionedNode, Node node) {
55 super(node, new VersionedNodeChildContentDecorator());
56 ((VersionedNodeChildContentDecorator) getContentDecorator()).setVersionedNodeChild(this);
57 this.versionedParent = versionedNode;
58 }
59
60 public VersionedNodeChild(VersionedNodeChild versionedNode, Node node) {
61 super(node, new VersionedNodeChildContentDecorator());
62 ((VersionedNodeChildContentDecorator) getContentDecorator()).setVersionedNodeChild(this);
63 this.versionedParent = versionedNode;
64 }
65
66 @Override
67 public int getDepth() throws RepositoryException {
68 return this.versionedParent.getDepth() + 1;
69 }
70
71 @Override
72 public Item getAncestor(int depth) throws ItemNotFoundException, AccessDeniedException, RepositoryException {
73
74 Node parent = getParent();
75 while (parent.getDepth() > depth) {
76 parent = parent.getParent();
77 }
78 return parent;
79 }
80
81 @Override
82 public Node getParent() throws ItemNotFoundException,
83 AccessDeniedException, RepositoryException {
84 return this.versionedParent;
85 }
86
87 @Override
88 public String getPath() throws RepositoryException {
89 return this.versionedParent.getPath() + "/" + getName();
90 }
91
92 @Override
93 public NodeType getPrimaryNodeType() throws RepositoryException {
94 return getSession().getWorkspace().getNodeTypeManager().getNodeType(getWrappedNode().getProperty(ItemType.JCR_FROZEN_PRIMARY_TYPE).getString());
95 }
96
97 @Override
98 public boolean isNodeType(String nodeTypeName) throws RepositoryException {
99 return getPrimaryNodeType().isNodeType(nodeTypeName);
100 }
101
102 }