[#686] Reduce the internal API leak by preventing access to TableFieldImpl, UDTFieldImpl, and other internal classes - Hide UDTFieldImpl

This commit is contained in:
Lukas Eder 2011-11-11 16:45:39 +00:00
parent 2ef7382160
commit db8ba92e7e
8 changed files with 42 additions and 32 deletions

View File

@ -91,7 +91,6 @@ import org.jooq.impl.StopWatch;
import org.jooq.impl.StringUtils;
import org.jooq.impl.TableImpl;
import org.jooq.impl.TableRecordImpl;
import org.jooq.impl.UDTFieldImpl;
import org.jooq.impl.UDTImpl;
import org.jooq.impl.UDTRecordImpl;
import org.jooq.impl.UpdatableRecordImpl;
@ -1956,7 +1955,7 @@ public class DefaultGenerator implements Generator {
private void printUDTColumn(GenerationWriter out, AttributeDefinition attribute, Definition table) throws SQLException {
Class<?> declaredMemberClass = UDTField.class;
Class<?> concreteMemberClass = UDTFieldImpl.class;
Class<?> concreteMemberClass = null;
printColumnDefinition(out, attribute, table, declaredMemberClass, concreteMemberClass);
}
@ -1994,7 +1993,10 @@ public class DefaultGenerator implements Generator {
out.print(strategy.getJavaIdentifierUC(column));
out.print(columnDisambiguationSuffix);
if (concreteMemberClass == null) {
if (declaredMemberClass == TableField.class) {
out.print(" = createField");
}
else if (declaredMemberClass == UDTField.class) {
out.print(" = createField");
}
else {

View File

@ -10,7 +10,7 @@ package org.jooq.test.oracle.generatedclasses.udt;
comments = "This class is generated by jOOQ")
public class UAddressType extends org.jooq.impl.UDTImpl<org.jooq.test.oracle.generatedclasses.udt.records.UAddressTypeRecord> {
private static final long serialVersionUID = 983448138;
private static final long serialVersionUID = -712150981;
/**
* The singleton instance of U_ADDRESS_TYPE
@ -33,32 +33,32 @@ public class UAddressType extends org.jooq.impl.UDTImpl<org.jooq.test.oracle.gen
/**
* An uncommented item
*/
public static final org.jooq.UDTField<org.jooq.test.oracle.generatedclasses.udt.records.UAddressTypeRecord, org.jooq.test.oracle.generatedclasses.udt.records.UStreetTypeRecord> STREET = new org.jooq.impl.UDTFieldImpl<org.jooq.test.oracle.generatedclasses.udt.records.UAddressTypeRecord, org.jooq.test.oracle.generatedclasses.udt.records.UStreetTypeRecord>("STREET", org.jooq.test.oracle.generatedclasses.udt.UStreetType.U_STREET_TYPE.getDataType(), U_ADDRESS_TYPE);
public static final org.jooq.UDTField<org.jooq.test.oracle.generatedclasses.udt.records.UAddressTypeRecord, org.jooq.test.oracle.generatedclasses.udt.records.UStreetTypeRecord> STREET = createField("STREET", org.jooq.test.oracle.generatedclasses.udt.UStreetType.U_STREET_TYPE.getDataType(), U_ADDRESS_TYPE);
/**
* An uncommented item
*/
public static final org.jooq.UDTField<org.jooq.test.oracle.generatedclasses.udt.records.UAddressTypeRecord, java.lang.String> ZIP = new org.jooq.impl.UDTFieldImpl<org.jooq.test.oracle.generatedclasses.udt.records.UAddressTypeRecord, java.lang.String>("ZIP", org.jooq.impl.SQLDataType.VARCHAR, U_ADDRESS_TYPE);
public static final org.jooq.UDTField<org.jooq.test.oracle.generatedclasses.udt.records.UAddressTypeRecord, java.lang.String> ZIP = createField("ZIP", org.jooq.impl.SQLDataType.VARCHAR, U_ADDRESS_TYPE);
/**
* An uncommented item
*/
public static final org.jooq.UDTField<org.jooq.test.oracle.generatedclasses.udt.records.UAddressTypeRecord, java.lang.String> CITY = new org.jooq.impl.UDTFieldImpl<org.jooq.test.oracle.generatedclasses.udt.records.UAddressTypeRecord, java.lang.String>("CITY", org.jooq.impl.SQLDataType.VARCHAR, U_ADDRESS_TYPE);
public static final org.jooq.UDTField<org.jooq.test.oracle.generatedclasses.udt.records.UAddressTypeRecord, java.lang.String> CITY = createField("CITY", org.jooq.impl.SQLDataType.VARCHAR, U_ADDRESS_TYPE);
/**
* An uncommented item
*/
public static final org.jooq.UDTField<org.jooq.test.oracle.generatedclasses.udt.records.UAddressTypeRecord, java.lang.String> COUNTRY = new org.jooq.impl.UDTFieldImpl<org.jooq.test.oracle.generatedclasses.udt.records.UAddressTypeRecord, java.lang.String>("COUNTRY", org.jooq.impl.SQLDataType.VARCHAR, U_ADDRESS_TYPE);
public static final org.jooq.UDTField<org.jooq.test.oracle.generatedclasses.udt.records.UAddressTypeRecord, java.lang.String> COUNTRY = createField("COUNTRY", org.jooq.impl.SQLDataType.VARCHAR, U_ADDRESS_TYPE);
/**
* An uncommented item
*/
public static final org.jooq.UDTField<org.jooq.test.oracle.generatedclasses.udt.records.UAddressTypeRecord, java.sql.Date> SINCE = new org.jooq.impl.UDTFieldImpl<org.jooq.test.oracle.generatedclasses.udt.records.UAddressTypeRecord, java.sql.Date>("SINCE", org.jooq.impl.SQLDataType.DATE, U_ADDRESS_TYPE);
public static final org.jooq.UDTField<org.jooq.test.oracle.generatedclasses.udt.records.UAddressTypeRecord, java.sql.Date> SINCE = createField("SINCE", org.jooq.impl.SQLDataType.DATE, U_ADDRESS_TYPE);
/**
* An uncommented item
*/
public static final org.jooq.UDTField<org.jooq.test.oracle.generatedclasses.udt.records.UAddressTypeRecord, java.lang.Integer> CODE = new org.jooq.impl.UDTFieldImpl<org.jooq.test.oracle.generatedclasses.udt.records.UAddressTypeRecord, java.lang.Integer>("CODE", org.jooq.impl.SQLDataType.INTEGER, U_ADDRESS_TYPE);
public static final org.jooq.UDTField<org.jooq.test.oracle.generatedclasses.udt.records.UAddressTypeRecord, java.lang.Integer> CODE = createField("CODE", org.jooq.impl.SQLDataType.INTEGER, U_ADDRESS_TYPE);
/**
* No further instances allowed

View File

@ -10,7 +10,7 @@ package org.jooq.test.oracle.generatedclasses.udt;
comments = "This class is generated by jOOQ")
public class UStreetType extends org.jooq.impl.UDTImpl<org.jooq.test.oracle.generatedclasses.udt.records.UStreetTypeRecord> {
private static final long serialVersionUID = 433340382;
private static final long serialVersionUID = 753873137;
/**
* The singleton instance of U_STREET_TYPE
@ -33,17 +33,17 @@ public class UStreetType extends org.jooq.impl.UDTImpl<org.jooq.test.oracle.gene
/**
* An uncommented item
*/
public static final org.jooq.UDTField<org.jooq.test.oracle.generatedclasses.udt.records.UStreetTypeRecord, java.lang.String> STREET = new org.jooq.impl.UDTFieldImpl<org.jooq.test.oracle.generatedclasses.udt.records.UStreetTypeRecord, java.lang.String>("STREET", org.jooq.impl.SQLDataType.VARCHAR, U_STREET_TYPE);
public static final org.jooq.UDTField<org.jooq.test.oracle.generatedclasses.udt.records.UStreetTypeRecord, java.lang.String> STREET = createField("STREET", org.jooq.impl.SQLDataType.VARCHAR, U_STREET_TYPE);
/**
* An uncommented item
*/
public static final org.jooq.UDTField<org.jooq.test.oracle.generatedclasses.udt.records.UStreetTypeRecord, java.lang.String> NO = new org.jooq.impl.UDTFieldImpl<org.jooq.test.oracle.generatedclasses.udt.records.UStreetTypeRecord, java.lang.String>("NO", org.jooq.impl.SQLDataType.VARCHAR, U_STREET_TYPE);
public static final org.jooq.UDTField<org.jooq.test.oracle.generatedclasses.udt.records.UStreetTypeRecord, java.lang.String> NO = createField("NO", org.jooq.impl.SQLDataType.VARCHAR, U_STREET_TYPE);
/**
* An uncommented item
*/
public static final org.jooq.UDTField<org.jooq.test.oracle.generatedclasses.udt.records.UStreetTypeRecord, org.jooq.test.oracle.generatedclasses.udt.records.UNumberArrayRecord> FLOORS = new org.jooq.impl.UDTFieldImpl<org.jooq.test.oracle.generatedclasses.udt.records.UStreetTypeRecord, org.jooq.test.oracle.generatedclasses.udt.records.UNumberArrayRecord>("FLOORS", org.jooq.impl.SQLDataType.INTEGER.asArrayDataType(org.jooq.test.oracle.generatedclasses.udt.records.UNumberArrayRecord.class), U_STREET_TYPE);
public static final org.jooq.UDTField<org.jooq.test.oracle.generatedclasses.udt.records.UStreetTypeRecord, org.jooq.test.oracle.generatedclasses.udt.records.UNumberArrayRecord> FLOORS = createField("FLOORS", org.jooq.impl.SQLDataType.INTEGER.asArrayDataType(org.jooq.test.oracle.generatedclasses.udt.records.UNumberArrayRecord.class), U_STREET_TYPE);
/**
* No further instances allowed

View File

@ -10,7 +10,7 @@ package org.jooq.test.postgres.generatedclasses.udt;
comments = "This class is generated by jOOQ")
public class UAddressType extends org.jooq.impl.UDTImpl<org.jooq.test.postgres.generatedclasses.udt.records.UAddressTypeRecord> {
private static final long serialVersionUID = 1805761761;
private static final long serialVersionUID = -1666465402;
/**
* The singleton instance of u_address_type
@ -33,32 +33,32 @@ public class UAddressType extends org.jooq.impl.UDTImpl<org.jooq.test.postgres.g
/**
* An uncommented item
*/
public static final org.jooq.UDTField<org.jooq.test.postgres.generatedclasses.udt.records.UAddressTypeRecord, org.jooq.test.postgres.generatedclasses.udt.records.UStreetTypeRecord> STREET = new org.jooq.impl.UDTFieldImpl<org.jooq.test.postgres.generatedclasses.udt.records.UAddressTypeRecord, org.jooq.test.postgres.generatedclasses.udt.records.UStreetTypeRecord>("street", org.jooq.test.postgres.generatedclasses.udt.UStreetType.U_STREET_TYPE.getDataType(), U_ADDRESS_TYPE);
public static final org.jooq.UDTField<org.jooq.test.postgres.generatedclasses.udt.records.UAddressTypeRecord, org.jooq.test.postgres.generatedclasses.udt.records.UStreetTypeRecord> STREET = createField("street", org.jooq.test.postgres.generatedclasses.udt.UStreetType.U_STREET_TYPE.getDataType(), U_ADDRESS_TYPE);
/**
* An uncommented item
*/
public static final org.jooq.UDTField<org.jooq.test.postgres.generatedclasses.udt.records.UAddressTypeRecord, java.lang.String> ZIP = new org.jooq.impl.UDTFieldImpl<org.jooq.test.postgres.generatedclasses.udt.records.UAddressTypeRecord, java.lang.String>("zip", org.jooq.impl.SQLDataType.VARCHAR, U_ADDRESS_TYPE);
public static final org.jooq.UDTField<org.jooq.test.postgres.generatedclasses.udt.records.UAddressTypeRecord, java.lang.String> ZIP = createField("zip", org.jooq.impl.SQLDataType.VARCHAR, U_ADDRESS_TYPE);
/**
* An uncommented item
*/
public static final org.jooq.UDTField<org.jooq.test.postgres.generatedclasses.udt.records.UAddressTypeRecord, java.lang.String> CITY = new org.jooq.impl.UDTFieldImpl<org.jooq.test.postgres.generatedclasses.udt.records.UAddressTypeRecord, java.lang.String>("city", org.jooq.impl.SQLDataType.VARCHAR, U_ADDRESS_TYPE);
public static final org.jooq.UDTField<org.jooq.test.postgres.generatedclasses.udt.records.UAddressTypeRecord, java.lang.String> CITY = createField("city", org.jooq.impl.SQLDataType.VARCHAR, U_ADDRESS_TYPE);
/**
* An uncommented item
*/
public static final org.jooq.UDTField<org.jooq.test.postgres.generatedclasses.udt.records.UAddressTypeRecord, org.jooq.test.postgres.generatedclasses.enums.UCountry> COUNTRY = new org.jooq.impl.UDTFieldImpl<org.jooq.test.postgres.generatedclasses.udt.records.UAddressTypeRecord, org.jooq.test.postgres.generatedclasses.enums.UCountry>("country", org.jooq.util.postgres.PostgresDataType.VARCHAR.asEnumDataType(org.jooq.test.postgres.generatedclasses.enums.UCountry.class), U_ADDRESS_TYPE);
public static final org.jooq.UDTField<org.jooq.test.postgres.generatedclasses.udt.records.UAddressTypeRecord, org.jooq.test.postgres.generatedclasses.enums.UCountry> COUNTRY = createField("country", org.jooq.util.postgres.PostgresDataType.VARCHAR.asEnumDataType(org.jooq.test.postgres.generatedclasses.enums.UCountry.class), U_ADDRESS_TYPE);
/**
* An uncommented item
*/
public static final org.jooq.UDTField<org.jooq.test.postgres.generatedclasses.udt.records.UAddressTypeRecord, java.sql.Date> SINCE = new org.jooq.impl.UDTFieldImpl<org.jooq.test.postgres.generatedclasses.udt.records.UAddressTypeRecord, java.sql.Date>("since", org.jooq.impl.SQLDataType.DATE, U_ADDRESS_TYPE);
public static final org.jooq.UDTField<org.jooq.test.postgres.generatedclasses.udt.records.UAddressTypeRecord, java.sql.Date> SINCE = createField("since", org.jooq.impl.SQLDataType.DATE, U_ADDRESS_TYPE);
/**
* An uncommented item
*/
public static final org.jooq.UDTField<org.jooq.test.postgres.generatedclasses.udt.records.UAddressTypeRecord, java.lang.Integer> CODE = new org.jooq.impl.UDTFieldImpl<org.jooq.test.postgres.generatedclasses.udt.records.UAddressTypeRecord, java.lang.Integer>("code", org.jooq.impl.SQLDataType.INTEGER, U_ADDRESS_TYPE);
public static final org.jooq.UDTField<org.jooq.test.postgres.generatedclasses.udt.records.UAddressTypeRecord, java.lang.Integer> CODE = createField("code", org.jooq.impl.SQLDataType.INTEGER, U_ADDRESS_TYPE);
/**
* No further instances allowed

View File

@ -10,7 +10,7 @@ package org.jooq.test.postgres.generatedclasses.udt;
comments = "This class is generated by jOOQ")
public class UStreetType extends org.jooq.impl.UDTImpl<org.jooq.test.postgres.generatedclasses.udt.records.UStreetTypeRecord> {
private static final long serialVersionUID = -2075501201;
private static final long serialVersionUID = -1622828094;
/**
* The singleton instance of u_street_type
@ -33,17 +33,17 @@ public class UStreetType extends org.jooq.impl.UDTImpl<org.jooq.test.postgres.ge
/**
* An uncommented item
*/
public static final org.jooq.UDTField<org.jooq.test.postgres.generatedclasses.udt.records.UStreetTypeRecord, java.lang.String> STREET = new org.jooq.impl.UDTFieldImpl<org.jooq.test.postgres.generatedclasses.udt.records.UStreetTypeRecord, java.lang.String>("street", org.jooq.impl.SQLDataType.VARCHAR, U_STREET_TYPE);
public static final org.jooq.UDTField<org.jooq.test.postgres.generatedclasses.udt.records.UStreetTypeRecord, java.lang.String> STREET = createField("street", org.jooq.impl.SQLDataType.VARCHAR, U_STREET_TYPE);
/**
* An uncommented item
*/
public static final org.jooq.UDTField<org.jooq.test.postgres.generatedclasses.udt.records.UStreetTypeRecord, java.lang.String> NO = new org.jooq.impl.UDTFieldImpl<org.jooq.test.postgres.generatedclasses.udt.records.UStreetTypeRecord, java.lang.String>("no", org.jooq.impl.SQLDataType.VARCHAR, U_STREET_TYPE);
public static final org.jooq.UDTField<org.jooq.test.postgres.generatedclasses.udt.records.UStreetTypeRecord, java.lang.String> NO = createField("no", org.jooq.impl.SQLDataType.VARCHAR, U_STREET_TYPE);
/**
* An uncommented item
*/
public static final org.jooq.UDTField<org.jooq.test.postgres.generatedclasses.udt.records.UStreetTypeRecord, java.lang.Integer[]> FLOORS = new org.jooq.impl.UDTFieldImpl<org.jooq.test.postgres.generatedclasses.udt.records.UStreetTypeRecord, java.lang.Integer[]>("floors", org.jooq.impl.SQLDataType.INTEGER.getArrayDataType(), U_STREET_TYPE);
public static final org.jooq.UDTField<org.jooq.test.postgres.generatedclasses.udt.records.UStreetTypeRecord, java.lang.Integer[]> FLOORS = createField("floors", org.jooq.impl.SQLDataType.INTEGER.getArrayDataType(), U_STREET_TYPE);
/**
* No further instances allowed

View File

@ -49,8 +49,6 @@ import org.jooq.TableField;
/**
* A common base type for table fields.
* <p>
* This type is for JOOQ INTERNAL USE only. Do not reference directly
*
* @author Lukas Eder
*/
@ -60,7 +58,7 @@ class TableFieldImpl<R extends Record, T> extends AbstractField<T> implements Ta
private final Table<R> table;
public TableFieldImpl(String name, DataType<T> type, Table<R> table) {
TableFieldImpl(String name, DataType<T> type, Table<R> table) {
super(name, type);
this.table = table;

View File

@ -49,18 +49,16 @@ import org.jooq.UDTRecord;
/**
* A common base type for UDT attributes / fields
* <p>
* This type is for JOOQ INTERNAL USE only. Do not reference directly
*
* @author Lukas Eder
*/
public class UDTFieldImpl<R extends UDTRecord<R>, T> extends AbstractField<T> implements UDTField<R, T> {
class UDTFieldImpl<R extends UDTRecord<R>, T> extends AbstractField<T> implements UDTField<R, T> {
private static final long serialVersionUID = -2211214195583539735L;
private final UDT<R> udt;
public UDTFieldImpl(String name, DataType<T> type, UDT<R> udt) {
UDTFieldImpl(String name, DataType<T> type, UDT<R> udt) {
super(name, type);
this.udt = udt;

View File

@ -48,6 +48,7 @@ import org.jooq.Record;
import org.jooq.RenderContext;
import org.jooq.Schema;
import org.jooq.UDT;
import org.jooq.UDTField;
import org.jooq.UDTRecord;
/**
@ -125,4 +126,15 @@ public class UDTImpl<R extends UDTRecord<R>> extends AbstractType<R> implements
public final void bind(BindContext context) {
throw new UnsupportedOperationException("UDTImpl cannot be used as a true QueryPart");
}
/**
* Subclasses may call this method to create {@link UDTField} objects that
* are linked to this table.
*
* @param name The name of the field (case-sensitive!)
* @param type The data type of the field
*/
protected static final <R extends UDTRecord<R>, T> UDTField<R, T> createField(String name, DataType<T> type, UDT<R> udt) {
return new UDTFieldImpl<R, T>(name, type, udt);
}
}