Skip to content

Commit 00c6e53

Browse files
authored
Merge pull request #187 from jampukka/jackson3
Jackson 3 support
2 parents bb0b4ef + fe4a1c7 commit 00c6e53

47 files changed

Lines changed: 614 additions & 279 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

pom.xml

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@
4141

4242
<properties>
4343
<freemarker.version>2.3.33</freemarker.version>
44-
<jackson.version>2.17.1</jackson.version>
45-
<jackson-databind.version>2.17.1</jackson-databind.version>
44+
<jackson.version>3.1.1</jackson.version>
45+
<jackson-annotations.version>2.21</jackson-annotations.version>
4646
<swagger.version>2.2.42</swagger.version>
4747
<jts.version>1.20.0</jts.version>
4848
<hikari.version>4.0.3</hikari.version>
@@ -56,7 +56,7 @@
5656
<json-path.version>2.9.0</json-path.version>
5757
<caffeine.version>2.9.3</caffeine.version>
5858
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
59-
<java.version>11</java.version>
59+
<java.version>17</java.version>
6060
<maven.compiler.source>${java.version}</maven.compiler.source>
6161
<maven.compiler.target>${java.version}</maven.compiler.target>
6262
<maven.compiler.release>${java.version}</maven.compiler.release>
@@ -168,24 +168,19 @@
168168
<version>${freemarker.version}</version>
169169
</dependency>
170170
<dependency>
171-
<groupId>com.fasterxml.jackson.datatype</groupId>
172-
<artifactId>jackson-datatype-jsr310</artifactId>
173-
<version>${jackson.version}</version>
174-
</dependency>
175-
<dependency>
176-
<groupId>com.fasterxml.jackson.core</groupId>
171+
<groupId>tools.jackson.core</groupId>
177172
<artifactId>jackson-core</artifactId>
178173
<version>${jackson.version}</version>
179174
</dependency>
180175
<dependency>
181-
<groupId>com.fasterxml.jackson.core</groupId>
176+
<groupId>tools.jackson.core</groupId>
182177
<artifactId>jackson-databind</artifactId>
183-
<version>${jackson-databind.version}</version>
178+
<version>${jackson.version}</version>
184179
</dependency>
185180
<dependency>
186181
<groupId>com.fasterxml.jackson.core</groupId>
187182
<artifactId>jackson-annotations</artifactId>
188-
<version>${jackson.version}</version>
183+
<version>${jackson-annotations.version}</version>
189184
</dependency>
190185
<dependency>
191186
<groupId>io.swagger.core.v3</groupId>

src/hakunapi-config-test/src/main/java/fi/nls/hakunapi/config/test/ConfigTest.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,9 @@
1414
import java.util.Properties;
1515
import java.util.stream.Collectors;
1616

17-
import com.fasterxml.jackson.databind.ObjectMapper;
18-
import com.fasterxml.jackson.databind.SerializationFeature;
17+
import tools.jackson.databind.ObjectMapper;
18+
import tools.jackson.databind.SerializationFeature;
19+
import tools.jackson.databind.json.JsonMapper;
1920

2021
import fi.nls.hakunapi.core.SimpleSource;
2122
import fi.nls.hakunapi.core.config.HakunaConfigParser;
@@ -57,8 +58,9 @@ public static void main(String[] args) {
5758
System.out.println("Parent path: " + parent.toAbsolutePath().toString());
5859
}
5960

60-
ObjectMapper om = new ObjectMapper();
61-
om.enable(SerializationFeature.INDENT_OUTPUT);
61+
ObjectMapper om = JsonMapper.builder()
62+
.enable(SerializationFeature.INDENT_OUTPUT)
63+
.build();
6264

6365
HakunaConfigParser parser = new HakunaConfigParser(properties);
6466

src/hakunapi-core/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
<dependencies>
1212
<dependency>
13-
<groupId>com.fasterxml.jackson.core</groupId>
13+
<groupId>tools.jackson.core</groupId>
1414
<artifactId>jackson-databind</artifactId>
1515
</dependency>
1616
<dependency>

