[jOOQ/jOOQ#12425] Made some QOM types sealed (WIP)

This commit is contained in:
Lukas Eder 2021-10-01 11:21:12 +02:00
parent 16a1a75379
commit 25d6cbd768
16 changed files with 1628 additions and 1057 deletions

View File

@ -38,7 +38,7 @@
package org.jooq;
import org.jooq.impl.DSL;
import org.jooq.impl.QOM.MXmlAttributes;
import org.jooq.impl.QOM.MXMLAttributes;
/**
* A type modelling XML attributes for use in
@ -46,6 +46,6 @@ import org.jooq.impl.QOM.MXmlAttributes;
*
* @author Lukas Eder
*/
public interface XMLAttributes extends QueryPart, MXmlAttributes {
public interface XMLAttributes extends QueryPart, MXMLAttributes {
}

View File

@ -1972,7 +1972,7 @@ abstract class AbstractField<T> extends AbstractTypedNamed<T> implements Field<T
@Override
public final Field<String> collate(Collation collation) {
return new CollatedField(this, collation);
return new Collated(this, collation);
}
@Override

View File

@ -58,12 +58,12 @@ import org.jooq.impl.QOM.MQueryPart;
/**
* @author Lukas Eder
*/
final class ArraySelect<T> extends AbstractField<T[]> implements MArrayQuery<T> {
final class ArrayQuery<T> extends AbstractField<T[]> implements MArrayQuery<T> {
private final Select<? extends Record1<T>> select;
@SuppressWarnings({ "rawtypes", "unchecked" })
ArraySelect(Select<? extends Record1<T>> select) {
ArrayQuery(Select<? extends Record1<T>> select) {
super(N_ARRAY, (DataType) select.getSelect().get(0).getDataType().getArrayDataType());
this.select = select;
@ -120,6 +120,6 @@ final class ArraySelect<T> extends AbstractField<T[]> implements MArrayQuery<T>
Predicate<? super MQueryPart> recurse,
Function1<? super MQueryPart, ? extends MQueryPart> replacement
) {
return QOM.replace(this, select, ArraySelect::new, recurse, replacement);
return QOM.replace(this, select, ArrayQuery::new, recurse, replacement);
}
}

View File

@ -56,12 +56,12 @@ import org.jooq.impl.QOM.MQueryPart;
/**
* @author Lukas Eder
*/
final class CollatedField extends AbstractField<String> implements MCollated {
final class Collated extends AbstractField<String> implements MCollated {
private final Field<?> field;
private final Collation collation;
CollatedField(Field<?> field, Collation collation) {
Collated(Field<?> field, Collation collation) {
super(field.getQualifiedName(), type(field), field.getCommentPart(), binding(field));
this.field = field;
@ -107,7 +107,7 @@ final class CollatedField extends AbstractField<String> implements MCollated {
Predicate<? super MQueryPart> recurse,
Function1<? super MQueryPart, ? extends MQueryPart> replacement
) {
return QOM.replace(this, field, collation, CollatedField::new, recurse, replacement);
return QOM.replace(this, field, collation, Collated::new, recurse, replacement);
}
@Override

View File

@ -23715,7 +23715,7 @@ public class DSL {
@NotNull
@Support({ H2, HSQLDB, POSTGRES, YUGABYTE })
public static <T> Field<T[]> array(Select<? extends Record1<T>> select) {
return new ArraySelect<>(select);
return new ArrayQuery<>(select);
}
/**

View File

@ -45,13 +45,13 @@ import java.util.function.Predicate;
import org.jooq.Context;
import org.jooq.Function1;
import org.jooq.impl.QOM.MDenseRank;
import org.jooq.impl.QOM.MQueryPart;
import org.jooq.impl.QOM.MRank;
/**
* @author Lukas Eder
*/
final class DenseRank extends AbstractWindowFunction<Integer> implements MRank {
final class DenseRank extends AbstractWindowFunction<Integer> implements MDenseRank {
DenseRank() {
super(N_DENSE_RANK, INTEGER.notNull());

View File

@ -52,7 +52,7 @@ import org.jooq.impl.QOM.UTransient;
/**
* @author Lukas Eder
*/
final class FetchCount extends AbstractResultQuery<Record1<Integer>> implements UTransient {
final class FetchCount extends AbstractResultQuery<Record1<Integer>> implements UEmpty {
private final Field<?>[] count = { count().as("c") };
private final Select<?> query;

View File

@ -40,12 +40,13 @@ package org.jooq.impl;
import static org.jooq.impl.Names.N_LAG;
import org.jooq.Field;
import org.jooq.impl.QOM.MLag;
import org.jooq.impl.QOM.MLead;
/**
* @author Lukas Eder
*/
final class Lag<T> extends AbstractLeadLag<T> implements MLead<T> {
final class Lag<T> extends AbstractLeadLag<T> implements MLag<T> {
Lag(Field<T> field, Field<Integer> offset, Field<T> defaultValue) {
super(N_LAG, field, offset, defaultValue);

File diff suppressed because it is too large Load Diff

View File

@ -765,7 +765,7 @@ final class RowImpl2<T1, T2> extends AbstractRow<Record2<T1, T2>> implements Row
@Override
public final Condition overlaps(Row2<T1, T2> row) {
return new RowOverlapsCondition<>(this, row);
return new RowOverlaps<>(this, row);
}

View File

@ -76,13 +76,13 @@ import org.jooq.Row;
import org.jooq.Row2;
import org.jooq.SQLDialect;
import org.jooq.impl.QOM.MCondition;
import org.jooq.impl.QOM.MOverlaps;
import org.jooq.impl.QOM.MRowOverlaps;
import org.jooq.impl.QOM.MRow;
/**
* @author Lukas Eder
*/
final class RowOverlapsCondition<T1, T2> extends AbstractCondition implements MOverlaps {
final class RowOverlaps<T1, T2> extends AbstractCondition implements MRowOverlaps {
private static final Set<SQLDialect> EMULATE_NON_STANDARD_OVERLAPS = SQLDialect.supportedUntil(CUBRID, DERBY, FIREBIRD, H2, MARIADB, MYSQL, SQLITE);
private static final Set<SQLDialect> EMULATE_INTERVAL_OVERLAPS = SQLDialect.supportedBy(HSQLDB);
@ -91,7 +91,7 @@ final class RowOverlapsCondition<T1, T2> extends AbstractCondition implements MO
private final Row2<T1, T2> right;
@SuppressWarnings("unchecked")
RowOverlapsCondition(Row2<T1, T2> left, Row2<T1, T2> right) {
RowOverlaps(Row2<T1, T2> left, Row2<T1, T2> right) {
this.left = (Row2<T1, T2>) ((AbstractRow<?>) left).convertTo(right);
this.right = (Row2<T1, T2>) ((AbstractRow<?>) right).convertTo(left);
}
@ -163,6 +163,6 @@ final class RowOverlapsCondition<T1, T2> extends AbstractCondition implements MO
@SuppressWarnings("unchecked")
@Override
public final Function2<? super MRow, ? super MRow, ? extends MCondition> constructor() {
return (r1, r2) -> new RowOverlapsCondition<>((Row2<T1, T2>) r1, (Row2<T1, T2>) r2);
return (r1, r2) -> new RowOverlaps<>((Row2<T1, T2>) r1, (Row2<T1, T2>) r2);
}
}

View File

@ -54,7 +54,7 @@ import org.jooq.Name;
import org.jooq.XMLAttributes;
import org.jooq.impl.QOM.MList;
import org.jooq.impl.QOM.MQueryPart;
import org.jooq.impl.QOM.MXmlAttributes;
import org.jooq.impl.QOM.MXMLAttributes;
/**
* @author Lukas Eder

View File

@ -62,12 +62,12 @@ import org.jooq.XML;
import org.jooq.XMLAttributes;
import org.jooq.impl.QOM.MList;
import org.jooq.impl.QOM.MQueryPart;
import org.jooq.impl.QOM.MXmlelement;
import org.jooq.impl.QOM.MXMLElement;
/**
* @author Lukas Eder
*/
final class XMLElement extends AbstractField<XML> implements MXmlelement {
final class XMLElement extends AbstractField<XML> implements MXMLElement {
private final Name elementName;
private final XMLAttributes attributes;

View File

@ -53,7 +53,7 @@ import org.jooq.Function1;
import org.jooq.XML;
import org.jooq.XMLExistsPassingStep;
import org.jooq.impl.QOM.MQueryPart;
import org.jooq.impl.QOM.MXmlexists;
import org.jooq.impl.QOM.MXMLExists;
import org.jooq.impl.QOM.UNotYetImplemented;
import org.jooq.impl.QOM.XmlPassingMechanism;
@ -61,7 +61,7 @@ import org.jooq.impl.QOM.XmlPassingMechanism;
/**
* @author Lukas Eder
*/
final class XMLExists extends AbstractCondition implements XMLExistsPassingStep, MXmlexists, UNotYetImplemented {
final class XMLExists extends AbstractCondition implements XMLExistsPassingStep, MXMLExists, UNotYetImplemented {
private final Field<String> xpath;
private final Field<XML> passing;
private final XmlPassingMechanism passingMechanism;

View File

@ -59,13 +59,13 @@ import org.jooq.Function1;
import org.jooq.XML;
import org.jooq.impl.QOM.DocumentOrContent;
import org.jooq.impl.QOM.MQueryPart;
import org.jooq.impl.QOM.MXmlparse;
import org.jooq.impl.QOM.MXMLParse;
/**
* @author Lukas Eder
*/
final class XMLParse extends AbstractField<XML> implements MXmlparse {
final class XMLParse extends AbstractField<XML> implements MXMLParse {
private final Field<String> content;
private final DocumentOrContent documentOrContent;

View File

@ -59,13 +59,13 @@ import org.jooq.Function1;
import org.jooq.XML;
import org.jooq.XMLQueryPassingStep;
import org.jooq.impl.QOM.MQueryPart;
import org.jooq.impl.QOM.MXmlquery;
import org.jooq.impl.QOM.MXMLQuery;
import org.jooq.impl.QOM.XmlPassingMechanism;
/**
* @author Lukas Eder
*/
final class XMLQuery extends AbstractField<XML> implements XMLQueryPassingStep, MXmlquery {
final class XMLQuery extends AbstractField<XML> implements XMLQueryPassingStep, MXMLQuery {
private final Field<String> xpath;
private final Field<XML> passing;
private final XmlPassingMechanism passingMechanism;