1
- package com.epages.restdocs.openapi.gradle .schema
1
+ package com.epages.restdocs.openapi.generator .schema
2
2
3
- import com.epages.restdocs.openapi.gradle .schema.ConstraintResolver.isRequired
4
- import com.epages.restdocs.openapi.gradle .schema.ConstraintResolver.maxLengthString
5
- import com.epages.restdocs.openapi.gradle .schema.ConstraintResolver.minLengthString
3
+ import com.epages.restdocs.openapi.generator .schema.ConstraintResolver.isRequired
4
+ import com.epages.restdocs.openapi.generator .schema.ConstraintResolver.maxLengthString
5
+ import com.epages.restdocs.openapi.generator .schema.ConstraintResolver.minLengthString
6
6
import com.fasterxml.jackson.databind.SerializationFeature
7
7
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
8
8
import org.everit.json.schema.ArraySchema
@@ -22,9 +22,9 @@ import java.util.function.Predicate
22
22
23
23
internal class JsonSchemaFromFieldDescriptorsGenerator {
24
24
25
- internal fun generateSchema (fieldDescriptors : List <com.epages.restdocs.openapi.gradle .FieldDescriptor >, title : String? = null): String {
25
+ internal fun generateSchema (fieldDescriptors : List <com.epages.restdocs.openapi.generator .FieldDescriptor >, title : String? = null): String {
26
26
val jsonFieldPaths = reduceFieldDescriptors(fieldDescriptors)
27
- .map { com.epages.restdocs.openapi.gradle .schema.JsonFieldPath .compile(it) }
27
+ .map { com.epages.restdocs.openapi.generator .schema.JsonFieldPath .compile(it) }
28
28
29
29
val schema = traverse(emptyList(), jsonFieldPaths, ObjectSchema .builder().title(title) as ObjectSchema .Builder )
30
30
@@ -36,7 +36,7 @@ internal class JsonSchemaFromFieldDescriptorsGenerator {
36
36
*
37
37
* The implementation will
38
38
*/
39
- private fun reduceFieldDescriptors (fieldDescriptors : List <com.epages.restdocs.openapi.gradle .FieldDescriptor >): List <FieldDescriptorWithSchemaType > {
39
+ private fun reduceFieldDescriptors (fieldDescriptors : List <com.epages.restdocs.openapi.generator .FieldDescriptor >): List <FieldDescriptorWithSchemaType > {
40
40
return fieldDescriptors
41
41
.map { FieldDescriptorWithSchemaType .fromFieldDescriptor(it) }
42
42
.foldRight(listOf ()) { fieldDescriptor, groups -> groups
@@ -48,7 +48,7 @@ internal class JsonSchemaFromFieldDescriptorsGenerator {
48
48
}
49
49
}
50
50
51
- private fun unWrapRootArray (jsonFieldPaths : List <com.epages.restdocs.openapi.gradle .schema.JsonFieldPath >, schema : Schema ): Schema {
51
+ private fun unWrapRootArray (jsonFieldPaths : List <com.epages.restdocs.openapi.generator .schema.JsonFieldPath >, schema : Schema ): Schema {
52
52
if (schema is ObjectSchema ) {
53
53
val groups = groupFieldsByFirstRemainingPathSegment(emptyList(), jsonFieldPaths)
54
54
if (groups.keys.size == 1 && groups.keys.contains(" []" )) {
@@ -68,7 +68,7 @@ internal class JsonSchemaFromFieldDescriptorsGenerator {
68
68
69
69
private fun traverse (
70
70
traversedSegments : List <String >,
71
- jsonFieldPaths : List <com.epages.restdocs.openapi.gradle .schema.JsonFieldPath >,
71
+ jsonFieldPaths : List <com.epages.restdocs.openapi.generator .schema.JsonFieldPath >,
72
72
builder : ObjectSchema .Builder
73
73
): Schema {
74
74
@@ -102,30 +102,30 @@ internal class JsonSchemaFromFieldDescriptorsGenerator {
102
102
return builder.build()
103
103
}
104
104
105
- private fun isDirectMatch (traversedSegments : List <String >): Predicate <com.epages.restdocs.openapi.gradle .schema.JsonFieldPath > {
105
+ private fun isDirectMatch (traversedSegments : List <String >): Predicate <com.epages.restdocs.openapi.generator .schema.JsonFieldPath > {
106
106
// we have a direct match when there are no remaining segments or when the only following element is an array
107
107
return Predicate { jsonFieldPath ->
108
108
val remainingSegments = jsonFieldPath.remainingSegments(traversedSegments)
109
- remainingSegments.isEmpty() || remainingSegments.size == 1 && com.epages.restdocs.openapi.gradle .schema.JsonFieldPath .isArraySegment(remainingSegments[0 ])
109
+ remainingSegments.isEmpty() || remainingSegments.size == 1 && com.epages.restdocs.openapi.generator .schema.JsonFieldPath .isArraySegment(remainingSegments[0 ])
110
110
}
111
111
}
112
112
113
113
private fun groupFieldsByFirstRemainingPathSegment (
114
114
traversedSegments : List <String >,
115
- jsonFieldPaths : List <com.epages.restdocs.openapi.gradle .schema.JsonFieldPath >
116
- ): Map <String , List <com.epages.restdocs.openapi.gradle .schema.JsonFieldPath >> {
115
+ jsonFieldPaths : List <com.epages.restdocs.openapi.generator .schema.JsonFieldPath >
116
+ ): Map <String , List <com.epages.restdocs.openapi.generator .schema.JsonFieldPath >> {
117
117
return jsonFieldPaths.groupBy { it.remainingSegments(traversedSegments)[0 ] }
118
118
}
119
119
120
120
private fun processRemainingSegments (
121
121
builder : ObjectSchema .Builder ,
122
122
propertyName : String ,
123
123
traversedSegments : MutableList <String >,
124
- fields : List <com.epages.restdocs.openapi.gradle .schema.JsonFieldPath >,
124
+ fields : List <com.epages.restdocs.openapi.generator .schema.JsonFieldPath >,
125
125
description : String?
126
126
) {
127
127
val remainingSegments = fields[0 ].remainingSegments(traversedSegments)
128
- if (remainingSegments.isNotEmpty() && com.epages.restdocs.openapi.gradle .schema.JsonFieldPath .isArraySegment(remainingSegments[0 ])) {
128
+ if (remainingSegments.isNotEmpty() && com.epages.restdocs.openapi.generator .schema.JsonFieldPath .isArraySegment(remainingSegments[0 ])) {
129
129
traversedSegments.add(remainingSegments[0 ])
130
130
builder.addPropertySchema(
131
131
propertyName, ArraySchema .builder()
@@ -182,17 +182,17 @@ internal class JsonSchemaFromFieldDescriptorsGenerator {
182
182
type : String ,
183
183
optional : Boolean ,
184
184
ignored : Boolean ,
185
- attributes : com.epages.restdocs.openapi.gradle .Attributes ,
185
+ attributes : com.epages.restdocs.openapi.generator .Attributes ,
186
186
private val jsonSchemaPrimitiveTypes : Set <String > = setOf(jsonSchemaPrimitiveTypeFromDescriptorType(type))
187
- ) : com.epages.restdocs.openapi.gradle .FieldDescriptor(path, description, type, optional, ignored, attributes) {
187
+ ) : com.epages.restdocs.openapi.generator .FieldDescriptor(path, description, type, optional, ignored, attributes) {
188
188
189
189
fun jsonSchemaType (): Schema {
190
190
val schemaBuilders = jsonSchemaPrimitiveTypes.map { typeToSchema(it) }
191
191
return if (schemaBuilders.size == 1 ) schemaBuilders.first().description(description).build()
192
192
else CombinedSchema .oneOf(schemaBuilders.map { it.build() }).description(description).build()
193
193
}
194
194
195
- fun merge (fieldDescriptor : com.epages.restdocs.openapi.gradle .FieldDescriptor ): FieldDescriptorWithSchemaType {
195
+ fun merge (fieldDescriptor : com.epages.restdocs.openapi.generator .FieldDescriptor ): FieldDescriptorWithSchemaType {
196
196
if (this .path != fieldDescriptor.path)
197
197
throw IllegalArgumentException (" path of fieldDescriptor is not equal to ${this .path} " )
198
198
@@ -226,7 +226,7 @@ internal class JsonSchemaFromFieldDescriptorsGenerator {
226
226
this .type == f.type)
227
227
228
228
companion object {
229
- fun fromFieldDescriptor (fieldDescriptor : com.epages.restdocs.openapi.gradle .FieldDescriptor ) =
229
+ fun fromFieldDescriptor (fieldDescriptor : com.epages.restdocs.openapi.generator .FieldDescriptor ) =
230
230
FieldDescriptorWithSchemaType (
231
231
path = fieldDescriptor.path,
232
232
description = fieldDescriptor.description,
0 commit comments