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.voting.voters;
35
36 import info.magnolia.cms.core.AggregationState;
37
38 import java.util.ArrayList;
39 import java.util.List;
40
41 import javax.inject.Inject;
42 import javax.inject.Provider;
43
44 import org.apache.commons.lang3.StringUtils;
45
46
47
48
49
50 public class RequestExtensionVoter extends AbstractBoolVoter {
51
52 private final List<String> allowed = new ArrayList<String>();
53 private final List<String> rejected = new ArrayList<String>();
54
55 private final Provider<AggregationState> aggregationStateProvider;
56
57 @Inject
58 public RequestExtensionVoter(Provider<AggregationState> aggregationStateProvider) {
59 this.aggregationStateProvider = aggregationStateProvider;
60 }
61
62 public List<String> getAllowed() {
63 return allowed;
64 }
65
66 public void setAllowed(List<String> allowed) {
67 this.allowed.addAll(allowed);
68 }
69
70 public void addAllowed(String contentType) {
71 allowed.add(contentType);
72 }
73
74 public List<String> getRejected() {
75 return rejected;
76 }
77
78 public void setRejected(List<String> rejected) {
79 this.rejected.addAll(rejected);
80 }
81
82 public void addRejected(String contentType) {
83 rejected.add(contentType);
84 }
85
86 @Override
87 protected boolean boolVote(Object value) {
88 final String extension = aggregationStateProvider.get().getExtension();
89 if (StringUtils.isEmpty(extension)) {
90 return true;
91 }
92 if((getAllowed().size() > 0 && !getAllowed().contains(extension)) || getRejected().contains(extension)) {
93 return false;
94 }
95 return true;
96 }
97
98 protected Provider<AggregationState> getAggregationStateProvider() {
99 return aggregationStateProvider;
100 }
101 }