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 552505805b..29581f74f5 100644
--- a/jOOQ-codegen/src/main/java/org/jooq/util/AbstractGenerator.java
+++ b/jOOQ-codegen/src/main/java/org/jooq/util/AbstractGenerator.java
@@ -51,50 +51,51 @@ 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 generateRelations = true;
- boolean generateInstanceFields = true;
- boolean generateGeneratedAnnotation = true;
- boolean useSchemaVersionProvider = false;
- boolean useCatalogVersionProvider = false;
- boolean generateRoutines = true;
- boolean generateSequences = true;
- boolean generateUDTs = true;
- boolean generateTables = true;
- boolean generateRecords = true;
- boolean generatePojos = false;
- boolean generatePojosEqualsAndHashCode = false;
- boolean generatePojosToString = true;
- boolean generateImmutablePojos = false;
- boolean generateInterfaces = false;
- boolean generateImmutableInterfaces = false;
- boolean generateDaos = false;
- boolean generateJPAAnnotations = false;
- boolean generateValidationAnnotations = false;
- boolean generateSpringAnnotations = false;
- boolean generateQueues = true;
- boolean generateLinks = 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 generateFluentSetters = false;
- boolean generateVarargsSetters = true;
- String generateFullyQualifiedTypes = "";
- boolean generateJavaTimeTypes = false;
- boolean generateTableValuedFunctions = false;
- boolean generateEmptyCatalogs = false;
- boolean generateEmptySchemas = false;
+ boolean generateDeprecated = true;
+ boolean generateRelations = true;
+ boolean generateInstanceFields = true;
+ boolean generateGeneratedAnnotation = true;
+ boolean useSchemaVersionProvider = false;
+ boolean useCatalogVersionProvider = false;
+ boolean generateRoutines = true;
+ boolean generateSequences = true;
+ boolean generateUDTs = true;
+ boolean generateTables = true;
+ boolean generateRecords = true;
+ boolean generatePojos = false;
+ boolean generatePojosEqualsAndHashCode = false;
+ boolean generatePojosToString = true;
+ boolean generateImmutablePojos = false;
+ boolean generateInterfaces = false;
+ boolean generateImmutableInterfaces = false;
+ boolean generateDaos = false;
+ boolean generateJPAAnnotations = false;
+ boolean generateValidationAnnotations = false;
+ boolean generateSpringAnnotations = false;
+ boolean generateQueues = true;
+ boolean generateLinks = 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 generateFluentSetters = false;
+ boolean generateJavaBeansGettersAndSetters = false;
+ boolean generateVarargsSetters = true;
+ String generateFullyQualifiedTypes = "";
+ boolean generateJavaTimeTypes = false;
+ boolean generateTableValuedFunctions = false;
+ boolean generateEmptyCatalogs = false;
+ boolean generateEmptySchemas = false;
protected GeneratorStrategyWrapper strategy;
- protected String targetEncoding = "UTF-8";
+ protected String targetEncoding = "UTF-8";
final Language language;
AbstractGenerator(Language language) {
@@ -507,6 +508,16 @@ abstract class AbstractGenerator implements Generator {
this.generateFluentSetters = fluentSetters;
}
+ @Override
+ public boolean generateJavaBeansGettersAndSetters() {
+ return generateJavaBeansGettersAndSetters;
+ }
+
+ @Override
+ public void setGenerateJavaBeansGettersAndSetters(boolean javaBeansGettersAndSetters) {
+ this.generateJavaBeansGettersAndSetters = javaBeansGettersAndSetters;
+ }
+
@Override
public boolean generateVarargsSetters() {
return generateVarargsSetters;
diff --git a/jOOQ-codegen/src/main/java/org/jooq/util/DefaultGeneratorStrategy.java b/jOOQ-codegen/src/main/java/org/jooq/util/DefaultGeneratorStrategy.java
index cc3eb96a45..e7ab3efb76 100644
--- a/jOOQ-codegen/src/main/java/org/jooq/util/DefaultGeneratorStrategy.java
+++ b/jOOQ-codegen/src/main/java/org/jooq/util/DefaultGeneratorStrategy.java
@@ -49,39 +49,50 @@ public class DefaultGeneratorStrategy extends AbstractGeneratorStrategy {
private String targetDirectory;
private String targetPackage;
- private boolean instanceFields = true;
+ private boolean instanceFields = true;
+ private boolean javaBeansGettersAndSetters = false;
// -------------------------------------------------------------------------
// Initialisation
// -------------------------------------------------------------------------
@Override
- public final void setInstanceFields(boolean instanceFields) {
+ public void setInstanceFields(boolean instanceFields) {
this.instanceFields = instanceFields;
}
@Override
- public final boolean getInstanceFields() {
+ public boolean getInstanceFields() {
return instanceFields;
}
@Override
- public final String getTargetDirectory() {
+ public void setJavaBeansGettersAndSetters(boolean javaBeansGettersAndSetters) {
+ this.javaBeansGettersAndSetters = javaBeansGettersAndSetters;
+ }
+
+ @Override
+ public boolean getJavaBeansGettersAndSetters() {
+ return javaBeansGettersAndSetters;
+ }
+
+ @Override
+ public String getTargetDirectory() {
return targetDirectory;
}
@Override
- public final void setTargetDirectory(String directory) {
+ public void setTargetDirectory(String directory) {
this.targetDirectory = directory;
}
@Override
- public final String getTargetPackage() {
+ public String getTargetPackage() {
return targetPackage;
}
@Override
- public final void setTargetPackage(String packageName) {
+ public void setTargetPackage(String packageName) {
this.targetPackage = packageName;
}
@@ -104,14 +115,33 @@ public class DefaultGeneratorStrategy extends AbstractGeneratorStrategy {
return definition.getOutputName().toUpperCase();
}
+ private String getterSetterSuffix(Definition definition) {
+
+ // [#5354] Please forgive me but this is how it works.
+ if (javaBeansGettersAndSetters) {
+ String name = getJavaMemberName(definition);
+
+ if (Character.isUpperCase(name.charAt(0)))
+ return name;
+ if (name.length() > 1 && Character.isUpperCase(name.charAt(1)))
+ return name;
+
+ char chars[] = name.toCharArray();
+ chars[0] = Character.toUpperCase(chars[0]);
+ return new String(chars);
+ }
+ else
+ return getJavaClassName0(definition, Mode.DEFAULT);
+ }
+
@Override
public String getJavaSetterName(Definition definition, Mode mode) {
- return "set" + getJavaClassName0(definition, Mode.DEFAULT);
+ return "set" + getterSetterSuffix(definition);
}
@Override
public String getJavaGetterName(Definition definition, Mode mode) {
- return "get" + getJavaClassName0(definition, Mode.DEFAULT);
+ return "get" + getterSetterSuffix(definition);
}
@Override
@@ -232,7 +262,7 @@ public class DefaultGeneratorStrategy extends AbstractGeneratorStrategy {
return result.toString();
}
- private final String getSubPackage(Definition definition) {
+ private String getSubPackage(Definition definition) {
if (definition instanceof TableDefinition) {
return "tables";
}
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 2ba1ebd476..c16453d14a 100644
--- a/jOOQ-codegen/src/main/java/org/jooq/util/GenerationTool.java
+++ b/jOOQ-codegen/src/main/java/org/jooq/util/GenerationTool.java
@@ -559,6 +559,8 @@ public class GenerationTool {
generator.setGenerateGlobalLinkReferences(g.getGenerate().isGlobalLinkReferences());
if (g.getGenerate().isFluentSetters() != null)
generator.setGenerateFluentSetters(g.getGenerate().isFluentSetters());
+ if (g.getGenerate().isJavaBeansGettersAndSetters() != null)
+ generator.setGenerateJavaBeansGettersAndSetters(g.getGenerate().isJavaBeansGettersAndSetters());
if (g.getGenerate().isVarargSetters() != null)
generator.setGenerateVarargsSetters(g.getGenerate().isVarargSetters());
if (g.getGenerate().isPojosEqualsAndHashCode() != null)
@@ -597,6 +599,7 @@ public class GenerationTool {
// Generator properties that should in fact be strategy properties
strategy.setInstanceFields(generator.generateInstanceFields());
+ strategy.setJavaBeansGettersAndSetters(generator.generateJavaBeansGettersAndSetters());
if (true)
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 6d23779b76..5140be585d 100644
--- a/jOOQ-codegen/src/main/java/org/jooq/util/Generator.java
+++ b/jOOQ-codegen/src/main/java/org/jooq/util/Generator.java
@@ -386,6 +386,16 @@ public interface Generator {
*/
void setGenerateFluentSetters(boolean fluentSetters);
+ /**
+ * Whether getters and setters should be generated JavaBeans style (or jOOQ style).
+ */
+ boolean generateJavaBeansGettersAndSetters();
+
+ /**
+ * Whether getters and setters should be generated JavaBeans style (or jOOQ style).
+ */
+ void setGenerateJavaBeansGettersAndSetters(boolean javaBeansGettersAndSetters);
+
/**
* Whether varargs setters should be generated for array types.
*/
diff --git a/jOOQ-codegen/src/main/java/org/jooq/util/GeneratorStrategy.java b/jOOQ-codegen/src/main/java/org/jooq/util/GeneratorStrategy.java
index 4b2e259dc3..037f654983 100644
--- a/jOOQ-codegen/src/main/java/org/jooq/util/GeneratorStrategy.java
+++ b/jOOQ-codegen/src/main/java/org/jooq/util/GeneratorStrategy.java
@@ -75,6 +75,16 @@ public interface GeneratorStrategy {
*/
boolean getInstanceFields();
+ /**
+ * Whether getters and setters should be generated JavaBeans style (or jOOQ style).
+ */
+ void setJavaBeansGettersAndSetters(boolean javaBeansGettersAndSetters);
+
+ /**
+ * Whether getters and setters should be generated JavaBeans style (or jOOQ style).
+ */
+ boolean getJavaBeansGettersAndSetters();
+
/**
* This is applied to definitions that can result in reference static and
* instance members. For instance, the reference instance of a
diff --git a/jOOQ-codegen/src/main/java/org/jooq/util/GeneratorStrategyWrapper.java b/jOOQ-codegen/src/main/java/org/jooq/util/GeneratorStrategyWrapper.java
index c4d3ed5b9b..9824483352 100644
--- a/jOOQ-codegen/src/main/java/org/jooq/util/GeneratorStrategyWrapper.java
+++ b/jOOQ-codegen/src/main/java/org/jooq/util/GeneratorStrategyWrapper.java
@@ -107,6 +107,16 @@ class GeneratorStrategyWrapper extends AbstractGeneratorStrategy {
return delegate.getInstanceFields();
}
+ @Override
+ public void setJavaBeansGettersAndSetters(boolean javaBeansGettersAndSetters) {
+ delegate.setJavaBeansGettersAndSetters(javaBeansGettersAndSetters);
+ }
+
+ @Override
+ public boolean getJavaBeansGettersAndSetters() {
+ return delegate.getJavaBeansGettersAndSetters();
+ }
+
@Override
public String getFileHeader(Definition definition, Mode mode) {
return delegate.getFileHeader(definition, mode);
diff --git a/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.10.0.xsd b/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.10.0.xsd
index 3a3100a489..4073aabc58 100644
--- a/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.10.0.xsd
+++ b/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.10.0.xsd
@@ -972,6 +972,29 @@
-->
+
+
+