src/hakunapi-core/src/main/java/fi/nls/hakunapi/core/PaginationStrategyCursor.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package fi.nls.hakunapi.core;
22

3-
import java.io.IOException;
43
import java.util.ArrayList;
54
import java.util.List;
65

7-
import com.fasterxml.jackson.core.JsonProcessingException;
8-
import com.fasterxml.jackson.databind.ObjectMapper;
6+
import tools.jackson.core.JacksonException;
7+
import tools.jackson.databind.ObjectMapper;
8+
import tools.jackson.databind.json.JsonMapper;
99

1010
import fi.nls.hakunapi.core.filter.Filter;
1111
import fi.nls.hakunapi.core.param.NextParam;
@@ -16,7 +16,7 @@
1616

1717
public class PaginationStrategyCursor implements PaginationStrategy {
1818

19-
private static final ObjectMapper om = new ObjectMapper();
19+
private static final ObjectMapper om = JsonMapper.builder().build();
2020

2121
public static final PaginationStrategyCursor INSTANCE = new PaginationStrategyCursor();
2222
public static final String NAME = "cursor";
@@ -75,17 +75,13 @@ public NextCursor getNextCursor(GetFeatureRequest request, GetFeatureCollection
7575
private static String toJsonArray(List<String> list) {
7676
try {
7777
return om.writeValueAsString(list);
78-
} catch (JsonProcessingException e) {
78+
} catch (JacksonException e) {
7979
throw new RuntimeException(e);
8080
}
8181
}
8282

8383
private static List<String> fromJsonArray(String json) {
84-
try {
85-
return om.readValue(json, om.getTypeFactory().constructCollectionType(List.class, String.class));
86-
} catch (IOException e) {
87-
throw new RuntimeException(e);
88-
}
84+
return om.readValue(json, om.getTypeFactory().constructCollectionType(List.class, String.class));
8985
}
9086

9187
@Override

src/hakunapi-core/src/main/java/fi/nls/hakunapi/core/config/HakunaApplicationJson.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@
77
import org.slf4j.Logger;
88
import org.slf4j.LoggerFactory;
99

10-
import com.fasterxml.jackson.core.JsonProcessingException;
11-
import com.fasterxml.jackson.core.type.TypeReference;
12-
import com.fasterxml.jackson.databind.JsonMappingException;
13-
import com.fasterxml.jackson.databind.ObjectMapper;
10+
import tools.jackson.core.JacksonException;
11+
import tools.jackson.core.type.TypeReference;
12+
import tools.jackson.databind.DatabindException;
13+
import tools.jackson.databind.ObjectMapper;
14+
import tools.jackson.databind.json.JsonMapper;
1415

1516
public class HakunaApplicationJson {
1617
public static final String HAKUNA_APPLICATION_JSON_PROP = "HAKUNA_APPLICATION_JSON";
@@ -55,17 +56,17 @@ public static HakunaApplicationJson readFromString(String json) {
5556
});
5657
appJson.contextProperties.put(ctx, valuesAsProperties);
5758
});
58-
} catch (JsonProcessingException e) {
59+
} catch (JacksonException e) {
5960
LOG.warn("Invalid HAKUNA_APPLICATION_JSON " + e);
6061
}
6162

6263
return appJson;
6364
}
6465

65-
protected static final ObjectMapper MAPPER = new ObjectMapper();
66+
protected static final ObjectMapper MAPPER = new JsonMapper();
6667

