diff --git a/cli/src/main/java/org/openapitools/openapidiff/cli/Main.java b/cli/src/main/java/org/openapitools/openapidiff/cli/Main.java index 8fb2ff000..21503e08a 100644 --- a/cli/src/main/java/org/openapitools/openapidiff/cli/Main.java +++ b/cli/src/main/java/org/openapitools/openapidiff/cli/Main.java @@ -196,9 +196,8 @@ public static void main(String... args) { } if (line.hasOption("json")) { JsonRender jsonRender = new JsonRender(); - String output = jsonRender.render(result); String outputFile = line.getOptionValue("json"); - writeOutput(output, outputFile); + jsonRender.renderToFile(result, outputFile); } if (line.hasOption("state")) { System.out.println(result.isChanged().getValue()); diff --git a/core/src/main/java/org/openapitools/openapidiff/core/model/ChangedOpenApi.java b/core/src/main/java/org/openapitools/openapidiff/core/model/ChangedOpenApi.java index a1c796ac5..e1bdd20bd 100644 --- a/core/src/main/java/org/openapitools/openapidiff/core/model/ChangedOpenApi.java +++ b/core/src/main/java/org/openapitools/openapidiff/core/model/ChangedOpenApi.java @@ -1,5 +1,6 @@ package org.openapitools.openapidiff.core.model; +import com.fasterxml.jackson.annotation.JsonIgnore; import io.swagger.v3.oas.models.OpenAPI; import java.util.List; import java.util.Objects; @@ -8,8 +9,8 @@ import org.openapitools.openapidiff.core.utils.EndpointUtils; public class ChangedOpenApi implements ComposedChanged { - private OpenAPI oldSpecOpenApi; - private OpenAPI newSpecOpenApi; + @JsonIgnore private OpenAPI oldSpecOpenApi; + @JsonIgnore private OpenAPI newSpecOpenApi; private List newEndpoints; private List missingEndpoints; private List changedOperations; diff --git a/core/src/main/java/org/openapitools/openapidiff/core/output/JsonRender.java b/core/src/main/java/org/openapitools/openapidiff/core/output/JsonRender.java index e1cf5ee49..465268f94 100644 --- a/core/src/main/java/org/openapitools/openapidiff/core/output/JsonRender.java +++ b/core/src/main/java/org/openapitools/openapidiff/core/output/JsonRender.java @@ -3,6 +3,8 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import java.io.IOException; +import java.nio.file.Paths; import org.openapitools.openapidiff.core.model.ChangedOpenApi; public class JsonRender implements Render { @@ -17,4 +19,14 @@ public String render(ChangedOpenApi diff) { throw new RuntimeException("Could not serialize diff as JSON", e); } } + + public void renderToFile(ChangedOpenApi diff, String file) { + try { + objectMapper.writeValue(Paths.get(file).toFile(), diff); + } catch (JsonProcessingException e) { + throw new RuntimeException("Could not serialize diff as JSON", e); + } catch (IOException e) { + throw new RuntimeException("Could not write to JSON file", e); + } + } }