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.setup.for3_5;
35
36 import info.magnolia.cms.beans.config.ContentRepository;
37 import info.magnolia.cms.core.Content;
38 import info.magnolia.cms.util.NodeDataUtil;
39 import info.magnolia.module.InstallContext;
40 import info.magnolia.module.delta.AllChildrenNodesOperation;
41 import info.magnolia.module.delta.ArrayDelegateTask;
42 import info.magnolia.module.delta.Task;
43 import info.magnolia.module.delta.TaskExecutionException;
44 import info.magnolia.setup.AddFilterBypassTask;
45 import info.magnolia.voting.voters.URIStartsWithVoter;
46
47 import javax.jcr.RepositoryException;
48
49
50
51
52
53
54
55 public class CheckAndUpdateUnsecureURIs extends AllChildrenNodesOperation implements Task {
56 private static final String FILTER_URI_SECURITY = "/server/filters/uriSecurity";
57 private static final String PROPERTY_URI = "URI";
58 private final ArrayDelegateTask subtasks;
59
60 public CheckAndUpdateUnsecureURIs(String existingUnsecureURIList) {
61 super("Filters", "Transforms old unsecure URIs to URISecurityFilter bypasses.", ContentRepository.CONFIG, existingUnsecureURIList);
62 subtasks = new ArrayDelegateTask("Unsecure URI transformations");
63 }
64
65 public void execute(InstallContext installContext) throws TaskExecutionException {
66 super.execute(installContext);
67 subtasks.execute(installContext);
68 }
69
70 protected void operateOnChildNode(Content node, InstallContext ctx) throws RepositoryException, TaskExecutionException {
71 final String bypassName = node.getName();
72 final String bypassPattern = NodeDataUtil.getString(node, PROPERTY_URI);
73 final Class bypassClass = URIStartsWithVoter.class;
74 subtasks.addTask(new AddFilterBypassTask(FILTER_URI_SECURITY, bypassName, bypassClass, bypassPattern));
75 }
76 }