Skip to content

Commit 9cf5770

Browse files
authored
Merge pull request #259 from graphql-java-kickstart/bugfix/253-string-formatted-schema-descriptions
Use string formatted descriptions if available (fix #169, fix #253)
2 parents bdafe57 + 26e8106 commit 9cf5770

File tree

2 files changed

+13
-10
lines changed

2 files changed

+13
-10
lines changed

src/main/kotlin/com/coxautodev/graphql/tools/SchemaClassScanner.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,8 @@ internal class SchemaClassScanner(initialDictionary: BiMap<String, Class<*>>, al
154154
}.map { definition ->
155155
val provided = scalars[definition.name]
156156
?: throw SchemaClassScannerError("Expected a user-defined GraphQL scalar type with name '${definition.name}' but found none!")
157-
GraphQLScalarType(provided.name, SchemaParser.getDocumentation(definition)
157+
GraphQLScalarType(provided.name,
158+
if (definition.description != null) definition.description.content else SchemaParser.getDocumentation(definition)
158159
?: provided.description, provided.coercing, listOf(), definition)
159160
}.associateBy { it.name!! }
160161

src/main/kotlin/com/coxautodev/graphql/tools/SchemaParser.kt

+11-9
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ class SchemaParser internal constructor(scanResult: ScannedSchemaObjects, privat
139139
val builder = GraphQLObjectType.newObject()
140140
.name(name)
141141
.definition(definition)
142-
.description(getDocumentation(definition))
142+
.description(if (definition.description != null) definition.description.content else getDocumentation(definition))
143143

144144
builder.withDirectives(*buildDirectives(definition.directives, setOf(), Introspection.DirectiveLocation.OBJECT))
145145

@@ -185,15 +185,15 @@ class SchemaParser internal constructor(scanResult: ScannedSchemaObjects, privat
185185
val builder = GraphQLInputObjectType.newInputObject()
186186
.name(definition.name)
187187
.definition(definition)
188-
.description(getDocumentation(definition))
188+
.description(if (definition.description != null) definition.description.content else getDocumentation(definition))
189189

190190
builder.withDirectives(*buildDirectives(definition.directives, setOf(), Introspection.DirectiveLocation.INPUT_OBJECT))
191191

192192
definition.inputValueDefinitions.forEach { inputDefinition ->
193193
val fieldBuilder = GraphQLInputObjectField.newInputObjectField()
194194
.name(inputDefinition.name)
195195
.definition(inputDefinition)
196-
.description(getDocumentation(inputDefinition))
196+
.description(if (inputDefinition.description != null) inputDefinition.description.content else getDocumentation(inputDefinition))
197197
.defaultValue(inputDefinition.defaultValue)
198198
.type(determineInputType(inputDefinition.type))
199199
.withDirectives(*buildDirectives(definition.directives, setOf(), Introspection.DirectiveLocation.INPUT_FIELD_DEFINITION))
@@ -211,7 +211,7 @@ class SchemaParser internal constructor(scanResult: ScannedSchemaObjects, privat
211211
val builder = GraphQLEnumType.newEnum()
212212
.name(name)
213213
.definition(definition)
214-
.description(getDocumentation(definition))
214+
.description(if (definition.description != null) definition.description.content else getDocumentation(definition))
215215

216216
builder.withDirectives(*buildDirectives(definition.directives, setOf(), Introspection.DirectiveLocation.ENUM))
217217

@@ -221,7 +221,9 @@ class SchemaParser internal constructor(scanResult: ScannedSchemaObjects, privat
221221
?: throw SchemaError("Expected value for name '$enumName' in enum '${type.unwrap().simpleName}' but found none!")
222222
val enumValueDirectives = buildDirectives(enumDefinition.directives, setOf(), Introspection.DirectiveLocation.ENUM_VALUE).toMutableList()
223223
getDeprecated(enumDefinition.directives).let {
224-
val enumValueDefinition = GraphQLEnumValueDefinition(enumName, getDocumentation(enumDefinition), enumValue, it, enumValueDirectives)
224+
val enumValueDefinition = GraphQLEnumValueDefinition(enumName,
225+
if (enumDefinition.description != null) enumDefinition.description.content else getDocumentation(enumDefinition),
226+
enumValue, it, enumValueDirectives)
225227
builder.value(directiveGenerator.onEnumValue(enumValueDefinition, DirectiveBehavior.Params(runtimeWiring)))
226228
}
227229
}
@@ -234,7 +236,7 @@ class SchemaParser internal constructor(scanResult: ScannedSchemaObjects, privat
234236
val builder = GraphQLInterfaceType.newInterface()
235237
.name(name)
236238
.definition(definition)
237-
.description(getDocumentation(definition))
239+
.description(if (definition.description != null) definition.description.content else getDocumentation(definition))
238240
.typeResolver(TypeResolverProxy())
239241

240242
builder.withDirectives(*buildDirectives(definition.directives, setOf(), Introspection.DirectiveLocation.INTERFACE))
@@ -251,7 +253,7 @@ class SchemaParser internal constructor(scanResult: ScannedSchemaObjects, privat
251253
val builder = GraphQLUnionType.newUnionType()
252254
.name(name)
253255
.definition(definition)
254-
.description(getDocumentation(definition))
256+
.description(if (definition.description != null) definition.description.content else getDocumentation(definition))
255257
.typeResolver(TypeResolverProxy())
256258

257259
builder.withDirectives(*buildDirectives(definition.directives, setOf(), Introspection.DirectiveLocation.UNION))
@@ -282,15 +284,15 @@ class SchemaParser internal constructor(scanResult: ScannedSchemaObjects, privat
282284

283285
private fun createField(field: GraphQLFieldDefinition.Builder, fieldDefinition: FieldDefinition): GraphQLFieldDefinition.Builder {
284286
field.name(fieldDefinition.name)
285-
field.description(getDocumentation(fieldDefinition))
287+
field.description(if (fieldDefinition.description != null) fieldDefinition.description.content else getDocumentation(fieldDefinition))
286288
field.definition(fieldDefinition)
287289
getDeprecated(fieldDefinition.directives)?.let { field.deprecate(it) }
288290
field.type(determineOutputType(fieldDefinition.type))
289291
fieldDefinition.inputValueDefinitions.forEach { argumentDefinition ->
290292
val argumentBuilder = GraphQLArgument.newArgument()
291293
.name(argumentDefinition.name)
292294
.definition(argumentDefinition)
293-
.description(getDocumentation(argumentDefinition))
295+
.description(if (argumentDefinition.description != null) argumentDefinition.description.content else getDocumentation(argumentDefinition))
294296
.defaultValue(buildDefaultValue(argumentDefinition.defaultValue))
295297
.type(determineInputType(argumentDefinition.type))
296298
.withDirectives(*buildDirectives(argumentDefinition.directives, setOf(), Introspection.DirectiveLocation.ARGUMENT_DEFINITION))

0 commit comments

Comments
 (0)