From 87f14dd5ee395e95e4e9697bc7f3b558abf40325 Mon Sep 17 00:00:00 2001 From: Oryan M Date: Fri, 18 Nov 2022 16:07:18 -0500 Subject: [PATCH] Allow parsing large schema files --- .../graphql/kickstart/tools/SchemaParserBuilder.kt | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/graphql/kickstart/tools/SchemaParserBuilder.kt b/src/main/kotlin/graphql/kickstart/tools/SchemaParserBuilder.kt index c86a6bf7..aa9055d7 100644 --- a/src/main/kotlin/graphql/kickstart/tools/SchemaParserBuilder.kt +++ b/src/main/kotlin/graphql/kickstart/tools/SchemaParserBuilder.kt @@ -2,6 +2,7 @@ package graphql.kickstart.tools import graphql.language.Definition import graphql.language.Document +import graphql.parser.MultiSourceReader import graphql.parser.Parser import graphql.parser.ParserOptions import graphql.schema.GraphQLScalarType @@ -168,12 +169,16 @@ class SchemaParserBuilder { val parser = Parser() val documents = mutableListOf() try { - files.forEach { documents.add(parser.parseDocument(readFile(it), it)) } + val options = ParserOptions + .getDefaultParserOptions() + .transform { o -> o.maxTokens(MAX_VALUE) } + + files.forEach { + val sourceReader = MultiSourceReader.newMultiSourceReader().string(readFile(it), it).trackData(true).build() + documents.add(parser.parseDocument(sourceReader, options)) + } if (schemaString.isNotEmpty()) { - val options = ParserOptions - .getDefaultParserOptions() - .transform { o -> o.maxTokens(MAX_VALUE) } documents.add(parser.parseDocument(schemaString.toString(), options)) } } catch (pce: ParseCancellationException) {