Skip to content

Commit 9ba75e5

Browse files
committed
Update to Jackson v3
Fixes #477
1 parent 1bc6866 commit 9ba75e5

File tree

4 files changed

+43
-45
lines changed

4 files changed

+43
-45
lines changed

chartjs-java-model/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,9 @@
5757

5858
<dependencies>
5959
<dependency>
60-
<groupId>com.fasterxml.jackson.core</groupId>
60+
<groupId>tools.jackson.core</groupId>
6161
<artifactId>jackson-databind</artifactId>
62-
<version>2.21.0</version>
62+
<version>3.0.3</version>
6363
</dependency>
6464

6565
<!-- Tests -->

chartjs-java-model/src/main/java/software/xdev/chartjs/model/charts/AbstractChart.java

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,14 @@
1515
*/
1616
package software.xdev.chartjs.model.charts;
1717

18-
import java.io.UncheckedIOException;
19-
2018
import com.fasterxml.jackson.annotation.JsonAutoDetect;
2119
import com.fasterxml.jackson.annotation.JsonIgnore;
2220
import com.fasterxml.jackson.annotation.JsonInclude;
23-
import com.fasterxml.jackson.annotation.PropertyAccessor;
24-
import com.fasterxml.jackson.core.JsonProcessingException;
25-
import com.fasterxml.jackson.databind.ObjectMapper;
26-
import com.fasterxml.jackson.databind.ObjectWriter;
2721

2822
import software.xdev.chartjs.model.data.AbstractData;
2923
import software.xdev.chartjs.model.options.Options;
24+
import tools.jackson.databind.ObjectWriter;
25+
import tools.jackson.databind.json.JsonMapper;
3026

3127

3228
public abstract class AbstractChart<T, O extends Options<?, ?>, D extends AbstractData<?, ?>>
@@ -36,13 +32,16 @@ public abstract class AbstractChart<T, O extends Options<?, ?>, D extends Abstra
3632
protected O options;
3733

3834
@JsonIgnore
39-
protected ObjectWriter defaultObjectWriter = new ObjectMapper()
40-
.setDefaultPropertyInclusion(JsonInclude.Include.NON_EMPTY)
41-
.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY)
42-
.setVisibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.NONE)
43-
.setVisibility(PropertyAccessor.IS_GETTER, JsonAutoDetect.Visibility.NONE)
44-
.setVisibility(PropertyAccessor.SETTER, JsonAutoDetect.Visibility.NONE)
45-
.setVisibility(PropertyAccessor.CREATOR, JsonAutoDetect.Visibility.NONE)
35+
protected ObjectWriter defaultObjectWriter = JsonMapper.builder()
36+
.changeDefaultPropertyInclusion(v -> v
37+
.withValueInclusion(JsonInclude.Include.NON_EMPTY))
38+
.changeDefaultVisibility(vc -> vc
39+
.withFieldVisibility(JsonAutoDetect.Visibility.ANY)
40+
.withGetterVisibility(JsonAutoDetect.Visibility.NONE)
41+
.withIsGetterVisibility(JsonAutoDetect.Visibility.NONE)
42+
.withSetterVisibility(JsonAutoDetect.Visibility.NONE)
43+
.withCreatorVisibility(JsonAutoDetect.Visibility.NONE))
44+
.build()
4645
.writer()
4746
.forType(this.getClass());
4847

@@ -102,14 +101,7 @@ public T setDefaultObjectWriter(final ObjectWriter defaultObjectWriter)
102101
@Override
103102
public String toJson()
104103
{
105-
try
106-
{
107-
return this.defaultObjectWriter.writeValueAsString(this);
108-
}
109-
catch(final JsonProcessingException e)
110-
{
111-
throw new UncheckedIOException("Failed to write json", e);
112-
}
104+
return this.defaultObjectWriter.writeValueAsString(this);
113105
}
114106

