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.jcr.decoration.ContentDecoratorNodeWrapper;
37 import info.magnolia.objectfactory.Components;
38 import info.magnolia.repository.RepositoryManager;
39
40 import javax.jcr.Node;
41 import javax.jcr.RepositoryException;
42 import javax.jcr.version.Version;
43
44
45
46
47 public class MgnlVersioningNodeWrapper extends ContentDecoratorNodeWrapper<MgnlVersioningContentDecorator> {
48
49 private final VersionManager versionManager;
50
51 public MgnlVersioningNodeWrapper(Node node, MgnlVersioningContentDecorator mgnlVersioningContentDecorator, VersionManager versionManager) {
52 super(node, mgnlVersioningContentDecorator);
53 this.versionManager = versionManager;
54 }
55
56
57
58
59 @Deprecated
60 public MgnlVersioningNodeWrapper(Node node) {
61 this(node, new MgnlVersioningContentDecorator(), Components.getComponent(VersionManager.class));
62 }
63
64
65
66
67 @Deprecated
68 public MgnlVersioningNodeWrapper(Node node, MgnlVersioningContentDecorator mgnlVersioningContentDecorator) {
69 this(node, mgnlVersioningContentDecorator, Components.getComponent(VersionManager.class));
70 }
71
72
73
74
75 @Deprecated
76 public MgnlVersioningNodeWrapper(Node node, MgnlVersioningContentDecorator mgnlVersioningContentDecorator, RepositoryManager repositoryManager) {
77 this(node, mgnlVersioningContentDecorator, Components.getComponent(VersionManager.class));
78 }
79
80 @Override
81 public void restore(String versionName, boolean removeExisting) throws RepositoryException {
82 Node raw = deepUnwrap(getClass());
83 Version version = versionManager.getVersion(raw, versionName);
84 versionManager.restore(raw, version, removeExisting);
85 }
86
87 @Override
88 public void restore(Version version, boolean removeExisting) throws RepositoryException {
89 versionManager.restore(deepUnwrap(getClass()), version, removeExisting);
90 }
91
92 @Override
93 public void restore(Version version, String relPath, boolean removeExisting) throws RepositoryException {
94 throw new UnsupportedOperationException("Magnolia doesn't support restore into specified path at the moment");
95 }
96
97 @Override
98 public void restoreByLabel(String versionLabel, boolean removeExisting) throws RepositoryException {
99 throw new UnsupportedOperationException("Magnolia doesn't support locating versions by label at the moment");
100 }
101
102
103
104
105
106
107
108 @Override
109 public void remove() throws RepositoryException {
110 wrapped = getWrappedNode();
111 versionManager.removeVersionHistory(wrapped);
112 wrapped.remove();
113 }
114 }