From abd0242e4720527ece2d3979dea61c1e29571e18 Mon Sep 17 00:00:00 2001 From: Aliaksandr Pinchuk Date: Thu, 6 Feb 2025 11:07:53 +0100 Subject: [PATCH 1/3] Fix breaking changes in Render contract --- .../openapitools/openapidiff/core/output/Render.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/openapitools/openapidiff/core/output/Render.java b/core/src/main/java/org/openapitools/openapidiff/core/output/Render.java index 8169f31cd..439e5018b 100644 --- a/core/src/main/java/org/openapitools/openapidiff/core/output/Render.java +++ b/core/src/main/java/org/openapitools/openapidiff/core/output/Render.java @@ -1,5 +1,6 @@ package org.openapitools.openapidiff.core.output; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import org.openapitools.openapidiff.core.exception.RendererException; @@ -7,7 +8,14 @@ public interface Render { - void render(ChangedOpenApi diff, OutputStreamWriter outputStreamWriter); + void render(ChangedOpenApi diff, OutputStreamWriter outputStreamWriter) throws RendererException; + + default String render(ChangedOpenApi diff) throws RendererException { + OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new ByteArrayOutputStream()); + render(diff, outputStreamWriter); + + return outputStreamWriter.toString(); + } default void safelyAppend(OutputStreamWriter outputStreamWriter, String csq) { try { From 3a84f2dbad8ed3c5cbd21538d3fecb373cd5cfd7 Mon Sep 17 00:00:00 2001 From: Aliaksandr Pinchuk Date: Thu, 6 Feb 2025 19:59:13 +0100 Subject: [PATCH 2/3] Fix code review issue, update readme, add test, group render tests within one folder. --- README.md | 51 ++++++------------- .../openapidiff/core/output/Render.java | 28 +++++++++- .../core/{ => output}/AsciidocRenderTest.java | 4 +- .../core/{ => output}/ConsoleRenderTest.java | 4 +- .../core/{ => output}/HtmlRenderTest.java | 4 +- .../core/{ => output}/JsonRenderTest.java | 4 +- .../core/{ => output}/MarkdownRenderTest.java | 4 +- .../openapidiff/core/output/RenderTest.java | 27 ++++++++++ 8 files changed, 79 insertions(+), 47 deletions(-) rename core/src/test/java/org/openapitools/openapidiff/core/{ => output}/AsciidocRenderTest.java (97%) rename core/src/test/java/org/openapitools/openapidiff/core/{ => output}/ConsoleRenderTest.java (96%) rename core/src/test/java/org/openapitools/openapidiff/core/{ => output}/HtmlRenderTest.java (87%) rename core/src/test/java/org/openapitools/openapidiff/core/{ => output}/JsonRenderTest.java (91%) rename core/src/test/java/org/openapitools/openapidiff/core/{ => output}/MarkdownRenderTest.java (94%) create mode 100644 core/src/test/java/org/openapitools/openapidiff/core/output/RenderTest.java diff --git a/README.md b/README.md index dd2cec01c..719f788c0 100644 --- a/README.md +++ b/README.md @@ -193,56 +193,37 @@ public class Main { #### HTML ```java -String html = new HtmlRender("Changelog", - "http://deepoove.com/swagger-diff/stylesheets/demo.css") - .render(diff); - -try { - FileWriter fw = new FileWriter("testNewApi.html"); - fw.write(html); - fw.close(); -} catch (IOException e) { - e.printStackTrace(); -} +String htmlRender = new HtmlRender("Changelog", "http://deepoove.com/swagger-diff/stylesheets/demo.css"); +FileOutputStream outputStream = new FileOutputStream("testDiff.html"); +OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream); +htmlRender.render(diff, outputStreamWriter); ``` #### Markdown ```java -String render = new MarkdownRender().render(diff); -try { - FileWriter fw = new FileWriter("testDiff.md"); - fw.write(render); - fw.close(); -} catch (IOException e) { - e.printStackTrace(); -} +JsonRender markdownRender = new MarkdownRender(); +FileOutputStream outputStream = new FileOutputStream("testDiff.md"); +OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream); +markdownRender.render(diff, outputStreamWriter); ``` #### Asciidoc ```java -String render = new AsciidocRender().render(diff); -try { - FileWriter fw = new FileWriter("testDiff.adoc"); - fw.write(render); - fw.close(); -} catch (IOException e) { - e.printStackTrace(); -} +JsonRender asciidocRender = new AsciidocRender(); +FileOutputStream outputStream = new FileOutputStream("testDiff.adoc"); +OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream); +asciidocRender.render(diff, outputStreamWriter); ``` #### JSON ```java -String render = new JsonRender().render(diff); -try { - FileWriter fw = new FileWriter("testDiff.json"); - fw.write(render); - fw.close(); -} catch (IOException e) { - e.printStackTrace(); -} +JsonRender jsonRender = new JsonRender(); +FileOutputStream outputStream = new FileOutputStream("testDiff.json"); +OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream); +jsonRender.render(diff, outputStreamWriter); ``` ### Extensions diff --git a/core/src/main/java/org/openapitools/openapidiff/core/output/Render.java b/core/src/main/java/org/openapitools/openapidiff/core/output/Render.java index 439e5018b..50bdd9c05 100644 --- a/core/src/main/java/org/openapitools/openapidiff/core/output/Render.java +++ b/core/src/main/java/org/openapitools/openapidiff/core/output/Render.java @@ -8,13 +8,37 @@ public interface Render { + /** + * render provided diff object + * + * @param diff diff object to render + * @param outputStreamWriter writer for rendered results + */ void render(ChangedOpenApi diff, OutputStreamWriter outputStreamWriter) throws RendererException; + /** + * render provided diff object + * + * @deprecated since 2.1.0, use {@link Render#render(ChangedOpenApi, OutputStreamWriter)} to avoid massive String output issues. + * details #543 + * + * @param diff diff object to render + * @return rendered output + */ + @Deprecated default String render(ChangedOpenApi diff) throws RendererException { - OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new ByteArrayOutputStream()); + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + OutputStreamWriter outputStreamWriter = new OutputStreamWriter(byteArrayOutputStream); render(diff, outputStreamWriter); + String result = byteArrayOutputStream.toString(); - return outputStreamWriter.toString(); + try { + outputStreamWriter.close(); + } catch (IOException e) { + throw new RendererException(e); + } + + return result; } default void safelyAppend(OutputStreamWriter outputStreamWriter, String csq) { diff --git a/core/src/test/java/org/openapitools/openapidiff/core/AsciidocRenderTest.java b/core/src/test/java/org/openapitools/openapidiff/core/output/AsciidocRenderTest.java similarity index 97% rename from core/src/test/java/org/openapitools/openapidiff/core/AsciidocRenderTest.java rename to core/src/test/java/org/openapitools/openapidiff/core/output/AsciidocRenderTest.java index dae2440eb..228623a2c 100644 --- a/core/src/test/java/org/openapitools/openapidiff/core/AsciidocRenderTest.java +++ b/core/src/test/java/org/openapitools/openapidiff/core/output/AsciidocRenderTest.java @@ -1,12 +1,12 @@ -package org.openapitools.openapidiff.core; +package org.openapitools.openapidiff.core.output; import static org.assertj.core.api.Assertions.assertThat; import java.io.ByteArrayOutputStream; import java.io.OutputStreamWriter; import org.junit.jupiter.api.Test; +import org.openapitools.openapidiff.core.OpenApiCompare; import org.openapitools.openapidiff.core.model.ChangedOpenApi; -import org.openapitools.openapidiff.core.output.AsciidocRender; public class AsciidocRenderTest { @Test diff --git a/core/src/test/java/org/openapitools/openapidiff/core/ConsoleRenderTest.java b/core/src/test/java/org/openapitools/openapidiff/core/output/ConsoleRenderTest.java similarity index 96% rename from core/src/test/java/org/openapitools/openapidiff/core/ConsoleRenderTest.java rename to core/src/test/java/org/openapitools/openapidiff/core/output/ConsoleRenderTest.java index 83d024669..675633fcd 100644 --- a/core/src/test/java/org/openapitools/openapidiff/core/ConsoleRenderTest.java +++ b/core/src/test/java/org/openapitools/openapidiff/core/output/ConsoleRenderTest.java @@ -1,12 +1,12 @@ -package org.openapitools.openapidiff.core; +package org.openapitools.openapidiff.core.output; import static org.assertj.core.api.Assertions.assertThat; import java.io.ByteArrayOutputStream; import java.io.OutputStreamWriter; import org.junit.jupiter.api.Test; +import org.openapitools.openapidiff.core.OpenApiCompare; import org.openapitools.openapidiff.core.model.ChangedOpenApi; -import org.openapitools.openapidiff.core.output.ConsoleRender; public class ConsoleRenderTest { @Test diff --git a/core/src/test/java/org/openapitools/openapidiff/core/HtmlRenderTest.java b/core/src/test/java/org/openapitools/openapidiff/core/output/HtmlRenderTest.java similarity index 87% rename from core/src/test/java/org/openapitools/openapidiff/core/HtmlRenderTest.java rename to core/src/test/java/org/openapitools/openapidiff/core/output/HtmlRenderTest.java index aa44725c4..e62268d10 100644 --- a/core/src/test/java/org/openapitools/openapidiff/core/HtmlRenderTest.java +++ b/core/src/test/java/org/openapitools/openapidiff/core/output/HtmlRenderTest.java @@ -1,12 +1,12 @@ -package org.openapitools.openapidiff.core; +package org.openapitools.openapidiff.core.output; import static org.assertj.core.api.Assertions.assertThat; import java.io.ByteArrayOutputStream; import java.io.OutputStreamWriter; import org.junit.jupiter.api.Test; +import org.openapitools.openapidiff.core.OpenApiCompare; import org.openapitools.openapidiff.core.model.ChangedOpenApi; -import org.openapitools.openapidiff.core.output.HtmlRender; public class HtmlRenderTest { @Test diff --git a/core/src/test/java/org/openapitools/openapidiff/core/JsonRenderTest.java b/core/src/test/java/org/openapitools/openapidiff/core/output/JsonRenderTest.java similarity index 91% rename from core/src/test/java/org/openapitools/openapidiff/core/JsonRenderTest.java rename to core/src/test/java/org/openapitools/openapidiff/core/output/JsonRenderTest.java index 280dce9d0..da5ce9ecc 100644 --- a/core/src/test/java/org/openapitools/openapidiff/core/JsonRenderTest.java +++ b/core/src/test/java/org/openapitools/openapidiff/core/output/JsonRenderTest.java @@ -1,12 +1,12 @@ -package org.openapitools.openapidiff.core; +package org.openapitools.openapidiff.core.output; import static org.assertj.core.api.Assertions.assertThat; import java.io.ByteArrayOutputStream; import java.io.OutputStreamWriter; import org.junit.jupiter.api.Test; +import org.openapitools.openapidiff.core.OpenApiCompare; import org.openapitools.openapidiff.core.model.ChangedOpenApi; -import org.openapitools.openapidiff.core.output.JsonRender; public class JsonRenderTest { @Test diff --git a/core/src/test/java/org/openapitools/openapidiff/core/MarkdownRenderTest.java b/core/src/test/java/org/openapitools/openapidiff/core/output/MarkdownRenderTest.java similarity index 94% rename from core/src/test/java/org/openapitools/openapidiff/core/MarkdownRenderTest.java rename to core/src/test/java/org/openapitools/openapidiff/core/output/MarkdownRenderTest.java index d30c6e0b1..fb1f24fef 100644 --- a/core/src/test/java/org/openapitools/openapidiff/core/MarkdownRenderTest.java +++ b/core/src/test/java/org/openapitools/openapidiff/core/output/MarkdownRenderTest.java @@ -1,12 +1,12 @@ -package org.openapitools.openapidiff.core; +package org.openapitools.openapidiff.core.output; import static org.assertj.core.api.Assertions.assertThat; import java.io.ByteArrayOutputStream; import java.io.OutputStreamWriter; import org.junit.jupiter.api.Test; +import org.openapitools.openapidiff.core.OpenApiCompare; import org.openapitools.openapidiff.core.model.ChangedOpenApi; -import org.openapitools.openapidiff.core.output.MarkdownRender; public class MarkdownRenderTest { @Test diff --git a/core/src/test/java/org/openapitools/openapidiff/core/output/RenderTest.java b/core/src/test/java/org/openapitools/openapidiff/core/output/RenderTest.java new file mode 100644 index 000000000..7ea8f8db2 --- /dev/null +++ b/core/src/test/java/org/openapitools/openapidiff/core/output/RenderTest.java @@ -0,0 +1,27 @@ +package org.openapitools.openapidiff.core.output; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; + +import java.io.IOException; + +import org.junit.jupiter.api.Test; +import org.openapitools.openapidiff.core.exception.RendererException; +import org.openapitools.openapidiff.core.model.ChangedOpenApi; + +class RenderTest { + + private final Render testRenderImpl = (diff, outputStreamWriter) -> { + try { + outputStreamWriter.write("Output"); + outputStreamWriter.close(); + } catch (IOException e) { + throw new RendererException(e); + } + }; + + @Test + void testDefaultRenderMethod() { + ChangedOpenApi diff = new ChangedOpenApi(null); + assertThat(testRenderImpl.render(diff)).isEqualTo("Output"); + } +} \ No newline at end of file From eedd59bb28e38f3409c45b2505b003ebe0eeb5bc Mon Sep 17 00:00:00 2001 From: Aliaksandr Pinchuk Date: Thu, 6 Feb 2025 20:01:54 +0100 Subject: [PATCH 3/3] Fix formatting --- .../openapidiff/core/output/Render.java | 6 ++--- .../openapidiff/core/output/RenderTest.java | 24 +++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/core/src/main/java/org/openapitools/openapidiff/core/output/Render.java b/core/src/main/java/org/openapitools/openapidiff/core/output/Render.java index 50bdd9c05..529a290b9 100644 --- a/core/src/main/java/org/openapitools/openapidiff/core/output/Render.java +++ b/core/src/main/java/org/openapitools/openapidiff/core/output/Render.java @@ -19,9 +19,9 @@ public interface Render { /** * render provided diff object * - * @deprecated since 2.1.0, use {@link Render#render(ChangedOpenApi, OutputStreamWriter)} to avoid massive String output issues. - * details #543 - * + * @deprecated since 2.1.0, use {@link Render#render(ChangedOpenApi, OutputStreamWriter)} to avoid + * massive String output issues. details #543 * @param diff diff object to render * @return rendered output */ diff --git a/core/src/test/java/org/openapitools/openapidiff/core/output/RenderTest.java b/core/src/test/java/org/openapitools/openapidiff/core/output/RenderTest.java index 7ea8f8db2..86f1e5842 100644 --- a/core/src/test/java/org/openapitools/openapidiff/core/output/RenderTest.java +++ b/core/src/test/java/org/openapitools/openapidiff/core/output/RenderTest.java @@ -3,25 +3,25 @@ import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import java.io.IOException; - import org.junit.jupiter.api.Test; import org.openapitools.openapidiff.core.exception.RendererException; import org.openapitools.openapidiff.core.model.ChangedOpenApi; class RenderTest { - private final Render testRenderImpl = (diff, outputStreamWriter) -> { + private final Render testRenderImpl = + (diff, outputStreamWriter) -> { try { - outputStreamWriter.write("Output"); - outputStreamWriter.close(); + outputStreamWriter.write("Output"); + outputStreamWriter.close(); } catch (IOException e) { - throw new RendererException(e); + throw new RendererException(e); } - }; + }; - @Test - void testDefaultRenderMethod() { - ChangedOpenApi diff = new ChangedOpenApi(null); - assertThat(testRenderImpl.render(diff)).isEqualTo("Output"); - } -} \ No newline at end of file + @Test + void testDefaultRenderMethod() { + ChangedOpenApi diff = new ChangedOpenApi(null); + assertThat(testRenderImpl.render(diff)).isEqualTo("Output"); + } +}