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.yaml;
35
36 import info.magnolia.config.map2bean.Map2BeanTransformer;
37 import info.magnolia.config.registry.Registry;
38 import info.magnolia.config.source.yaml.decoration.FilePathBasedYamlDefinitionDecoratorResolver;
39 import info.magnolia.resourceloader.Resource;
40 import info.magnolia.resourceloader.ResourceOrigin;
41
42 import java.util.regex.Pattern;
43
44 import org.slf4j.Logger;
45 import org.slf4j.LoggerFactory;
46
47
48
49
50
51
52 public class YamlConfigurationSource<T> extends AbstractFileResourceConfigurationSource<T> {
53
54 private static Logger log = LoggerFactory.getLogger(YamlConfigurationSource.class);
55
56 private final Map2BeanTransformer map2BeanTransformer;
57
58 private final YamlReader yamlReader;
59
60
61
62
63 public YamlConfigurationSource(ResourceOrigin origin, Map2BeanTransformer map2BeanTransformer, Registry<T> registry, Pattern pathPattern, YamlReader yamlReader) {
64 super(origin, registry, pathPattern);
65 this.map2BeanTransformer = map2BeanTransformer;
66 this.yamlReader = yamlReader;
67 }
68
69 @Override
70 protected void startDecoration() {
71 registerDefinitionDecoratorResolver(new FilePathBasedYamlDefinitionDecoratorResolver(map2BeanTransformer, getRegistry()));
72 super.startDecoration();
73 }
74
75 @Override
76 public void loadAndRegister(Resource resource) {
77 if (resource == null) {
78 throw new IllegalStateException("Resource cannot be null");
79 }
80
81 final YamlDefinitionProvider<T> definitionProvider = new YamlDefinitionProvider<>(
82 this,
83 resource,
84 map2BeanTransformer,
85 yamlReader);
86
87 getRegistry().register(definitionProvider);
88
89 log.info("Registered {} from {}", definitionProvider.getMetadata(), resource);
90 }
91 }