Skip to content

Fix breaking changes in Render contract #742

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Feb 7, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 16 additions & 35 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
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");
}
}