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.for4_5;
35
36 import info.magnolia.cms.core.MgnlNodeType;
37 import info.magnolia.jcr.util.NodeUtil;
38 import info.magnolia.module.InstallContext;
39 import info.magnolia.module.delta.AbstractRepositoryTask;
40 import info.magnolia.module.delta.TaskExecutionException;
41 import info.magnolia.repository.RepositoryConstants;
42
43 import javax.jcr.Node;
44 import javax.jcr.RepositoryException;
45 import javax.jcr.Session;
46
47 import org.apache.commons.lang.StringUtils;
48 import org.slf4j.Logger;
49 import org.slf4j.LoggerFactory;
50
51
52
53
54
55
56 public class RenameACLNodesTask extends AbstractRepositoryTask {
57 private final static Logger log = LoggerFactory.getLogger(RenameACLNodesTask.class);
58
59 public RenameACLNodesTask() {
60 super("Security", "Renames ACL nodes.");
61 }
62
63 @Override
64 protected void doExecute(InstallContext installContext) throws RepositoryException, TaskExecutionException {
65
66 Session session = installContext.getJCRSession(RepositoryConstants.USER_ROLES);
67
68 for (Node roleNode : NodeUtil.getNodes(session.getRootNode(), MgnlNodeType.ROLE)) {
69
70 for (Node aclNode : NodeUtil.getNodes(roleNode, MgnlNodeType.NT_CONTENTNODE)) {
71
72 String nodeName = aclNode.getName();
73 if (nodeName.startsWith("acl_") && nodeName.substring(4).contains("_")) {
74 String[] tokens = StringUtils.split(nodeName, "_");
75 if (tokens.length == 3) {
76 String newName = "acl_" + tokens[2];
77 log.info("Renaming ACL node {} to {}", aclNode.getPath(), newName);
78 NodeUtil.renameNode(aclNode, newName);
79 }
80 }
81 }
82 }
83 }
84 }