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.content.setup;
35
36 import info.magnolia.content.observer.ContentImporterModule;
37 import info.magnolia.init.MagnoliaConfigurationProperties;
38 import info.magnolia.jcr.nodebuilder.task.ErrorHandling;
39 import info.magnolia.jcr.nodebuilder.task.NodeBuilderTask;
40 import info.magnolia.jcr.util.NodeTypes;
41 import info.magnolia.module.DefaultModuleVersionHandler;
42 import info.magnolia.module.InstallContext;
43 import info.magnolia.module.delta.DeltaBuilder;
44 import info.magnolia.module.delta.NodeExistsDelegateTask;
45 import info.magnolia.module.delta.PartialBootstrapTask;
46 import info.magnolia.module.delta.SetPropertyTask;
47 import info.magnolia.module.delta.Task;
48 import info.magnolia.repository.RepositoryConstants;
49
50 import javax.inject.Inject;
51 import javax.jcr.ImportUUIDBehavior;
52
53 import java.util.ArrayList;
54 import java.util.List;
55
56 import static info.magnolia.jcr.nodebuilder.Ops.addNode;
57 import static info.magnolia.jcr.nodebuilder.Ops.addProperty;
58
59
60
61
62 public class ContentImporterModuleVersionHandler extends DefaultModuleVersionHandler {
63
64 private final Task initialBootstrapTask;
65
66 @Inject
67 public ContentImporterModuleVersionHandler(MagnoliaConfigurationProperties properties) {
68 initialBootstrapTask = new IsOnlyInstallBootstrapAllowedTask("Initial bootstrap of content", "Import content on first installation if initial bootstrap is allowed.", properties,
69 new NodeExistsDelegateTask("", "/modules/content-importer/config",
70 new SetPropertyTask(RepositoryConstants.CONFIG, "/modules/content-importer/config", ContentImporterModule.CONTENT_BOOTSTRAP_INSTALL_PROPERTY_KEY, "true"),
71 new NodeBuilderTask("", "", ErrorHandling.strict, RepositoryConstants.CONFIG, "/modules/content-importer",
72 addNode("config", NodeTypes.Content.NAME).then(
73 addProperty(ContentImporterModule.CONTENT_BOOTSTRAP_INSTALL_PROPERTY_KEY, "true")
74 ))));
75
76 register(DeltaBuilder.update("1.0.2", "")
77 .addTask(new PartialBootstrapTask("Replace content task configuration", "Replaces incorrect content task configuration", "/mgnl-bootstrap/content-importer/config.modules.content-importer.tasks.xml", "/tasks/content", ImportUUIDBehavior.IMPORT_UUID_COLLISION_REMOVE_EXISTING)));
78 }
79
80 @Override
81 protected List<Task> getExtraInstallTasks(InstallContext installContext) {
82 final List<Task> extraInstallTasks = new ArrayList<>(super.getExtraInstallTasks(installContext));
83
84 getBasicInstallTasks(installContext).remove(initialBootstrapTask);
85 return extraInstallTasks;
86 }
87
88 @Override
89 protected List<Task> getBasicInstallTasks(InstallContext installContext) {
90 final List<Task> basicInstallTasks = new ArrayList<>(super.getBasicInstallTasks(installContext));
91 basicInstallTasks.add(initialBootstrapTask);
92 return basicInstallTasks;
93 }
94 }