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