[jOOQ/jOOQ#9442] Code generator uses factory method for sequences

Instead of generating code which directly uses the `SequenceImpl`
constructor, the generator now emits code using a static factory method
in the `Internal` factory class.

Also removes duplicate H2 dependency from `jOOQ/pom.xml`.
This commit is contained in:
Knut Wannheden 2019-11-27 10:03:40 +01:00
parent d420213d2e
commit fcc90d0c5a
3 changed files with 19 additions and 6 deletions

View File

@ -4627,7 +4627,16 @@ public class JavaGenerator extends AbstractGenerator {
if (scala)
out.tab(1).println("val %s : %s[%s] = new %s[%s](\"%s\", %s, %s)", seqId, Sequence.class, seqType, SequenceImpl.class, seqType, seqName, schemaId, typeRef);
else
out.tab(1).println("public static final %s<%s> %s = new %s<%s>(\"%s\", %s, %s);", Sequence.class, seqType, seqId, SequenceImpl.class, seqType, seqName, schemaId, typeRef);
out.tab(1).println("public static final %s<%s> %s = %s.<%s> createSequence(\"%s\", %s, %s);",
Sequence.class,
seqType,
seqId,
Internal.class,
seqType,
seqName,
schemaId,
typeRef
);
}
out.println("}");

View File

@ -139,11 +139,6 @@

View File

@ -48,6 +48,8 @@ import org.jooq.Name;
import org.jooq.OrderField;
import org.jooq.Parameter;
import org.jooq.Record;
import org.jooq.Schema;
import org.jooq.Sequence;
import org.jooq.Table;
import org.jooq.TableField;
import org.jooq.UniqueKey;
@ -136,6 +138,13 @@ public final class Internal {
return result;
}
/**
* Factory method for sequences.
*/
public static final <T extends Number> Sequence<T> createSequence(String name, Schema schema, DataType<T> type) {
return new SequenceImpl<>(name, schema, type, false);
}
/**
* Factory method for check constraints.
*/