Skip to content

Commit 1987575

Browse files
authored
Fix breaking changes in Render contract (#742)
* Fix breaking changes in Render contract * Fix code review issue, update readme, add test, group render tests within one folder. * Fix formatting
1 parent 86a4453 commit 1987575

File tree

8 files changed

+86
-46
lines changed

8 files changed

+86
-46
lines changed

README.md

Lines changed: 16 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -200,56 +200,37 @@ public class Main {
200200
#### HTML
201201
202202
```java
203-
String html = new HtmlRender("Changelog",
204-
"http://deepoove.com/swagger-diff/stylesheets/demo.css")
205-
.render(diff);
206-
207-
try {
208-
FileWriter fw = new FileWriter("testNewApi.html");
209-
fw.write(html);
210-
fw.close();
211-
} catch (IOException e) {
212-
e.printStackTrace();
213-
}
203+
String htmlRender = new HtmlRender("Changelog", "http://deepoove.com/swagger-diff/stylesheets/demo.css");
204+
FileOutputStream outputStream = new FileOutputStream("testDiff.html");
205+
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream);
206+
htmlRender.render(diff, outputStreamWriter);
214207
```
215208
216209
#### Markdown
217210
218211
```java
219-
String render = new MarkdownRender().render(diff);
220-
try {
221-
FileWriter fw = new FileWriter("testDiff.md");
222-
fw.write(render);
223-
fw.close();
224-
} catch (IOException e) {
225-
e.printStackTrace();
226-
}
212+
JsonRender markdownRender = new MarkdownRender();
213+
FileOutputStream outputStream = new FileOutputStream("testDiff.md");
214+
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream);
215+
markdownRender.render(diff, outputStreamWriter);
227216
```
228217
229218
#### Asciidoc
230219
231220
```java
232-
String render = new AsciidocRender().render(diff);
233-
try {
234-
FileWriter fw = new FileWriter("testDiff.adoc");
235-
fw.write(render);
236-
fw.close();
237-
} catch (IOException e) {
238-
e.printStackTrace();
239-
}
221+
JsonRender asciidocRender = new AsciidocRender();
222+
FileOutputStream outputStream = new FileOutputStream("testDiff.adoc");
223+
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream);
224+
asciidocRender.render(diff, outputStreamWriter);
240225
```
241226
242227
#### JSON
243228
244229
```java
245-
String render = new JsonRender().render(diff);
246-
try {
247-
FileWriter fw = new FileWriter("testDiff.json");
248-
fw.write(render);
249-
fw.close();
250-
} catch (IOException e) {
251-
e.printStackTrace();
252-
}
230+
JsonRender jsonRender = new JsonRender();
231+
FileOutputStream outputStream = new FileOutputStream("testDiff.json");
232+
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream);
233+
jsonRender.render(diff, outputStreamWriter);
253234
```
254235
255236
### Extensions

core/src/main/java/org/openapitools/openapidiff/core/output/Render.java

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,45 @@
11
package org.openapitools.openapidiff.core.output;
22

3+
import java.io.ByteArrayOutputStream;
34
import java.io.IOException;
45
import java.io.OutputStreamWriter;
56
import org.openapitools.openapidiff.core.exception.RendererException;
67
import org.openapitools.openapidiff.core.model.ChangedOpenApi;
78

89
public interface Render {
910

10-
void render(ChangedOpenApi diff, OutputStreamWriter outputStreamWriter);
11+
/**
12+
* render provided diff object
13+
*
14+
* @param diff diff object to render
15+
* @param outputStreamWriter writer for rendered results
16+
*/
17+
void render(ChangedOpenApi diff, OutputStreamWriter outputStreamWriter) throws RendererException;
18+
19+
/**
20+
* render provided diff object
21+
*
22+
* @deprecated since 2.1.0, use {@link Render#render(ChangedOpenApi, OutputStreamWriter)} to avoid
23+
* massive String output issues. details <a
24+
* href="https://github.com/OpenAPITools/openapi-diff/issues/543">#543</a>
25+
* @param diff diff object to render
26+
* @return rendered output
27+
*/
28+
@Deprecated
29+
default String render(ChangedOpenApi diff) throws RendererException {
30+
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
31+
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(byteArrayOutputStream);
32+
render(diff, outputStreamWriter);
33+
String result = byteArrayOutputStream.toString();
34+
35+
try {
36+
outputStreamWriter.close();
37+
} catch (IOException e) {
38+
throw new RendererException(e);
39+
}
40+
41+
return result;
42+
}
1143

1244
default void safelyAppend(OutputStreamWriter outputStreamWriter, String csq) {
1345
try {

core/src/test/java/org/openapitools/openapidiff/core/AsciidocRenderTest.java renamed to core/src/test/java/org/openapitools/openapidiff/core/output/AsciidocRenderTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
package org.openapitools.openapidiff.core;
1+
package org.openapitools.openapidiff.core.output;
22

33
import static org.assertj.core.api.Assertions.assertThat;
44

55
import java.io.ByteArrayOutputStream;
66
import java.io.OutputStreamWriter;
77
import org.junit.jupiter.api.Test;
8+
import org.openapitools.openapidiff.core.OpenApiCompare;
89
import org.openapitools.openapidiff.core.model.ChangedOpenApi;
9-
import org.openapitools.openapidiff.core.output.AsciidocRender;
1010

1111
public class AsciidocRenderTest {
1212
@Test

core/src/test/java/org/openapitools/openapidiff/core/ConsoleRenderTest.java renamed to core/src/test/java/org/openapitools/openapidiff/core/output/ConsoleRenderTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
package org.openapitools.openapidiff.core;
1+
package org.openapitools.openapidiff.core.output;
22

33
import static org.assertj.core.api.Assertions.assertThat;
44

55
import java.io.ByteArrayOutputStream;
66
import java.io.OutputStreamWriter;
77
import org.junit.jupiter.api.Test;
8+
import org.openapitools.openapidiff.core.OpenApiCompare;
89
import org.openapitools.openapidiff.core.model.ChangedOpenApi;
9-
import org.openapitools.openapidiff.core.output.ConsoleRender;
1010

1111
public class ConsoleRenderTest {
1212
@Test

core/src/test/java/org/openapitools/openapidiff/core/HtmlRenderTest.java renamed to core/src/test/java/org/openapitools/openapidiff/core/output/HtmlRenderTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
package org.openapitools.openapidiff.core;
1+
package org.openapitools.openapidiff.core.output;
22

33
import static org.assertj.core.api.Assertions.assertThat;
44

55
import java.io.ByteArrayOutputStream;
66
import java.io.OutputStreamWriter;
77
import org.junit.jupiter.api.Test;
8+
import org.openapitools.openapidiff.core.OpenApiCompare;
89
import org.openapitools.openapidiff.core.model.ChangedOpenApi;
9-
import org.openapitools.openapidiff.core.output.HtmlRender;
1010

1111
public class HtmlRenderTest {
1212
@Test

core/src/test/java/org/openapitools/openapidiff/core/JsonRenderTest.java renamed to core/src/test/java/org/openapitools/openapidiff/core/output/JsonRenderTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
package org.openapitools.openapidiff.core;
1+
package org.openapitools.openapidiff.core.output;
22

33
import static org.assertj.core.api.Assertions.assertThat;
44

55
import java.io.ByteArrayOutputStream;
66
import java.io.OutputStreamWriter;
77
import org.junit.jupiter.api.Test;
8+
import org.openapitools.openapidiff.core.OpenApiCompare;
89
import org.openapitools.openapidiff.core.model.ChangedOpenApi;
9-
import org.openapitools.openapidiff.core.output.JsonRender;
1010

1111
public class JsonRenderTest {
1212
@Test

core/src/test/java/org/openapitools/openapidiff/core/MarkdownRenderTest.java renamed to core/src/test/java/org/openapitools/openapidiff/core/output/MarkdownRenderTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
package org.openapitools.openapidiff.core;
1+
package org.openapitools.openapidiff.core.output;
22

33
import static org.assertj.core.api.Assertions.assertThat;
44

55
import java.io.ByteArrayOutputStream;
66
import java.io.OutputStreamWriter;
77
import org.junit.jupiter.api.Test;
8+
import org.openapitools.openapidiff.core.OpenApiCompare;
89
import org.openapitools.openapidiff.core.model.ChangedOpenApi;
9-
import org.openapitools.openapidiff.core.output.MarkdownRender;
1010

1111
public class MarkdownRenderTest {
1212
@Test
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package org.openapitools.openapidiff.core.output;
2+
3+
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
4+
5+
import java.io.IOException;
6+
import org.junit.jupiter.api.Test;
7+
import org.openapitools.openapidiff.core.exception.RendererException;
8+
import org.openapitools.openapidiff.core.model.ChangedOpenApi;
9+
10+
class RenderTest {
11+
12+
private final Render testRenderImpl =
13+
(diff, outputStreamWriter) -> {
14+
try {
15+
outputStreamWriter.write("Output");
16+
outputStreamWriter.close();
17+
} catch (IOException e) {
18+
throw new RendererException(e);
19+
}
20+
};
21+
22+
@Test
23+
void testDefaultRenderMethod() {
24+
ChangedOpenApi diff = new ChangedOpenApi(null);
25+
assertThat(testRenderImpl.render(diff)).isEqualTo("Output");
26+
}
27+
}

0 commit comments

Comments
 (0)