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.MgnlNodeType;
37 import info.magnolia.jcr.wrapper.PropertyAndChildWrappingNodeWrapper;
38
39 import java.util.Calendar;
40
41 import javax.jcr.AccessDeniedException;
42 import javax.jcr.Item;
43 import javax.jcr.ItemNotFoundException;
44 import javax.jcr.Node;
45 import javax.jcr.PathNotFoundException;
46 import javax.jcr.RepositoryException;
47 import javax.jcr.Session;
48 import javax.jcr.nodetype.NodeType;
49 import javax.jcr.version.Version;
50 import javax.jcr.version.VersionHistory;
51
52
53
54
55 public class VersionedNode extends PropertyAndChildWrappingNodeWrapper implements Version {
56
57 private final Version version;
58 private final Node baseNode;
59
60 public VersionedNode(Version versionedNode, Node baseNode) throws PathNotFoundException, RepositoryException {
61 super(versionedNode.getNode(MgnlNodeType.JCR_FROZENNODE), new VersionedNodeContentDecorator());
62 ((VersionedNodeContentDecorator) getContentDecorator()).setVersionedNode(this);
63 this.version = versionedNode;
64 this.baseNode = baseNode;
65 }
66
67 @Override
68 public int getDepth() throws RepositoryException {
69 return this.baseNode.getDepth();
70 }
71
72 @Override
73 public Item getAncestor(int depth) throws ItemNotFoundException, AccessDeniedException, RepositoryException {
74 return this.baseNode.getAncestor(depth);
75 }
76
77 public Version unwrap() {
78 return version;
79 }
80
81 @Override
82 public VersionHistory getContainingHistory() throws RepositoryException {
83 return version.getContainingHistory();
84 }
85
86 @Override
87 public Calendar getCreated() throws RepositoryException {
88 return version.getCreated();
89 }
90
91 @Override
92 public Node getFrozenNode() throws RepositoryException {
93 return deepUnwrap(getClass());
94 }
95
96 @Override
97 public Version getLinearPredecessor() throws RepositoryException {
98 return version.getLinearPredecessor();
99 }
100
101 @Override
102 public Version getLinearSuccessor() throws RepositoryException {
103 return version.getLinearSuccessor();
104 }
105
106 @Override
107 public Version[] getPredecessors() throws RepositoryException {
108 return null;
109 }
110
111 @Override
112 public Version[] getSuccessors() throws RepositoryException {
113 return version.getSuccessors();
114 }
115
116 @Override
117 public String getPath() throws RepositoryException {
118 return baseNode.getPath();
119 }
120
121 @Override
122 public Node getParent() throws ItemNotFoundException,
123 AccessDeniedException, RepositoryException {
124 return baseNode.getParent();
125 }
126
127 @Override
128 public boolean isNodeType(String nodeTypeName) throws RepositoryException {
129 return baseNode.isNodeType(nodeTypeName);
130 }
131
132 @Override
133 public NodeType getPrimaryNodeType() throws RepositoryException {
134 return baseNode.getPrimaryNodeType();
135 }
136
137 public Node getBaseNode() {
138 return baseNode;
139 }
140
141 @Override
142 public Session getSession() throws RepositoryException {
143 return baseNode.getSession();
144 }
145
146 }