Skip to content

Commit 65eb782

Browse files
kliebermduesterhoeft
authored andcommitted
Move the model into a separate library (#45)
1 parent 500061e commit 65eb782

File tree

14 files changed

+85
-46
lines changed

14 files changed

+85
-46
lines changed

restdocs-openapi-generator/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ repositories {
1313
dependencies {
1414
compile(kotlin("stdlib-jdk8"))
1515

16+
compile(project(":restdocs-openapi-model"))
1617
compile("io.swagger:swagger-core:1.5.20")
1718
compile("com.fasterxml.jackson.core:jackson-databind:2.9.5")
1819
compile("com.fasterxml.jackson.module:jackson-module-kotlin:2.9.5")

restdocs-openapi-generator/src/main/kotlin/com/epages/restdocs/openapi/generator/OpenApi20Generator.kt

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
11
package com.epages.restdocs.openapi.generator
22

33
import com.epages.restdocs.openapi.generator.schema.JsonSchemaFromFieldDescriptorsGenerator
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.Oauth2Configuration
8+
import com.epages.restdocs.openapi.model.ParameterDescriptor
9+
import com.epages.restdocs.openapi.model.ResourceModel
10+
import com.epages.restdocs.openapi.model.ResponseModel
11+
import com.epages.restdocs.openapi.model.SecurityRequirements
12+
import com.epages.restdocs.openapi.model.SecurityType
413
import com.fasterxml.jackson.module.kotlin.readValue
514
import io.swagger.models.Info
615
import io.swagger.models.Model
@@ -196,10 +205,10 @@ object OpenApi20Generator {
196205
.nullIfEmpty()
197206
}.apply {
198207
if (firstModelForPathAndMethod.request.securityRequirements != null &&
199-
firstModelForPathAndMethod.request.securityRequirements.type == SecurityType.OAUTH2) {
208+
firstModelForPathAndMethod.request.securityRequirements!!.type == SecurityType.OAUTH2) {
200209
oauth2SecuritySchemeDefinition?.flows?.map {
201210
addSecurity(oauth2SecuritySchemeDefinition.securitySchemeName(it),
202-
securityRequirements2ScopesList(firstModelForPathAndMethod.request.securityRequirements))
211+
securityRequirements2ScopesList(firstModelForPathAndMethod.request.securityRequirements!!))
203212
}
204213
}
205214
}
@@ -221,7 +230,7 @@ object OpenApi20Generator {
221230
}
222231

223232
private fun securityRequirements2ScopesList(securityRequirements: SecurityRequirements): List<String> {
224-
return if (securityRequirements.type == SecurityType.OAUTH2 && securityRequirements.requiredScopes != null) securityRequirements.requiredScopes else listOf()
233+
return if (securityRequirements.type == SecurityType.OAUTH2 && securityRequirements.requiredScopes != null) securityRequirements.requiredScopes!! else listOf()
225234
}
226235

227236
private fun addSecurityDefinitions(openApi: Swagger, oauth2SecuritySchemeDefinition: Oauth2Configuration?) {

restdocs-openapi-generator/src/main/kotlin/com/epages/restdocs/openapi/generator/schema/ConstraintResolver.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ internal object ConstraintResolver {
1919

2020
private const val LENGTH_CONSTRAINT = "org.hibernate.validator.constraints.Length"
2121

22-
internal fun minLengthString(fieldDescriptor: com.epages.restdocs.openapi.generator.FieldDescriptor): Int? {
22+
internal fun minLengthString(fieldDescriptor: com.epages.restdocs.openapi.model.FieldDescriptor): Int? {
2323
return findConstraints(fieldDescriptor)
2424
.firstOrNull { constraint ->
2525
(NOT_EMPTY_CONSTRAINTS.contains(constraint.name) ||
@@ -29,16 +29,16 @@ internal object ConstraintResolver {
2929
?.let { constraint -> if (LENGTH_CONSTRAINT == constraint.name) constraint.configuration["min"] as Int else 1 }
3030
}
3131

32-
internal fun maxLengthString(fieldDescriptor: com.epages.restdocs.openapi.generator.FieldDescriptor): Int? {
32+
internal fun maxLengthString(fieldDescriptor: com.epages.restdocs.openapi.model.FieldDescriptor): Int? {
3333
return findConstraints(fieldDescriptor)
3434
.firstOrNull { LENGTH_CONSTRAINT == it.name }
3535
?.let { it.configuration["max"] as Int }
3636
}
3737

38-
internal fun isRequired(fieldDescriptor: com.epages.restdocs.openapi.generator.FieldDescriptor): Boolean =
38+
internal fun isRequired(fieldDescriptor: com.epages.restdocs.openapi.model.FieldDescriptor): Boolean =
3939
findConstraints(fieldDescriptor)
4040
.any { constraint -> REQUIRED_CONSTRAINTS.contains(constraint.name) }
4141

42-
private fun findConstraints(fieldDescriptor: com.epages.restdocs.openapi.generator.FieldDescriptor): List<com.epages.restdocs.openapi.generator.Constraint> =
42+
private fun findConstraints(fieldDescriptor: com.epages.restdocs.openapi.model.FieldDescriptor): List<com.epages.restdocs.openapi.model.Constraint> =
4343
fieldDescriptor.attributes.validationConstraints
4444
}

restdocs-openapi-generator/src/main/kotlin/com/epages/restdocs/openapi/generator/schema/JsonSchemaFromFieldDescriptorsGenerator.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import java.util.function.Predicate
2222

2323
internal class JsonSchemaFromFieldDescriptorsGenerator {
2424

25-
internal fun generateSchema(fieldDescriptors: List<com.epages.restdocs.openapi.generator.FieldDescriptor>, title: String? = null): String {
25+
internal fun generateSchema(fieldDescriptors: List<com.epages.restdocs.openapi.model.FieldDescriptor>, title: String? = null): String {
2626
val jsonFieldPaths = reduceFieldDescriptors(fieldDescriptors)
2727
.map { com.epages.restdocs.openapi.generator.schema.JsonFieldPath.compile(it) }
2828

@@ -36,7 +36,7 @@ internal class JsonSchemaFromFieldDescriptorsGenerator {
3636
*
3737
* The implementation will
3838
*/
39-
private fun reduceFieldDescriptors(fieldDescriptors: List<com.epages.restdocs.openapi.generator.FieldDescriptor>): List<FieldDescriptorWithSchemaType> {
39+
private fun reduceFieldDescriptors(fieldDescriptors: List<com.epages.restdocs.openapi.model.FieldDescriptor>): List<FieldDescriptorWithSchemaType> {
4040
return fieldDescriptors
4141
.map { FieldDescriptorWithSchemaType.fromFieldDescriptor(it) }
4242
.foldRight(listOf()) { fieldDescriptor, groups -> groups
@@ -182,17 +182,17 @@ internal class JsonSchemaFromFieldDescriptorsGenerator {
182182
type: String,
183183
optional: Boolean,
184184
ignored: Boolean,
185-
attributes: com.epages.restdocs.openapi.generator.Attributes,
185+
attributes: com.epages.restdocs.openapi.model.Attributes,
186186
private val jsonSchemaPrimitiveTypes: Set<String> = setOf(jsonSchemaPrimitiveTypeFromDescriptorType(type))
187-
) : com.epages.restdocs.openapi.generator.FieldDescriptor(path, description, type, optional, ignored, attributes) {
187+
) : com.epages.restdocs.openapi.model.FieldDescriptor(path, description, type, optional, ignored, attributes) {
188188

189189
fun jsonSchemaType(): Schema {
190190
val schemaBuilders = jsonSchemaPrimitiveTypes.map { typeToSchema(it) }
191191
return if (schemaBuilders.size == 1) schemaBuilders.first().description(description).build()
192192
else CombinedSchema.oneOf(schemaBuilders.map { it.build() }).description(description).build()
193193
}
194194

195-
fun merge(fieldDescriptor: com.epages.restdocs.openapi.generator.FieldDescriptor): FieldDescriptorWithSchemaType {
195+
fun merge(fieldDescriptor: com.epages.restdocs.openapi.model.FieldDescriptor): FieldDescriptorWithSchemaType {
196196
if (this.path != fieldDescriptor.path)
197197
throw IllegalArgumentException("path of fieldDescriptor is not equal to ${this.path}")
198198

@@ -226,7 +226,7 @@ internal class JsonSchemaFromFieldDescriptorsGenerator {
226226
this.type == f.type)
227227

228228
companion object {
229-
fun fromFieldDescriptor(fieldDescriptor: com.epages.restdocs.openapi.generator.FieldDescriptor) =
229+
fun fromFieldDescriptor(fieldDescriptor: com.epages.restdocs.openapi.model.FieldDescriptor) =
230230
FieldDescriptorWithSchemaType(
231231
path = fieldDescriptor.path,
232232
description = fieldDescriptor.description,

restdocs-openapi-generator/src/test/kotlin/com/epages/restdocs/openapi/generator/OpenApi20GeneratorTest.kt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,16 @@
11
package com.epages.restdocs.openapi.generator
22

3-
import com.epages.restdocs.openapi.generator.SecurityType.OAUTH2
3+
import com.epages.restdocs.openapi.model.AbstractParameterDescriptor
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.Oauth2Configuration
8+
import com.epages.restdocs.openapi.model.ParameterDescriptor
9+
import com.epages.restdocs.openapi.model.RequestModel
10+
import com.epages.restdocs.openapi.model.ResourceModel
11+
import com.epages.restdocs.openapi.model.ResponseModel
12+
import com.epages.restdocs.openapi.model.SecurityRequirements
13+
import com.epages.restdocs.openapi.model.SecurityType.OAUTH2
414
import io.swagger.models.Model
515
import io.swagger.models.Path
616
import io.swagger.models.Response

restdocs-openapi-generator/src/test/kotlin/com/epages/restdocs/openapi/generator/schema/JsonFieldPathTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class JsonFieldPathTest {
1212
fun should_get_remaining_segments() {
1313
with(compile(
1414
com.epages.restdocs.openapi.generator.schema.JsonSchemaFromFieldDescriptorsGenerator.FieldDescriptorWithSchemaType("a.b.c", "", "", false, false,
15-
com.epages.restdocs.openapi.generator.Attributes()
15+
com.epages.restdocs.openapi.model.Attributes()
1616
))) {
1717
then(remainingSegments(ImmutableList.of("a"))).contains("b", "c")
1818
then(remainingSegments(ImmutableList.of("a", "b"))).contains("c")

restdocs-openapi-generator/src/test/kotlin/com/epages/restdocs/openapi/generator/schema/JsonSchemaFromFieldDescriptorsGeneratorTest.kt

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class JsonSchemaFromFieldDescriptorsGeneratorTest {
2424

2525
private var schema: Schema? = null
2626

27-
private var fieldDescriptors: List<com.epages.restdocs.openapi.generator.FieldDescriptor>? = null
27+
private var fieldDescriptors: List<com.epages.restdocs.openapi.model.FieldDescriptor>? = null
2828

2929
private var schemaString: String? = null
3030

@@ -195,55 +195,55 @@ class JsonSchemaFromFieldDescriptorsGeneratorTest {
195195
}
196196

197197
private fun givenFieldDescriptorWithPrimitiveArray() {
198-
fieldDescriptors = listOf(com.epages.restdocs.openapi.generator.FieldDescriptor("a[]", "some", "ARRAY"))
198+
fieldDescriptors = listOf(com.epages.restdocs.openapi.model.FieldDescriptor("a[]", "some", "ARRAY"))
199199
}
200200

201201
private fun givenFieldDescriptorWithTopLevelArray() {
202-
fieldDescriptors = listOf(com.epages.restdocs.openapi.generator.FieldDescriptor("[]['id']", "some", "STRING"))
202+
fieldDescriptors = listOf(com.epages.restdocs.openapi.model.FieldDescriptor("[]['id']", "some", "STRING"))
203203
}
204204

205205
private fun givenFieldDescriptorWithTopLevelArrayOfAny() {
206-
fieldDescriptors = listOf(com.epages.restdocs.openapi.generator.FieldDescriptor("[]", "some", "ARRAY"))
206+
fieldDescriptors = listOf(com.epages.restdocs.openapi.model.FieldDescriptor("[]", "some", "ARRAY"))
207207
}
208208

209209
private fun givenFieldDescriptorWithTopLevelArrayOfArrayOfAny() {
210-
fieldDescriptors = listOf(com.epages.restdocs.openapi.generator.FieldDescriptor("[][]", "some", "ARRAY"))
210+
fieldDescriptors = listOf(com.epages.restdocs.openapi.model.FieldDescriptor("[][]", "some", "ARRAY"))
211211
}
212212

213213
private fun givenFieldDescriptorWithInvalidType() {
214-
fieldDescriptors = listOf(com.epages.restdocs.openapi.generator.FieldDescriptor("id", "some", "invalid-type"))
214+
fieldDescriptors = listOf(com.epages.restdocs.openapi.model.FieldDescriptor("id", "some", "invalid-type"))
215215
}
216216

217217
private fun givenEqualFieldDescriptorsWithSamePath() {
218218
fieldDescriptors = listOf(
219-
com.epages.restdocs.openapi.generator.FieldDescriptor("id", "some", "STRING"),
220-
com.epages.restdocs.openapi.generator.FieldDescriptor("id", "some", "STRING")
219+
com.epages.restdocs.openapi.model.FieldDescriptor("id", "some", "STRING"),
220+
com.epages.restdocs.openapi.model.FieldDescriptor("id", "some", "STRING")
221221
)
222222
}
223223

224224
private fun givenDifferentFieldDescriptorsWithSamePathAndDifferentTypes() {
225225
fieldDescriptors = listOf(
226-
com.epages.restdocs.openapi.generator.FieldDescriptor("id", "some", "STRING"),
227-
com.epages.restdocs.openapi.generator.FieldDescriptor("id", "some", "NULL"),
228-
com.epages.restdocs.openapi.generator.FieldDescriptor("id", "some", "BOOLEAN")
226+
com.epages.restdocs.openapi.model.FieldDescriptor("id", "some", "STRING"),
227+
com.epages.restdocs.openapi.model.FieldDescriptor("id", "some", "NULL"),
228+
com.epages.restdocs.openapi.model.FieldDescriptor("id", "some", "BOOLEAN")
229229
)
230230
}
231231

232232
private fun givenFieldDescriptorsWithConstraints() {
233233
val constraintAttributeWithNotNull =
234-
com.epages.restdocs.openapi.generator.Attributes(
234+
com.epages.restdocs.openapi.model.Attributes(
235235
listOf(
236-
com.epages.restdocs.openapi.generator.Constraint(
236+
com.epages.restdocs.openapi.model.Constraint(
237237
NotNull::class.java.name,
238238
emptyMap()
239239
)
240240
)
241241
)
242242

243243
val constraintAttributeWithLength =
244-
com.epages.restdocs.openapi.generator.Attributes(
244+
com.epages.restdocs.openapi.model.Attributes(
245245
listOf(
246-
com.epages.restdocs.openapi.generator.Constraint(
246+
com.epages.restdocs.openapi.model.Constraint(
247247
"org.hibernate.validator.constraints.Length", mapOf(
248248
"min" to 2,
249249
"max" to 255
@@ -253,46 +253,46 @@ class JsonSchemaFromFieldDescriptorsGeneratorTest {
253253
)
254254

255255
fieldDescriptors = listOf(
256-
com.epages.restdocs.openapi.generator.FieldDescriptor(
256+
com.epages.restdocs.openapi.model.FieldDescriptor(
257257
"id",
258258
"some",
259259
"STRING",
260260
attributes = constraintAttributeWithNotNull
261261
),
262-
com.epages.restdocs.openapi.generator.FieldDescriptor(
262+
com.epages.restdocs.openapi.model.FieldDescriptor(
263263
"lineItems[*].name",
264264
"some",
265265
"STRING",
266266
attributes = constraintAttributeWithLength
267267
),
268-
com.epages.restdocs.openapi.generator.FieldDescriptor(
268+
com.epages.restdocs.openapi.model.FieldDescriptor(
269269
"lineItems[*]._id",
270270
"some",
271271
"STRING",
272272
attributes = constraintAttributeWithNotNull
273273
),
274-
com.epages.restdocs.openapi.generator.FieldDescriptor(
274+
com.epages.restdocs.openapi.model.FieldDescriptor(
275275
"lineItems[*].quantity.value",
276276
"some",
277277
"NUMBER",
278278
attributes = constraintAttributeWithNotNull
279279
),
280-
com.epages.restdocs.openapi.generator.FieldDescriptor("lineItems[*].quantity.unit", "some", "STRING"),
281-
com.epages.restdocs.openapi.generator.FieldDescriptor("shippingAddress", "some", "OBJECT"),
282-
com.epages.restdocs.openapi.generator.FieldDescriptor("billingAddress", "some", "OBJECT"),
283-
com.epages.restdocs.openapi.generator.FieldDescriptor(
280+
com.epages.restdocs.openapi.model.FieldDescriptor("lineItems[*].quantity.unit", "some", "STRING"),
281+
com.epages.restdocs.openapi.model.FieldDescriptor("shippingAddress", "some", "OBJECT"),
282+
com.epages.restdocs.openapi.model.FieldDescriptor("billingAddress", "some", "OBJECT"),
283+
com.epages.restdocs.openapi.model.FieldDescriptor(
284284
"billingAddress.firstName", "some", "STRING",
285-
attributes = com.epages.restdocs.openapi.generator.Attributes(
285+
attributes = com.epages.restdocs.openapi.model.Attributes(
286286
listOf(
287-
com.epages.restdocs.openapi.generator.Constraint(
287+
com.epages.restdocs.openapi.model.Constraint(
288288
"javax.validation.constraints.NotEmpty",
289289
emptyMap()
290290
)
291291
)
292292
)
293293
),
294-
com.epages.restdocs.openapi.generator.FieldDescriptor("billingAddress.valid", "some", "BOOLEAN"),
295-
com.epages.restdocs.openapi.generator.FieldDescriptor("paymentLineItem.lineItemTaxes", "some", "ARRAY")
294+
com.epages.restdocs.openapi.model.FieldDescriptor("billingAddress.valid", "some", "BOOLEAN"),
295+
com.epages.restdocs.openapi.model.FieldDescriptor("paymentLineItem.lineItemTaxes", "some", "ARRAY")
296296
)
297297
}
298298

restdocs-openapi-gradle-plugin/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ dependencies {
2929
compile(kotlin("gradle-plugin"))
3030
compile(kotlin("stdlib-jdk8"))
3131

32+
implementation(project(":restdocs-openapi-model"))
3233
implementation(project(":restdocs-openapi-generator"))
3334
implementation("com.fasterxml.jackson.core:jackson-databind:2.9.5")
3435
implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.9.5")

restdocs-openapi-gradle-plugin/src/main/kotlin/com/epages/restdocs/openapi/gradle/RestdocsOpenApiPluginExtension.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.epages.restdocs.openapi.gradle
22

3-
import com.epages.restdocs.openapi.generator.Oauth2Configuration
3+
import com.epages.restdocs.openapi.model.Oauth2Configuration
44
import com.fasterxml.jackson.databind.ObjectMapper
55
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory
66
import com.fasterxml.jackson.module.kotlin.readValue

restdocs-openapi-gradle-plugin/src/main/kotlin/com/epages/restdocs/openapi/gradle/RestdocsOpenApiTask.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package com.epages.restdocs.openapi.gradle
22

33
import com.epages.restdocs.openapi.generator.ApiSpecificationWriter
44
import com.epages.restdocs.openapi.generator.OpenApi20Generator
5-
import com.epages.restdocs.openapi.generator.ResourceModel
5+
import com.epages.restdocs.openapi.model.ResourceModel
66
import com.fasterxml.jackson.databind.DeserializationFeature
77
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
88
import com.fasterxml.jackson.module.kotlin.readValue

0 commit comments

Comments
 (0)