6768
protected static Map<String, Map<String, String>> loadJson(HakunaApplicationJson appJson, String json)
68-
throws JsonMappingException, JsonProcessingException {
69+
throws JacksonException, DatabindException {
6970
TypeReference<Map<String, Map<String, String>>> type = new TypeReference<Map<String, Map<String, String>>>() {
7071
};
7172
return MAPPER.readValue(json, type);

src/hakunapi-core/src/main/java/fi/nls/hakunapi/core/config/HakunaConfigParser.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,9 @@
2323
import org.slf4j.Logger;
2424
import org.slf4j.LoggerFactory;
2525

26-
import com.fasterxml.jackson.core.type.TypeReference;
27-
import com.fasterxml.jackson.databind.ObjectMapper;
26+
import tools.jackson.core.type.TypeReference;
27+
import tools.jackson.databind.ObjectMapper;
28+
import tools.jackson.databind.json.JsonMapper;
2829

2930
import fi.nls.hakunapi.core.CacheSettings;
3031
import fi.nls.hakunapi.core.DatetimeProperty;
@@ -681,7 +682,7 @@ public Map<String, Object> parseMetadata(String p, Path configPath) {
681682
}
682683

683684
TypeReference<HashMap<String, Object>> typeRef = new TypeReference<HashMap<String, Object>>() {};
684-
ObjectMapper om = new ObjectMapper();
685+
ObjectMapper om = new JsonMapper();
685686

686687
try {
687688
return om.readValue(metadataProp, typeRef);

src/hakunapi-core/src/main/java/fi/nls/hakunapi/core/schema/JsonSchemaUtil.java

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import java.nio.file.Files;
55
import java.nio.file.Path;
66
import java.util.ArrayList;
7-
import java.util.Iterator;
87
import java.util.LinkedHashMap;
98
import java.util.List;
109
import java.util.Map;
@@ -13,8 +12,9 @@
1312
import org.slf4j.Logger;
1413
import org.slf4j.LoggerFactory;
1514

16-
import com.fasterxml.jackson.databind.JsonNode;
17-
import com.fasterxml.jackson.databind.ObjectMapper;
15+
import tools.jackson.databind.JsonNode;
16+
import tools.jackson.databind.ObjectMapper;
17+
import tools.jackson.databind.json.JsonMapper;
1818

1919
import io.swagger.v3.oas.models.media.Schema;
2020
import io.swagger.v3.oas.models.media.StringSchema;
@@ -51,7 +51,7 @@
5151
public class JsonSchemaUtil {
5252

5353
private static final Logger LOG = LoggerFactory.getLogger(JsonSchemaUtil.class);
54-
private static final ObjectMapper MAPPER = new ObjectMapper();
54+
private static final ObjectMapper MAPPER = new JsonMapper();
5555

5656
private JsonSchemaUtil() {
5757
}
@@ -105,7 +105,7 @@ static Schema nodeToSchema(JsonNode node) {
105105
return null;
106106
}
107107

108-
String type = node.has("type") ? node.get("type").asText() : "object";
108+
String type = node.has("type") ? node.get("type").asString() : "object";
109109
Schema schema;
110110
switch (type) {
111111
case "string":
@@ -126,13 +126,13 @@ static Schema nodeToSchema(JsonNode node) {
126126
}
127127

128128
if (node.has("title")) {
129-
schema.setTitle(node.get("title").asText());
129+
schema.setTitle(node.get("title").asString());
130130
}
131131
if (node.has("description")) {
132-
schema.setDescription(node.get("description").asText());
132+
schema.setDescription(node.get("description").asString());
133133
}
134134
if (node.has("format")) {
135-
schema.setFormat(node.get("format").asText());
135+
schema.setFormat(node.get("format").asString());
136136
}
137137
if (node.has("enum")) {
138138
List<Object> enumValues = new ArrayList<>();
@@ -144,17 +144,15 @@ static Schema nodeToSchema(JsonNode node) {
144144
} else if (val.isDouble()) {
145145
enumValues.add(val.doubleValue());
146146
} else {
147-
enumValues.add(val.asText());
147+
enumValues.add(val.asString());
148148
}
149149
}
150150
schema.setEnum(enumValues);
151151
}
152152

153153
if (node.has("properties")) {
154154
Map<String, Schema> props = new LinkedHashMap<>();
155-
Iterator<Map.Entry<String, JsonNode>> fields = node.get("properties").fields();
156-
while (fields.hasNext()) {
157-
Map.Entry<String, JsonNode> field = fields.next();
155+
for (Map.Entry<String, JsonNode> field : node.get("properties").properties()) {
158156
Schema propSchema = nodeToSchema(field.getValue());
159157
if (propSchema != null) {
160158
props.put(field.getKey(), propSchema);
@@ -164,12 +162,10 @@ static Schema nodeToSchema(JsonNode node) {
164162
}
165163

166164
// Collect x- extension fields
167-
Iterator<Map.Entry<String, JsonNode>> allFields = node.fields();
168-
while (allFields.hasNext()) {
169-
Map.Entry<String, JsonNode> field = allFields.next();
165+
for (Map.Entry<String, JsonNode> field : node.properties()) {
170166
if (field.getKey().startsWith("x-")) {
171-
schema.addExtension(field.getKey(), field.getValue().isTextual()
172-
? field.getValue().asText()
167+
schema.addExtension(field.getKey(), field.getValue().isString()
168+
? field.getValue().asString()
173169
: field.getValue());
174170
}
175171
}

src/hakunapi-core/src/main/java/fi/nls/hakunapi/core/transformer/JSONCodeListTransformer.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
package fi.nls.hakunapi.core.transformer;
22

3+
import java.io.File;
34
import java.io.IOException;
4-
import java.net.URL;
55
import java.util.ArrayList;
66
import java.util.Collection;
77
import java.util.HashMap;
88
import java.util.List;
99
import java.util.Map;
1010

11-
import com.fasterxml.jackson.core.JsonParseException;
12-
import com.fasterxml.jackson.core.type.TypeReference;
13-
import com.fasterxml.jackson.databind.JsonMappingException;
14-
import com.fasterxml.jackson.databind.ObjectMapper;
11+
import tools.jackson.core.JacksonException;
12+
import tools.jackson.core.type.TypeReference;
13+
import tools.jackson.databind.DatabindException;
14+
import tools.jackson.databind.ObjectMapper;
15+
import tools.jackson.databind.json.JsonMapper;
1516

1617
import fi.nls.hakunapi.core.property.HakunaProperty;
1718
import fi.nls.hakunapi.core.property.HakunaPropertyTransformed;
@@ -42,16 +43,16 @@ public void init(HakunaProperty property, String codelist) throws Exception {
4243
HakunaPropertyTransformed t = (HakunaPropertyTransformed) property;
4344
this.innerType = t.getInnerType();
4445

45-
URL url = new URL(codelist);
46-
Map<String, Object> map = readMap(url);
46+
File file = new File(codelist);
47+
Map<String, Object> map = readMap(file);
4748

4849
initFromMap(innerType, map);
4950
}
5051

51-
protected Map<String, Object> readMap(URL url) throws JsonParseException, JsonMappingException, IOException {
52-
ObjectMapper om = new ObjectMapper();
52+
protected Map<String, Object> readMap(File file) throws JacksonException, DatabindException, IOException {
53+
ObjectMapper om = new JsonMapper();
5354
TypeReference<HashMap<String,Object>> typeRef = new TypeReference<HashMap<String, Object>>() {};
54-
return om.readValue(url, typeRef);
55+
return om.readValue(file, typeRef);
5556
}
5657

5758
protected void initFromMap(HakunaPropertyType innerType, Map<String, Object> map) {

src/hakunapi-core/src/main/java/fi/nls/hakunapi/core/util/DToA.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import java.nio.charset.StandardCharsets;
44

5-
import com.fasterxml.jackson.core.io.NumberOutput;
5+
import tools.jackson.core.io.NumberOutput;
66

77
public class DToA {
88

src/hakunapi-core/src/main/java/fi/nls/hakunapi/core/util/IToA.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package fi.nls.hakunapi.core.util;
22

3-
import com.fasterxml.jackson.core.io.NumberOutput;
3+
import tools.jackson.core.io.NumberOutput;
44

55

66
/**

0 commit comments

Comments
 (0)