diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/AbstractGenerator.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/AbstractGenerator.java index aeea05a6de..dc3f516ea9 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/AbstractGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/AbstractGenerator.java @@ -37,6 +37,8 @@ */ package org.jooq.codegen; +import static java.lang.Boolean.TRUE; + import java.io.File; import java.sql.Connection; import java.sql.SQLException; @@ -56,92 +58,94 @@ import org.jooq.tools.JooqLogger; */ abstract class AbstractGenerator implements Generator { - private static final JooqLogger log = JooqLogger.getLogger(AbstractGenerator.class); + private static final JooqLogger log = JooqLogger.getLogger(AbstractGenerator.class); - boolean generateDeprecated = true; - boolean generateDeprecationOnUnknownTypes = true; - boolean generateIndexes = true; - boolean generateRelations = true; - boolean generateImplicitJoinPathsToOne = true; - boolean generateInstanceFields = true; - boolean generateGeneratedAnnotation = false; - GeneratedAnnotationType generatedGeneratedAnnotationType = GeneratedAnnotationType.DETECT_FROM_JDK; - boolean generateNonnullAnnotation = false; - String generatedNonnullAnnotationType = "javax.annotation.Nonnull"; - boolean generateNullableAnnotation = false; - String generatedNullableAnnotationType = "javax.annotation.Nullable"; - boolean useSchemaVersionProvider = false; - boolean useCatalogVersionProvider = false; - boolean generateRoutines = true; - boolean generateSequences = true; - boolean generateSequenceFlags = true; - boolean generateUDTs = true; - boolean generateTables = true; - boolean generateEmbeddables = true; - boolean generateRecords = true; - boolean generateRecordsImplementingRecordN = true; - boolean generatePojos = false; - boolean generatePojosEqualsAndHashCode = false; - boolean generatePojosToString = true; - boolean generateImmutablePojos = false; - boolean generateSerializablePojos = true; - boolean generateInterfaces = false; - boolean generateImmutableInterfaces = false; - boolean generateSerializableInterfaces = true; - boolean generateDaos = false; - boolean generateJPAAnnotations = false; - String generateJPAVersion = ""; - boolean generateValidationAnnotations = false; - boolean generateSpringAnnotations = false; - boolean generateQueues = true; - boolean generateLinks = true; - boolean generateKeys = true; - boolean generateGlobalObjectReferences = true; - boolean generateGlobalCatalogReferences = true; - boolean generateGlobalSchemaReferences = true; - boolean generateGlobalRoutineReferences = true; - boolean generateGlobalSequenceReferences = true; - boolean generateGlobalTableReferences = true; - boolean generateGlobalUDTReferences = true; - boolean generateGlobalQueueReferences = true; - boolean generateGlobalLinkReferences = true; - boolean generateGlobalKeyReferences = true; - boolean generateGlobalIndexReferences = true; - boolean generateJavadoc = true; - boolean generateComments = true; - boolean generateCommentsOnAttributes = true; - boolean generateCommentsOnCatalogs = true; - boolean generateCommentsOnColumns = true; - boolean generateCommentsOnKeys = true; - boolean generateCommentsOnLinks = true; - boolean generateCommentsOnPackages = true; - boolean generateCommentsOnParameters = true; - boolean generateCommentsOnQueues = true; - boolean generateCommentsOnRoutines = true; - boolean generateCommentsOnSchemas = true; - boolean generateCommentsOnSequences = true; - boolean generateCommentsOnTables = true; - boolean generateCommentsOnUDTs = true; - boolean generateSources = true; - boolean generateSourcesOnViews = true; - boolean generateFluentSetters = false; - boolean generateJavaBeansGettersAndSetters = false; - boolean generateVarargsSetters = true; - String generateFullyQualifiedTypes = ""; - boolean generateJavaTimeTypes = true; - boolean generateTableValuedFunctions = false; - boolean generateEmptyCatalogs = false; - boolean generateEmptySchemas = false; - boolean generatePrimaryKeyTypes = false; - String generateNewline = "\n"; + boolean generateDeprecated = true; + boolean generateDeprecationOnUnknownTypes = true; + boolean generateIndexes = true; + boolean generateRelations = true; + boolean generateImplicitJoinPathsToOne = true; + boolean generateInstanceFields = true; + boolean generateGeneratedAnnotation = false; + GeneratedAnnotationType generatedGeneratedAnnotationType = GeneratedAnnotationType.DETECT_FROM_JDK; + boolean generateNonnullAnnotation = false; + String generatedNonnullAnnotationType = "javax.annotation.Nonnull"; + boolean generateNullableAnnotation = false; + String generatedNullableAnnotationType = "javax.annotation.Nullable"; + boolean generateConstructorPropertiesAnnotation = false; + Boolean generateConstructorPropertiesAnnotationOnPojos; + Boolean generateConstructorPropertiesAnnotationOnRecords; + boolean useSchemaVersionProvider = false; + boolean useCatalogVersionProvider = false; + boolean generateRoutines = true; + boolean generateSequences = true; + boolean generateSequenceFlags = true; + boolean generateUDTs = true; + boolean generateTables = true; + boolean generateEmbeddables = true; + boolean generateRecords = true; + boolean generateRecordsImplementingRecordN = true; + boolean generatePojos = false; + boolean generatePojosEqualsAndHashCode = false; + boolean generatePojosToString = true; + boolean generateImmutablePojos = false; + boolean generateSerializablePojos = true; + boolean generateInterfaces = false; + boolean generateImmutableInterfaces = false; + boolean generateSerializableInterfaces = true; + boolean generateDaos = false; + boolean generateJPAAnnotations = false; + String generateJPAVersion = ""; + boolean generateValidationAnnotations = false; + boolean generateSpringAnnotations = false; + boolean generateQueues = true; + boolean generateLinks = true; + boolean generateKeys = true; + boolean generateGlobalObjectReferences = true; + boolean generateGlobalCatalogReferences = true; + boolean generateGlobalSchemaReferences = true; + boolean generateGlobalRoutineReferences = true; + boolean generateGlobalSequenceReferences = true; + boolean generateGlobalTableReferences = true; + boolean generateGlobalUDTReferences = true; + boolean generateGlobalQueueReferences = true; + boolean generateGlobalLinkReferences = true; + boolean generateGlobalKeyReferences = true; + boolean generateGlobalIndexReferences = true; + boolean generateJavadoc = true; + boolean generateComments = true; + boolean generateCommentsOnAttributes = true; + boolean generateCommentsOnCatalogs = true; + boolean generateCommentsOnColumns = true; + boolean generateCommentsOnKeys = true; + boolean generateCommentsOnLinks = true; + boolean generateCommentsOnPackages = true; + boolean generateCommentsOnParameters = true; + boolean generateCommentsOnQueues = true; + boolean generateCommentsOnRoutines = true; + boolean generateCommentsOnSchemas = true; + boolean generateCommentsOnSequences = true; + boolean generateCommentsOnTables = true; + boolean generateCommentsOnUDTs = true; + boolean generateSources = true; + boolean generateSourcesOnViews = true; + boolean generateFluentSetters = false; + boolean generateJavaBeansGettersAndSetters = false; + boolean generateVarargsSetters = true; + String generateFullyQualifiedTypes = ""; + boolean generateJavaTimeTypes = true; + boolean generateTableValuedFunctions = false; + boolean generateEmptyCatalogs = false; + boolean generateEmptySchemas = false; + boolean generatePrimaryKeyTypes = false; + String generateNewline = "\n"; String generateIndentation; protected GeneratorStrategyWrapper strategy; - protected String targetEncoding = "UTF-8"; - protected boolean targetClean = true; + protected String targetEncoding = "UTF-8"; + protected boolean targetClean = true; final Language language; - AbstractGenerator(Language language) { this.language = language; } @@ -343,6 +347,38 @@ abstract class AbstractGenerator implements Generator { this.generatedNullableAnnotationType = generatedNullableAnnotationType; } + @Override + public void setGenerateConstructorPropertiesAnnotation(boolean generateConstructorPropertiesAnnotation) { + this.generateConstructorPropertiesAnnotation = generateConstructorPropertiesAnnotation; + } + + @Override + public boolean generateConstructorPropertiesAnnotation() { + return generateConstructorPropertiesAnnotation; + } + + @Override + public void setGenerateConstructorPropertiesAnnotationOnPojos(boolean generateConstructorPropertiesAnnotationOnPojos) { + this.generateConstructorPropertiesAnnotationOnPojos = generateConstructorPropertiesAnnotationOnPojos; + } + + @Override + public boolean generateConstructorPropertiesAnnotationOnPojos() { + return TRUE.equals(generateConstructorPropertiesAnnotationOnPojos) || + generateConstructorPropertiesAnnotation() && generateConstructorPropertiesAnnotationOnPojos == null; + } + + @Override + public void setGenerateConstructorPropertiesAnnotationOnRecords(boolean generateConstructorPropertiesAnnotationOnRecords) { + this.generateConstructorPropertiesAnnotationOnRecords = generateConstructorPropertiesAnnotationOnRecords; + } + + @Override + public boolean generateConstructorPropertiesAnnotationOnRecords() { + return TRUE.equals(generateConstructorPropertiesAnnotationOnPojos) || + generateConstructorPropertiesAnnotation() && generateConstructorPropertiesAnnotationOnRecords == null; + } + @Override public boolean useSchemaVersionProvider() { return useSchemaVersionProvider; diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java index e56c4ee3ba..7bedfc3139 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java @@ -678,6 +678,12 @@ public class GenerationTool { generator.setGenerateNullableAnnotation(g.getGenerate().isNullableAnnotation()); if (g.getGenerate().getNullableAnnotationType() != null) generator.setGeneratedNullableAnnotationType(g.getGenerate().getNullableAnnotationType()); + if (g.getGenerate().isConstructorPropertiesAnnotation() != null) + generator.setGenerateConstructorPropertiesAnnotation(g.getGenerate().isConstructorPropertiesAnnotation()); + if (g.getGenerate().isConstructorPropertiesAnnotationOnPojos() != null) + generator.setGenerateConstructorPropertiesAnnotationOnPojos(g.getGenerate().isConstructorPropertiesAnnotationOnPojos()); + if (g.getGenerate().isConstructorPropertiesAnnotationOnRecords() != null) + generator.setGenerateConstructorPropertiesAnnotationOnRecords(g.getGenerate().isConstructorPropertiesAnnotationOnRecords()); if (g.getGenerate().isRoutines() != null) generator.setGenerateRoutines(g.getGenerate().isRoutines()); if (g.getGenerate().isSequences() != null) diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/Generator.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/Generator.java index 06588dd93e..3e23f0c36a 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/Generator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/Generator.java @@ -213,6 +213,37 @@ public interface Generator { */ void setGeneratedNullableAnnotationType(String generatedNullableAnnotationType); + /** + * Whether the ConstructorProperties annotation should be generated. + */ + void setGenerateConstructorPropertiesAnnotation(boolean generateConstructorPropertiesAnnotation); + + /** + * Whether the ConstructorProperties annotation should be generated. + */ + boolean generateConstructorPropertiesAnnotation(); + + /** + * Whether the ConstructorProperties annotation should be generated on POJOs. + */ + void setGenerateConstructorPropertiesAnnotationOnPojos(boolean generateConstructorPropertiesAnnotationOnPojos); + + /** + * Whether the ConstructorProperties annotation should be generated on POJOs. + */ + boolean generateConstructorPropertiesAnnotationOnPojos(); + + /** + * Whether the ConstructorProperties annotation should be generated on records. + */ + void setGenerateConstructorPropertiesAnnotationOnRecords(boolean generateConstructorPropertiesAnnotationOnRecords); + + /** + * Whether the ConstructorProperties annotation should be generated on records. + */ + boolean generateConstructorPropertiesAnnotationOnRecords(); + + boolean useSchemaVersionProvider(); void setUseSchemaVersionProvider(boolean useSchemaVersionProvider); boolean useCatalogVersionProvider(); diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java index e431dc9556..5812d79c49 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java @@ -52,6 +52,7 @@ import static org.jooq.meta.AbstractTypedElementDefinition.getDataType; import static org.jooq.tools.StringUtils.defaultIfBlank; import static org.jooq.tools.StringUtils.defaultString; +import java.beans.ConstructorProperties; import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; @@ -1585,6 +1586,7 @@ public class JavaGenerator extends AbstractGenerator { // [#3176] Avoid generating constructors for tables with more than 255 columns (Java's method argument limit) if (degree > 0 && degree < 256) { List arguments = new ArrayList<>(degree); + List properties = new ArrayList<>(degree); for (int i = 0; i < degree; i++) { final TypedElementDefinition column = columns.get(i); @@ -1599,6 +1601,8 @@ public class JavaGenerator extends AbstractGenerator { arguments.add((nullableAnnotation == null ? "" : "@" + nullableAnnotation + " ") + type + " " + columnMember); } + + properties.add("\"" + escapeString(columnMember) + "\""); } out.tab(1).javadoc("Create a detached, initialised %s", className); @@ -1608,6 +1612,9 @@ public class JavaGenerator extends AbstractGenerator { out.tab(2).println("this()", tableIdentifier); } else { + if (generateConstructorPropertiesAnnotationOnRecords()) + out.tab(1).println("@%s({ [[%s]] })", ConstructorProperties.class, properties); + out.tab(1).println("public %s([[%s]]) {", className, arguments); if (tableUdtOrEmbeddable instanceof EmbeddableDefinition) @@ -3381,10 +3388,13 @@ public class JavaGenerator extends AbstractGenerator { */ protected void generatePojoMultiConstructor(Definition tableOrUDT, JavaWriter out) { final String className = getStrategy().getJavaClassName(tableOrUDT, Mode.POJO); + final List properties = new ArrayList<>(); int maxLength = 0; - for (TypedElementDefinition column : getTypedElements(tableOrUDT)) + for (TypedElementDefinition column : getTypedElements(tableOrUDT)) { maxLength = Math.max(maxLength, out.ref(getJavaType(column.getType(resolver(Mode.POJO)), Mode.POJO)).length()); + properties.add("\"" + escapeString(getStrategy().getJavaMemberName(column, Mode.POJO)) + "\""); + } if (scala) { } @@ -3394,6 +3404,10 @@ public class JavaGenerator extends AbstractGenerator { else if (getTypedElements(tableOrUDT).size() > 0 && getTypedElements(tableOrUDT).size() < 256) { out.println(); + + if (generateConstructorPropertiesAnnotationOnPojos()) + out.tab(1).println("@%s({ [[%s]] })", ConstructorProperties.class, properties); + out.tab(1).print("public %s(", className); String separator1 = ""; diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/CatalogMappingType.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/CatalogMappingType.java index 1e38a0c15c..277175f2b8 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/CatalogMappingType.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/CatalogMappingType.java @@ -32,7 +32,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder; public class CatalogMappingType implements Serializable, XMLAppendable { - private final static long serialVersionUID = 31200L; + private final static long serialVersionUID = 31400L; @XmlElement(required = true, defaultValue = "") @XmlJavaTypeAdapter(StringAdapter.class) protected String inputCatalog = ""; diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Configuration.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Configuration.java index f6db3634a2..cf18a562d1 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Configuration.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Configuration.java @@ -48,7 +48,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder; public class Configuration implements Serializable, XMLAppendable { - private final static long serialVersionUID = 31200L; + private final static long serialVersionUID = 31400L; @XmlSchemaType(name = "string") protected Logging logging; @XmlElement(defaultValue = "FAIL") diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/CustomType.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/CustomType.java index 793c7b0e4e..dcb79cbcb1 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/CustomType.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/CustomType.java @@ -29,7 +29,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder; public class CustomType implements Serializable, XMLAppendable { - private final static long serialVersionUID = 31200L; + private final static long serialVersionUID = 31400L; @XmlElement(required = true) @XmlJavaTypeAdapter(StringAdapter.class) protected String name; diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Database.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Database.java index 05acc43c69..86b55e67db 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Database.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Database.java @@ -33,7 +33,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder; public class Database implements Serializable, XMLAppendable { - private final static long serialVersionUID = 31200L; + private final static long serialVersionUID = 31400L; @XmlJavaTypeAdapter(StringAdapter.class) protected String name; @XmlList diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Embeddable.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Embeddable.java index f5ef297b78..71609b7567 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Embeddable.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Embeddable.java @@ -32,7 +32,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder; public class Embeddable implements Serializable, XMLAppendable { - private final static long serialVersionUID = 31200L; + private final static long serialVersionUID = 31400L; @XmlJavaTypeAdapter(StringAdapter.class) protected String name; @XmlElementWrapper(name = "fields") diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/EmbeddableField.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/EmbeddableField.java index 297b7419b4..a1d62453d1 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/EmbeddableField.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/EmbeddableField.java @@ -42,7 +42,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder; public class EmbeddableField implements Serializable, XMLAppendable { - private final static long serialVersionUID = 31200L; + private final static long serialVersionUID = 31400L; @XmlJavaTypeAdapter(StringAdapter.class) protected String name; @XmlElement(required = true) diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/EnumType.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/EnumType.java index 14119da627..db2581f2ae 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/EnumType.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/EnumType.java @@ -42,7 +42,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder; public class EnumType implements Serializable, XMLAppendable { - private final static long serialVersionUID = 31200L; + private final static long serialVersionUID = 31400L; @XmlElement(required = true) @XmlJavaTypeAdapter(StringAdapter.class) protected String name; diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/ForcedType.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/ForcedType.java index e13a188820..d784ddf04e 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/ForcedType.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/ForcedType.java @@ -29,7 +29,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder; public class ForcedType implements Serializable, XMLAppendable { - private final static long serialVersionUID = 31200L; + private final static long serialVersionUID = 31400L; @XmlJavaTypeAdapter(StringAdapter.class) protected String name; @XmlJavaTypeAdapter(StringAdapter.class) diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Generate.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Generate.java index 0a5f02c237..f644d42e71 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Generate.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Generate.java @@ -29,7 +29,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder; public class Generate implements Serializable, XMLAppendable { - private final static long serialVersionUID = 31200L; + private final static long serialVersionUID = 31400L; @XmlElement(defaultValue = "true") protected Boolean indexes = true; @XmlElement(defaultValue = "true") @@ -59,6 +59,10 @@ public class Generate implements Serializable, XMLAppendable @XmlElement(defaultValue = "javax.annotation.Nullable") @XmlJavaTypeAdapter(StringAdapter.class) protected String nullableAnnotationType = "javax.annotation.Nullable"; + @XmlElement(defaultValue = "false") + protected Boolean constructorPropertiesAnnotation = false; + protected Boolean constructorPropertiesAnnotationOnPojos; + protected Boolean constructorPropertiesAnnotationOnRecords; @XmlElement(defaultValue = "true") protected Boolean routines = true; @XmlElement(defaultValue = "true") @@ -480,6 +484,78 @@ public class Generate implements Serializable, XMLAppendable this.nullableAnnotationType = value; } + /** + * Generate the {@link java.beans.ConstructorProperties} annotation on generated POJOs and/or records. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isConstructorPropertiesAnnotation() { + return constructorPropertiesAnnotation; + } + + /** + * Sets the value of the constructorPropertiesAnnotation property. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setConstructorPropertiesAnnotation(Boolean value) { + this.constructorPropertiesAnnotation = value; + } + + /** + * Generate the {@link java.beans.ConstructorProperties} annotation on generated POJOs (defaults to true if {@link #constructorPropertiesAnnotation} is active). + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isConstructorPropertiesAnnotationOnPojos() { + return constructorPropertiesAnnotationOnPojos; + } + + /** + * Sets the value of the constructorPropertiesAnnotationOnPojos property. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setConstructorPropertiesAnnotationOnPojos(Boolean value) { + this.constructorPropertiesAnnotationOnPojos = value; + } + + /** + * Generate the {@link java.beans.ConstructorProperties} annotation on generated records (defaults to true if {@link #constructorPropertiesAnnotation} is active). + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isConstructorPropertiesAnnotationOnRecords() { + return constructorPropertiesAnnotationOnRecords; + } + + /** + * Sets the value of the constructorPropertiesAnnotationOnRecords property. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setConstructorPropertiesAnnotationOnRecords(Boolean value) { + this.constructorPropertiesAnnotationOnRecords = value; + } + /** * Generate Routine classes. * @@ -2020,6 +2096,21 @@ public class Generate implements Serializable, XMLAppendable return this; } + public Generate withConstructorPropertiesAnnotation(Boolean value) { + setConstructorPropertiesAnnotation(value); + return this; + } + + public Generate withConstructorPropertiesAnnotationOnPojos(Boolean value) { + setConstructorPropertiesAnnotationOnPojos(value); + return this; + } + + public Generate withConstructorPropertiesAnnotationOnRecords(Boolean value) { + setConstructorPropertiesAnnotationOnRecords(value); + return this; + } + public Generate withRoutines(Boolean value) { setRoutines(value); return this; @@ -2360,6 +2451,9 @@ public class Generate implements Serializable, XMLAppendable builder.append("nonnullAnnotationType", nonnullAnnotationType); builder.append("nullableAnnotation", nullableAnnotation); builder.append("nullableAnnotationType", nullableAnnotationType); + builder.append("constructorPropertiesAnnotation", constructorPropertiesAnnotation); + builder.append("constructorPropertiesAnnotationOnPojos", constructorPropertiesAnnotationOnPojos); + builder.append("constructorPropertiesAnnotationOnRecords", constructorPropertiesAnnotationOnRecords); builder.append("routines", routines); builder.append("sequences", sequences); builder.append("udts", udts); @@ -2559,6 +2653,33 @@ public class Generate implements Serializable, XMLAppendable return false; } } + if (constructorPropertiesAnnotation == null) { + if (other.constructorPropertiesAnnotation!= null) { + return false; + } + } else { + if (!constructorPropertiesAnnotation.equals(other.constructorPropertiesAnnotation)) { + return false; + } + } + if (constructorPropertiesAnnotationOnPojos == null) { + if (other.constructorPropertiesAnnotationOnPojos!= null) { + return false; + } + } else { + if (!constructorPropertiesAnnotationOnPojos.equals(other.constructorPropertiesAnnotationOnPojos)) { + return false; + } + } + if (constructorPropertiesAnnotationOnRecords == null) { + if (other.constructorPropertiesAnnotationOnRecords!= null) { + return false; + } + } else { + if (!constructorPropertiesAnnotationOnRecords.equals(other.constructorPropertiesAnnotationOnRecords)) { + return false; + } + } if (routines == null) { if (other.routines!= null) { return false; @@ -3128,6 +3249,9 @@ public class Generate implements Serializable, XMLAppendable result = ((prime*result)+((nonnullAnnotationType == null)? 0 :nonnullAnnotationType.hashCode())); result = ((prime*result)+((nullableAnnotation == null)? 0 :nullableAnnotation.hashCode())); result = ((prime*result)+((nullableAnnotationType == null)? 0 :nullableAnnotationType.hashCode())); + result = ((prime*result)+((constructorPropertiesAnnotation == null)? 0 :constructorPropertiesAnnotation.hashCode())); + result = ((prime*result)+((constructorPropertiesAnnotationOnPojos == null)? 0 :constructorPropertiesAnnotationOnPojos.hashCode())); + result = ((prime*result)+((constructorPropertiesAnnotationOnRecords == null)? 0 :constructorPropertiesAnnotationOnRecords.hashCode())); result = ((prime*result)+((routines == null)? 0 :routines.hashCode())); result = ((prime*result)+((sequences == null)? 0 :sequences.hashCode())); result = ((prime*result)+((udts == null)? 0 :udts.hashCode())); diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Generator.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Generator.java index 32d6cd0ad6..79f096378b 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Generator.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Generator.java @@ -28,7 +28,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder; public class Generator implements Serializable, XMLAppendable { - private final static long serialVersionUID = 31200L; + private final static long serialVersionUID = 31400L; @XmlElement(defaultValue = "org.jooq.codegen.DefaultGenerator") @XmlJavaTypeAdapter(StringAdapter.class) protected String name = "org.jooq.codegen.DefaultGenerator"; diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Jdbc.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Jdbc.java index de50b2989d..77a55449eb 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Jdbc.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Jdbc.java @@ -32,7 +32,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder; public class Jdbc implements Serializable, XMLAppendable { - private final static long serialVersionUID = 31200L; + private final static long serialVersionUID = 31400L; @XmlJavaTypeAdapter(StringAdapter.class) protected String driver; @XmlElement(required = true) diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatcherRule.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatcherRule.java index 5f32cc314c..eb6f26ea87 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatcherRule.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatcherRule.java @@ -43,7 +43,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder; public class MatcherRule implements Serializable, XMLAppendable { - private final static long serialVersionUID = 31200L; + private final static long serialVersionUID = 31400L; @XmlSchemaType(name = "string") protected MatcherTransformType transform; @XmlElement(required = true) diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Matchers.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Matchers.java index cf4296ba7e..fe8b2dd713 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Matchers.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Matchers.java @@ -35,7 +35,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder; public class Matchers implements Serializable, XMLAppendable { - private final static long serialVersionUID = 31200L; + private final static long serialVersionUID = 31400L; @XmlElementWrapper(name = "schemas") @XmlElement(name = "schema") protected List schemas; diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersEnumType.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersEnumType.java index f501889323..48bc818d8e 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersEnumType.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersEnumType.java @@ -27,7 +27,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder; public class MatchersEnumType implements Serializable, XMLAppendable { - private final static long serialVersionUID = 31200L; + private final static long serialVersionUID = 31400L; @XmlJavaTypeAdapter(StringAdapter.class) protected String expression; protected MatcherRule enumClass; diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersFieldType.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersFieldType.java index ec6e1a1aaf..4ae531b25c 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersFieldType.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersFieldType.java @@ -27,7 +27,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder; public class MatchersFieldType implements Serializable, XMLAppendable { - private final static long serialVersionUID = 31200L; + private final static long serialVersionUID = 31400L; @XmlJavaTypeAdapter(StringAdapter.class) protected String expression; protected MatcherRule fieldIdentifier; diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersRoutineType.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersRoutineType.java index 58fc7990af..ead055130a 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersRoutineType.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersRoutineType.java @@ -27,7 +27,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder; public class MatchersRoutineType implements Serializable, XMLAppendable { - private final static long serialVersionUID = 31200L; + private final static long serialVersionUID = 31400L; @XmlJavaTypeAdapter(StringAdapter.class) protected String expression; protected MatcherRule routineClass; diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersSchemaType.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersSchemaType.java index ba80e75352..02f1cbd7ce 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersSchemaType.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersSchemaType.java @@ -27,7 +27,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder; public class MatchersSchemaType implements Serializable, XMLAppendable { - private final static long serialVersionUID = 31200L; + private final static long serialVersionUID = 31400L; @XmlJavaTypeAdapter(StringAdapter.class) protected String expression; protected MatcherRule schemaClass; diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersSequenceType.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersSequenceType.java index b5e2627015..9af9c16277 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersSequenceType.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersSequenceType.java @@ -27,7 +27,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder; public class MatchersSequenceType implements Serializable, XMLAppendable { - private final static long serialVersionUID = 31200L; + private final static long serialVersionUID = 31400L; @XmlJavaTypeAdapter(StringAdapter.class) protected String expression; protected MatcherRule sequenceIdentifier; diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersTableType.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersTableType.java index 5dd0c24d66..3a8781fb25 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersTableType.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersTableType.java @@ -27,7 +27,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder; public class MatchersTableType implements Serializable, XMLAppendable { - private final static long serialVersionUID = 31200L; + private final static long serialVersionUID = 31400L; @XmlJavaTypeAdapter(StringAdapter.class) protected String expression; protected MatcherRule tableClass; diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Property.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Property.java index cf5f42ac62..83faa2ea4b 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Property.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Property.java @@ -29,7 +29,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder; public class Property implements Serializable, XMLAppendable { - private final static long serialVersionUID = 31200L; + private final static long serialVersionUID = 31400L; @XmlElement(required = true) @XmlJavaTypeAdapter(StringAdapter.class) protected String key; diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/SchemaMappingType.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/SchemaMappingType.java index bc9280b6b0..f017551d92 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/SchemaMappingType.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/SchemaMappingType.java @@ -28,7 +28,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder; public class SchemaMappingType implements Serializable, XMLAppendable { - private final static long serialVersionUID = 31200L; + private final static long serialVersionUID = 31400L; @XmlElement(required = true, defaultValue = "") @XmlJavaTypeAdapter(StringAdapter.class) protected String inputSchema = ""; diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Strategy.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Strategy.java index bebcada569..f3beb15129 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Strategy.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Strategy.java @@ -29,7 +29,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder; public class Strategy implements Serializable, XMLAppendable { - private final static long serialVersionUID = 31200L; + private final static long serialVersionUID = 31400L; @XmlElement(defaultValue = "org.jooq.codegen.DefaultGeneratorStrategy") @XmlJavaTypeAdapter(StringAdapter.class) protected String name = "org.jooq.codegen.DefaultGeneratorStrategy"; diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Target.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Target.java index 5589dd0171..2dee29da11 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Target.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Target.java @@ -28,7 +28,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder; public class Target implements Serializable, XMLAppendable { - private final static long serialVersionUID = 31200L; + private final static long serialVersionUID = 31400L; @XmlElement(defaultValue = "org.jooq.generated") @XmlJavaTypeAdapter(StringAdapter.class) protected String packageName = "org.jooq.generated"; diff --git a/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.13.0.xsd b/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.14.0.xsd similarity index 98% rename from jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.13.0.xsd rename to jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.14.0.xsd index 4f1561e53d..a251b981a1 100644 --- a/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.13.0.xsd +++ b/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.14.0.xsd @@ -1155,6 +1155,18 @@ jOOQ version used for source code.]]> + + + + + + + true if {@link #constructorPropertiesAnnotation} is active).]]> + + + + true if {@link #constructorPropertiesAnnotation} is active).]]> +