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.construct;
35
36 import static info.magnolia.config.registry.DefinitionProvider.Problem.DefaultTypes.RESOLUTION;
37
38 import info.magnolia.config.registry.DefinitionProvider.Problem;
39 import info.magnolia.config.source.yaml.YamlReader;
40 import info.magnolia.config.source.yaml.dependency.YamlFileDependency;
41 import info.magnolia.resourceloader.ResourceOrigin;
42
43 import java.util.function.Consumer;
44
45 import org.yaml.snakeyaml.nodes.Node;
46 import org.yaml.snakeyaml.nodes.ScalarNode;
47
48
49
50
51
52
53
54
55 @Deprecated
56 public final class IncludeYamlFile extends MgnlYamlConstruct {
57
58 public static final String TAG = "!include";
59
60 private final YamlReader yamlReader;
61 private final ResourceOrigin<?> resourceOrigin;
62
63 public IncludeYamlFile(YamlReader yamlReader, ResourceOrigin<?> resourceOrigin, Consumer<Problem> problemCollector) {
64 super(problemCollector);
65 this.yamlReader = yamlReader;
66 this.resourceOrigin = resourceOrigin;
67 }
68
69 @Override
70 public Object construct(Node node) {
71 if (!(node instanceof ScalarNode)) {
72 throw new IllegalArgumentException(String.format("Non-scalar %s: %s", TAG, node.toString()));
73 }
74
75 final ScalarNode scalarNode = (ScalarNode) node;
76 final String path = scalarNode.getValue();
77
78 reportProblem(
79 Problem.deprecated()
80 .withType(RESOLUTION)
81 .withTitle("Deprecated YAML construct usage")
82 .withDetails(String.format("Resource [%s] is included via deprecated syntax (!include <resource_path), use !include:<resource_path> syntax instead", path))
83 .build());
84
85
86 final YamlFileDependency dependency = new YamlFileDependency(resourceOrigin, path, yamlReader, getConstructor().getDependencyAggregator(), this::reportProblem);
87 getConstructor().getDependencyAggregator().addDependency(dependency);
88
89 return dependency.readData();
90 }
91 }