From 38f2ccef8aab8b82de2e71249dc131204cc7b86e Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Mon, 13 Feb 2023 17:06:26 +0100 Subject: [PATCH] [jOOQ/jOOQ#14534] Add option to the code generator --- .../org/jooq/codegen/AbstractGenerator.java | 13 +++++- .../java/org/jooq/codegen/GenerationTool.java | 2 + .../main/java/org/jooq/codegen/Generator.java | 12 ++++++ .../java/org/jooq/codegen/JavaGenerator.java | 11 +++-- .../java/org/jooq/meta/jaxb/Generate.java | 42 +++++++++++++++++++ .../org/jooq/meta/xsd/jooq-codegen-3.18.0.xsd | 4 ++ 6 files changed, 79 insertions(+), 5 deletions(-) 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 1c03f33b36..c2afc97d44 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/AbstractGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/AbstractGenerator.java @@ -75,7 +75,8 @@ abstract class AbstractGenerator implements Generator { VisibilityModifier generateVisibilityModifier = VisibilityModifier.DEFAULT; boolean generateGeneratedAnnotation = false; GeneratedAnnotationType generatedGeneratedAnnotationType = GeneratedAnnotationType.DETECT_FROM_JDK; - boolean generateGeneratedAnnotationDate = true; + boolean generateGeneratedAnnotationDate = false; + boolean generateGeneratedAnnotationJooqVersion = true; boolean generateNonnullAnnotation = false; String generatedNonnullAnnotationType = "javax.annotation.Nonnull"; boolean generateNullableAnnotation = false; @@ -375,6 +376,16 @@ abstract class AbstractGenerator implements Generator { this.generateGeneratedAnnotationDate = generateGeneratedAnnotationDate; } + @Override + public boolean generateGeneratedAnnotationJooqVersion() { + return generateGeneratedAnnotationJooqVersion; + } + + @Override + public void setGenerateGeneratedAnnotationJooqVersion(boolean generateGeneratedAnnotationJooqVersion) { + this.generateGeneratedAnnotationJooqVersion = generateGeneratedAnnotationJooqVersion; + } + @Override public boolean generateNonnullAnnotation() { return generateNonnullAnnotation; 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 ab43c7feac..8a9fea6505 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java @@ -749,6 +749,8 @@ public class GenerationTool { generator.setGenerateGeneratedAnnotationType(g.getGenerate().getGeneratedAnnotationType()); if (g.getGenerate().isGeneratedAnnotationDate() != null) generator.setGenerateGeneratedAnnotationDate(g.getGenerate().isGeneratedAnnotationDate()); + if (g.getGenerate().isGeneratedAnnotationJooqVersion() != null) + generator.setGenerateGeneratedAnnotationJooqVersion(g.getGenerate().isGeneratedAnnotationJooqVersion()); if (g.getGenerate().isNonnullAnnotation() != null) generator.setGenerateNonnullAnnotation(g.getGenerate().isNonnullAnnotation()); if (g.getGenerate().getNonnullAnnotationType() != 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 31a9ae8c74..f8148a0ef0 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/Generator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/Generator.java @@ -210,6 +210,18 @@ public interface Generator { */ void setGenerateGeneratedAnnotationDate(boolean generateGeneratedAnnotationDate); + /** + * Whether the {@link javax.annotation.processing.Generated} annotation + * should include the jOOQ version. + */ + boolean generateGeneratedAnnotationJooqVersion(); + + /** + * Whether the {@link javax.annotation.processing.Generated} annotation + * should include the jOOQ version. + */ + void setGenerateGeneratedAnnotationJooqVersion(boolean generateGeneratedAnnotationJooqVersion); + /** * Whether Nonnull annotations should be generated. *

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 c2382d0fa6..0aa439f929 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java @@ -9194,9 +9194,10 @@ public class JavaGenerator extends AbstractGenerator { else out.println("value = {"); - out.println("\"https://www.jooq.org\","); - out.println("\"jOOQ version:%s\"%s", Constants.VERSION, (hasCatalogVersion || hasSchemaVersion ? "," : "")); + out.println("\"https://www.jooq.org\"%s", (generateGeneratedAnnotationJooqVersion() || hasCatalogVersion || hasSchemaVersion ? "," : "")); + if (generateGeneratedAnnotationJooqVersion()) + out.println("\"jOOQ version:%s\"%s", Constants.VERSION, (hasCatalogVersion || hasSchemaVersion ? "," : "")); if (hasCatalogVersion) out.println("\"catalog version:%s\"%s", escapeString(catalogVersions.get(catalog)), (hasSchemaVersion ? "," : "")); if (hasSchemaVersion) @@ -9221,8 +9222,10 @@ public class JavaGenerator extends AbstractGenerator { else out.println("value = {"); - out.println("\"https://www.jooq.org\","); - out.println("\"jOOQ version:%s\"", Constants.VERSION); + out.println("\"https://www.jooq.org\"%s", (generateGeneratedAnnotationJooqVersion() ? "," : "")); + + if (generateGeneratedAnnotationJooqVersion()) + out.println("\"jOOQ version:%s\"", Constants.VERSION); if (scala) out.println("),"); 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 f9b36d0a61..05255cb0b2 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 @@ -58,6 +58,8 @@ public class Generate implements Serializable, XMLAppendable protected GeneratedAnnotationType generatedAnnotationType = GeneratedAnnotationType.DETECT_FROM_JDK; @XmlElement(defaultValue = "false") protected Boolean generatedAnnotationDate = false; + @XmlElement(defaultValue = "true") + protected Boolean generatedAnnotationJooqVersion = true; @XmlElement(defaultValue = "false") protected Boolean nonnullAnnotation = false; @XmlElement(defaultValue = "javax.annotation.Nonnull") @@ -551,6 +553,30 @@ public class Generate implements Serializable, XMLAppendable this.generatedAnnotationDate = value; } + /** + * Whether the {@link javax.annotation.processing.Generated} annotation should include the jOOQ version. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isGeneratedAnnotationJooqVersion() { + return generatedAnnotationJooqVersion; + } + + /** + * Sets the value of the generatedAnnotationJooqVersion property. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setGeneratedAnnotationJooqVersion(Boolean value) { + this.generatedAnnotationJooqVersion = value; + } + /** * Whether non-nullable items should be annotated with the annotation type specified in {@link #nonnullAnnotationType}. In SQL and by consequence in jOOQ, non-nullability cannot be guaranteed statically. There may still be some cases (e.g. after unions, outer joins, etc.) where a normally non-null value turns out to be null! * @@ -2665,6 +2691,11 @@ public class Generate implements Serializable, XMLAppendable return this; } + public Generate withGeneratedAnnotationJooqVersion(Boolean value) { + setGeneratedAnnotationJooqVersion(value); + return this; + } + public Generate withNonnullAnnotation(Boolean value) { setNonnullAnnotation(value); return this; @@ -3159,6 +3190,7 @@ public class Generate implements Serializable, XMLAppendable builder.append("generatedAnnotation", generatedAnnotation); builder.append("generatedAnnotationType", generatedAnnotationType); builder.append("generatedAnnotationDate", generatedAnnotationDate); + builder.append("generatedAnnotationJooqVersion", generatedAnnotationJooqVersion); builder.append("nonnullAnnotation", nonnullAnnotation); builder.append("nonnullAnnotationType", nonnullAnnotationType); builder.append("nullableAnnotation", nullableAnnotation); @@ -3384,6 +3416,15 @@ public class Generate implements Serializable, XMLAppendable return false; } } + if (generatedAnnotationJooqVersion == null) { + if (other.generatedAnnotationJooqVersion!= null) { + return false; + } + } else { + if (!generatedAnnotationJooqVersion.equals(other.generatedAnnotationJooqVersion)) { + return false; + } + } if (nonnullAnnotation == null) { if (other.nonnullAnnotation!= null) { return false; @@ -4187,6 +4228,7 @@ public class Generate implements Serializable, XMLAppendable result = ((prime*result)+((generatedAnnotation == null)? 0 :generatedAnnotation.hashCode())); result = ((prime*result)+((generatedAnnotationType == null)? 0 :generatedAnnotationType.hashCode())); result = ((prime*result)+((generatedAnnotationDate == null)? 0 :generatedAnnotationDate.hashCode())); + result = ((prime*result)+((generatedAnnotationJooqVersion == null)? 0 :generatedAnnotationJooqVersion.hashCode())); result = ((prime*result)+((nonnullAnnotation == null)? 0 :nonnullAnnotation.hashCode())); result = ((prime*result)+((nonnullAnnotationType == null)? 0 :nonnullAnnotationType.hashCode())); result = ((prime*result)+((nullableAnnotation == null)? 0 :nullableAnnotation.hashCode())); diff --git a/jOOQ-meta/src/main/resources/org/jooq/meta/xsd/jooq-codegen-3.18.0.xsd b/jOOQ-meta/src/main/resources/org/jooq/meta/xsd/jooq-codegen-3.18.0.xsd index beb57e362b..bea998d334 100644 --- a/jOOQ-meta/src/main/resources/org/jooq/meta/xsd/jooq-codegen-3.18.0.xsd +++ b/jOOQ-meta/src/main/resources/org/jooq/meta/xsd/jooq-codegen-3.18.0.xsd @@ -2010,6 +2010,10 @@ jOOQ version used for source code.]]>date attribute.]]> + + + +