Skip to content

Commit

Permalink
Fix breaking changes in Render contract (#742)
Browse files Browse the repository at this point in the history
* Fix breaking changes in Render contract
* Fix code review issue, update readme, add test, group render tests within one folder.
* Fix formatting
  • Loading branch information
DrSatyr authored Feb 7, 2025
1 parent 86a4453 commit 1987575
Show file tree
Hide file tree
Showing 8 changed files with 86 additions and 46 deletions.
51 changes: 16 additions & 35 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -200,56 +200,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
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,45 @@
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;
import org.openapitools.openapidiff.core.model.ChangedOpenApi;

public interface Render {

void render(ChangedOpenApi diff, OutputStreamWriter outputStreamWriter);
/**
* 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 <a
* href="https://github.com/OpenAPITools/openapi-diff/issues/543">#543</a>
* @param diff diff object to render
* @return rendered output
*/
@Deprecated
default String render(ChangedOpenApi diff) throws RendererException {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(byteArrayOutputStream);
render(diff, outputStreamWriter);
String result = byteArrayOutputStream.toString();

try {
outputStreamWriter.close();
} catch (IOException e) {
throw new RendererException(e);
}

return result;
}

default void safelyAppend(OutputStreamWriter outputStreamWriter, String csq) {
try {
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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");
}
}

0 comments on commit 1987575

Please sign in to comment.