1
14 package net.logstash.logback.composite;
15
16 import java.io.IOException;
17 import java.util.ArrayList;
18 import java.util.Collections;
19 import java.util.List;
20
21 import ch.qos.logback.access.spi.IAccessEvent;
22 import ch.qos.logback.classic.spi.ILoggingEvent;
23 import ch.qos.logback.core.Context;
24 import ch.qos.logback.core.spi.DeferredProcessingAware;
25
26 import com.fasterxml.jackson.core.JsonFactory;
27 import com.fasterxml.jackson.core.JsonGenerator;
28
29
41 public class JsonProviders<Event extends DeferredProcessingAware> implements JsonFactoryAware {
42
43 private final List<JsonProvider<Event>> jsonProviders = new ArrayList<JsonProvider<Event>>();
44
45 public void start() {
46 for (JsonProvider<Event> jsonProvider : jsonProviders) {
47 jsonProvider.start();
48 }
49 }
50
51 public void stop() {
52 for (JsonProvider<Event> jsonProvider : jsonProviders) {
53 jsonProvider.stop();
54 }
55 }
56
57 public void setContext(Context context) {
58 for (JsonProvider<Event> jsonProvider : jsonProviders) {
59 jsonProvider.setContext(context);
60 }
61 }
62
63 public void addProvider(JsonProvider<Event> provider) {
64 if (provider != null) {
65 this.jsonProviders.add(provider);
66 }
67 }
68
69 public void removeProvider(JsonProvider<Event> provider) {
70 if (provider != null) {
71 this.jsonProviders.remove(provider);
72 }
73 }
74
75 public void writeTo(JsonGenerator generator, Event event) throws IOException {
76 for (JsonProvider<Event> jsonProvider : jsonProviders) {
77 jsonProvider.writeTo(generator, event);
78 }
79 }
80
81 protected void prepareForDeferredProcessing(Event event) {
82 for (JsonProvider<Event> jsonProvider : jsonProviders) {
83 jsonProvider.prepareForDeferredProcessing(event);
84 }
85 }
86
87 @Override
88 public void setJsonFactory(JsonFactory jsonFactory) {
89 for (JsonProvider<Event> jsonProvider : jsonProviders) {
90 if (jsonProvider instanceof JsonFactoryAware) {
91 ((JsonFactoryAware) jsonProvider).setJsonFactory(jsonFactory);
92 }
93 }
94 }
95
96 public List<JsonProvider<Event>> getProviders() {
97 return Collections.unmodifiableList(jsonProviders);
98 }
99 }
100