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
+
+
+
+
+
+
+
+
+
+
+
+