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