forked from ePages-de/restdocs-api-spec
-
Notifications
You must be signed in to change notification settings - Fork 0
/
MockMvcRestDocumentationWrapper.kt
117 lines (105 loc) · 4.44 KB
/
MockMvcRestDocumentationWrapper.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
package com.epages.restdocs.apispec
import org.springframework.restdocs.mockmvc.MockMvcRestDocumentation
import org.springframework.restdocs.mockmvc.RestDocumentationResultHandler
import org.springframework.restdocs.operation.preprocess.OperationRequestPreprocessor
import org.springframework.restdocs.operation.preprocess.OperationResponsePreprocessor
import org.springframework.restdocs.snippet.Snippet
import java.util.function.Function
/**
* Convenience class to migrate to restdocs-openapi in a non-invasive way.
* It is a wrapper and replacement for MockMvcRestDocumentation that transparently adds a ResourceSnippet with the descriptors provided in the given snippets.
*/
object MockMvcRestDocumentationWrapper : RestDocumentationWrapper() {
@JvmOverloads @JvmStatic
fun document(
identifier: String,
resourceDetails: ResourceSnippetDetails,
requestPreprocessor: OperationRequestPreprocessor? = null,
responsePreprocessor: OperationResponsePreprocessor? = null,
snippetFilter: Function<List<Snippet>, List<Snippet>> = Function.identity(),
vararg snippets: Snippet
): RestDocumentationResultHandler {
val enhancedSnippets =
enhanceSnippetsWithResourceSnippet(
resourceDetails = resourceDetails,
snippetFilter = snippetFilter,
snippets = snippets
)
if (requestPreprocessor != null && responsePreprocessor != null) {
return MockMvcRestDocumentation.document(
identifier,
requestPreprocessor,
responsePreprocessor,
*enhancedSnippets
)
} else if (requestPreprocessor != null) {
return MockMvcRestDocumentation.document(identifier, requestPreprocessor, *enhancedSnippets)
} else if (responsePreprocessor != null) {
return MockMvcRestDocumentation.document(identifier, responsePreprocessor, *enhancedSnippets)
}
return MockMvcRestDocumentation.document(identifier, *enhancedSnippets)
}
@JvmOverloads @JvmStatic
fun document(
identifier: String,
description: String? = null,
summary: String? = null,
privateResource: Boolean = false,
deprecated: Boolean = false,
requestPreprocessor: OperationRequestPreprocessor? = null,
responsePreprocessor: OperationResponsePreprocessor? = null,
snippetFilter: Function<List<Snippet>, List<Snippet>> = Function.identity(),
vararg snippets: Snippet
): RestDocumentationResultHandler {
return document(
identifier = identifier,
resourceDetails = ResourceSnippetParametersBuilder()
.description(description)
.summary(summary)
.privateResource(privateResource)
.deprecated(deprecated),
requestPreprocessor = requestPreprocessor,
responsePreprocessor = responsePreprocessor,
snippetFilter = snippetFilter,
snippets = snippets
)
}
@JvmStatic
fun document(
identifier: String,
requestPreprocessor: OperationRequestPreprocessor,
vararg snippets: Snippet
): RestDocumentationResultHandler {
return document(identifier, null, null, false, false, requestPreprocessor, snippets = snippets)
}
@JvmStatic
fun document(
identifier: String,
description: String,
privateResource: Boolean,
vararg snippets: Snippet
): RestDocumentationResultHandler {
return document(identifier, description, null, privateResource, snippets = snippets)
}
@JvmStatic
fun document(
identifier: String,
responsePreprocessor: OperationResponsePreprocessor,
vararg snippets: Snippet
): RestDocumentationResultHandler {
return document(identifier, null, null, false, false, responsePreprocessor = responsePreprocessor, snippets = snippets)
}
@JvmStatic
fun document(
identifier: String,
requestPreprocessor: OperationRequestPreprocessor,
responsePreprocessor: OperationResponsePreprocessor,
vararg snippets: Snippet
): RestDocumentationResultHandler {
return document(identifier, null, null, false, false, requestPreprocessor, responsePreprocessor, snippets = snippets)
}
@JvmStatic
fun resourceDetails(): ResourceSnippetDetails {
return ResourceSnippetParametersBuilder()
}
}