From 347853c7f050f6fe9d52ab67ebdb05a31aae9397 Mon Sep 17 00:00:00 2001 From: Valentin Delaye Date: Sat, 16 May 2026 17:16:46 +0200 Subject: [PATCH] Do not include null on serilized model Signed-off-by: Valentin Delaye --- src/main/java/land/oras/Config.java | 2 ++ src/main/java/land/oras/Describable.java | 3 +++ src/main/java/land/oras/Descriptor.java | 2 ++ src/main/java/land/oras/Layer.java | 2 ++ src/main/java/land/oras/ManifestDescriptor.java | 2 ++ src/main/java/land/oras/Platform.java | 2 ++ src/main/java/land/oras/Subject.java | 2 ++ src/main/java/land/oras/Tags.java | 2 ++ 8 files changed, 17 insertions(+) diff --git a/src/main/java/land/oras/Config.java b/src/main/java/land/oras/Config.java index cb37141c..38241ede 100644 --- a/src/main/java/land/oras/Config.java +++ b/src/main/java/land/oras/Config.java @@ -22,6 +22,7 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import java.nio.charset.StandardCharsets; @@ -45,6 +46,7 @@ Const.JSON_PROPERTY_ANNOTATIONS, Const.JSON_PROPERTY_DATA }) +@JsonInclude(JsonInclude.Include.NON_NULL) public final class Config extends Descriptor { /** diff --git a/src/main/java/land/oras/Describable.java b/src/main/java/land/oras/Describable.java index a90c5216..3de87cd5 100644 --- a/src/main/java/land/oras/Describable.java +++ b/src/main/java/land/oras/Describable.java @@ -20,10 +20,13 @@ package land.oras; +import com.fasterxml.jackson.annotation.JsonInclude; + /** * Interface for describable objects */ @OrasModel +@JsonInclude(JsonInclude.Include.NON_NULL) public interface Describable { /** diff --git a/src/main/java/land/oras/Descriptor.java b/src/main/java/land/oras/Descriptor.java index 9cb565ea..576fd5c3 100644 --- a/src/main/java/land/oras/Descriptor.java +++ b/src/main/java/land/oras/Descriptor.java @@ -21,6 +21,7 @@ package land.oras; import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import java.util.Collections; @@ -35,6 +36,7 @@ */ @OrasModel @JsonPropertyOrder({Const.JSON_PROPERTY_MEDIA_TYPE, Const.JSON_PROPERTY_DIGEST, Const.JSON_PROPERTY_SIZE}) +@JsonInclude(JsonInclude.Include.NON_NULL) public sealed class Descriptor permits Config, Manifest, Layer, Index { /** diff --git a/src/main/java/land/oras/Layer.java b/src/main/java/land/oras/Layer.java index a2bd4070..60b66821 100644 --- a/src/main/java/land/oras/Layer.java +++ b/src/main/java/land/oras/Layer.java @@ -22,6 +22,7 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import java.io.IOException; @@ -49,6 +50,7 @@ Const.JSON_PROPERTY_ANNOTATIONS, Const.JSON_PROPERTY_DATA }) +@JsonInclude(JsonInclude.Include.NON_NULL) public final class Layer extends Descriptor { /** diff --git a/src/main/java/land/oras/ManifestDescriptor.java b/src/main/java/land/oras/ManifestDescriptor.java index 045c1e30..88381093 100644 --- a/src/main/java/land/oras/ManifestDescriptor.java +++ b/src/main/java/land/oras/ManifestDescriptor.java @@ -22,6 +22,7 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import java.util.Map; @@ -45,6 +46,7 @@ Const.JSON_PROPERTY_PLATFORM, Const.JSON_PROPERTY_ANNOTATIONS, }) +@JsonInclude(JsonInclude.Include.NON_NULL) public final class ManifestDescriptor { private final @Nullable String artifactType; diff --git a/src/main/java/land/oras/Platform.java b/src/main/java/land/oras/Platform.java index 742acb88..ca9a79b4 100644 --- a/src/main/java/land/oras/Platform.java +++ b/src/main/java/land/oras/Platform.java @@ -20,6 +20,7 @@ package land.oras; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import java.util.List; @@ -46,6 +47,7 @@ Const.PLATFORM_OS_VERSION, Const.PLATFORM_OS_FEATURES }) +@JsonInclude(JsonInclude.Include.NON_NULL) public record Platform( @Nullable @JsonProperty(Const.PLATFORM_OS) String os, @Nullable @JsonProperty(Const.PLATFORM_ARCHITECTURE) String architecture, diff --git a/src/main/java/land/oras/Subject.java b/src/main/java/land/oras/Subject.java index 18f366f3..22bcbca9 100644 --- a/src/main/java/land/oras/Subject.java +++ b/src/main/java/land/oras/Subject.java @@ -21,6 +21,7 @@ package land.oras; import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import java.util.Objects; @@ -38,6 +39,7 @@ Const.JSON_PROPERTY_DIGEST, Const.JSON_PROPERTY_SIZE, }) +@JsonInclude(JsonInclude.Include.NON_NULL) public final class Subject { private final String mediaType; diff --git a/src/main/java/land/oras/Tags.java b/src/main/java/land/oras/Tags.java index 022bf136..1e1dcfef 100644 --- a/src/main/java/land/oras/Tags.java +++ b/src/main/java/land/oras/Tags.java @@ -20,6 +20,7 @@ package land.oras; +import com.fasterxml.jackson.annotation.JsonInclude; import java.util.List; import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @@ -32,6 +33,7 @@ */ @NullMarked @OrasModel +@JsonInclude(JsonInclude.Include.NON_NULL) public record Tags(String name, List tags, @Nullable String last) { /**