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.core.HierarchyManager;
39 import info.magnolia.cms.util.NodeDataUtil;
40 import info.magnolia.module.InstallContext;
41 import info.magnolia.module.delta.ArrayDelegateTask;
42 import info.magnolia.module.delta.MoveNodeTask;
43 import info.magnolia.module.delta.TaskExecutionException;
44
45 import javax.jcr.RepositoryException;
46
47
48
49
50
51
52
53
54 public class UpdateURI2RepositoryMappings extends info.magnolia.module.delta.AllChildrenNodesOperation {
55
56 private static final String SERVER_URI2REPOSITORY_MAPPING = "/server/URI2RepositoryMapping";
57 private Content mappingsNode;
58 private final ArrayDelegateTask subTasks;
59
60 public UpdateURI2RepositoryMappings() {
61 super("Update URI2Repository mappings", "The structure of the URI2Repository mappings have changed in 3.5", ContentRepository.CONFIG, SERVER_URI2REPOSITORY_MAPPING);
62 subTasks = new ArrayDelegateTask("Move URI2Repository mapping nodes");
63 }
64
65
66
67
68 protected void doExecute(InstallContext ctx) throws RepositoryException, TaskExecutionException {
69 final HierarchyManager configHM = ctx.getConfigHierarchyManager();
70 final Content parentNode = getParentNode(ctx);
71
72 super.doExecute(ctx);
73
74 mappingsNode = parentNode.createContent("mappings");
75 NodeDataUtil.getOrCreate(parentNode, "class").setValue(info.magnolia.cms.beans.config.URI2RepositoryManager.class.getName());
76
77 subTasks.execute(ctx);
78 }
79
80
81
82
83 protected void operateOnChildNode(Content node, InstallContext ctx) throws RepositoryException, TaskExecutionException {
84 final String oldHandle = node.getHandle();
85 final String newHandle = SERVER_URI2REPOSITORY_MAPPING + "/mappings/" + node.getName();
86 subTasks.addTask(new MoveNodeTask("Move " + oldHandle + " to " + newHandle + "", "Moves the " + oldHandle + " node to its new location", ContentRepository.CONFIG, oldHandle, newHandle, true));
87 }
88
89 }