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.module.forum.app.availability;
35
36 import info.magnolia.jcr.util.NodeUtil;
37 import info.magnolia.module.forum.DefaultForumManager;
38 import info.magnolia.ui.api.availability.AbstractAvailabilityRule;
39 import org.slf4j.Logger;
40 import org.slf4j.LoggerFactory;
41
42 import javax.jcr.Item;
43 import javax.jcr.Node;
44 import javax.jcr.Property;
45 import javax.jcr.RepositoryException;
46
47
48
49
50 public class ValidatableRule extends AbstractAvailabilityRule {
51
52 private static final Logger log = LoggerFactory.getLogger(InvalidatableRule.class);
53
54 @Override
55 protected boolean isAvailableForItem(Item item) {
56
57 if (item != null && item.isNode()) {
58 Node node = (Node) item;
59 try {
60 if (NodeUtil.isNodeType(node, DefaultForumManager.MESSAGE_NODETYPE)) {
61
62 Property property = null;
63 try {
64 property = node.getProperty(DefaultForumManager.VALIDATED_PROPERTY);
65 } catch (RepositoryException e) {
66
67 }
68
69 return allow(property);
70 }
71 } catch (RepositoryException e) {
72 log.warn("Error evaluating availability for node [{}], returning false: {}", NodeUtil.getPathIfPossible(node), e.getMessage());
73 }
74 }
75 return false;
76 }
77
78
79 protected boolean allow(Property property) throws RepositoryException {
80 if (property == null) {
81 return true;
82 }
83 return "false".equals(property.getString());
84 }
85
86
87 }