[jOOQ/jOOQ#14853] Kotlin Code generator generates invalid code for
embeddables in POJOs when immutable interfaces is activated This includes: - [jOOQ/jOOQ#14855] Compilation error in generated code for embeddable properties when reducing visibility to internal, and generating interfaces
This commit is contained in:
parent
d6dcaa3762
commit
0a65011729
@ -372,7 +372,7 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
if (scala)
|
||||
return "";
|
||||
else if (kotlin)
|
||||
return "".equals(visibility()) ? visibility() : "public ";
|
||||
return "public ";
|
||||
else
|
||||
return "public ";
|
||||
}
|
||||
@ -2582,7 +2582,7 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
}
|
||||
else if (kotlin) {
|
||||
out.println();
|
||||
out.println("%sopen %svar %s: %s", visibility(override), (generateInterfaces() ? "override " : ""), member, type);
|
||||
out.println("%sopen %svar %s: %s", visibility(generateInterfaces()), (generateInterfaces() ? "override " : ""), member, type);
|
||||
out.tab(1).println("set(value): %s {", setterReturnType);
|
||||
}
|
||||
else {
|
||||
@ -5411,6 +5411,7 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
final String columnTypeDeclaredFull = getStrategy().getFullJavaClassName(embeddable, generateInterfaces() ? Mode.INTERFACE : Mode.POJO);
|
||||
final String columnTypeDeclared = out.ref(columnTypeDeclaredFull);
|
||||
final String columnGetter = getStrategy().getJavaGetterName(embeddable, Mode.POJO);
|
||||
final String columnMember = getStrategy().getJavaMemberName(embeddable, Mode.POJO);
|
||||
final String name = embeddable.getQualifiedOutputName();
|
||||
|
||||
// Getter
|
||||
@ -5419,10 +5420,18 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
|
||||
printNonnullAnnotation(out);
|
||||
|
||||
if (scala)
|
||||
if (scala) {
|
||||
out.println("%sdef %s: %s = new %s(", visibility(generateInterfaces()), scalaWhitespaceSuffix(columnGetter), columnType, columnType);
|
||||
else if (kotlin)
|
||||
}
|
||||
else if (kotlin) {
|
||||
|
||||
// [#14853] The POJO property hasn't been generated in the setter, if the POJO
|
||||
// is immutable, as there are no setters.
|
||||
if (generateImmutablePojos())
|
||||
generateEmbeddablePojoProperty(out, generateImmutableInterfaces(), generateInterfaces(), columnTypeDeclared, columnMember);
|
||||
|
||||
out.tab(1).println("get(): %s = %s(", columnTypeDeclared, columnType);
|
||||
}
|
||||
else {
|
||||
out.overrideIf(generateInterfaces());
|
||||
out.println("%s%s %s() {", visibility(generateInterfaces()), columnType, columnGetter);
|
||||
@ -5511,7 +5520,7 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
out.println("%sdef %s(value: %s): %s = {", visibility(override), columnSetter, columnType, columnSetterReturnType);
|
||||
}
|
||||
else if (kotlin) {
|
||||
out.println("%s%svar %s: %s", visibility(override), override ? "override " : "", columnMember, columnType);
|
||||
generateEmbeddablePojoProperty(out, false, override, columnType, columnMember);
|
||||
out.tab(1).println("set(value): %s {", columnSetterReturnType);
|
||||
}
|
||||
else {
|
||||
@ -5545,6 +5554,10 @@ public class JavaGenerator extends AbstractGenerator {
|
||||
out.println("}");
|
||||
}
|
||||
|
||||
private void generateEmbeddablePojoProperty(JavaWriter out, boolean immutable, boolean override, String columnType, String columnMember) {
|
||||
out.println("%s%s%s %s: %s", visibility(override), override ? "override " : "", immutable ? "val" : "var", columnMember, columnType);
|
||||
}
|
||||
|
||||
/**
|
||||
* Subclasses may override this method to provide their own pojo setters.
|
||||
*/
|
||||
|
||||
Loading…
Reference in New Issue
Block a user