[#1199] Table.getFields() returns an internal representation of a table's field list. Make generated tables immutable instead!
This commit is contained in:
parent
f5a994bbae
commit
af04f261cf
@ -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<R extends Record> extends AbstractSchemaProviderQuer
|
||||
|
||||
@Override
|
||||
public final List<Field<?>> getFields() {
|
||||
// TODO [#1199] Make this an unmodifiable list
|
||||
return getFieldList();
|
||||
return new ArrayList<Field<?>>(getFieldList());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -113,9 +113,7 @@ class TableAlias<R extends Record> extends AbstractTable<R> {
|
||||
* Register a field for this table alias
|
||||
*/
|
||||
private <T> void registerTableField(Field<T> field) {
|
||||
|
||||
// Instanciating a TableFieldImpl will add the field to [this]
|
||||
new TableFieldImpl<R, T>(field.getName(), field.getDataType(), this);
|
||||
aliasedFields.add(new TableFieldImpl<R, T>(field.getName(), field.getDataType(), this));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -62,7 +62,11 @@ class TableFieldImpl<R extends Record, T> extends AbstractField<T> 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
|
||||
|
||||
@ -62,7 +62,11 @@ class UDTFieldImpl<R extends UDTRecord<R>, T> extends AbstractField<T> 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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user