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