1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.catalog.api.dao;
18
19 import java.time.LocalDateTime;
20
21 import com.fasterxml.jackson.core.JsonFactory;
22 import com.fasterxml.jackson.core.JsonParser;
23 import com.fasterxml.jackson.core.JsonProcessingException;
24 import com.fasterxml.jackson.databind.ObjectMapper;
25 import org.apache.logging.log4j.LogManager;
26 import org.apache.logging.log4j.Logger;
27 import org.apache.logging.log4j.catalog.api.Attribute;
28 import org.apache.logging.log4j.catalog.api.CatalogReader;
29
30
31
32
33
34 public class JsonCatalogReader extends AbstractCatalogReader {
35
36 private static final Logger LOGGER = LogManager.getLogger(JsonCatalogReader.class);
37
38
39 CatalogReader catalogReader;
40
41 public CatalogReader getCatalogReader() {
42 return catalogReader;
43 }
44
45 public void setCatalogReader(CatalogReader catalogReader) {
46 this.catalogReader = catalogReader;
47 }
48
49
50 public void init() {
51 catalogData = catalogReader.read();
52 for (Attribute attribute : catalogData.getAttributes()) {
53 attributes.put(attribute.getName(), attribute);
54 }
55 }
56
57 @Override
58 public String readCatalog() {
59 JsonFactory factory = new JsonFactory();
60 factory.enable(JsonParser.Feature.ALLOW_COMMENTS);
61 ObjectMapper mapper = new ObjectMapper(factory);
62 try {
63 return mapper.writeValueAsString(catalogData);
64 } catch (JsonProcessingException ex) {
65 LOGGER.error("Unable to serialze Catalog", ex);
66 return null;
67 }
68 }
69
70 @Override
71 public LocalDateTime getLastUpdated() {
72 return catalogReader.getLastUpdated();
73 }
74 }