115107
@SuppressWarnings("unchecked")

chartjs-java-model/src/main/java/software/xdev/chartjs/model/javascript/JavaScriptFunction.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,10 @@
1515
*/
1616
package software.xdev.chartjs.model.javascript;
1717

18-
import java.io.IOException;
19-
20-
import com.fasterxml.jackson.core.JsonGenerator;
21-
import com.fasterxml.jackson.databind.JsonSerializer;
22-
import com.fasterxml.jackson.databind.SerializerProvider;
23-
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
18+
import tools.jackson.core.JsonGenerator;
19+
import tools.jackson.databind.SerializationContext;
20+
import tools.jackson.databind.annotation.JsonSerialize;
21+
import tools.jackson.databind.ser.std.StdSerializer;
2422

2523

2624
@JsonSerialize(using = JavaScriptFunction.Serializer.class)
@@ -38,13 +36,18 @@ public String getFunction()
3836
return this.function;
3937
}
4038

41-
public static class Serializer extends JsonSerializer<JavaScriptFunction>
39+
public static class Serializer extends StdSerializer<JavaScriptFunction>
4240
{
41+
public Serializer()
42+
{
43+
super(JavaScriptFunction.class);
44+
}
45+
4346
@Override
4447
public void serialize(
4548
final JavaScriptFunction value,
4649
final JsonGenerator gen,
47-
final SerializerProvider serializers) throws IOException
50+
final SerializationContext provider)
4851
{
4952
gen.writeRawValue(value.function);
5053
}

chartjs-java-model/src/main/java/software/xdev/chartjs/model/objects/OptionalArray.java

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,12 @@
1515
*/
1616
package software.xdev.chartjs.model.objects;
1717

18-
import java.io.IOException;
1918
import java.util.ArrayList;
2019

21-
import com.fasterxml.jackson.core.JsonGenerator;
22-
import com.fasterxml.jackson.databind.JsonSerializer;
23-
import com.fasterxml.jackson.databind.SerializerProvider;
24-
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
20+
import tools.jackson.core.JsonGenerator;
21+
import tools.jackson.databind.SerializationContext;
22+
import tools.jackson.databind.annotation.JsonSerialize;
23+
import tools.jackson.databind.ser.std.StdSerializer;
2524

2625

2726
/**
@@ -31,35 +30,39 @@
3130
@JsonSerialize(using = OptionalArray.Serializer.class)
3231
public class OptionalArray<E> extends ArrayList<E>
3332
{
34-
public static class Serializer<T> extends JsonSerializer<OptionalArray<T>>
33+
public static class Serializer<T> extends StdSerializer<OptionalArray<T>>
3534
{
35+
public Serializer()
36+
{
37+
super(OptionalArray.class);
38+
}
39+
3640
@Override
37-
public boolean isEmpty(final SerializerProvider provider, final OptionalArray<T> value)
41+
public boolean isEmpty(final SerializationContext ctxt, final OptionalArray<T> value)
3842
{
3943
return value == null || value.isEmpty();
4044
}
4145

4246
@Override
4347
public void serialize(
4448
final OptionalArray<T> value,
45-
final JsonGenerator jgen,
46-
final SerializerProvider provider)
47-
throws IOException
49+
final JsonGenerator gen,
50+
final SerializationContext provider)
4851
{
4952
if(value != null && !value.isEmpty())
5053
{
5154
if(value.size() == 1)
5255
{
53-
jgen.writeObject(value.get(0));
56+
gen.writePOJO(value.get(0));
5457
}
5558
else
5659
{
57-
jgen.writeStartArray();
60+
gen.writeStartArray();
5861
for(final T t : value)
5962
{
60-
jgen.writeObject(t);
63+
gen.writePOJO(t);
6164
}
62-
jgen.writeEndArray();
65+
gen.writeEndArray();
6366
}
6467
}
6568
}

0 commit comments

Comments
 (0)