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.rendering.module.setup;
35
36 import info.magnolia.module.InstallContext;
37 import info.magnolia.module.delta.ArrayDelegateTask;
38 import info.magnolia.module.delta.BootstrapSingleResource;
39 import info.magnolia.module.delta.NodeVisitorTask;
40 import info.magnolia.module.delta.RemoveNodeTask;
41 import info.magnolia.rendering.context.RenderingListener;
42 import info.magnolia.rendering.listeners.AbstractRenderingListener;
43 import info.magnolia.repository.RepositoryConstants;
44
45 import javax.jcr.Node;
46 import javax.jcr.RepositoryException;
47
48
49
50
51 public class MigrateRenderingListenersTask extends ArrayDelegateTask {
52
53 protected static final String OLD_RENDERING_LISTENERS_LOCATION = "modules/rendering/renderers/listeners/";
54 protected static final String NEW_RENDERING_LISTENERS_LOCATION = "server/rendering/engine/listeners/";
55
56 public MigrateRenderingListenersTask() {
57 super("Migrate rendering listeners.",
58 new BootstrapSingleResource("Boostrap new rendering liteners configuration", "Boostrap new rendering liteners configuration",
59 "/mgnl-bootstrap/rendering/config.server.rendering.engine.listeners.xml"),
60
61 new NodeVisitorTask("Migrate old rendering listeners configuration.",
62 String.format("Migrate configuration under '%s' to '%s'.", OLD_RENDERING_LISTENERS_LOCATION, NEW_RENDERING_LISTENERS_LOCATION), RepositoryConstants.CONFIG, "/" + OLD_RENDERING_LISTENERS_LOCATION) {
63 @Override
64 protected boolean nodeMatches(Node node) {
65 try {
66 return !"dar".equals(node.getName());
67 } catch (RepositoryException e) {
68 return false;
69 }
70 }
71
72 @Override
73 protected void operateOnNode(InstallContext installContext, Node node) {
74 try {
75 if (!node.hasProperty("class")) {
76 return;
77 }
78
79 installContext.warn(String.format("You have custom rendering listener '%s/class=%s' registered. "
80 + "Please reimplement this listener by extending from '%s' as '%s' is now deprecated and move this node under '%s'.",
81 node, node.getProperty("class").getString(),
82 AbstractRenderingListener.class.getName(), RenderingListener.class.getName(), NEW_RENDERING_LISTENERS_LOCATION));
83
84 } catch (RepositoryException e) {
85 installContext.warn(String.format("Cannot move '%s' to '%s'.", node, NEW_RENDERING_LISTENERS_LOCATION));
86 }
87 }
88 },
89 new RemoveNodeTask("", "/" + OLD_RENDERING_LISTENERS_LOCATION));
90
91 }
92 }