View Javadoc
1   /**
2    * This file Copyright (c) 2015 Magnolia International
3    * Ltd.  (http://www.magnolia-cms.com). All rights reserved.
4    *
5    *
6    * This file is dual-licensed under both the Magnolia
7    * Network Agreement and the GNU General Public License.
8    * You may elect to use one or the other of these licenses.
9    *
10   * This file is distributed in the hope that it will be
11   * useful, but AS-IS and WITHOUT ANY WARRANTY; without even the
12   * implied warranty of MERCHANTABILITY or FITNESS FOR A
13   * PARTICULAR PURPOSE, TITLE, or NONINFRINGEMENT.
14   * Redistribution, except as permitted by whichever of the GPL
15   * or MNA you select, is prohibited.
16   *
17   * 1. For the GPL license (GPL), you can redistribute and/or
18   * modify this file under the terms of the GNU General
19   * Public License, Version 3, as published by the Free Software
20   * Foundation.  You should have received a copy of the GNU
21   * General Public License, Version 3 along with this program;
22   * if not, write to the Free Software Foundation, Inc., 51
23   * Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
24   *
25   * 2. For the Magnolia Network Agreement (MNA), this file
26   * and the accompanying materials are made available under the
27   * terms of the MNA which accompanies this distribution, and
28   * is available at http://www.magnolia-cms.com/mna.html
29   *
30   * Any modifications to this file must keep this entire header
31   * intact.
32   *
33   */
34  package info.magnolia.jcr.decoration;
35  
36  import info.magnolia.jcr.util.VersionUtil;
37  
38  import javax.jcr.AccessDeniedException;
39  import javax.jcr.Node;
40  import javax.jcr.NodeIterator;
41  import javax.jcr.ReferentialIntegrityException;
42  import javax.jcr.RepositoryException;
43  import javax.jcr.UnsupportedRepositoryOperationException;
44  import javax.jcr.version.LabelExistsVersionException;
45  import javax.jcr.version.Version;
46  import javax.jcr.version.VersionException;
47  import javax.jcr.version.VersionHistory;
48  import javax.jcr.version.VersionIterator;
49  
50  /**
51   * VersionHistory wrapper that applies wrappers and filtering by delegating to a {@link ContentDecorator}.
52   */
53  public class ContentDecoratorVersionHistoryWrapper extends ContentDecoratorNodeWrapper implements VersionHistory {
54  
55      public ContentDecoratorVersionHistoryWrapper(VersionHistory versionHistory, ContentDecorator contentDecorator) {
56          super(versionHistory, contentDecorator);
57      }
58  
59      public VersionHistory getWrappedVersionHistory() {
60          return (VersionHistory) this.wrapped;
61      }
62  
63      @Override
64      public void setWrappedNode(Node node) {
65          this.wrapped = node;
66      }
67  
68      @Override
69      public String getVersionableUUID() throws RepositoryException {
70          return getWrappedVersionHistory().getVersionableUUID();
71      }
72  
73      @Override
74      public String getVersionableIdentifier() throws RepositoryException {
75          return getWrappedVersionHistory().getVersionableIdentifier();
76      }
77  
78      @Override
79      public Version getRootVersion() throws RepositoryException {
80          return wrapVersion(getWrappedVersionHistory().getRootVersion());
81      }
82  
83      @Override
84      public VersionIterator getAllLinearVersions() throws RepositoryException {
85          return wrapVersionIterator(getWrappedVersionHistory().getAllLinearVersions());
86      }
87  
88      @Override
89      public VersionIterator getAllVersions() throws RepositoryException {
90          return wrapVersionIterator(getWrappedVersionHistory().getAllVersions());
91      }
92  
93      @Override
94      public NodeIterator getAllLinearFrozenNodes() throws RepositoryException {
95          return wrapNodeIterator(getWrappedVersionHistory().getAllLinearFrozenNodes());
96      }
97  
98      @Override
99      public NodeIterator getAllFrozenNodes() throws RepositoryException {
100         return wrapNodeIterator(getWrappedVersionHistory().getAllFrozenNodes());
101     }
102 
103     @Override
104     public Version getVersion(String versionName) throws VersionException, RepositoryException {
105         return wrapVersion(getWrappedVersionHistory().getVersion(versionName));
106     }
107 
108     @Override
109     public Version getVersionByLabel(String label) throws VersionException, RepositoryException {
110         return wrapVersion(getWrappedVersionHistory().getVersionByLabel(label));
111     }
112 
113     @Override
114     public void addVersionLabel(String versionName, String label, boolean moveLabel) throws LabelExistsVersionException, VersionException, RepositoryException {
115         getWrappedVersionHistory().addVersionLabel(versionName, label, moveLabel);
116     }
117 
118     @Override
119     public void removeVersionLabel(String label) throws VersionException, RepositoryException {
120         getWrappedVersionHistory().removeVersionLabel(label);
121     }
122 
123     @Override
124     public boolean hasVersionLabel(String label) throws RepositoryException {
125         return getWrappedVersionHistory().hasVersionLabel(label);
126     }
127 
128     @Override
129     public boolean hasVersionLabel(Version version, String label) throws VersionException, RepositoryException {
130         return getWrappedVersionHistory().hasVersionLabel(VersionUtil.unwrap(version), label);
131     }
132 
133     @Override
134     public String[] getVersionLabels() throws RepositoryException {
135         return getWrappedVersionHistory().getVersionLabels();
136     }
137 
138     @Override
139     public String[] getVersionLabels(Version version) throws VersionException, RepositoryException {
140         return getWrappedVersionHistory().getVersionLabels(VersionUtil.unwrap(version));
141     }
142 
143     @Override
144     public void removeVersion(String versionName) throws ReferentialIntegrityException, AccessDeniedException, UnsupportedRepositoryOperationException, VersionException, RepositoryException {
145         getWrappedVersionHistory().removeVersion(versionName);
146     }
147 }