diff --git a/.changeset/petite-nights-add.md b/.changeset/petite-nights-add.md new file mode 100644 index 000000000..72ae3e208 --- /dev/null +++ b/.changeset/petite-nights-add.md @@ -0,0 +1,5 @@ +--- +'@graphql-codegen/java': patch +--- + +Fix complex (non-scalar) input collections diff --git a/packages/plugins/java/java/src/visitor.ts b/packages/plugins/java/java/src/visitor.ts index 2fb80a607..1c693e4ac 100644 --- a/packages/plugins/java/java/src/visitor.ts +++ b/packages/plugins/java/java/src/visitor.ts @@ -237,7 +237,9 @@ export class JavaResolversVisitor extends BaseVisitor< } return indentMultiline( `if (args.get("${arg.name.value}") != null) { - this.${arg.name.value} = (${this.config.listType}<${typeToUse.baseType}>) args.get("${arg.name.value}"); + this.${arg.name.value} = ((${this.config.listType}>) args.get("${arg.name.value}")).stream() + .map(o -> o == null ? null : new ${typeToUse.baseType}(o)) + .collect(Collectors.toList()); }`, 3, ); diff --git a/packages/plugins/java/java/tests/java.spec.ts b/packages/plugins/java/java/tests/java.spec.ts index bcf66d98f..47526cf2e 100644 --- a/packages/plugins/java/java/tests/java.spec.ts +++ b/packages/plugins/java/java/tests/java.spec.ts @@ -158,7 +158,9 @@ describe('Java', () => { if (args != null) { this.f = (Iterable) args.get("f"); if (args.get("g") != null) { - this.g = (Iterable) args.get("g"); + this.g = ((Iterable>) args.get("g")).stream() + .map(o -> o == null ? null : new SearchUserInput(o)) + .collect(Collectors.toList()); } } }