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.ui.contentapp.setup;
35
36 import info.magnolia.jcr.util.NodeUtil;
37 import info.magnolia.jcr.util.NodeVisitor;
38 import info.magnolia.module.InstallContext;
39 import info.magnolia.module.delta.QueryTask;
40 import info.magnolia.module.delta.TaskExecutionException;
41
42 import javax.jcr.Node;
43 import javax.jcr.RepositoryException;
44
45 import org.slf4j.Logger;
46 import org.slf4j.LoggerFactory;
47
48
49
50
51 public class ContentAppDescriptorMigrationTask extends QueryTask {
52
53 private static final Logger log = LoggerFactory.getLogger(ContentAppDescriptorMigrationTask.class);
54 private NodeVisitor nodeVisitor = new AppNodeVisitor();
55
56 public ContentAppDescriptorMigrationTask(String name, String description, String configRepository, String query) {
57 super(name, description, configRepository, query);
58 }
59
60 public ContentAppDescriptorMigrationTask(String name, String description, String configRepository, String query, NodeVisitor nodeVisitor) {
61 super(name, description, configRepository, query);
62 this.nodeVisitor = nodeVisitor;
63 }
64
65 @Override
66 protected void doExecute(InstallContext ctx) throws RepositoryException, TaskExecutionException {
67 log.info("Start content app descriptor migration ");
68 try {
69 super.doExecute(ctx);
70 log.info("Successfully execute cleanup of the content repository ");
71 } catch (Exception e) {
72 log.error("Unable to clean content repository", e);
73 ctx.error("Unable to perform Migration task " + getName(), e);
74 throw new TaskExecutionException(e.getMessage());
75 } finally {
76 log.info("Finished content app descriptor migration ");
77 }
78 }
79
80 @Override
81 protected void operateOnNode(InstallContext ctx, Node node) {
82 try {
83 NodeUtil.visit(node.getParent(), nodeVisitor);
84 } catch (RepositoryException e) {
85 log.error("Unable to process app node ", e);
86 }
87
88 }
89 }