1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.core.config.yaml;
18
19 import org.apache.logging.log4j.core.config.Configuration;
20 import org.apache.logging.log4j.core.config.ConfigurationFactory;
21 import org.apache.logging.log4j.core.config.ConfigurationSource;
22 import org.apache.logging.log4j.core.config.Order;
23 import org.apache.logging.log4j.core.config.plugins.Plugin;
24 import org.apache.logging.log4j.core.util.Loader;
25
26 @Plugin(name = "YamlConfigurationFactory", category = ConfigurationFactory.CATEGORY)
27 @Order(7)
28 public class YamlConfigurationFactory extends ConfigurationFactory {
29
30
31
32
33 private static final String[] SUFFIXES = new String[] {".yml", ".yaml"};
34
35 private static final String[] dependencies = new String[] {
36 "com.fasterxml.jackson.databind.ObjectMapper",
37 "com.fasterxml.jackson.databind.JsonNode",
38 "com.fasterxml.jackson.core.JsonParser",
39 "com.fasterxml.jackson.dataformat.yaml.YAMLFactory"
40 };
41
42 private final boolean isActive;
43
44 public YamlConfigurationFactory() {
45 for (final String dependency : dependencies) {
46 if (!Loader.isClassAvailable(dependency)) {
47 LOGGER.debug("Missing dependencies for Yaml support");
48 isActive = false;
49 return;
50 }
51 }
52 isActive = true;
53 }
54
55 @Override
56 protected boolean isActive() {
57 return isActive;
58 }
59
60 @Override
61 public Configuration getConfiguration(final ConfigurationSource source) {
62 if (!isActive) {
63 return null;
64 }
65 return new YamlConfiguration(source);
66 }
67
68 @Override
69 public String[] getSupportedTypes() {
70 return SUFFIXES;
71 }
72
73 }