From 98ff86830226d64c89ff8c991c0327ef2ae2362a Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Wed, 17 Jan 2024 14:00:02 +0100 Subject: [PATCH] [jOOQ/jOOQ#16093] Add matcher strategies for method overrides --- .../main/java/org/jooq/codegen/Constants.java | 2 +- .../org/jooq/codegen/MatcherStrategy.java | 133 +++++- .../main/java/org/jooq/meta/Constants.java | 2 +- .../org/jooq/meta/jaxb/Configuration.java | 10 +- .../java/org/jooq/meta/jaxb/MatcherRule.java | 2 +- .../jooq/meta/jaxb/MatchersAttributeType.java | 415 ++++++++++++++++++ .../org/jooq/meta/jaxb/MatchersFieldType.java | 415 ++++++++++++++++++ .../org/jooq/meta/jaxb/SyntheticDaoType.java | 2 +- .../org/jooq/meta/jaxb/SyntheticEnumType.java | 2 +- .../meta/jaxb/SyntheticForeignKeyType.java | 4 +- .../meta/jaxb/SyntheticPrimaryKeyType.java | 2 +- .../meta/jaxb/SyntheticUniqueKeyType.java | 2 +- .../java/org/jooq/meta/jaxb/package-info.java | 2 +- ...gen-3.19.2.xsd => jooq-codegen-3.20.0.xsd} | 76 +++- jOOQ/src/main/java/org/jooq/Constants.java | 2 +- 15 files changed, 1050 insertions(+), 21 deletions(-) rename jOOQ-meta/src/main/resources/org/jooq/meta/xsd/{jooq-codegen-3.19.2.xsd => jooq-codegen-3.20.0.xsd} (96%) diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/Constants.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/Constants.java index 0f7d4fb796..0de5dfa2b7 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/Constants.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/Constants.java @@ -140,7 +140,7 @@ public final class Constants { /** * The current jooq-codegen XSD file name. */ - public static final String XSD_CODEGEN = "jooq-codegen-3.19.2.xsd"; + public static final String XSD_CODEGEN = "jooq-codegen-3.20.0.xsd"; /** * The current jooq-codegen XML namespace. diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/MatcherStrategy.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/MatcherStrategy.java index a3fd684d8d..6209069338 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/MatcherStrategy.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/MatcherStrategy.java @@ -37,11 +37,14 @@ */ package org.jooq.codegen; +import static java.lang.Boolean.TRUE; import static java.util.Collections.emptyList; import static java.util.stream.Collectors.toList; import static org.jooq.tools.StringUtils.defaultIfEmpty; import java.util.List; +import java.util.function.Function; +import java.util.function.Supplier; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Stream; @@ -94,6 +97,25 @@ public class MatcherStrategy extends DefaultGeneratorStrategy { return patterns; } + /** + * Take a {@link Definition}, try to match its name or qualified name + * against an expression. + */ + private final boolean match(Definition definition, String expression) { + return match(definition.getName(), expression) + || match(definition.getQualifiedName(), expression); + } + + private final boolean match(String name, String expression) { + return matcher(name, expression) != null; + } + + private final Matcher matcher(String name, String expression) { + Pattern p = patterns.pattern(defaultIfEmpty(expression, "^.*$").trim()); + Matcher m = p.matcher(name); + return m.matches() ? m : null; + } + /** * Take a {@link Definition}, try to match its name or qualified name * against an expression, and apply a rule upon match. @@ -105,6 +127,10 @@ public class MatcherStrategy extends DefaultGeneratorStrategy { return null; } + /** + * Take a {@link Definition}, try to match its name or qualified name + * against an expression, and apply a rule upon match. + */ private final String match(String name, String expression, MatcherRule rule) { if (rule != null) return match(name, expression, rule.getExpression(), rule.getTransform()); @@ -133,10 +159,9 @@ public class MatcherStrategy extends DefaultGeneratorStrategy { ruleExpression = "$0"; if (ruleExpression != null) { - Pattern p = patterns.pattern(defaultIfEmpty(expression, "^.*$").trim()); - Matcher m = p.matcher(name); + Matcher m = matcher(name, expression); - if (m.matches()) + if (m != null) return transform(m.replaceAll(ruleExpression), ruleTransformType); } @@ -382,6 +407,32 @@ public class MatcherStrategy extends DefaultGeneratorStrategy { return super.getJavaSetterName(definition, mode); } + @Override + public boolean getJavaSetterOverride(Definition definition, Mode mode) { + switch (mode) { + case RECORD: + return getJavaOverride0(definition, + MatchersFieldType::isRecordSetterOverride, + MatchersAttributeType::isRecordSetterOverride, + () -> super.getJavaMemberOverride(definition, mode) + ); + case INTERFACE: + return getJavaOverride0(definition, + MatchersFieldType::isInterfaceSetterOverride, + MatchersAttributeType::isInterfaceSetterOverride, + () -> super.getJavaMemberOverride(definition, mode) + ); + case POJO: + return getJavaOverride0(definition, + MatchersFieldType::isPojoSetterOverride, + MatchersAttributeType::isPojoSetterOverride, + () -> super.getJavaMemberOverride(definition, mode) + ); + } + + return super.getJavaMemberOverride(definition, mode); + } + @Override public String getJavaGetterName(Definition definition, Mode mode) { for (MatchersFieldType fields : fields(definition)) { @@ -400,6 +451,32 @@ public class MatcherStrategy extends DefaultGeneratorStrategy { return super.getJavaGetterName(definition, mode); } + @Override + public boolean getJavaGetterOverride(Definition definition, Mode mode) { + switch (mode) { + case RECORD: + return getJavaOverride0(definition, + MatchersFieldType::isRecordGetterOverride, + MatchersAttributeType::isRecordGetterOverride, + () -> super.getJavaMemberOverride(definition, mode) + ); + case INTERFACE: + return getJavaOverride0(definition, + MatchersFieldType::isInterfaceGetterOverride, + MatchersAttributeType::isInterfaceGetterOverride, + () -> super.getJavaMemberOverride(definition, mode) + ); + case POJO: + return getJavaOverride0(definition, + MatchersFieldType::isPojoGetterOverride, + MatchersAttributeType::isPojoGetterOverride, + () -> super.getJavaMemberOverride(definition, mode) + ); + } + + return super.getJavaMemberOverride(definition, mode); + } + @Override public String getJavaMethodName(Definition definition, Mode mode) { for (MatchersRoutineType routines : routines(definition)) { @@ -716,6 +793,56 @@ public class MatcherStrategy extends DefaultGeneratorStrategy { return super.getJavaMemberName(definition, mode); } + private boolean getJavaOverride0( + Definition definition, + Function isFieldOverride, + Function isAttributeOverride, + Supplier defaultOverride + ) { + for (MatchersFieldType field : fields(definition)) { + if (match(definition, field.getExpression())) { + if (TRUE.equals(isFieldOverride.apply(field))) + return true; + } + } + + for (MatchersAttributeType attribute : attributes(definition)) { + if (match(definition, attribute.getExpression())) { + if (TRUE.equals(isAttributeOverride.apply(attribute))) + return true; + } + } + + // Default to standard behaviour + return defaultOverride.get(); + } + + @Override + public boolean getJavaMemberOverride(Definition definition, Mode mode) { + switch (mode) { + case RECORD: + return getJavaOverride0(definition, + MatchersFieldType::isRecordMemberOverride, + MatchersAttributeType::isRecordMemberOverride, + () -> super.getJavaMemberOverride(definition, mode) + ); + case INTERFACE: + return getJavaOverride0(definition, + MatchersFieldType::isInterfaceMemberOverride, + MatchersAttributeType::isInterfaceMemberOverride, + () -> super.getJavaMemberOverride(definition, mode) + ); + case POJO: + return getJavaOverride0(definition, + MatchersFieldType::isPojoMemberOverride, + MatchersAttributeType::isPojoMemberOverride, + () -> super.getJavaMemberOverride(definition, mode) + ); + } + + return super.getJavaMemberOverride(definition, mode); + } + @Override public String getOverloadSuffix(Definition definition, Mode mode, String overloadIndex) { return super.getOverloadSuffix(definition, mode, overloadIndex); diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/Constants.java b/jOOQ-meta/src/main/java/org/jooq/meta/Constants.java index 279687e366..5ea29bffa3 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/Constants.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/Constants.java @@ -140,7 +140,7 @@ public final class Constants { /** * The current jooq-codegen XSD file name. */ - public static final String XSD_CODEGEN = "jooq-codegen-3.19.2.xsd"; + public static final String XSD_CODEGEN = "jooq-codegen-3.20.0.xsd"; /** * The current jooq-codegen XML namespace. 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 ea4aaab61d..9671c5879d 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 @@ -24,11 +24,11 @@ import org.jooq.util.jaxb.tools.XMLBuilder; * <complexContent> * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> * <all> - * <element name="logging" type="{http://www.jooq.org/xsd/jooq-codegen-3.19.2.xsd}Logging" minOccurs="0"/> - * <element name="onError" type="{http://www.jooq.org/xsd/jooq-codegen-3.19.2.xsd}OnError" minOccurs="0"/> - * <element name="onUnused" type="{http://www.jooq.org/xsd/jooq-codegen-3.19.2.xsd}OnError" minOccurs="0"/> - * <element name="jdbc" type="{http://www.jooq.org/xsd/jooq-codegen-3.19.2.xsd}Jdbc" minOccurs="0"/> - * <element name="generator" type="{http://www.jooq.org/xsd/jooq-codegen-3.19.2.xsd}Generator"/> + * <element name="logging" type="{http://www.jooq.org/xsd/jooq-codegen-3.20.0.xsd}Logging" minOccurs="0"/> + * <element name="onError" type="{http://www.jooq.org/xsd/jooq-codegen-3.20.0.xsd}OnError" minOccurs="0"/> + * <element name="onUnused" type="{http://www.jooq.org/xsd/jooq-codegen-3.20.0.xsd}OnError" minOccurs="0"/> + * <element name="jdbc" type="{http://www.jooq.org/xsd/jooq-codegen-3.20.0.xsd}Jdbc" minOccurs="0"/> + * <element name="generator" type="{http://www.jooq.org/xsd/jooq-codegen-3.20.0.xsd}Generator"/> * <element name="basedir" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> * </all> * </restriction> 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 c1601807ca..e4d63435a8 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 @@ -23,7 +23,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder; * <complexContent> * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> * <all> - * <element name="transform" type="{http://www.jooq.org/xsd/jooq-codegen-3.19.2.xsd}MatcherTransformType" minOccurs="0"/> + * <element name="transform" type="{http://www.jooq.org/xsd/jooq-codegen-3.20.0.xsd}MatcherTransformType" minOccurs="0"/> * <element name="expression" type="{http://www.w3.org/2001/XMLSchema}string"/> * </all> * </restriction> diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersAttributeType.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersAttributeType.java index 970e4d06ac..ff1d39e105 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersAttributeType.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersAttributeType.java @@ -4,6 +4,7 @@ package org.jooq.meta.jaxb; import java.io.Serializable; import jakarta.xml.bind.annotation.XmlAccessType; import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlType; import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import org.jooq.util.jaxb.tools.StringAdapter; @@ -34,6 +35,24 @@ public class MatchersAttributeType implements Serializable, XMLAppendable protected MatcherRule attributeMember; protected MatcherRule attributeSetter; protected MatcherRule attributeGetter; + @XmlElement(defaultValue = "false") + protected Boolean recordSetterOverride = false; + @XmlElement(defaultValue = "false") + protected Boolean recordGetterOverride = false; + @XmlElement(defaultValue = "false") + protected Boolean recordMemberOverride = false; + @XmlElement(defaultValue = "false") + protected Boolean interfaceSetterOverride = false; + @XmlElement(defaultValue = "false") + protected Boolean interfaceGetterOverride = false; + @XmlElement(defaultValue = "false") + protected Boolean interfaceMemberOverride = false; + @XmlElement(defaultValue = "false") + protected Boolean pojoSetterOverride = false; + @XmlElement(defaultValue = "false") + protected Boolean pojoGetterOverride = false; + @XmlElement(defaultValue = "false") + protected Boolean pojoMemberOverride = false; /** * This field matcher applies to all unqualified or qualified UDT attribute names matched by this expression. If left empty, this matcher applies to all fields. @@ -115,6 +134,222 @@ public class MatchersAttributeType implements Serializable, XMLAppendable this.attributeGetter = value; } + /** + * Whether an "override" modifier in generated record setters should be generated. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isRecordSetterOverride() { + return recordSetterOverride; + } + + /** + * Whether an "override" modifier in generated record setters should be generated. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setRecordSetterOverride(Boolean value) { + this.recordSetterOverride = value; + } + + /** + * Whether an "override" modifier in generated record getters should be generated. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isRecordGetterOverride() { + return recordGetterOverride; + } + + /** + * Whether an "override" modifier in generated record getters should be generated. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setRecordGetterOverride(Boolean value) { + this.recordGetterOverride = value; + } + + /** + * Whether an "override" modifier in generated record members (properties) should be generated. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isRecordMemberOverride() { + return recordMemberOverride; + } + + /** + * Whether an "override" modifier in generated record members (properties) should be generated. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setRecordMemberOverride(Boolean value) { + this.recordMemberOverride = value; + } + + /** + * Whether an "override" modifier in generated interface setters should be generated. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isInterfaceSetterOverride() { + return interfaceSetterOverride; + } + + /** + * Whether an "override" modifier in generated interface setters should be generated. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setInterfaceSetterOverride(Boolean value) { + this.interfaceSetterOverride = value; + } + + /** + * Whether an "override" modifier in generated interface getters should be generated. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isInterfaceGetterOverride() { + return interfaceGetterOverride; + } + + /** + * Whether an "override" modifier in generated interface getters should be generated. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setInterfaceGetterOverride(Boolean value) { + this.interfaceGetterOverride = value; + } + + /** + * Whether an "override" modifier in generated interface members (properties) should be generated. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isInterfaceMemberOverride() { + return interfaceMemberOverride; + } + + /** + * Whether an "override" modifier in generated interface members (properties) should be generated. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setInterfaceMemberOverride(Boolean value) { + this.interfaceMemberOverride = value; + } + + /** + * Whether an "override" modifier in generated POJO setters should be generated. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isPojoSetterOverride() { + return pojoSetterOverride; + } + + /** + * Whether an "override" modifier in generated POJO setters should be generated. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setPojoSetterOverride(Boolean value) { + this.pojoSetterOverride = value; + } + + /** + * Whether an "override" modifier in generated POJO getters should be generated. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isPojoGetterOverride() { + return pojoGetterOverride; + } + + /** + * Whether an "override" modifier in generated POJO getters should be generated. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setPojoGetterOverride(Boolean value) { + this.pojoGetterOverride = value; + } + + /** + * Whether an "override" modifier in generated POJO members (properties) should be generated. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isPojoMemberOverride() { + return pojoMemberOverride; + } + + /** + * Whether an "override" modifier in generated POJO members (properties) should be generated. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setPojoMemberOverride(Boolean value) { + this.pojoMemberOverride = value; + } + /** * This field matcher applies to all unqualified or qualified UDT attribute names matched by this expression. If left empty, this matcher applies to all fields. * @@ -160,6 +395,87 @@ public class MatchersAttributeType implements Serializable, XMLAppendable return this; } + /** + * Whether an "override" modifier in generated record setters should be generated. + * + */ + public MatchersAttributeType withRecordSetterOverride(Boolean value) { + setRecordSetterOverride(value); + return this; + } + + /** + * Whether an "override" modifier in generated record getters should be generated. + * + */ + public MatchersAttributeType withRecordGetterOverride(Boolean value) { + setRecordGetterOverride(value); + return this; + } + + /** + * Whether an "override" modifier in generated record members (properties) should be generated. + * + */ + public MatchersAttributeType withRecordMemberOverride(Boolean value) { + setRecordMemberOverride(value); + return this; + } + + /** + * Whether an "override" modifier in generated interface setters should be generated. + * + */ + public MatchersAttributeType withInterfaceSetterOverride(Boolean value) { + setInterfaceSetterOverride(value); + return this; + } + + /** + * Whether an "override" modifier in generated interface getters should be generated. + * + */ + public MatchersAttributeType withInterfaceGetterOverride(Boolean value) { + setInterfaceGetterOverride(value); + return this; + } + + /** + * Whether an "override" modifier in generated interface members (properties) should be generated. + * + */ + public MatchersAttributeType withInterfaceMemberOverride(Boolean value) { + setInterfaceMemberOverride(value); + return this; + } + + /** + * Whether an "override" modifier in generated POJO setters should be generated. + * + */ + public MatchersAttributeType withPojoSetterOverride(Boolean value) { + setPojoSetterOverride(value); + return this; + } + + /** + * Whether an "override" modifier in generated POJO getters should be generated. + * + */ + public MatchersAttributeType withPojoGetterOverride(Boolean value) { + setPojoGetterOverride(value); + return this; + } + + /** + * Whether an "override" modifier in generated POJO members (properties) should be generated. + * + */ + public MatchersAttributeType withPojoMemberOverride(Boolean value) { + setPojoMemberOverride(value); + return this; + } + @Override public final void appendTo(XMLBuilder builder) { builder.append("expression", expression); @@ -167,6 +483,15 @@ public class MatchersAttributeType implements Serializable, XMLAppendable builder.append("attributeMember", attributeMember); builder.append("attributeSetter", attributeSetter); builder.append("attributeGetter", attributeGetter); + builder.append("recordSetterOverride", recordSetterOverride); + builder.append("recordGetterOverride", recordGetterOverride); + builder.append("recordMemberOverride", recordMemberOverride); + builder.append("interfaceSetterOverride", interfaceSetterOverride); + builder.append("interfaceGetterOverride", interfaceGetterOverride); + builder.append("interfaceMemberOverride", interfaceMemberOverride); + builder.append("pojoSetterOverride", pojoSetterOverride); + builder.append("pojoGetterOverride", pojoGetterOverride); + builder.append("pojoMemberOverride", pojoMemberOverride); } @Override @@ -233,6 +558,87 @@ public class MatchersAttributeType implements Serializable, XMLAppendable return false; } } + if (recordSetterOverride == null) { + if (other.recordSetterOverride!= null) { + return false; + } + } else { + if (!recordSetterOverride.equals(other.recordSetterOverride)) { + return false; + } + } + if (recordGetterOverride == null) { + if (other.recordGetterOverride!= null) { + return false; + } + } else { + if (!recordGetterOverride.equals(other.recordGetterOverride)) { + return false; + } + } + if (recordMemberOverride == null) { + if (other.recordMemberOverride!= null) { + return false; + } + } else { + if (!recordMemberOverride.equals(other.recordMemberOverride)) { + return false; + } + } + if (interfaceSetterOverride == null) { + if (other.interfaceSetterOverride!= null) { + return false; + } + } else { + if (!interfaceSetterOverride.equals(other.interfaceSetterOverride)) { + return false; + } + } + if (interfaceGetterOverride == null) { + if (other.interfaceGetterOverride!= null) { + return false; + } + } else { + if (!interfaceGetterOverride.equals(other.interfaceGetterOverride)) { + return false; + } + } + if (interfaceMemberOverride == null) { + if (other.interfaceMemberOverride!= null) { + return false; + } + } else { + if (!interfaceMemberOverride.equals(other.interfaceMemberOverride)) { + return false; + } + } + if (pojoSetterOverride == null) { + if (other.pojoSetterOverride!= null) { + return false; + } + } else { + if (!pojoSetterOverride.equals(other.pojoSetterOverride)) { + return false; + } + } + if (pojoGetterOverride == null) { + if (other.pojoGetterOverride!= null) { + return false; + } + } else { + if (!pojoGetterOverride.equals(other.pojoGetterOverride)) { + return false; + } + } + if (pojoMemberOverride == null) { + if (other.pojoMemberOverride!= null) { + return false; + } + } else { + if (!pojoMemberOverride.equals(other.pojoMemberOverride)) { + return false; + } + } return true; } @@ -245,6 +651,15 @@ public class MatchersAttributeType implements Serializable, XMLAppendable result = ((prime*result)+((attributeMember == null)? 0 :attributeMember.hashCode())); result = ((prime*result)+((attributeSetter == null)? 0 :attributeSetter.hashCode())); result = ((prime*result)+((attributeGetter == null)? 0 :attributeGetter.hashCode())); + result = ((prime*result)+((recordSetterOverride == null)? 0 :recordSetterOverride.hashCode())); + result = ((prime*result)+((recordGetterOverride == null)? 0 :recordGetterOverride.hashCode())); + result = ((prime*result)+((recordMemberOverride == null)? 0 :recordMemberOverride.hashCode())); + result = ((prime*result)+((interfaceSetterOverride == null)? 0 :interfaceSetterOverride.hashCode())); + result = ((prime*result)+((interfaceGetterOverride == null)? 0 :interfaceGetterOverride.hashCode())); + result = ((prime*result)+((interfaceMemberOverride == null)? 0 :interfaceMemberOverride.hashCode())); + result = ((prime*result)+((pojoSetterOverride == null)? 0 :pojoSetterOverride.hashCode())); + result = ((prime*result)+((pojoGetterOverride == null)? 0 :pojoGetterOverride.hashCode())); + result = ((prime*result)+((pojoMemberOverride == null)? 0 :pojoMemberOverride.hashCode())); return result; } 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 41140edf29..e1536c219d 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 @@ -4,6 +4,7 @@ package org.jooq.meta.jaxb; import java.io.Serializable; import jakarta.xml.bind.annotation.XmlAccessType; import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlType; import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import org.jooq.util.jaxb.tools.StringAdapter; @@ -34,6 +35,24 @@ public class MatchersFieldType implements Serializable, XMLAppendable protected MatcherRule fieldMember; protected MatcherRule fieldSetter; protected MatcherRule fieldGetter; + @XmlElement(defaultValue = "false") + protected Boolean recordSetterOverride = false; + @XmlElement(defaultValue = "false") + protected Boolean recordGetterOverride = false; + @XmlElement(defaultValue = "false") + protected Boolean recordMemberOverride = false; + @XmlElement(defaultValue = "false") + protected Boolean interfaceSetterOverride = false; + @XmlElement(defaultValue = "false") + protected Boolean interfaceGetterOverride = false; + @XmlElement(defaultValue = "false") + protected Boolean interfaceMemberOverride = false; + @XmlElement(defaultValue = "false") + protected Boolean pojoSetterOverride = false; + @XmlElement(defaultValue = "false") + protected Boolean pojoGetterOverride = false; + @XmlElement(defaultValue = "false") + protected Boolean pojoMemberOverride = false; /** * This field matcher applies to all unqualified or qualified field names matched by this expression. If left empty, this matcher applies to all fields. @@ -115,6 +134,222 @@ public class MatchersFieldType implements Serializable, XMLAppendable this.fieldGetter = value; } + /** + * Whether an "override" modifier in generated record setters should be generated. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isRecordSetterOverride() { + return recordSetterOverride; + } + + /** + * Whether an "override" modifier in generated record setters should be generated. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setRecordSetterOverride(Boolean value) { + this.recordSetterOverride = value; + } + + /** + * Whether an "override" modifier in generated record getters should be generated. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isRecordGetterOverride() { + return recordGetterOverride; + } + + /** + * Whether an "override" modifier in generated record getters should be generated. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setRecordGetterOverride(Boolean value) { + this.recordGetterOverride = value; + } + + /** + * Whether an "override" modifier in generated record members (properties) should be generated. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isRecordMemberOverride() { + return recordMemberOverride; + } + + /** + * Whether an "override" modifier in generated record members (properties) should be generated. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setRecordMemberOverride(Boolean value) { + this.recordMemberOverride = value; + } + + /** + * Whether an "override" modifier in generated interface setters should be generated. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isInterfaceSetterOverride() { + return interfaceSetterOverride; + } + + /** + * Whether an "override" modifier in generated interface setters should be generated. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setInterfaceSetterOverride(Boolean value) { + this.interfaceSetterOverride = value; + } + + /** + * Whether an "override" modifier in generated interface getters should be generated. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isInterfaceGetterOverride() { + return interfaceGetterOverride; + } + + /** + * Whether an "override" modifier in generated interface getters should be generated. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setInterfaceGetterOverride(Boolean value) { + this.interfaceGetterOverride = value; + } + + /** + * Whether an "override" modifier in generated interface members (properties) should be generated. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isInterfaceMemberOverride() { + return interfaceMemberOverride; + } + + /** + * Whether an "override" modifier in generated interface members (properties) should be generated. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setInterfaceMemberOverride(Boolean value) { + this.interfaceMemberOverride = value; + } + + /** + * Whether an "override" modifier in generated POJO setters should be generated. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isPojoSetterOverride() { + return pojoSetterOverride; + } + + /** + * Whether an "override" modifier in generated POJO setters should be generated. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setPojoSetterOverride(Boolean value) { + this.pojoSetterOverride = value; + } + + /** + * Whether an "override" modifier in generated POJO getters should be generated. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isPojoGetterOverride() { + return pojoGetterOverride; + } + + /** + * Whether an "override" modifier in generated POJO getters should be generated. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setPojoGetterOverride(Boolean value) { + this.pojoGetterOverride = value; + } + + /** + * Whether an "override" modifier in generated POJO members (properties) should be generated. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isPojoMemberOverride() { + return pojoMemberOverride; + } + + /** + * Whether an "override" modifier in generated POJO members (properties) should be generated. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setPojoMemberOverride(Boolean value) { + this.pojoMemberOverride = value; + } + /** * This field matcher applies to all unqualified or qualified field names matched by this expression. If left empty, this matcher applies to all fields. * @@ -160,6 +395,87 @@ public class MatchersFieldType implements Serializable, XMLAppendable return this; } + /** + * Whether an "override" modifier in generated record setters should be generated. + * + */ + public MatchersFieldType withRecordSetterOverride(Boolean value) { + setRecordSetterOverride(value); + return this; + } + + /** + * Whether an "override" modifier in generated record getters should be generated. + * + */ + public MatchersFieldType withRecordGetterOverride(Boolean value) { + setRecordGetterOverride(value); + return this; + } + + /** + * Whether an "override" modifier in generated record members (properties) should be generated. + * + */ + public MatchersFieldType withRecordMemberOverride(Boolean value) { + setRecordMemberOverride(value); + return this; + } + + /** + * Whether an "override" modifier in generated interface setters should be generated. + * + */ + public MatchersFieldType withInterfaceSetterOverride(Boolean value) { + setInterfaceSetterOverride(value); + return this; + } + + /** + * Whether an "override" modifier in generated interface getters should be generated. + * + */ + public MatchersFieldType withInterfaceGetterOverride(Boolean value) { + setInterfaceGetterOverride(value); + return this; + } + + /** + * Whether an "override" modifier in generated interface members (properties) should be generated. + * + */ + public MatchersFieldType withInterfaceMemberOverride(Boolean value) { + setInterfaceMemberOverride(value); + return this; + } + + /** + * Whether an "override" modifier in generated POJO setters should be generated. + * + */ + public MatchersFieldType withPojoSetterOverride(Boolean value) { + setPojoSetterOverride(value); + return this; + } + + /** + * Whether an "override" modifier in generated POJO getters should be generated. + * + */ + public MatchersFieldType withPojoGetterOverride(Boolean value) { + setPojoGetterOverride(value); + return this; + } + + /** + * Whether an "override" modifier in generated POJO members (properties) should be generated. + * + */ + public MatchersFieldType withPojoMemberOverride(Boolean value) { + setPojoMemberOverride(value); + return this; + } + @Override public final void appendTo(XMLBuilder builder) { builder.append("expression", expression); @@ -167,6 +483,15 @@ public class MatchersFieldType implements Serializable, XMLAppendable builder.append("fieldMember", fieldMember); builder.append("fieldSetter", fieldSetter); builder.append("fieldGetter", fieldGetter); + builder.append("recordSetterOverride", recordSetterOverride); + builder.append("recordGetterOverride", recordGetterOverride); + builder.append("recordMemberOverride", recordMemberOverride); + builder.append("interfaceSetterOverride", interfaceSetterOverride); + builder.append("interfaceGetterOverride", interfaceGetterOverride); + builder.append("interfaceMemberOverride", interfaceMemberOverride); + builder.append("pojoSetterOverride", pojoSetterOverride); + builder.append("pojoGetterOverride", pojoGetterOverride); + builder.append("pojoMemberOverride", pojoMemberOverride); } @Override @@ -233,6 +558,87 @@ public class MatchersFieldType implements Serializable, XMLAppendable return false; } } + if (recordSetterOverride == null) { + if (other.recordSetterOverride!= null) { + return false; + } + } else { + if (!recordSetterOverride.equals(other.recordSetterOverride)) { + return false; + } + } + if (recordGetterOverride == null) { + if (other.recordGetterOverride!= null) { + return false; + } + } else { + if (!recordGetterOverride.equals(other.recordGetterOverride)) { + return false; + } + } + if (recordMemberOverride == null) { + if (other.recordMemberOverride!= null) { + return false; + } + } else { + if (!recordMemberOverride.equals(other.recordMemberOverride)) { + return false; + } + } + if (interfaceSetterOverride == null) { + if (other.interfaceSetterOverride!= null) { + return false; + } + } else { + if (!interfaceSetterOverride.equals(other.interfaceSetterOverride)) { + return false; + } + } + if (interfaceGetterOverride == null) { + if (other.interfaceGetterOverride!= null) { + return false; + } + } else { + if (!interfaceGetterOverride.equals(other.interfaceGetterOverride)) { + return false; + } + } + if (interfaceMemberOverride == null) { + if (other.interfaceMemberOverride!= null) { + return false; + } + } else { + if (!interfaceMemberOverride.equals(other.interfaceMemberOverride)) { + return false; + } + } + if (pojoSetterOverride == null) { + if (other.pojoSetterOverride!= null) { + return false; + } + } else { + if (!pojoSetterOverride.equals(other.pojoSetterOverride)) { + return false; + } + } + if (pojoGetterOverride == null) { + if (other.pojoGetterOverride!= null) { + return false; + } + } else { + if (!pojoGetterOverride.equals(other.pojoGetterOverride)) { + return false; + } + } + if (pojoMemberOverride == null) { + if (other.pojoMemberOverride!= null) { + return false; + } + } else { + if (!pojoMemberOverride.equals(other.pojoMemberOverride)) { + return false; + } + } return true; } @@ -245,6 +651,15 @@ public class MatchersFieldType implements Serializable, XMLAppendable result = ((prime*result)+((fieldMember == null)? 0 :fieldMember.hashCode())); result = ((prime*result)+((fieldSetter == null)? 0 :fieldSetter.hashCode())); result = ((prime*result)+((fieldGetter == null)? 0 :fieldGetter.hashCode())); + result = ((prime*result)+((recordSetterOverride == null)? 0 :recordSetterOverride.hashCode())); + result = ((prime*result)+((recordGetterOverride == null)? 0 :recordGetterOverride.hashCode())); + result = ((prime*result)+((recordMemberOverride == null)? 0 :recordMemberOverride.hashCode())); + result = ((prime*result)+((interfaceSetterOverride == null)? 0 :interfaceSetterOverride.hashCode())); + result = ((prime*result)+((interfaceGetterOverride == null)? 0 :interfaceGetterOverride.hashCode())); + result = ((prime*result)+((interfaceMemberOverride == null)? 0 :interfaceMemberOverride.hashCode())); + result = ((prime*result)+((pojoSetterOverride == null)? 0 :pojoSetterOverride.hashCode())); + result = ((prime*result)+((pojoGetterOverride == null)? 0 :pojoGetterOverride.hashCode())); + result = ((prime*result)+((pojoMemberOverride == null)? 0 :pojoMemberOverride.hashCode())); return result; } diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/SyntheticDaoType.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/SyntheticDaoType.java index bf1ae3c4c4..b7fcd327e9 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/SyntheticDaoType.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/SyntheticDaoType.java @@ -30,7 +30,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder; * <element name="schema" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> * <element name="name" type="{http://www.w3.org/2001/XMLSchema}string"/> * <element name="comment" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> - * <element name="methods" type="{http://www.jooq.org/xsd/jooq-codegen-3.19.2.xsd}SyntheticDaoMethodsType" minOccurs="0"/> + * <element name="methods" type="{http://www.jooq.org/xsd/jooq-codegen-3.20.0.xsd}SyntheticDaoMethodsType" minOccurs="0"/> * </all> * </restriction> * </complexContent> diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/SyntheticEnumType.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/SyntheticEnumType.java index 221cdd7dc1..cfa8027242 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/SyntheticEnumType.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/SyntheticEnumType.java @@ -29,7 +29,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder; * <element name="name" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> * <element name="tables" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> * <element name="fields" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> - * <element name="literals" type="{http://www.jooq.org/xsd/jooq-codegen-3.19.2.xsd}SyntheticEnumLiteralsType" minOccurs="0"/> + * <element name="literals" type="{http://www.jooq.org/xsd/jooq-codegen-3.20.0.xsd}SyntheticEnumLiteralsType" minOccurs="0"/> * <element name="literalSql" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> * <element name="literalsFromColumnContent" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/> * <element name="literalsFromCheckConstraints" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/> diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/SyntheticForeignKeyType.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/SyntheticForeignKeyType.java index 61d3d57a02..8c24aa652d 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/SyntheticForeignKeyType.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/SyntheticForeignKeyType.java @@ -28,9 +28,9 @@ import org.jooq.util.jaxb.tools.XMLBuilder; * <all> * <element name="name" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> * <element name="tables" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> - * <element name="fields" type="{http://www.jooq.org/xsd/jooq-codegen-3.19.2.xsd}SyntheticKeyFieldsType"/> + * <element name="fields" type="{http://www.jooq.org/xsd/jooq-codegen-3.20.0.xsd}SyntheticKeyFieldsType"/> * <element name="referencedTable" type="{http://www.w3.org/2001/XMLSchema}string"/> - * <element name="referencedFields" type="{http://www.jooq.org/xsd/jooq-codegen-3.19.2.xsd}SyntheticKeyFieldsType" minOccurs="0"/> + * <element name="referencedFields" type="{http://www.jooq.org/xsd/jooq-codegen-3.20.0.xsd}SyntheticKeyFieldsType" minOccurs="0"/> * <element name="referencedKey" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> * </all> * </restriction> diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/SyntheticPrimaryKeyType.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/SyntheticPrimaryKeyType.java index b9d2267691..fe0f6a1c39 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/SyntheticPrimaryKeyType.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/SyntheticPrimaryKeyType.java @@ -28,7 +28,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder; * <all> * <element name="name" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> * <element name="tables" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> - * <element name="fields" type="{http://www.jooq.org/xsd/jooq-codegen-3.19.2.xsd}SyntheticKeyFieldsType"/> + * <element name="fields" type="{http://www.jooq.org/xsd/jooq-codegen-3.20.0.xsd}SyntheticKeyFieldsType"/> * <element name="key" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> * </all> * </restriction> diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/SyntheticUniqueKeyType.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/SyntheticUniqueKeyType.java index 24250d138a..d23c8dbd3b 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/SyntheticUniqueKeyType.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/SyntheticUniqueKeyType.java @@ -28,7 +28,7 @@ import org.jooq.util.jaxb.tools.XMLBuilder; * <all> * <element name="name" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> * <element name="tables" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> - * <element name="fields" type="{http://www.jooq.org/xsd/jooq-codegen-3.19.2.xsd}SyntheticKeyFieldsType"/> + * <element name="fields" type="{http://www.jooq.org/xsd/jooq-codegen-3.20.0.xsd}SyntheticKeyFieldsType"/> * </all> * </restriction> * </complexContent> diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/package-info.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/package-info.java index 2479074292..0926267aa8 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/package-info.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/package-info.java @@ -1,2 +1,2 @@ -@jakarta.xml.bind.annotation.XmlSchema(namespace = "http://www.jooq.org/xsd/jooq-codegen-3.19.2.xsd", elementFormDefault = jakarta.xml.bind.annotation.XmlNsForm.QUALIFIED) +@jakarta.xml.bind.annotation.XmlSchema(namespace = "http://www.jooq.org/xsd/jooq-codegen-3.20.0.xsd", elementFormDefault = jakarta.xml.bind.annotation.XmlNsForm.QUALIFIED) package org.jooq.meta.jaxb; diff --git a/jOOQ-meta/src/main/resources/org/jooq/meta/xsd/jooq-codegen-3.19.2.xsd b/jOOQ-meta/src/main/resources/org/jooq/meta/xsd/jooq-codegen-3.20.0.xsd similarity index 96% rename from jOOQ-meta/src/main/resources/org/jooq/meta/xsd/jooq-codegen-3.19.2.xsd rename to jOOQ-meta/src/main/resources/org/jooq/meta/xsd/jooq-codegen-3.20.0.xsd index 5d964c95c9..ce1283b19e 100644 --- a/jOOQ-meta/src/main/resources/org/jooq/meta/xsd/jooq-codegen-3.19.2.xsd +++ b/jOOQ-meta/src/main/resources/org/jooq/meta/xsd/jooq-codegen-3.20.0.xsd @@ -1,9 +1,9 @@ @@ -517,6 +517,42 @@ and follow its (undocumented!) assumptions (e.g. constructors, etc.). Use this a + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -768,6 +804,42 @@ and follow its (undocumented!) assumptions (e.g. constructors, etc.). Use this a + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jOOQ/src/main/java/org/jooq/Constants.java b/jOOQ/src/main/java/org/jooq/Constants.java index e121f1cbc2..f125eb6e86 100644 --- a/jOOQ/src/main/java/org/jooq/Constants.java +++ b/jOOQ/src/main/java/org/jooq/Constants.java @@ -139,7 +139,7 @@ public final class Constants { /** * The current jooq-codegen XSD file name. */ - public static final String XSD_CODEGEN = "jooq-codegen-3.19.2.xsd"; + public static final String XSD_CODEGEN = "jooq-codegen-3.20.0.xsd"; /** * The current jooq-codegen XML namespace.