diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml
index a4b4fbcb..3e10c262 100644
--- a/.github/workflows/check-build.yml
+++ b/.github/workflows/check-build.yml
@@ -83,31 +83,6 @@ jobs:
path: ${{ env.PRIMARY_MAVEN_MODULE }}/target/screenshots
if-no-files-found: ignore
- # Ensure compatibility with Java 11
- # See https://github.com/xdev-software/chartjs-java-model/issues/14
- build-java-11:
- runs-on: ubuntu-latest
- timeout-minutes: 30
- steps:
- - uses: actions/checkout@v6
-
- - name: Set up JDK
- uses: actions/setup-java@v5
- with:
- distribution: temurin
- java-version: 11
-
- - name: Cache Maven
- uses: actions/cache@v5
- with:
- path: ~/.m2/repository
- key: ${{ runner.os }}-mvn-build-java-11-${{ hashFiles('**/pom.xml') }}
- restore-keys: |
- ${{ runner.os }}-mvn-build-java-11-
-
- - name: Build with Maven
- run: ./mvnw -B clean package -Dmaven.test.skip=true
-
checkstyle:
runs-on: ubuntu-latest
if: ${{ github.event_name != 'pull_request' || !startsWith(github.head_ref, 'renovate/') }}
diff --git a/CHANGELOG.md b/CHANGELOG.md
index bc11e86a..ead2e647 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+# 3.0.0
+_Java 17 is now required_
+* Updated dependencies
+ * Updated to Jackson v3 #477
+
# 2.9.1
* Updated dependencies
diff --git a/chartjs-java-model-demo/pom.xml b/chartjs-java-model-demo/pom.xml
index a6c0a8d0..7b7bccdc 100644
--- a/chartjs-java-model-demo/pom.xml
+++ b/chartjs-java-model-demo/pom.xml
@@ -7,11 +7,11 @@
software.xdev
chartjs-java-model-root
- 2.9.2-SNAPSHOT
+ 3.0.0-SNAPSHOT
chartjs-java-model-demo
- 2.9.2-SNAPSHOT
+ 3.0.0-SNAPSHOT
jar
@@ -20,7 +20,7 @@
- 11
+ 17
${javaVersion}
UTF-8
diff --git a/chartjs-java-model/pom.xml b/chartjs-java-model/pom.xml
index 87f95b20..21d6213b 100644
--- a/chartjs-java-model/pom.xml
+++ b/chartjs-java-model/pom.xml
@@ -6,7 +6,7 @@
software.xdev
chartjs-java-model
- 2.9.2-SNAPSHOT
+ 3.0.0-SNAPSHOT
jar
chartjs-java-model
@@ -42,7 +42,7 @@
- 11
+ 17
${javaVersion}
UTF-8
@@ -57,9 +57,9 @@
- com.fasterxml.jackson.core
+ tools.jackson.core
jackson-databind
- 2.21.0
+ 3.0.3
diff --git a/chartjs-java-model/src/main/java/software/xdev/chartjs/model/charts/AbstractChart.java b/chartjs-java-model/src/main/java/software/xdev/chartjs/model/charts/AbstractChart.java
index baf5781c..db27e69d 100644
--- a/chartjs-java-model/src/main/java/software/xdev/chartjs/model/charts/AbstractChart.java
+++ b/chartjs-java-model/src/main/java/software/xdev/chartjs/model/charts/AbstractChart.java
@@ -15,18 +15,14 @@
*/
package software.xdev.chartjs.model.charts;
-import java.io.UncheckedIOException;
-
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.annotation.PropertyAccessor;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.ObjectWriter;
import software.xdev.chartjs.model.data.AbstractData;
import software.xdev.chartjs.model.options.Options;
+import tools.jackson.databind.ObjectWriter;
+import tools.jackson.databind.json.JsonMapper;
public abstract class AbstractChart, D extends AbstractData, ?>>
@@ -36,13 +32,16 @@ public abstract class AbstractChart, D extends Abstra
protected O options;
@JsonIgnore
- protected ObjectWriter defaultObjectWriter = new ObjectMapper()
- .setDefaultPropertyInclusion(JsonInclude.Include.NON_EMPTY)
- .setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY)
- .setVisibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.NONE)
- .setVisibility(PropertyAccessor.IS_GETTER, JsonAutoDetect.Visibility.NONE)
- .setVisibility(PropertyAccessor.SETTER, JsonAutoDetect.Visibility.NONE)
- .setVisibility(PropertyAccessor.CREATOR, JsonAutoDetect.Visibility.NONE)
+ protected ObjectWriter defaultObjectWriter = JsonMapper.builder()
+ .changeDefaultPropertyInclusion(v -> v
+ .withValueInclusion(JsonInclude.Include.NON_EMPTY))
+ .changeDefaultVisibility(vc -> vc
+ .withFieldVisibility(JsonAutoDetect.Visibility.ANY)
+ .withGetterVisibility(JsonAutoDetect.Visibility.NONE)
+ .withIsGetterVisibility(JsonAutoDetect.Visibility.NONE)
+ .withSetterVisibility(JsonAutoDetect.Visibility.NONE)
+ .withCreatorVisibility(JsonAutoDetect.Visibility.NONE))
+ .build()
.writer()
.forType(this.getClass());
@@ -102,14 +101,7 @@ public T setDefaultObjectWriter(final ObjectWriter defaultObjectWriter)
@Override
public String toJson()
{
- try
- {
- return this.defaultObjectWriter.writeValueAsString(this);
- }
- catch(final JsonProcessingException e)
- {
- throw new UncheckedIOException("Failed to write json", e);
- }
+ return this.defaultObjectWriter.writeValueAsString(this);
}
@SuppressWarnings("unchecked")
diff --git a/chartjs-java-model/src/main/java/software/xdev/chartjs/model/javascript/JavaScriptFunction.java b/chartjs-java-model/src/main/java/software/xdev/chartjs/model/javascript/JavaScriptFunction.java
index 61a76ee3..ec6f6ca8 100644
--- a/chartjs-java-model/src/main/java/software/xdev/chartjs/model/javascript/JavaScriptFunction.java
+++ b/chartjs-java-model/src/main/java/software/xdev/chartjs/model/javascript/JavaScriptFunction.java
@@ -15,12 +15,10 @@
*/
package software.xdev.chartjs.model.javascript;
-import java.io.IOException;
-
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.SerializerProvider;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import tools.jackson.core.JsonGenerator;
+import tools.jackson.databind.SerializationContext;
+import tools.jackson.databind.annotation.JsonSerialize;
+import tools.jackson.databind.ser.std.StdSerializer;
@JsonSerialize(using = JavaScriptFunction.Serializer.class)
@@ -38,13 +36,18 @@ public String getFunction()
return this.function;
}
- public static class Serializer extends JsonSerializer
+ public static class Serializer extends StdSerializer
{
+ public Serializer()
+ {
+ super(JavaScriptFunction.class);
+ }
+
@Override
public void serialize(
final JavaScriptFunction value,
final JsonGenerator gen,
- final SerializerProvider serializers) throws IOException
+ final SerializationContext provider)
{
gen.writeRawValue(value.function);
}
diff --git a/chartjs-java-model/src/main/java/software/xdev/chartjs/model/objects/OptionalArray.java b/chartjs-java-model/src/main/java/software/xdev/chartjs/model/objects/OptionalArray.java
index 398da7c9..9469082f 100644
--- a/chartjs-java-model/src/main/java/software/xdev/chartjs/model/objects/OptionalArray.java
+++ b/chartjs-java-model/src/main/java/software/xdev/chartjs/model/objects/OptionalArray.java
@@ -15,13 +15,12 @@
*/
package software.xdev.chartjs.model.objects;
-import java.io.IOException;
import java.util.ArrayList;
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.SerializerProvider;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import tools.jackson.core.JsonGenerator;
+import tools.jackson.databind.SerializationContext;
+import tools.jackson.databind.annotation.JsonSerialize;
+import tools.jackson.databind.ser.std.StdSerializer;
/**
@@ -31,10 +30,15 @@
@JsonSerialize(using = OptionalArray.Serializer.class)
public class OptionalArray extends ArrayList
{
- public static class Serializer extends JsonSerializer>
+ public static class Serializer extends StdSerializer>
{
+ public Serializer()
+ {
+ super(OptionalArray.class);
+ }
+
@Override
- public boolean isEmpty(final SerializerProvider provider, final OptionalArray value)
+ public boolean isEmpty(final SerializationContext ctxt, final OptionalArray value)
{
return value == null || value.isEmpty();
}
@@ -42,24 +46,23 @@ public boolean isEmpty(final SerializerProvider provider, final OptionalArray
@Override
public void serialize(
final OptionalArray value,
- final JsonGenerator jgen,
- final SerializerProvider provider)
- throws IOException
+ final JsonGenerator gen,
+ final SerializationContext provider)
{
if(value != null && !value.isEmpty())
{
if(value.size() == 1)
{
- jgen.writeObject(value.get(0));
+ gen.writePOJO(value.get(0));
}
else
{
- jgen.writeStartArray();
+ gen.writeStartArray();
for(final T t : value)
{
- jgen.writeObject(t);
+ gen.writePOJO(t);
}
- jgen.writeEndArray();
+ gen.writeEndArray();
}
}
}
diff --git a/pom.xml b/pom.xml
index 43092118..5fcaf09b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
software.xdev
chartjs-java-model-root
- 2.9.2-SNAPSHOT
+ 3.0.0-SNAPSHOT
pom