@@ -206,6 +206,12 @@ class ClientApiGenerator(
206
206
.addModifiers(Modifier .PUBLIC )
207
207
constructorBuilder.addStatement(" super(\$ S, queryName)" , operation.lowercase())
208
208
209
+ val legacyConstructorBuilder =
210
+ MethodSpec
211
+ .constructorBuilder()
212
+ .addModifiers(Modifier .PUBLIC )
213
+ legacyConstructorBuilder.addStatement(" super(\$ S, queryName)" , operation.lowercase())
214
+
209
215
it.inputValueDefinitions.forEach { inputValue ->
210
216
val findReturnType = TypeUtils (getDatatypesPackageName(), config, document).findReturnType(inputValue.type)
211
217
@@ -252,21 +258,24 @@ class ClientApiGenerator(
252
258
builderClass.addMethod(referenceMethodBuilder.build())
253
259
254
260
constructorBuilder.addParameter(findReturnType, ReservedKeywordSanitizer .sanitize(inputValue.name))
261
+ legacyConstructorBuilder.addParameter(findReturnType, ReservedKeywordSanitizer .sanitize(inputValue.name))
255
262
256
263
if (findReturnType.isPrimitive) {
257
- constructorBuilder.addCode(
264
+ val code =
258
265
"""
259
266
|getInput().put("${inputValue.name} ", ${ReservedKeywordSanitizer .sanitize(inputValue.name)} );
260
- """ .trimMargin(),
261
- )
267
+ """ .trimMargin()
268
+ constructorBuilder.addCode(code)
269
+ legacyConstructorBuilder.addCode(code)
262
270
} else {
263
- constructorBuilder.addCode(
271
+ val code =
264
272
"""
265
273
|if (${ReservedKeywordSanitizer .sanitize(inputValue.name)} != null || fieldsSet.contains("${inputValue.name} ")) {
266
274
| getInput().put("${inputValue.name} ", ${ReservedKeywordSanitizer .sanitize(inputValue.name)} );
267
275
|}
268
- """ .trimMargin(),
269
- )
276
+ """ .trimMargin()
277
+ constructorBuilder.addCode(code)
278
+ legacyConstructorBuilder.addCode(code)
270
279
}
271
280
}
272
281
@@ -303,11 +312,16 @@ class ClientApiGenerator(
303
312
.addMethod(nameMethodBuilder.build())
304
313
305
314
constructorBuilder.addParameter(String ::class .java, " queryName" )
315
+ legacyConstructorBuilder.addParameter(String ::class .java, " queryName" )
306
316
307
- if (it.inputValueDefinitions.size > 0 ) {
317
+ if (it.inputValueDefinitions.isNotEmpty() ) {
308
318
constructorBuilder.addParameter(setOfStringType, " fieldsSet" )
319
+ legacyConstructorBuilder.addParameter(setOfStringType, " fieldsSet" )
309
320
constructorBuilder.addParameter(mapOfStringsType, " variableReferences" )
310
321
constructorBuilder.addParameter(listOfVariablesType, " variableDefinitions" )
322
+
323
+ // We only need this backward compatible constructor if we added the new fields to the main constructor.
324
+ javaType.addMethod(legacyConstructorBuilder.build())
311
325
}
312
326
313
327
javaType.addMethod(constructorBuilder.build())
0 commit comments