From 3bc623f1958be385c2daac18bc44d9d5e1e63a7b Mon Sep 17 00:00:00 2001 From: Tako Schotanus Date: Wed, 26 Aug 2026 11:39:45 +0200 Subject: [PATCH] chore: fixed anbd simplified json indenting --- .../dev/jbang/jdkdb/util/MetadataUtils.java | 83 ++----------------- .../jbang/jdkdb/util/MetadataUtilsTest.java | 2 +- 2 files changed, 9 insertions(+), 76 deletions(-) diff --git a/src/main/java/dev/jbang/jdkdb/util/MetadataUtils.java b/src/main/java/dev/jbang/jdkdb/util/MetadataUtils.java index 438f38d..a3da2b6 100644 --- a/src/main/java/dev/jbang/jdkdb/util/MetadataUtils.java +++ b/src/main/java/dev/jbang/jdkdb/util/MetadataUtils.java @@ -2,7 +2,9 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.core.util.MinimalPrettyPrinter; +import com.fasterxml.jackson.core.util.DefaultIndenter; +import com.fasterxml.jackson.core.util.DefaultPrettyPrinter; +import com.fasterxml.jackson.core.util.Separators; import com.fasterxml.jackson.databind.MapperFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; @@ -53,86 +55,17 @@ public class MetadataUtils { private static final Pattern DURATION_PATTERN = Pattern.compile("^(\\d+)([dwmy])$"); private static final Pattern VERSION_PATTERN = Pattern.compile("^(?:1\\.)?(\\d+)"); - // Custom pretty printer with proper formatting - private static MinimalPrettyPrinter printer = new MinimalPrettyPrinter() { - private int depth = 0; - - private void indent(JsonGenerator g) throws IOException { - g.writeRaw("\n"); - for (int i = 0; i < depth; i++) { - g.writeRaw(" "); - } - } - - @Override - public void writeStartArray(JsonGenerator g) throws IOException { - g.writeRaw('['); - depth++; - } - - @Override - public void beforeArrayValues(JsonGenerator g) throws IOException { - indent(g); - } - - @Override - public void writeArrayValueSeparator(JsonGenerator g) throws IOException { - g.writeRaw(','); - indent(g); - } - - @Override - public void writeEndArray(JsonGenerator g, int nrOfValues) throws IOException { - depth--; - if (nrOfValues > 0) { - indent(g); - } - g.writeRaw(']'); - } - - @Override - public void writeStartObject(JsonGenerator g) throws IOException { - g.writeRaw('{'); - depth++; - } - - @Override - public void beforeObjectEntries(JsonGenerator g) throws IOException { - indent(g); - } - - @Override - public void writeObjectFieldValueSeparator(JsonGenerator g) throws IOException { - g.writeRaw(": "); - } - - @Override - public void writeObjectEntrySeparator(JsonGenerator g) throws IOException { - g.writeRaw(','); - indent(g); - } - - @Override - public void writeEndObject(JsonGenerator g, int nrOfEntries) throws IOException { - depth--; - if (nrOfEntries > 0) { - indent(g); - } - g.writeRaw('}'); - } - }; - - static { - printer.setRootValueSeparator("\n"); - } - // Use a mix-in to override the JsonPropertyOrder annotation private static ObjectMapper writeMapper = JsonMapper.builder() .configure(JsonGenerator.Feature.AUTO_CLOSE_TARGET, false) .enable(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY) .enable(SerializationFeature.INDENT_OUTPUT) .enable(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS) - .defaultPrettyPrinter(printer) + .defaultPrettyPrinter(new DefaultPrettyPrinter() + .withObjectIndenter(new DefaultIndenter(" ", "\n")) + .withArrayIndenter(new DefaultIndenter(" ", "\n")) + .withSeparators( + Separators.createDefaultInstance().withObjectFieldValueSpacing(Separators.Spacing.AFTER))) .build(); // Add a mix-in to override the @JsonPropertyOrder annotation diff --git a/src/test/java/dev/jbang/jdkdb/util/MetadataUtilsTest.java b/src/test/java/dev/jbang/jdkdb/util/MetadataUtilsTest.java index 9258d25..dfdda60 100644 --- a/src/test/java/dev/jbang/jdkdb/util/MetadataUtilsTest.java +++ b/src/test/java/dev/jbang/jdkdb/util/MetadataUtilsTest.java @@ -53,7 +53,7 @@ void testValidSaveMetadata() throws Exception { "checksum": "741a6df853edecfadd81b4a389271eb937c2626a", "checksum_type": "sha1", "distro": "microsoft", - "features": [], + "features": [ ], "file_type": "tar.gz", "filename": "microsoft-jdk-25.0.2-macos-x64.tar.gz", "image_type": "jdk",