From 7890c23b32473cc0c9538dc21427a10f3bfa57cd Mon Sep 17 00:00:00 2001 From: lukaseder Date: Mon, 15 Jan 2018 09:25:44 +0100 Subject: [PATCH] [#7055] POJO copy constructor should use interface when codegen of = true --- .../java/org/jooq/util/JavaGenerator.java | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/jOOQ-codegen/src/main/java/org/jooq/util/JavaGenerator.java b/jOOQ-codegen/src/main/java/org/jooq/util/JavaGenerator.java index d205325c33..baf25a8c8b 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/util/JavaGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/util/JavaGenerator.java @@ -3038,13 +3038,13 @@ public class JavaGenerator extends AbstractGenerator { private final void generatePojo0(Definition tableOrUDT, JavaWriter out) { final String className = getStrategy().getJavaClassName(tableOrUDT, Mode.POJO); + final String interfaceName = out.ref(getStrategy().getFullJavaClassName(tableOrUDT, Mode.INTERFACE)); final String superName = out.ref(getStrategy().getJavaClassExtends(tableOrUDT, Mode.POJO)); final List interfaces = out.ref(getStrategy().getJavaClassImplements(tableOrUDT, Mode.POJO)); final List superTypes = list(superName, interfaces); - if (generateInterfaces()) { - interfaces.add(out.ref(getStrategy().getFullJavaClassName(tableOrUDT, Mode.INTERFACE))); - } + if (generateInterfaces()) + interfaces.add(interfaceName); printPackage(out, tableOrUDT, Mode.POJO); @@ -3124,11 +3124,11 @@ public class JavaGenerator extends AbstractGenerator { } } - // [#1363] copy constructor + // [#1363] [#7055] copy constructor out.println(); if (scala) { - out.tab(1).println("def this (value : %s) = {", className, className); + out.tab(1).println("def this (value : %s) = {", generateInterfaces() ? interfaceName : className); out.tab(2).println("this("); String separator = " "; @@ -3136,7 +3136,9 @@ public class JavaGenerator extends AbstractGenerator { out.tab(3).println("%svalue.%s", separator, getStrategy().getJavaMemberName(column, Mode.POJO), - getStrategy().getJavaMemberName(column, Mode.POJO)); + generateInterfaces() + ? getStrategy().getJavaMemberName(column, Mode.INTERFACE) + : getStrategy().getJavaMemberName(column, Mode.POJO)); separator = ", "; } @@ -3145,12 +3147,17 @@ public class JavaGenerator extends AbstractGenerator { out.tab(1).println("}"); } else { - out.tab(1).println("public %s(%s value) {", className, className); + out.tab(1).println("public %s(%s value) {", className, generateInterfaces() ? interfaceName : className); for (TypedElementDefinition column : getTypedElements(tableOrUDT)) { - out.tab(2).println("this.%s = value.%s;", + out.tab(2).println("this.%s = value.%s%s;", getStrategy().getJavaMemberName(column, Mode.POJO), - getStrategy().getJavaMemberName(column, Mode.POJO)); + generateInterfaces() + ? getStrategy().getJavaGetterName(column, Mode.INTERFACE) + : getStrategy().getJavaMemberName(column, Mode.POJO), + generateInterfaces() + ? "()" + : ""); } out.tab(1).println("}");