diff --git a/core/src/main/java/org/apache/iceberg/MetadataUpdateParser.java b/core/src/main/java/org/apache/iceberg/MetadataUpdateParser.java index 90149f268879..7d59734071ef 100644 --- a/core/src/main/java/org/apache/iceberg/MetadataUpdateParser.java +++ b/core/src/main/java/org/apache/iceberg/MetadataUpdateParser.java @@ -21,7 +21,6 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; import java.io.IOException; -import java.io.StringWriter; import java.io.UncheckedIOException; import java.util.Locale; import java.util.Map; @@ -134,19 +133,7 @@ public static String toJson(MetadataUpdate metadataUpdate) { } public static String toJson(MetadataUpdate metadataUpdate, boolean pretty) { - try { - StringWriter writer = new StringWriter(); - JsonGenerator generator = JsonUtil.factory().createGenerator(writer); - if (pretty) { - generator.useDefaultPrettyPrinter(); - } - toJson(metadataUpdate, generator); - generator.flush(); - return writer.toString(); - } catch (IOException e) { - throw new UncheckedIOException( - String.format("Failed to write metadata update json for: %s", metadataUpdate), e); - } + return JsonUtil.generate(gen -> toJson(metadataUpdate, gen), pretty); } public static void toJson(MetadataUpdate metadataUpdate, JsonGenerator generator) diff --git a/core/src/main/java/org/apache/iceberg/PartitionSpecParser.java b/core/src/main/java/org/apache/iceberg/PartitionSpecParser.java index 0d8e75f2991a..0b4e0bb34471 100644 --- a/core/src/main/java/org/apache/iceberg/PartitionSpecParser.java +++ b/core/src/main/java/org/apache/iceberg/PartitionSpecParser.java @@ -23,7 +23,6 @@ import com.github.benmanes.caffeine.cache.Cache; import com.github.benmanes.caffeine.cache.Caffeine; import java.io.IOException; -import java.io.StringWriter; import java.util.Iterator; import org.apache.iceberg.exceptions.RuntimeIOException; import org.apache.iceberg.relocated.com.google.common.base.Preconditions; @@ -66,19 +65,7 @@ public static String toJson(UnboundPartitionSpec spec) { } public static String toJson(UnboundPartitionSpec spec, boolean pretty) { - try { - StringWriter writer = new StringWriter(); - JsonGenerator generator = JsonUtil.factory().createGenerator(writer); - if (pretty) { - generator.useDefaultPrettyPrinter(); - } - toJson(spec, generator); - generator.flush(); - return writer.toString(); - - } catch (IOException e) { - throw new RuntimeIOException(e); - } + return JsonUtil.generate(gen -> toJson(spec, gen), pretty); } public static PartitionSpec fromJson(Schema schema, JsonNode json) { @@ -126,16 +113,7 @@ static void toJsonFields(UnboundPartitionSpec spec, JsonGenerator generator) thr } static String toJsonFields(PartitionSpec spec) { - try { - StringWriter writer = new StringWriter(); - JsonGenerator generator = JsonUtil.factory().createGenerator(writer); - toJsonFields(spec, generator); - generator.flush(); - return writer.toString(); - - } catch (IOException e) { - throw new RuntimeIOException(e); - } + return JsonUtil.generate(gen -> toJsonFields(spec, gen), false); } static PartitionSpec fromJsonFields(Schema schema, int specId, JsonNode json) { diff --git a/core/src/main/java/org/apache/iceberg/SchemaParser.java b/core/src/main/java/org/apache/iceberg/SchemaParser.java index 2be4a78d50b0..505d8bafc422 100644 --- a/core/src/main/java/org/apache/iceberg/SchemaParser.java +++ b/core/src/main/java/org/apache/iceberg/SchemaParser.java @@ -23,7 +23,6 @@ import com.github.benmanes.caffeine.cache.Cache; import com.github.benmanes.caffeine.cache.Caffeine; import java.io.IOException; -import java.io.StringWriter; import java.util.Iterator; import java.util.List; import java.util.Set; @@ -165,19 +164,9 @@ public static String toJson(Schema schema) { } public static String toJson(Schema schema, boolean pretty) { - try { - StringWriter writer = new StringWriter(); - JsonGenerator generator = JsonUtil.factory().createGenerator(writer); - if (pretty) { - generator.useDefaultPrettyPrinter(); - } - toJson(schema.asStruct(), schema.schemaId(), schema.identifierFieldIds(), generator); - generator.flush(); - return writer.toString(); - - } catch (IOException e) { - throw new RuntimeIOException(e); - } + return JsonUtil.generate( + gen -> toJson(schema.asStruct(), schema.schemaId(), schema.identifierFieldIds(), gen), + pretty); } private static Type typeFromJson(JsonNode json) { diff --git a/core/src/main/java/org/apache/iceberg/SingleValueParser.java b/core/src/main/java/org/apache/iceberg/SingleValueParser.java index cf3150146368..1d94929fbc51 100644 --- a/core/src/main/java/org/apache/iceberg/SingleValueParser.java +++ b/core/src/main/java/org/apache/iceberg/SingleValueParser.java @@ -21,7 +21,6 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; import java.io.IOException; -import java.io.StringWriter; import java.math.BigDecimal; import java.nio.ByteBuffer; import java.util.Iterator; @@ -240,18 +239,7 @@ public static String toJson(Type type, Object defaultValue) { } public static String toJson(Type type, Object defaultValue, boolean pretty) { - try { - StringWriter writer = new StringWriter(); - JsonGenerator generator = JsonUtil.factory().createGenerator(writer); - if (pretty) { - generator.useDefaultPrettyPrinter(); - } - toJson(type, defaultValue, generator); - generator.flush(); - return writer.toString(); - } catch (IOException e) { - throw new RuntimeException(e); - } + return JsonUtil.generate(gen -> toJson(type, defaultValue, gen), pretty); } @SuppressWarnings("checkstyle:MethodLength") diff --git a/core/src/main/java/org/apache/iceberg/SnapshotParser.java b/core/src/main/java/org/apache/iceberg/SnapshotParser.java index 6618207b73c4..ee7c90423081 100644 --- a/core/src/main/java/org/apache/iceberg/SnapshotParser.java +++ b/core/src/main/java/org/apache/iceberg/SnapshotParser.java @@ -21,7 +21,6 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; import java.io.IOException; -import java.io.StringWriter; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -100,18 +99,7 @@ public static String toJson(Snapshot snapshot) { } public static String toJson(Snapshot snapshot, boolean pretty) { - try { - StringWriter writer = new StringWriter(); - JsonGenerator generator = JsonUtil.factory().createGenerator(writer); - if (pretty) { - generator.useDefaultPrettyPrinter(); - } - toJson(snapshot, generator); - generator.flush(); - return writer.toString(); - } catch (IOException e) { - throw new RuntimeIOException(e, "Failed to write json for: %s", snapshot); - } + return JsonUtil.generate(gen -> toJson(snapshot, gen), pretty); } static Snapshot fromJson(FileIO io, JsonNode node) { diff --git a/core/src/main/java/org/apache/iceberg/SnapshotRefParser.java b/core/src/main/java/org/apache/iceberg/SnapshotRefParser.java index e82da01d1789..ac600a7dbf17 100644 --- a/core/src/main/java/org/apache/iceberg/SnapshotRefParser.java +++ b/core/src/main/java/org/apache/iceberg/SnapshotRefParser.java @@ -21,7 +21,6 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; import java.io.IOException; -import java.io.StringWriter; import java.io.UncheckedIOException; import java.util.Locale; import org.apache.iceberg.relocated.com.google.common.base.Preconditions; @@ -42,19 +41,7 @@ public static String toJson(SnapshotRef ref) { } public static String toJson(SnapshotRef ref, boolean pretty) { - try { - StringWriter writer = new StringWriter(); - JsonGenerator generator = JsonUtil.factory().createGenerator(writer); - if (pretty) { - generator.useDefaultPrettyPrinter(); - } - - toJson(ref, generator); - generator.flush(); - return writer.toString(); - } catch (IOException e) { - throw new UncheckedIOException(e); - } + return JsonUtil.generate(gen -> toJson(ref, gen), pretty); } public static void toJson(SnapshotRef ref, JsonGenerator generator) throws IOException { diff --git a/core/src/main/java/org/apache/iceberg/StatisticsFileParser.java b/core/src/main/java/org/apache/iceberg/StatisticsFileParser.java index 3f86a6767e2e..dfe239c7aa2d 100644 --- a/core/src/main/java/org/apache/iceberg/StatisticsFileParser.java +++ b/core/src/main/java/org/apache/iceberg/StatisticsFileParser.java @@ -21,8 +21,6 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; import java.io.IOException; -import java.io.StringWriter; -import java.io.UncheckedIOException; import java.util.List; import java.util.Map; import org.apache.iceberg.relocated.com.google.common.base.Preconditions; @@ -49,19 +47,7 @@ public static String toJson(StatisticsFile statisticsFile) { } public static String toJson(StatisticsFile statisticsFile, boolean pretty) { - try { - StringWriter writer = new StringWriter(); - JsonGenerator generator = JsonUtil.factory().createGenerator(writer); - if (pretty) { - generator.useDefaultPrettyPrinter(); - } - - toJson(statisticsFile, generator); - generator.flush(); - return writer.toString(); - } catch (IOException e) { - throw new UncheckedIOException(e); - } + return JsonUtil.generate(gen -> toJson(statisticsFile, gen), pretty); } public static void toJson(StatisticsFile statisticsFile, JsonGenerator generator) diff --git a/core/src/main/java/org/apache/iceberg/catalog/TableIdentifierParser.java b/core/src/main/java/org/apache/iceberg/catalog/TableIdentifierParser.java index 8c8dc5c1f52e..bb9864b154dd 100644 --- a/core/src/main/java/org/apache/iceberg/catalog/TableIdentifierParser.java +++ b/core/src/main/java/org/apache/iceberg/catalog/TableIdentifierParser.java @@ -21,7 +21,6 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; import java.io.IOException; -import java.io.StringWriter; import java.io.UncheckedIOException; import java.util.List; import org.apache.iceberg.relocated.com.google.common.base.Preconditions; @@ -54,18 +53,7 @@ public static String toJson(TableIdentifier identifier) { } public static String toJson(TableIdentifier identifier, boolean pretty) { - try { - StringWriter writer = new StringWriter(); - JsonGenerator generator = JsonUtil.factory().createGenerator(writer); - if (pretty) { - generator.useDefaultPrettyPrinter(); - } - toJson(identifier, generator); - generator.flush(); - return writer.toString(); - } catch (IOException e) { - throw new UncheckedIOException(String.format("Failed to write json for: %s", identifier), e); - } + return JsonUtil.generate(gen -> toJson(identifier, gen), pretty); } public static void toJson(TableIdentifier identifier, JsonGenerator generator) diff --git a/core/src/main/java/org/apache/iceberg/mapping/NameMappingParser.java b/core/src/main/java/org/apache/iceberg/mapping/NameMappingParser.java index f5bce333fcd2..5c6000902b3a 100644 --- a/core/src/main/java/org/apache/iceberg/mapping/NameMappingParser.java +++ b/core/src/main/java/org/apache/iceberg/mapping/NameMappingParser.java @@ -21,7 +21,6 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; import java.io.IOException; -import java.io.StringWriter; import java.util.List; import java.util.Set; import org.apache.iceberg.exceptions.RuntimeIOException; @@ -51,16 +50,7 @@ private NameMappingParser() {} private static final String FIELDS = "fields"; public static String toJson(NameMapping mapping) { - try { - StringWriter writer = new StringWriter(); - JsonGenerator generator = JsonUtil.factory().createGenerator(writer); - generator.useDefaultPrettyPrinter(); - toJson(mapping, generator); - generator.flush(); - return writer.toString(); - } catch (IOException e) { - throw new RuntimeIOException(e, "Failed to write json for: %s", mapping); - } + return JsonUtil.generate(gen -> toJson(mapping, gen), true); } static void toJson(NameMapping nameMapping, JsonGenerator generator) throws IOException { diff --git a/core/src/main/java/org/apache/iceberg/puffin/FileMetadataParser.java b/core/src/main/java/org/apache/iceberg/puffin/FileMetadataParser.java index eb7b51f99a30..9cb8e70be39d 100644 --- a/core/src/main/java/org/apache/iceberg/puffin/FileMetadataParser.java +++ b/core/src/main/java/org/apache/iceberg/puffin/FileMetadataParser.java @@ -21,7 +21,6 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; import java.io.IOException; -import java.io.StringWriter; import java.io.UncheckedIOException; import java.util.List; import java.util.Map; @@ -46,18 +45,7 @@ private FileMetadataParser() {} private static final String COMPRESSION_CODEC = "compression-codec"; public static String toJson(FileMetadata fileMetadata, boolean pretty) { - try { - StringWriter writer = new StringWriter(); - JsonGenerator generator = JsonUtil.factory().createGenerator(writer); - if (pretty) { - generator.useDefaultPrettyPrinter(); - } - toJson(fileMetadata, generator); - generator.flush(); - return writer.toString(); - } catch (IOException e) { - throw new UncheckedIOException("Failed to write json for: " + fileMetadata, e); - } + return JsonUtil.generate(gen -> toJson(fileMetadata, gen), pretty); } public static FileMetadata fromJson(String json) { diff --git a/core/src/main/java/org/apache/iceberg/rest/auth/OAuth2Util.java b/core/src/main/java/org/apache/iceberg/rest/auth/OAuth2Util.java index 8677fbdd53da..f6afdfa3c4f8 100644 --- a/core/src/main/java/org/apache/iceberg/rest/auth/OAuth2Util.java +++ b/core/src/main/java/org/apache/iceberg/rest/auth/OAuth2Util.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; import java.io.IOException; -import java.io.StringWriter; import java.util.List; import java.util.Map; import java.util.Set; @@ -252,15 +251,7 @@ private static Map clientCredentialsRequest( } public static String tokenResponseToJson(OAuthTokenResponse response) { - try { - StringWriter writer = new StringWriter(); - JsonGenerator generator = JsonUtil.factory().createGenerator(writer); - tokenResponseToJson(response, generator); - generator.flush(); - return writer.toString(); - } catch (IOException e) { - throw new RuntimeIOException(e); - } + return JsonUtil.generate(gen -> tokenResponseToJson(response, gen), false); } public static void tokenResponseToJson(OAuthTokenResponse response, JsonGenerator gen) diff --git a/core/src/main/java/org/apache/iceberg/rest/requests/UpdateRequirementParser.java b/core/src/main/java/org/apache/iceberg/rest/requests/UpdateRequirementParser.java index cc8aa3f7c4a6..23c81e2804e8 100644 --- a/core/src/main/java/org/apache/iceberg/rest/requests/UpdateRequirementParser.java +++ b/core/src/main/java/org/apache/iceberg/rest/requests/UpdateRequirementParser.java @@ -21,7 +21,6 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; import java.io.IOException; -import java.io.StringWriter; import java.io.UncheckedIOException; import java.util.Locale; import java.util.Map; @@ -87,19 +86,7 @@ public static String toJson(UpdateRequirement updateRequirement) { } public static String toJson(UpdateRequirement updateRequirement, boolean pretty) { - try { - StringWriter writer = new StringWriter(); - JsonGenerator generator = JsonUtil.factory().createGenerator(writer); - if (pretty) { - generator.useDefaultPrettyPrinter(); - } - toJson(updateRequirement, generator); - generator.flush(); - return writer.toString(); - } catch (IOException e) { - throw new UncheckedIOException( - String.format("Failed to write update requirement json for: %s", updateRequirement), e); - } + return JsonUtil.generate(gen -> toJson(updateRequirement, gen), pretty); } public static void toJson(UpdateRequirement updateRequirement, JsonGenerator generator)