From 39452d3680e076dc667fd5e0328b5b2d8bffc4da Mon Sep 17 00:00:00 2001 From: lukaseder Date: Thu, 13 Aug 2015 13:45:29 +0200 Subject: [PATCH] [#4470] Add code generation configuration to generate Spring annotations on select objects --- .../main/java/org/jooq/util/AbstractGenerator.java | 11 +++++++++++ .../src/main/java/org/jooq/util/GenerationTool.java | 2 ++ .../src/main/java/org/jooq/util/Generator.java | 12 ++++++++++++ .../src/main/java/org/jooq/util/JavaGenerator.java | 7 +++++++ jOOQ-examples/jOOQ-spring-example/pom.xml | 6 ++++-- jOOQ-meta/pom.xml | 2 +- .../src/main/resources/xjb/codegen/binding.xjb | 4 ++-- .../src/main/resources/xsd/jooq-codegen-3.7.0.xsd | 13 +++++-------- 8 files changed, 44 insertions(+), 13 deletions(-) diff --git a/jOOQ-codegen/src/main/java/org/jooq/util/AbstractGenerator.java b/jOOQ-codegen/src/main/java/org/jooq/util/AbstractGenerator.java index 448ec8eff5..d21d583ebd 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/util/AbstractGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/util/AbstractGenerator.java @@ -65,6 +65,7 @@ abstract class AbstractGenerator implements Generator { boolean generateDaos = false; boolean generateJPAAnnotations = false; boolean generateValidationAnnotations = false; + boolean generateSpringAnnotations = false; boolean generateGlobalObjectReferences = true; boolean generateGlobalRoutineReferences = true; boolean generateGlobalSequenceReferences = true; @@ -223,6 +224,16 @@ abstract class AbstractGenerator implements Generator { this.generateValidationAnnotations = generateValidationAnnotations; } + @Override + public boolean generateSpringAnnotations() { + return generateSpringAnnotations; + } + + @Override + public void setGenerateSpringAnnotations(boolean generateSpringAnnotations) { + this.generateSpringAnnotations = generateSpringAnnotations; + } + @Override public boolean generateGlobalObjectReferences() { return generateGlobalObjectReferences; diff --git a/jOOQ-codegen/src/main/java/org/jooq/util/GenerationTool.java b/jOOQ-codegen/src/main/java/org/jooq/util/GenerationTool.java index 2453cdda2a..b08b1465df 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/util/GenerationTool.java +++ b/jOOQ-codegen/src/main/java/org/jooq/util/GenerationTool.java @@ -396,6 +396,8 @@ public class GenerationTool { generator.setGenerateJPAAnnotations(g.getGenerate().isJpaAnnotations()); if (g.getGenerate().isValidationAnnotations() != null) generator.setGenerateValidationAnnotations(g.getGenerate().isValidationAnnotations()); + if (g.getGenerate().isSpringAnnotations() != null) + generator.setGenerateSpringAnnotations(g.getGenerate().isSpringAnnotations()); if (g.getGenerate().isGlobalObjectReferences() != null) generator.setGenerateGlobalObjectReferences(g.getGenerate().isGlobalObjectReferences()); if (g.getGenerate().isGlobalRoutineReferences() != null) diff --git a/jOOQ-codegen/src/main/java/org/jooq/util/Generator.java b/jOOQ-codegen/src/main/java/org/jooq/util/Generator.java index 8fdd65fe6e..a7f613ec75 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/util/Generator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/util/Generator.java @@ -182,6 +182,18 @@ public interface Generator { */ void setGenerateValidationAnnotations(boolean generateValidationAnnotations); + /** + * Whether DAOs should be annotated with useful spring annotations such as + * @Repository or @Autowired + */ + boolean generateSpringAnnotations(); + + /** + * Whether DAOs should be annotated with useful spring annotations such as + * @Repository or @Autowired + */ + void setGenerateSpringAnnotations(boolean generateSpringAnnotations); + /** * Whether global object references should be generated */ 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 00bb4706e0..938dbf56e0 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/util/JavaGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/util/JavaGenerator.java @@ -2149,6 +2149,9 @@ public class JavaGenerator extends AbstractGenerator { generateDaoClassJavadoc(table, out); printClassAnnotations(out, table.getSchema()); + if (generateSpringAnnotations()) + out.println("@%s", out.ref("org.springframework.stereotype.Repository")); + if (scala) out.println("class %s(configuration : %s) extends %s[%s, %s, %s](%s, classOf[%s], configuration)[[before= with ][%s]] {", className, Configuration.class, daoImpl, tableRecord, pType, tType, tableIdentifier, pType, interfaces); @@ -2177,6 +2180,10 @@ public class JavaGenerator extends AbstractGenerator { } else { out.tab(1).javadoc("Create a new %s with an attached configuration", className); + + if (generateSpringAnnotations()) + out.tab(1).println("@%s", out.ref("org.springframework.beans.factory.annotation.Autowired")); + out.tab(1).println("public %s(%s configuration) {", className, Configuration.class); out.tab(2).println("super(%s, %s.class, configuration);", tableIdentifier, pType); out.tab(1).println("}"); diff --git a/jOOQ-examples/jOOQ-spring-example/pom.xml b/jOOQ-examples/jOOQ-spring-example/pom.xml index 5665480f74..bdc331305f 100644 --- a/jOOQ-examples/jOOQ-spring-example/pom.xml +++ b/jOOQ-examples/jOOQ-spring-example/pom.xml @@ -19,9 +19,9 @@ UTF-8 4.1.2.RELEASE - 3.6.2 + 3.7.0-SNAPSHOT 1.4.181 - 1.8 + 1.8 @@ -210,6 +210,8 @@ true true + true + true org.jooq.example.db.h2 diff --git a/jOOQ-meta/pom.xml b/jOOQ-meta/pom.xml index 17099c3384..81ffd36d92 100644 --- a/jOOQ-meta/pom.xml +++ b/jOOQ-meta/pom.xml @@ -47,7 +47,7 @@ src/main/resources/xsd src/main/resources/xjb/codegen - jooq-codegen-3.6.0.xsd + jooq-codegen-3.7.0.xsd org.jooq.util.jaxb diff --git a/jOOQ-meta/src/main/resources/xjb/codegen/binding.xjb b/jOOQ-meta/src/main/resources/xjb/codegen/binding.xjb index 8ff43e6953..18556a2edd 100644 --- a/jOOQ-meta/src/main/resources/xjb/codegen/binding.xjb +++ b/jOOQ-meta/src/main/resources/xjb/codegen/binding.xjb @@ -11,7 +11,7 @@ - + @@ -19,7 +19,7 @@ - + diff --git a/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.7.0.xsd b/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.7.0.xsd index b8536784b0..d940e8f73c 100644 --- a/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.7.0.xsd +++ b/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.7.0.xsd @@ -687,6 +687,11 @@ --> + + + - - -