Skip to content

Commit 7e6b04e

Browse files
Extract createJsonFactory in the LoggingJsonRecorder class
1 parent cf786e2 commit 7e6b04e

File tree

4 files changed

+46
-17
lines changed

4 files changed

+46
-17
lines changed

deployment/pom.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,14 @@
2525
<artifactId>quarkus-logging-json</artifactId>
2626
<version>3.1.1-SNAPSHOT</version>
2727
</dependency>
28+
<dependency>
29+
<groupId>io.quarkus</groupId>
30+
<artifactId>quarkus-jackson-deployment</artifactId>
31+
</dependency>
32+
<dependency>
33+
<groupId>io.quarkus</groupId>
34+
<artifactId>quarkus-jsonb-deployment</artifactId>
35+
</dependency>
2836
<!-- test dependencies -->
2937
<dependency>
3038
<groupId>io.quarkus</groupId>

deployment/src/main/java/io/quarkiverse/loggingjson/deployment/LoggingJsonProcessor.java

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,9 @@
44

55
import org.jboss.jandex.ClassInfo;
66

7-
import io.quarkiverse.loggingjson.JsonFactory;
7+
import io.quarkiverse.loggingjson.JsonFactoryType;
88
import io.quarkiverse.loggingjson.LoggingJsonRecorder;
99
import io.quarkiverse.loggingjson.config.Config;
10-
import io.quarkiverse.loggingjson.jackson.JacksonJsonFactory;
11-
import io.quarkiverse.loggingjson.jsonb.JsonbJsonFactory;
1210
import io.quarkus.arc.deployment.AdditionalBeanBuildItem;
1311
import io.quarkus.deployment.Capabilities;
1412
import io.quarkus.deployment.Capability;
@@ -34,29 +32,30 @@ FeatureBuildItem feature() {
3432
@Record(ExecutionTime.RUNTIME_INIT)
3533
LogConsoleFormatBuildItem setUpConsoleFormatter(Capabilities capabilities, LoggingJsonRecorder recorder,
3634
Config config) {
35+
JsonFactoryType factoryType = determineJsonFactoryType(capabilities);
36+
3737
return new LogConsoleFormatBuildItem(
38-
recorder.initializeConsoleJsonLogging(config, jsonFactory(capabilities, config)));
38+
recorder.initializeConsoleJsonLogging(config, factoryType));
3939
}
4040

4141
@BuildStep
4242
@Record(ExecutionTime.RUNTIME_INIT)
4343
LogFileFormatBuildItem setUpFileFormatter(Capabilities capabilities, LoggingJsonRecorder recorder,
4444
Config config) {
45+
JsonFactoryType factoryType = determineJsonFactoryType(capabilities);
46+
4547
return new LogFileFormatBuildItem(
46-
recorder.initializeFileJsonLogging(config, jsonFactory(capabilities, config)));
48+
recorder.initializeFileJsonLogging(config, factoryType));
4749
}
4850

49-
private JsonFactory jsonFactory(Capabilities capabilities, Config config) {
50-
51+
private JsonFactoryType determineJsonFactoryType(Capabilities capabilities) {
5152
if (capabilities.isPresent(Capability.JACKSON)) {
52-
boolean enabledJavaTimeModule = config.enabledJavaTimeModule.orElse(false);
53-
54-
return new JacksonJsonFactory(enabledJavaTimeModule);
53+
return JsonFactoryType.JACKSON;
5554
} else if (capabilities.isPresent(Capability.JSONB)) {
56-
return new JsonbJsonFactory();
55+
return JsonFactoryType.JSONB;
5756
} else {
5857
throw new RuntimeException(
59-
"Missing json implementation to use for logging-json. Supported: [quarkus-jackson, quarkus-jsonb]");
58+
"Missing JSON implementation to use for logging-json. Supported: [quarkus-jackson, quarkus-jsonb]");
6059
}
6160
}
6261

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package io.quarkiverse.loggingjson;
2+
3+
public enum JsonFactoryType {
4+
JACKSON,
5+
JSONB
6+
}

runtime/src/main/java/io/quarkiverse/loggingjson/LoggingJsonRecorder.java

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111

1212
import io.quarkiverse.loggingjson.config.Config;
1313
import io.quarkiverse.loggingjson.config.ConfigFormatter;
14+
import io.quarkiverse.loggingjson.jackson.JacksonJsonFactory;
15+
import io.quarkiverse.loggingjson.jsonb.JsonbJsonFactory;
1416
import io.quarkiverse.loggingjson.providers.*;
1517
import io.quarkus.arc.Arc;
1618
import io.quarkus.arc.InjectableInstance;
@@ -21,19 +23,21 @@
2123
public class LoggingJsonRecorder {
2224
private static final Logger log = LoggerFactory.getLogger(LoggingJsonRecorder.class);
2325

24-
public RuntimeValue<Optional<Formatter>> initializeConsoleJsonLogging(Config config,
25-
JsonFactory jsonFactory) {
26+
public RuntimeValue<Optional<Formatter>> initializeConsoleJsonLogging(Config config, JsonFactoryType factoryType) {
27+
JsonFactory jsonFactory = createJsonFactory(factoryType, config);
28+
2629
return initializeJsonLogging(config.console, config, jsonFactory);
2730
}
2831

29-
public RuntimeValue<Optional<Formatter>> initializeFileJsonLogging(Config config,
30-
JsonFactory jsonFactory) {
32+
public RuntimeValue<Optional<Formatter>> initializeFileJsonLogging(Config config, JsonFactoryType factoryType) {
33+
JsonFactory jsonFactory = createJsonFactory(factoryType, config);
34+
3135
return initializeJsonLogging(config.file, config, jsonFactory);
3236
}
3337

3438
public RuntimeValue<Optional<Formatter>> initializeJsonLogging(ConfigFormatter formatter, Config config,
3539
JsonFactory jsonFactory) {
36-
if (formatter == null || !formatter.isEnabled()) {
40+
if (formatter == null || !formatter.isEnabled() || jsonFactory == null) {
3741
return new RuntimeValue<>(Optional.empty());
3842
}
3943

@@ -66,6 +70,18 @@ public RuntimeValue<Optional<Formatter>> initializeJsonLogging(ConfigFormatter f
6670

6771
}
6872

73+
private JsonFactory createJsonFactory(JsonFactoryType type, Config config) {
74+
switch (type) {
75+
case JACKSON:
76+
return new JacksonJsonFactory(config.enabledJavaTimeModule.orElse(false));
77+
case JSONB:
78+
return new JsonbJsonFactory();
79+
default:
80+
log.error("Unsupported JsonFactory type");
81+
return null;
82+
}
83+
}
84+
6985
private List<JsonProvider> defaultFormat(Config config) {
7086
List<JsonProvider> providers = new ArrayList<>();
7187
providers.add(new TimestampJsonProvider(config.fields.timestamp));

0 commit comments

Comments
 (0)