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.config.source.jcr;
35
36 import info.magnolia.config.registry.Registry;
37 import info.magnolia.config.source.AbstractConfigurationSourceBuilder;
38 import info.magnolia.jcr.node2bean.Node2BeanProcessor;
39 import info.magnolia.module.ModuleRegistry;
40
41 import java.io.IOException;
42
43 import org.apache.jackrabbit.commons.predicate.Predicate;
44
45
46
47
48 public class JcrConfigurationSourceBuilder extends AbstractConfigurationSourceBuilder {
49 private final Node2BeanProcessor node2BeanProcessor;
50 private final ModuleRegistry moduleRegistry;
51 private String pathInModule;
52 private Predicate nodeFilter = Predicate.TRUE;
53
54 public JcrConfigurationSourceBuilder(Node2BeanProcessor node2BeanProcessor, ModuleRegistry moduleRegistry) {
55 this.node2BeanProcessor = node2BeanProcessor;
56 this.moduleRegistry = moduleRegistry;
57 }
58
59 public JcrConfigurationSourceBuilder withModulePath(String pathInModule) {
60 this.pathInModule = pathInModule;
61 return this;
62 }
63
64
65
66
67
68
69 public JcrConfigurationSourceBuilder withFilter(Predicate nodeFilter) {
70 this.nodeFilter = nodeFilter;
71 return this;
72 }
73
74 @Override
75 public void bindTo(Registry<?> registry) {
76 if (pathInModule == null) {
77 throw new IllegalStateException(this + " is incomplete.");
78 }
79 if (registry == null) {
80 throw new NullPointerException("Must pass a registry instance");
81 }
82
83 try {
84 final JcrConfigurationSource<?> configurationSource = new JcrConfigurationSource<>(registry, pathInModule, nodeFilter, node2BeanProcessor, moduleRegistry);
85 configurationSource.start();
86 } catch (IOException e) {
87 throw new RuntimeException(e);
88 }
89 }
90
91 public void bindWithDefaults(Registry registry) {
92 withModulePath(pluralTypeNameOf(registry)).bindTo(registry);
93 }
94
95 }