From 3511bf6f2d52cde925a39bd2a0c84f3858c30914 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Fri, 27 Feb 2026 14:02:10 +0100 Subject: [PATCH 1/2] Fix wrapped externalField --- .../generators/db/FetchDBMethodGenerator.java | 2 +- .../no/sikt/graphitron/queries/fetch/OutputTest.java | 8 ++++++++ .../output/externalFieldWrappedType/schema.graphqls | 11 +++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 graphitron-codegen-parent/graphitron-java-codegen/src/test/resources/queries/fetch/output/externalFieldWrappedType/schema.graphqls diff --git a/graphitron-codegen-parent/graphitron-java-codegen/src/main/java/no/sikt/graphitron/generators/db/FetchDBMethodGenerator.java b/graphitron-codegen-parent/graphitron-java-codegen/src/main/java/no/sikt/graphitron/generators/db/FetchDBMethodGenerator.java index 2443408db..eeb64c231 100644 --- a/graphitron-codegen-parent/graphitron-java-codegen/src/main/java/no/sikt/graphitron/generators/db/FetchDBMethodGenerator.java +++ b/graphitron-codegen-parent/graphitron-java-codegen/src/main/java/no/sikt/graphitron/generators/db/FetchDBMethodGenerator.java @@ -295,7 +295,7 @@ protected Pair getSelectCodeAndFieldSource(GenerationField fi ? generateCorrelatedSubquery(field, context.nextContext(field)) : generateSelectRow(context.nextContext(field)); } else if (field.isExternalField()) { - JOOQMapping table = processedSchema.getObject(field.getContainerTypeName()).getTable(); + JOOQMapping table = context.getTargetTable(); if (table == null) { throw new IllegalArgumentException("No table found for field " + field.getName()); diff --git a/graphitron-codegen-parent/graphitron-java-codegen/src/test/java/no/sikt/graphitron/queries/fetch/OutputTest.java b/graphitron-codegen-parent/graphitron-java-codegen/src/test/java/no/sikt/graphitron/queries/fetch/OutputTest.java index d0c546b98..c48518330 100644 --- a/graphitron-codegen-parent/graphitron-java-codegen/src/test/java/no/sikt/graphitron/queries/fetch/OutputTest.java +++ b/graphitron-codegen-parent/graphitron-java-codegen/src/test/java/no/sikt/graphitron/queries/fetch/OutputTest.java @@ -106,6 +106,14 @@ void externalField() { ); } + @Test + @DisplayName("Wrapped field annotated with @externalField should use method extended on field's target jooq table") + void externalFieldWrappedType() { + assertGeneratedContentContains("externalFieldWrappedType", + "DSL.row(no.sikt.graphitron.codereferences.extensionmethods.ClassWithExtensionMethod.name(_a_customer))" + ); + } + @Test @DisplayName("Field annotated with @externalField should map types correctly even when over 22 fields") void externalFieldOver22() { diff --git a/graphitron-codegen-parent/graphitron-java-codegen/src/test/resources/queries/fetch/output/externalFieldWrappedType/schema.graphqls b/graphitron-codegen-parent/graphitron-java-codegen/src/test/resources/queries/fetch/output/externalFieldWrappedType/schema.graphqls new file mode 100644 index 000000000..c68d4ffff --- /dev/null +++ b/graphitron-codegen-parent/graphitron-java-codegen/src/test/resources/queries/fetch/output/externalFieldWrappedType/schema.graphqls @@ -0,0 +1,11 @@ +type Query { + query: Customer +} + +type Customer @table { + something: Something +} + +type Something { + name: String @externalField +} From 21986fc5f340568b5bed52e1eb139f68810062a6 Mon Sep 17 00:00:00 2001 From: mystiskemorten Date: Thu, 5 Mar 2026 09:12:56 +0100 Subject: [PATCH 2/2] Update graphitron-codegen-parent/graphitron-java-codegen/src/test/java/no/sikt/graphitron/queries/fetch/OutputTest.java Co-authored-by: Andrea Nakstad <57245846+andreahn@users.noreply.github.com> --- .../test/java/no/sikt/graphitron/queries/fetch/OutputTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/graphitron-codegen-parent/graphitron-java-codegen/src/test/java/no/sikt/graphitron/queries/fetch/OutputTest.java b/graphitron-codegen-parent/graphitron-java-codegen/src/test/java/no/sikt/graphitron/queries/fetch/OutputTest.java index c48518330..ef54b69a2 100644 --- a/graphitron-codegen-parent/graphitron-java-codegen/src/test/java/no/sikt/graphitron/queries/fetch/OutputTest.java +++ b/graphitron-codegen-parent/graphitron-java-codegen/src/test/java/no/sikt/graphitron/queries/fetch/OutputTest.java @@ -107,7 +107,7 @@ void externalField() { } @Test - @DisplayName("Wrapped field annotated with @externalField should use method extended on field's target jooq table") + @DisplayName("External field in wrapper type without table should find previous target table") void externalFieldWrappedType() { assertGeneratedContentContains("externalFieldWrappedType", "DSL.row(no.sikt.graphitron.codereferences.extensionmethods.ClassWithExtensionMethod.name(_a_customer))"