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 9912dfb59d..68f0a642d2 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/MatcherStrategy.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/MatcherStrategy.java @@ -416,6 +416,12 @@ public class MatcherStrategy extends DefaultGeneratorStrategy { MatchersAttributeType::isRecordSetterOverride, () -> super.getJavaMemberOverride(definition, mode) ); + case RECORD_TYPE: + return getJavaOverride0(definition, + field -> false, + MatchersAttributeType::isRecordTypeSetterOverride, + () -> super.getJavaMemberOverride(definition, mode) + ); case INTERFACE: return getJavaOverride0(definition, MatchersFieldType::isInterfaceSetterOverride, @@ -460,6 +466,12 @@ public class MatcherStrategy extends DefaultGeneratorStrategy { MatchersAttributeType::isRecordGetterOverride, () -> super.getJavaMemberOverride(definition, mode) ); + case RECORD_TYPE: + return getJavaOverride0(definition, + field -> false, + MatchersAttributeType::isRecordTypeGetterOverride, + () -> super.getJavaMemberOverride(definition, mode) + ); case INTERFACE: return getJavaOverride0(definition, MatchersFieldType::isInterfaceGetterOverride, @@ -629,11 +641,12 @@ public class MatcherStrategy extends DefaultGeneratorStrategy { String result = null; switch (mode) { - case DEFAULT: result = match(definition, udt.getExpression(), udt.getUdtImplements()); break; - case INTERFACE: result = match(definition, udt.getExpression(), udt.getInterfaceImplements()); break; - case POJO: result = match(definition, udt.getExpression(), udt.getPojoImplements()); break; - case RECORD: result = match(definition, udt.getExpression(), udt.getRecordImplements()); break; - case PATH: result = match(definition, udt.getExpression(), udt.getPathImplements()); break; + case DEFAULT: result = match(definition, udt.getExpression(), udt.getUdtImplements()); break; + case INTERFACE: result = match(definition, udt.getExpression(), udt.getInterfaceImplements()); break; + case POJO: result = match(definition, udt.getExpression(), udt.getPojoImplements()); break; + case RECORD: result = match(definition, udt.getExpression(), udt.getRecordImplements()); break; + case RECORD_TYPE: result = match(definition, udt.getExpression(), udt.getRecordTypeImplements()); break; + case PATH: result = match(definition, udt.getExpression(), udt.getPathImplements()); break; } if (result != null) @@ -708,11 +721,12 @@ public class MatcherStrategy extends DefaultGeneratorStrategy { String result = null; switch (mode) { - case DEFAULT: result = match(definition, udt.getExpression(), udt.getUdtClass()); break; - case INTERFACE: result = match(definition, udt.getExpression(), udt.getInterfaceClass()); break; - case POJO: result = match(definition, udt.getExpression(), udt.getPojoClass()); break; - case RECORD: result = match(definition, udt.getExpression(), udt.getRecordClass()); break; - case PATH: result = match(definition, udt.getExpression(), udt.getPathClass()); break; + case DEFAULT: result = match(definition, udt.getExpression(), udt.getUdtClass()); break; + case INTERFACE: result = match(definition, udt.getExpression(), udt.getInterfaceClass()); break; + case POJO: result = match(definition, udt.getExpression(), udt.getPojoClass()); break; + case RECORD: result = match(definition, udt.getExpression(), udt.getRecordClass()); break; + case RECORD_TYPE: result = match(definition, udt.getExpression(), udt.getRecordTypeClass()); break; + case PATH: result = match(definition, udt.getExpression(), udt.getPathClass()); break; } if (result != null) @@ -826,6 +840,12 @@ public class MatcherStrategy extends DefaultGeneratorStrategy { MatchersAttributeType::isRecordMemberOverride, () -> super.getJavaMemberOverride(definition, mode) ); + case RECORD_TYPE: + return getJavaOverride0(definition, + field -> false, + MatchersAttributeType::isRecordTypeMemberOverride, + () -> super.getJavaMemberOverride(definition, mode) + ); case INTERFACE: return getJavaOverride0(definition, MatchersFieldType::isInterfaceMemberOverride, 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 ed8045b136..db9d51daa6 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 @@ -42,6 +42,12 @@ public class MatchersAttributeType implements Serializable, XMLAppendable @XmlElement(defaultValue = "false") protected Boolean recordMemberOverride = false; @XmlElement(defaultValue = "false") + protected Boolean recordTypeSetterOverride = false; + @XmlElement(defaultValue = "false") + protected Boolean recordTypeGetterOverride = false; + @XmlElement(defaultValue = "false") + protected Boolean recordTypeMemberOverride = false; + @XmlElement(defaultValue = "false") protected Boolean interfaceSetterOverride = false; @XmlElement(defaultValue = "false") protected Boolean interfaceGetterOverride = false; @@ -206,6 +212,78 @@ public class MatchersAttributeType implements Serializable, XMLAppendable this.recordMemberOverride = value; } + /** + * Whether an "override" modifier in generated record type setters should be generated. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isRecordTypeSetterOverride() { + return recordTypeSetterOverride; + } + + /** + * Whether an "override" modifier in generated record type setters should be generated. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setRecordTypeSetterOverride(Boolean value) { + this.recordTypeSetterOverride = value; + } + + /** + * Whether an "override" modifier in generated record type getters should be generated. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isRecordTypeGetterOverride() { + return recordTypeGetterOverride; + } + + /** + * Whether an "override" modifier in generated record type getters should be generated. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setRecordTypeGetterOverride(Boolean value) { + this.recordTypeGetterOverride = value; + } + + /** + * Whether an "override" modifier in generated record type members (properties) should be generated. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isRecordTypeMemberOverride() { + return recordTypeMemberOverride; + } + + /** + * Whether an "override" modifier in generated record type members (properties) should be generated. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setRecordTypeMemberOverride(Boolean value) { + this.recordTypeMemberOverride = value; + } + /** * Whether an "override" modifier in generated interface setters should be generated. * @@ -422,6 +500,33 @@ public class MatchersAttributeType implements Serializable, XMLAppendable return this; } + /** + * Whether an "override" modifier in generated record type setters should be generated. + * + */ + public MatchersAttributeType withRecordTypeSetterOverride(Boolean value) { + setRecordTypeSetterOverride(value); + return this; + } + + /** + * Whether an "override" modifier in generated record type getters should be generated. + * + */ + public MatchersAttributeType withRecordTypeGetterOverride(Boolean value) { + setRecordTypeGetterOverride(value); + return this; + } + + /** + * Whether an "override" modifier in generated record type members (properties) should be generated. + * + */ + public MatchersAttributeType withRecordTypeMemberOverride(Boolean value) { + setRecordTypeMemberOverride(value); + return this; + } + /** * Whether an "override" modifier in generated interface setters should be generated. * @@ -486,6 +591,9 @@ public class MatchersAttributeType implements Serializable, XMLAppendable builder.append("recordSetterOverride", recordSetterOverride); builder.append("recordGetterOverride", recordGetterOverride); builder.append("recordMemberOverride", recordMemberOverride); + builder.append("recordTypeSetterOverride", recordTypeSetterOverride); + builder.append("recordTypeGetterOverride", recordTypeGetterOverride); + builder.append("recordTypeMemberOverride", recordTypeMemberOverride); builder.append("interfaceSetterOverride", interfaceSetterOverride); builder.append("interfaceGetterOverride", interfaceGetterOverride); builder.append("interfaceMemberOverride", interfaceMemberOverride); @@ -585,6 +693,33 @@ public class MatchersAttributeType implements Serializable, XMLAppendable return false; } } + if (recordTypeSetterOverride == null) { + if (other.recordTypeSetterOverride!= null) { + return false; + } + } else { + if (!recordTypeSetterOverride.equals(other.recordTypeSetterOverride)) { + return false; + } + } + if (recordTypeGetterOverride == null) { + if (other.recordTypeGetterOverride!= null) { + return false; + } + } else { + if (!recordTypeGetterOverride.equals(other.recordTypeGetterOverride)) { + return false; + } + } + if (recordTypeMemberOverride == null) { + if (other.recordTypeMemberOverride!= null) { + return false; + } + } else { + if (!recordTypeMemberOverride.equals(other.recordTypeMemberOverride)) { + return false; + } + } if (interfaceSetterOverride == null) { if (other.interfaceSetterOverride!= null) { return false; @@ -654,6 +789,9 @@ public class MatchersAttributeType implements Serializable, XMLAppendable 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)+((recordTypeSetterOverride == null)? 0 :recordTypeSetterOverride.hashCode())); + result = ((prime*result)+((recordTypeGetterOverride == null)? 0 :recordTypeGetterOverride.hashCode())); + result = ((prime*result)+((recordTypeMemberOverride == null)? 0 :recordTypeMemberOverride.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())); diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersUDTType.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersUDTType.java index f29d34809a..0890fea04d 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersUDTType.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/MatchersUDTType.java @@ -46,6 +46,9 @@ public class MatchersUDTType implements Serializable, XMLAppendable protected String recordExtends; @XmlJavaTypeAdapter(StringAdapter.class) protected String recordImplements; + protected MatcherRule recordTypeClass; + @XmlJavaTypeAdapter(StringAdapter.class) + protected String recordTypeImplements; protected MatcherRule interfaceClass; @XmlJavaTypeAdapter(StringAdapter.class) protected String interfaceImplements; @@ -255,6 +258,38 @@ public class MatchersUDTType implements Serializable, XMLAppendable this.recordImplements = value; } + /** + * This rule influences the naming of the generated record type that is implemented by hierarchical {@link org.jooq.UDTRecord} objects. + * + */ + public MatcherRule getRecordTypeClass() { + return recordTypeClass; + } + + /** + * This rule influences the naming of the generated record type that is implemented by hierarchical {@link org.jooq.UDTRecord} objects. + * + */ + public void setRecordTypeClass(MatcherRule value) { + this.recordTypeClass = value; + } + + /** + * This string provides additional interfaces that a generated record type that is implemented by hierarchical {@link org.jooq.UDTRecord} should implement. + * + */ + public String getRecordTypeImplements() { + return recordTypeImplements; + } + + /** + * This string provides additional interfaces that a generated record type that is implemented by hierarchical {@link org.jooq.UDTRecord} should implement. + * + */ + public void setRecordTypeImplements(String value) { + this.recordTypeImplements = value; + } + /** * This rule influences the naming of the generated interface implemented by the {@link org.jooq.UDTRecord} and/or the POJO. * @@ -446,6 +481,24 @@ public class MatchersUDTType implements Serializable, XMLAppendable return this; } + /** + * This rule influences the naming of the generated record type that is implemented by hierarchical {@link org.jooq.UDTRecord} objects. + * + */ + public MatchersUDTType withRecordTypeClass(MatcherRule value) { + setRecordTypeClass(value); + return this; + } + + /** + * This string provides additional interfaces that a generated record type that is implemented by hierarchical {@link org.jooq.UDTRecord} should implement. + * + */ + public MatchersUDTType withRecordTypeImplements(String value) { + setRecordTypeImplements(value); + return this; + } + /** * This rule influences the naming of the generated interface implemented by the {@link org.jooq.UDTRecord} and/or the POJO. * @@ -504,6 +557,8 @@ public class MatchersUDTType implements Serializable, XMLAppendable builder.append("recordClass", recordClass); builder.append("recordExtends", recordExtends); builder.append("recordImplements", recordImplements); + builder.append("recordTypeClass", recordTypeClass); + builder.append("recordTypeImplements", recordTypeImplements); builder.append("interfaceClass", interfaceClass); builder.append("interfaceImplements", interfaceImplements); builder.append("pojoClass", pojoClass); @@ -629,6 +684,24 @@ public class MatchersUDTType implements Serializable, XMLAppendable return false; } } + if (recordTypeClass == null) { + if (other.recordTypeClass!= null) { + return false; + } + } else { + if (!recordTypeClass.equals(other.recordTypeClass)) { + return false; + } + } + if (recordTypeImplements == null) { + if (other.recordTypeImplements!= null) { + return false; + } + } else { + if (!recordTypeImplements.equals(other.recordTypeImplements)) { + return false; + } + } if (interfaceClass == null) { if (other.interfaceClass!= null) { return false; @@ -692,6 +765,8 @@ public class MatchersUDTType implements Serializable, XMLAppendable result = ((prime*result)+((recordClass == null)? 0 :recordClass.hashCode())); result = ((prime*result)+((recordExtends == null)? 0 :recordExtends.hashCode())); result = ((prime*result)+((recordImplements == null)? 0 :recordImplements.hashCode())); + result = ((prime*result)+((recordTypeClass == null)? 0 :recordTypeClass.hashCode())); + result = ((prime*result)+((recordTypeImplements == null)? 0 :recordTypeImplements.hashCode())); result = ((prime*result)+((interfaceClass == null)? 0 :interfaceClass.hashCode())); result = ((prime*result)+((interfaceImplements == null)? 0 :interfaceImplements.hashCode())); result = ((prime*result)+((pojoClass == null)? 0 :pojoClass.hashCode())); diff --git a/jOOQ-meta/src/main/resources/org/jooq/meta/xsd/jooq-codegen-3.20.0.xsd b/jOOQ-meta/src/main/resources/org/jooq/meta/xsd/jooq-codegen-3.20.0.xsd index 36a0880a66..934deb2368 100644 --- a/jOOQ-meta/src/main/resources/org/jooq/meta/xsd/jooq-codegen-3.20.0.xsd +++ b/jOOQ-meta/src/main/resources/org/jooq/meta/xsd/jooq-codegen-3.20.0.xsd @@ -758,6 +758,14 @@ and follow its (undocumented!) assumptions (e.g. constructors, etc.). Use this a + + + + + + + + @@ -821,6 +829,18 @@ and follow its (undocumented!) assumptions (e.g. constructors, etc.). Use this a + + + + + + + + + + + +