diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractType.java b/jOOQ/src/main/java/org/jooq/impl/AbstractType.java index 53507ff992..83876ac45c 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractType.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractType.java @@ -35,6 +35,7 @@ */ package org.jooq.impl; +import java.util.ArrayList; import java.util.List; import org.jooq.AliasProvider; @@ -60,8 +61,7 @@ abstract class AbstractType extends AbstractSchemaProviderQuer @Override public final List> getFields() { - // TODO [#1199] Make this an unmodifiable list - return getFieldList(); + return new ArrayList>(getFieldList()); } @Override diff --git a/jOOQ/src/main/java/org/jooq/impl/TableAlias.java b/jOOQ/src/main/java/org/jooq/impl/TableAlias.java index d6e64b012e..3d47b38b44 100644 --- a/jOOQ/src/main/java/org/jooq/impl/TableAlias.java +++ b/jOOQ/src/main/java/org/jooq/impl/TableAlias.java @@ -113,9 +113,7 @@ class TableAlias extends AbstractTable { * Register a field for this table alias */ private void registerTableField(Field field) { - - // Instanciating a TableFieldImpl will add the field to [this] - new TableFieldImpl(field.getName(), field.getDataType(), this); + aliasedFields.add(new TableFieldImpl(field.getName(), field.getDataType(), this)); } @Override diff --git a/jOOQ/src/main/java/org/jooq/impl/TableFieldImpl.java b/jOOQ/src/main/java/org/jooq/impl/TableFieldImpl.java index edf56e21d9..ff8714bf0a 100644 --- a/jOOQ/src/main/java/org/jooq/impl/TableFieldImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/TableFieldImpl.java @@ -62,7 +62,11 @@ class TableFieldImpl extends AbstractField implements Ta super(name, type); this.table = table; - this.table.getFields().add(this); + + // [#1199] The public API of Table returns immutable field lists + if (table instanceof TableImpl) { + ((TableImpl) table).getFieldList().add(this); + } } @Override diff --git a/jOOQ/src/main/java/org/jooq/impl/UDTFieldImpl.java b/jOOQ/src/main/java/org/jooq/impl/UDTFieldImpl.java index b0265e6a02..3f7b154f7a 100644 --- a/jOOQ/src/main/java/org/jooq/impl/UDTFieldImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/UDTFieldImpl.java @@ -62,7 +62,11 @@ class UDTFieldImpl, T> extends AbstractField implement super(name, type); this.udt = udt; - this.udt.getFields().add(this); + + // [#1199] The public API of UDT returns immutable field lists + if (udt instanceof UDTImpl) { + ((UDTImpl) udt).getFieldList().add(this); + } } @Override