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.decoration;
35
36 import info.magnolia.jcr.wrapper.DelegatePropertyWrapper;
37
38 import javax.jcr.AccessDeniedException;
39 import javax.jcr.Item;
40 import javax.jcr.ItemNotFoundException;
41 import javax.jcr.Node;
42 import javax.jcr.Property;
43 import javax.jcr.RepositoryException;
44 import javax.jcr.Session;
45 import javax.jcr.ValueFormatException;
46
47
48
49
50
51
52 public class ContentDecoratorPropertyWrapper<D extends ContentDecorator> extends DelegatePropertyWrapper {
53
54 private final D contentDecorator;
55
56 public ContentDecoratorPropertyWrapper(Property property, D contentDecorator) {
57 super(property);
58 this.contentDecorator = contentDecorator;
59 }
60
61 @Override
62 public Session getSession() throws RepositoryException {
63 return wrapSession(super.getSession());
64 }
65
66 @Override
67 public Item getAncestor(int depth) throws ItemNotFoundException, AccessDeniedException, RepositoryException {
68 Item item = super.getAncestor(depth);
69 if (item.isNode()) {
70 return wrapNode((Node) item);
71 } else {
72 return wrapProperty((Property) item);
73 }
74 }
75
76 @Override
77 public Node getParent() throws ItemNotFoundException, AccessDeniedException, RepositoryException {
78 return wrapNode(super.getParent());
79 }
80
81 @Override
82 public Node getNode() throws ItemNotFoundException, ValueFormatException, RepositoryException {
83 Node node = super.getNode();
84 if (!contentDecorator.evaluateNode(node)) {
85 throw new ItemNotFoundException();
86 }
87 return wrapNode(node);
88 }
89
90 @Override
91 public Property getProperty() throws ItemNotFoundException, ValueFormatException, RepositoryException {
92 Property property = super.getProperty();
93 if (!contentDecorator.evaluateProperty(property)) {
94 throw new ItemNotFoundException();
95 }
96 return wrapProperty(property);
97 }
98
99 protected Session wrapSession(Session session) {
100 return contentDecorator.wrapSession(session);
101 }
102
103 protected Node wrapNode(Node node) {
104 return contentDecorator.wrapNode(node);
105 }
106
107 protected Property wrapProperty(Property property) {
108 return contentDecorator.wrapProperty(property);
109 }
110
111 @Override
112 public boolean equals(Object obj) {
113 if (obj == null) {
114 return false;
115 }
116
117 if (!(obj instanceof ContentDecoratorPropertyWrapper)) {
118 return false;
119 }
120 ContentDecoratorPropertyWrapperia/jcr/decoration/ContentDecoratorPropertyWrapper.html#ContentDecoratorPropertyWrapper">ContentDecoratorPropertyWrapper that = (ContentDecoratorPropertyWrapper) obj;
121 return (this.getWrappedProperty() == null ? that.getWrappedProperty() == null : this.getWrappedProperty().equals(that.getWrappedProperty()))
122 && this.contentDecorator == null ? that.contentDecorator == null : this.contentDecorator.equals(that.contentDecorator);
123 }
124
125 @Override
126 public int hashCode() {
127 return (this.getWrappedProperty() == null ? 7 : this.getWrappedProperty().hashCode()) + (this.contentDecorator == null ? 6 : this.contentDecorator.hashCode());
128 }
129
130 public D getContentDecorator() {
131 return contentDecorator;
132 }
133 }