Skip to content

Commit eb2950c

Browse files
committed
chore(*): upgrade to restdocs-api-spec 0.5.0
1 parent 9e83e72 commit eb2950c

File tree

13 files changed

+100
-120
lines changed

13 files changed

+100
-120
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
## Usage
77

8-
First head over to the [ePages-de/restdocs-openapi](https://github.com/ePages-de/restdocs-openapi) project
8+
First head over to the [ePages-de/restdocs-api-spec](https://github.com/ePages-de/restdocs-api-spec) project
99
and follow the instructions for setting up the Spring REST Docs extension. That extension will produce
1010
`resource.json` files for each of your documented resources. You'll also notice that project provides
1111
a gradle plugin that can be used to read all the `resource.json` files and turn them into an OpenAPI spec

pom.xml

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@
5252
<id>jitpack.io</id>
5353
<url>https://jitpack.io</url>
5454
</repository>
55+
<repository>
56+
<id>jcenter</id>
57+
<url>https://jcenter.bintray.com</url>
58+
</repository>
5559
</repositories>
5660

5761
<distributionManagement>
@@ -68,7 +72,7 @@
6872
<maven.compiler.target>1.8</maven.compiler.target>
6973
<maven.version>3.3.1</maven.version>
7074
<maven-plugin-tools.version>3.5.2</maven-plugin-tools.version>
71-
<restdocs-openapi.version>0.4.2</restdocs-openapi.version>
75+
<restdocs-api-spec.version>0.5.0</restdocs-api-spec.version>
7276
<junit.version>5.2.0</junit.version>
7377
<assertj.version>3.11.0</assertj.version>
7478
<mockito.version>2.21.0</mockito.version>
@@ -111,14 +115,14 @@
111115
<version>1</version>
112116
</dependency>
113117
<dependency>
114-
<groupId>com.github.epages-de.restdocs-openapi</groupId>
115-
<artifactId>restdocs-openapi-generator</artifactId>
116-
<version>${restdocs-openapi.version}</version>
118+
<groupId>com.epages</groupId>
119+
<artifactId>restdocs-api-spec-openapi-generator</artifactId>
120+
<version>${restdocs-api-spec.version}</version>
117121
</dependency>
118122
<dependency>
119-
<groupId>com.github.epages-de.restdocs-openapi</groupId>
120-
<artifactId>restdocs-openapi-model</artifactId>
121-
<version>${restdocs-openapi.version}</version>
123+
<groupId>com.epages</groupId>
124+
<artifactId>restdocs-api-spec-model</artifactId>
125+
<version>${restdocs-api-spec.version}</version>
122126
</dependency>
123127
<dependency>
124128
<groupId>org.junit.jupiter</groupId>

restdocs-spec-generator/pom.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@
1616

1717
<dependencies>
1818
<dependency>
19-
<groupId>com.github.epages-de.restdocs-openapi</groupId>
20-
<artifactId>restdocs-openapi-generator</artifactId>
19+
<groupId>com.epages</groupId>
20+
<artifactId>restdocs-api-spec-openapi-generator</artifactId>
2121
</dependency>
2222
<dependency>
23-
<groupId>com.github.epages-de.restdocs-openapi</groupId>
24-
<artifactId>restdocs-openapi-model</artifactId>
23+
<groupId>com.epages</groupId>
24+
<artifactId>restdocs-api-spec-model</artifactId>
2525
</dependency>
2626
<dependency>
2727
<groupId>javax.inject</groupId>

restdocs-spec-generator/src/main/java/com/berkleytechnologyservices/restdocs/spec/generator/SpecificationGenerator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.berkleytechnologyservices.restdocs.spec.ApiDetails;
44
import com.berkleytechnologyservices.restdocs.spec.Specification;
5-
import com.epages.restdocs.openapi.model.ResourceModel;
5+
import com.epages.restdocs.apispec.model.ResourceModel;
66

77
import java.util.List;
88

restdocs-spec-generator/src/main/java/com/berkleytechnologyservices/restdocs/spec/generator/openapi_v2/OpenApi20SpecificationGenerator.java

Lines changed: 7 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -4,31 +4,18 @@
44
import com.berkleytechnologyservices.restdocs.spec.AuthConfig;
55
import com.berkleytechnologyservices.restdocs.spec.Scope;
66
import com.berkleytechnologyservices.restdocs.spec.Specification;
7-
import com.berkleytechnologyservices.restdocs.spec.SpecificationFormat;
87
import com.berkleytechnologyservices.restdocs.spec.generator.SpecificationGenerator;
9-
import com.berkleytechnologyservices.restdocs.spec.generator.SpecificationGeneratorException;
10-
import com.epages.restdocs.openapi.generator.OpenApi20Generator;
11-
import com.epages.restdocs.openapi.model.Oauth2Configuration;
12-
import com.epages.restdocs.openapi.model.ResourceModel;
13-
import com.fasterxml.jackson.core.JsonProcessingException;
14-
import io.swagger.models.Swagger;
15-
import io.swagger.util.Json;
16-
import io.swagger.util.Yaml;
8+
import com.epages.restdocs.apispec.model.Oauth2Configuration;
9+
import com.epages.restdocs.apispec.model.ResourceModel;
10+
import com.epages.restdocs.apispec.openapi2.OpenApi20Generator;
1711

1812
import javax.inject.Named;
19-
import java.util.HashMap;
2013
import java.util.List;
21-
import java.util.Map;
2214
import java.util.stream.Collectors;
2315

2416
@Named
2517
public class OpenApi20SpecificationGenerator implements SpecificationGenerator {
2618

27-
private static final JsonProcessingFunction YAML_GENERATOR = swagger -> Yaml.pretty().writeValueAsString(swagger);
28-
private static final JsonProcessingFunction JSON_GENERATOR = swagger -> Json.pretty().writeValueAsString(swagger);
29-
30-
private static final Map<SpecificationFormat, JsonProcessingFunction> FORMAT_GENERATORS = createFormatGeneratorsMap();
31-
3219
private final OpenApi20Generator generator;
3320

3421
public OpenApi20SpecificationGenerator() {
@@ -45,34 +32,17 @@ public Specification getSpecification() {
4532
}
4633

4734
@Override
48-
public String generate(ApiDetails details, List<ResourceModel> models) throws SpecificationGeneratorException {
49-
Swagger spec = generator.generate(
35+
public String generate(ApiDetails details, List<ResourceModel> models) {
36+
return generator.generateAndSerialize(
5037
models,
5138
details.getBasePath(),
5239
details.getHost(),
5340
details.getSchemes(),
5441
details.getName(),
5542
details.getVersion(),
56-
createOauth2Configuration(details.getAuthConfig())
43+
createOauth2Configuration(details.getAuthConfig()),
44+
details.getFormat().name().toLowerCase()
5745
);
58-
59-
try {
60-
return FORMAT_GENERATORS.getOrDefault(details.getFormat(), YAML_GENERATOR).apply(spec);
61-
} catch (JsonProcessingException e) {
62-
throw new SpecificationGeneratorException("Unable to generate specification.", e);
63-
}
64-
}
65-
66-
@FunctionalInterface
67-
interface JsonProcessingFunction {
68-
String apply(Swagger t) throws JsonProcessingException;
69-
}
70-
71-
private static Map<SpecificationFormat, JsonProcessingFunction> createFormatGeneratorsMap() {
72-
Map<SpecificationFormat, JsonProcessingFunction> generators = new HashMap<>();
73-
generators.put(SpecificationFormat.YAML, YAML_GENERATOR);
74-
generators.put(SpecificationFormat.JSON, JSON_GENERATOR);
75-
return generators;
7646
}
7747

7848
private static Oauth2Configuration createOauth2Configuration(AuthConfig authConfig) {

restdocs-spec-maven-plugin/src/test/java/com/berkleytechnologyservices/restdocs/spec/generator/openapi_v2/OpenApi20SpecificationGeneratorTest.java renamed to restdocs-spec-generator/src/test/java/com/berkleytechnologyservices/restdocs/spec/generator/openapi_v2/OpenApi20SpecificationGeneratorTest.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,17 @@
22

33
import com.berkleytechnologyservices.restdocs.spec.ApiDetails;
44
import com.berkleytechnologyservices.restdocs.spec.Specification;
5-
import com.berkleytechnologyservices.restdocs.spec.generator.SpecificationGeneratorException;
6-
import com.epages.restdocs.openapi.model.HTTPMethod;
7-
import com.epages.restdocs.openapi.model.ResourceModel;
5+
import com.epages.restdocs.apispec.model.HTTPMethod;
6+
import com.epages.restdocs.apispec.model.ResourceModel;
87
import org.junit.jupiter.api.Test;
98
import org.junit.jupiter.api.extension.ExtendWith;
109
import org.mockito.junit.jupiter.MockitoExtension;
1110

12-
import static com.berkleytechnologyservices.restdocs.spec.test.ResourceModels.field;
13-
import static com.berkleytechnologyservices.restdocs.spec.test.ResourceModels.request;
14-
import static com.berkleytechnologyservices.restdocs.spec.test.ResourceModels.requiredParam;
15-
import static com.berkleytechnologyservices.restdocs.spec.test.ResourceModels.resource;
16-
import static com.berkleytechnologyservices.restdocs.spec.test.ResourceModels.response;
11+
import static com.berkleytechnologyservices.restdocs.spec.generator.test.ResourceModels.field;
12+
import static com.berkleytechnologyservices.restdocs.spec.generator.test.ResourceModels.request;
13+
import static com.berkleytechnologyservices.restdocs.spec.generator.test.ResourceModels.requiredParam;
14+
import static com.berkleytechnologyservices.restdocs.spec.generator.test.ResourceModels.resource;
15+
import static com.berkleytechnologyservices.restdocs.spec.generator.test.ResourceModels.response;
1716
import static org.assertj.core.api.Assertions.assertThat;
1817
import static org.assertj.core.api.Assertions.contentOf;
1918
import static org.assertj.core.util.Lists.emptyList;
@@ -30,7 +29,7 @@ public void testGetSpecification() {
3029
}
3130

3231
@Test
33-
public void testGenerateWithDefaults() throws SpecificationGeneratorException {
32+
public void testGenerateWithDefaults() {
3433

3534
ApiDetails apiDetails = new ApiDetails();
3635

@@ -59,7 +58,8 @@ public void testGenerateWithDefaults() throws SpecificationGeneratorException {
5958

6059
String rawOutput = generator.generate(apiDetails, list(model));
6160

62-
assertThat(rawOutput).isEqualToNormalizingNewlines(contentOfResource("/mock-specs/default-settings.yml"));
61+
assertThat(rawOutput)
62+
.isEqualToNormalizingNewlines(contentOfResource("/mock-specs/default-settings.yml"));
6363
}
6464

6565
private static String contentOfResource(String resourceName) {

restdocs-spec-maven-plugin/src/test/java/com/berkleytechnologyservices/restdocs/spec/test/ResourceModels.java renamed to restdocs-spec-generator/src/test/java/com/berkleytechnologyservices/restdocs/spec/generator/test/ResourceModels.java

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
package com.berkleytechnologyservices.restdocs.spec.test;
2-
3-
import com.epages.restdocs.openapi.model.Attributes;
4-
import com.epages.restdocs.openapi.model.FieldDescriptor;
5-
import com.epages.restdocs.openapi.model.HTTPMethod;
6-
import com.epages.restdocs.openapi.model.HeaderDescriptor;
7-
import com.epages.restdocs.openapi.model.ParameterDescriptor;
8-
import com.epages.restdocs.openapi.model.RequestModel;
9-
import com.epages.restdocs.openapi.model.ResourceModel;
10-
import com.epages.restdocs.openapi.model.ResponseModel;
11-
import com.epages.restdocs.openapi.model.SecurityRequirements;
1+
package com.berkleytechnologyservices.restdocs.spec.generator.test;
2+
3+
import com.epages.restdocs.apispec.model.Attributes;
4+
import com.epages.restdocs.apispec.model.FieldDescriptor;
5+
import com.epages.restdocs.apispec.model.HTTPMethod;
6+
import com.epages.restdocs.apispec.model.HeaderDescriptor;
7+
import com.epages.restdocs.apispec.model.ParameterDescriptor;
8+
import com.epages.restdocs.apispec.model.RequestModel;
9+
import com.epages.restdocs.apispec.model.ResourceModel;
10+
import com.epages.restdocs.apispec.model.ResponseModel;
11+
import com.epages.restdocs.apispec.model.SecurityRequirements;
1212

1313
import java.util.List;
1414

@@ -17,7 +17,11 @@
1717

1818
public final class ResourceModels {
1919

20-
public static ResourceModel resource(String operationId, String description, String tag, RequestModel request, ResponseModel response) {
20+
public static ResourceModel resource(String operationId,
21+
String description,
22+
String tag,
23+
RequestModel request,
24+
ResponseModel response) {
2125
return resource(
2226
operationId,
2327
description,
@@ -110,7 +114,10 @@ public static ResponseModel response(int status, String contentType, List<FieldD
110114
return response(status, contentType, emptyList(), fields);
111115
}
112116

113-
public static ResponseModel response(int status, String contentType, List<HeaderDescriptor> headers, List<FieldDescriptor> fields) {
117+
public static ResponseModel response(int status,
118+
String contentType,
119+
List<HeaderDescriptor> headers,
120+
List<FieldDescriptor> fields) {
114121
return response(status, contentType, headers, fields, null, null);
115122
}
116123

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
swagger: "2.0"
2+
info:
3+
version: 1.0.0
4+
title: API Documentation
5+
host: localhost
6+
schemes:
7+
- http
8+
paths:
9+
/book/{id}:
10+
get:
11+
tags:
12+
- book
13+
summary: Get a book by id
14+
description: Get a book by id
15+
operationId: book-get
16+
produces:
17+
- application/hal+json
18+
parameters:
19+
- name: id
20+
in: path
21+
description: The unique identifier for the book.
22+
required: true
23+
type: number
24+
responses:
25+
200:
26+
description: ""
27+
examples: {}
28+
schema:
29+
$ref: '#/definitions/book_id-1050330160'
30+
definitions:
31+
book_id-1050330160:
32+
type: object
33+
properties:
34+
pages:
35+
type: number
36+
description: Number of pages in the book
37+
author:
38+
type: string
39+
description: Author of the book
40+
title:
41+
type: string
42+
description: Title of the book

restdocs-spec-maven-plugin/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker renamed to restdocs-spec-generator/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker

File renamed without changes.

restdocs-spec-maven-plugin/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@
4848
<version>${project.version}</version>
4949
</dependency>
5050
<dependency>
51-
<groupId>com.github.epages-de.restdocs-openapi</groupId>
52-
<artifactId>restdocs-openapi-model</artifactId>
51+
<groupId>com.epages</groupId>
52+
<artifactId>restdocs-api-spec-model</artifactId>
5353
</dependency>
5454
</dependencies>
5555

0 commit comments

Comments
 (0)