[jOOQ/jOOQ#10013] Add <constructorPropertiesAnnotation/> to generate @ConstructorProperties on pojos and records

This commit is contained in:
Lukas Eder 2020-03-31 11:27:08 +02:00
parent 06d4f1fe50
commit c2df94da47
28 changed files with 327 additions and 104 deletions

View File

@ -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;

View File

@ -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)

View File

@ -213,6 +213,37 @@ public interface Generator {
*/
void setGeneratedNullableAnnotationType(String generatedNullableAnnotationType);
/**
* Whether the <code>ConstructorProperties</code> annotation should be generated.
*/
void setGenerateConstructorPropertiesAnnotation(boolean generateConstructorPropertiesAnnotation);
/**
* Whether the <code>ConstructorProperties</code> annotation should be generated.
*/
boolean generateConstructorPropertiesAnnotation();
/**
* Whether the <code>ConstructorProperties</code> annotation should be generated on POJOs.
*/
void setGenerateConstructorPropertiesAnnotationOnPojos(boolean generateConstructorPropertiesAnnotationOnPojos);
/**
* Whether the <code>ConstructorProperties</code> annotation should be generated on POJOs.
*/
boolean generateConstructorPropertiesAnnotationOnPojos();
/**
* Whether the <code>ConstructorProperties</code> annotation should be generated on records.
*/
void setGenerateConstructorPropertiesAnnotationOnRecords(boolean generateConstructorPropertiesAnnotationOnRecords);
/**
* Whether the <code>ConstructorProperties</code> annotation should be generated on records.
*/
boolean generateConstructorPropertiesAnnotationOnRecords();
boolean useSchemaVersionProvider();
void setUseSchemaVersionProvider(boolean useSchemaVersionProvider);
boolean useCatalogVersionProvider();

View File

@ -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<String> arguments = new ArrayList<>(degree);
List<String> 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<String> 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 = "";

View File

@ -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 = "";

View File

@ -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")

View File

@ -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;

View File

@ -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

View File

@ -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")

View File

@ -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)

View File

@ -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;

View File

@ -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)

View File

@ -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 <code>true</code> 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 <code>true</code> 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()));

View File

@ -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";

View File

@ -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)

View File

@ -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)

View File

@ -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<MatchersSchemaType> schemas;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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 = "";

View File

@ -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";

View File

@ -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";

View File

@ -1155,6 +1155,18 @@ jOOQ version used for source code.]]></jxb:javadoc></jxb:property></appinfo></an
<element name="nullableAnnotationType" type="string" default="javax.annotation.Nullable" minOccurs="0" maxOccurs="1">
<annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Specify the qualified annotation name for all nullable items in generated code, defaulting to the JSR-305 {@link javax.annotation.Nullable} type.]]></jxb:javadoc></jxb:property></appinfo></annotation>
</element>
<element name="constructorPropertiesAnnotation" type="boolean" default="false" minOccurs="0" maxOccurs="1">
<annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate the {@link java.beans.ConstructorProperties} annotation on generated POJOs and/or records.]]></jxb:javadoc></jxb:property></appinfo></annotation>
</element>
<element name="constructorPropertiesAnnotationOnPojos" type="boolean" minOccurs="0" maxOccurs="1">
<annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate the {@link java.beans.ConstructorProperties} annotation on generated POJOs (defaults to <code>true</code> if {@link #constructorPropertiesAnnotation} is active).]]></jxb:javadoc></jxb:property></appinfo></annotation>
</element>
<element name="constructorPropertiesAnnotationOnRecords" type="boolean" minOccurs="0" maxOccurs="1">
<annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate the {@link java.beans.ConstructorProperties} annotation on generated records (defaults to <code>true</code> if {@link #constructorPropertiesAnnotation} is active).]]></jxb:javadoc></jxb:property></appinfo></annotation>
</element>
<element name="routines" type="boolean" default="true" minOccurs="0" maxOccurs="1">
<annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate Routine classes.]]></jxb:javadoc></jxb:property></appinfo></annotation>