Skip to content

Commit 63af9cd

Browse files
committed
make Selectable a sealed class
1 parent aa926f5 commit 63af9cd

File tree

8 files changed

+204
-255
lines changed

8 files changed

+204
-255
lines changed

hibernate-core/src/main/java/org/hibernate/id/ExportableColumn.java

Lines changed: 0 additions & 183 deletions
This file was deleted.
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
/*
2+
* SPDX-License-Identifier: LGPL-2.1-or-later
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.id.enhanced;
6+
7+
import org.hibernate.FetchMode;
8+
import org.hibernate.MappingException;
9+
import org.hibernate.boot.model.relational.Database;
10+
import org.hibernate.boot.spi.MetadataBuildingContext;
11+
import org.hibernate.internal.util.collections.ArrayHelper;
12+
import org.hibernate.mapping.Column;
13+
import org.hibernate.mapping.Selectable;
14+
import org.hibernate.mapping.Table;
15+
import org.hibernate.mapping.Value;
16+
import org.hibernate.mapping.ValueVisitor;
17+
import org.hibernate.service.ServiceRegistry;
18+
import org.hibernate.type.BasicType;
19+
import org.hibernate.type.MappingContext;
20+
import org.hibernate.type.Type;
21+
22+
import java.util.List;
23+
24+
class ExportableColumnHelper {
25+
26+
static Column column(Database database, Table table, String segmentColumnName, BasicType<?> type, String typeName) {
27+
final Column column = new Column( segmentColumnName );
28+
column.setSqlType( typeName );
29+
column.setValue( new Value() {
30+
@Override
31+
public Value copy() {
32+
return this;
33+
}
34+
35+
@Override
36+
public int getColumnSpan() {
37+
return 1;
38+
}
39+
40+
@Override
41+
public List<Selectable> getSelectables() {
42+
return List.of( column );
43+
}
44+
45+
@Override
46+
public List<Column> getColumns() {
47+
return List.of( column );
48+
}
49+
50+
@Override
51+
public Type getType() {
52+
return type;
53+
}
54+
55+
@Override
56+
public FetchMode getFetchMode() {
57+
return null;
58+
}
59+
60+
@Override
61+
public Table getTable() {
62+
return table;
63+
}
64+
65+
@Override
66+
public boolean hasFormula() {
67+
return false;
68+
}
69+
70+
@Override
71+
public boolean isAlternateUniqueKey() {
72+
return false;
73+
}
74+
75+
@Override
76+
public boolean isNullable() {
77+
return false;
78+
}
79+
80+
@Override
81+
public boolean[] getColumnInsertability() {
82+
return ArrayHelper.TRUE;
83+
}
84+
85+
@Override
86+
public boolean hasAnyInsertableColumns() {
87+
return true;
88+
}
89+
90+
@Override
91+
public boolean[] getColumnUpdateability() {
92+
return ArrayHelper.TRUE;
93+
}
94+
95+
@Override
96+
public boolean hasAnyUpdatableColumns() {
97+
return true;
98+
}
99+
100+
@Override
101+
public void createForeignKey() {
102+
}
103+
104+
@Override
105+
public void createUniqueKey(MetadataBuildingContext context) {
106+
}
107+
108+
@Override
109+
public boolean isSimpleValue() {
110+
return true;
111+
}
112+
113+
@Override
114+
public boolean isValid(MappingContext mappingContext) throws MappingException {
115+
return false;
116+
}
117+
118+
@Override
119+
public void setTypeUsingReflection(String className, String propertyName) {
120+
}
121+
122+
@Override
123+
public Object accept(ValueVisitor visitor) {
124+
return null;
125+
}
126+
127+
@Override
128+
public boolean isSame(Value value) {
129+
return this == value;
130+
}
131+
132+
@Override
133+
public ServiceRegistry getServiceRegistry() {
134+
return database.getServiceRegistry();
135+
}
136+
137+
@Override
138+
public boolean isColumnInsertable(int index) {
139+
return true;
140+
}
141+
142+
@Override
143+
public boolean isColumnUpdateable(int index) {
144+
return true;
145+
}
146+
} );
147+
return column;
148+
}
149+
}

hibernate-core/src/main/java/org/hibernate/id/enhanced/TableGenerator.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
import org.hibernate.event.monitor.spi.EventMonitor;
3838
import org.hibernate.event.monitor.spi.DiagnosticEvent;
3939
import org.hibernate.generator.GeneratorCreationContext;
40-
import org.hibernate.id.ExportableColumn;
4140
import org.hibernate.id.IdentifierGeneratorHelper;
4241
import org.hibernate.id.IntegralDataTypeHolder;
4342
import org.hibernate.id.PersistentIdentifierGenerator;
@@ -48,10 +47,12 @@
4847
import org.hibernate.mapping.Table;
4948
import org.hibernate.service.ServiceRegistry;
5049
import org.hibernate.stat.spi.StatisticsImplementor;
50+
import org.hibernate.type.BasicType;
5151
import org.hibernate.type.BasicTypeRegistry;
5252
import org.hibernate.type.StandardBasicTypes;
5353
import org.hibernate.type.Type;
5454

55+
import org.hibernate.type.descriptor.sql.spi.DdlTypeRegistry;
5556
import org.jboss.logging.Logger;
5657

5758
import static java.util.Collections.singletonMap;
@@ -695,14 +696,13 @@ public void registerExportables(Database database) {
695696

696697
final BasicTypeRegistry basicTypeRegistry = database.getTypeConfiguration().getBasicTypeRegistry();
697698
// todo : not sure the best solution here. do we add the columns if missing? other?
698-
final Column segmentColumn = new ExportableColumn(
699+
final DdlTypeRegistry ddlTypeRegistry = database.getTypeConfiguration().getDdlTypeRegistry();
700+
final Column segmentColumn = ExportableColumnHelper.column(
699701
database,
700702
table,
701703
segmentColumnName,
702704
basicTypeRegistry.resolve( StandardBasicTypes.STRING ),
703-
database.getTypeConfiguration()
704-
.getDdlTypeRegistry()
705-
.getTypeName( Types.VARCHAR, Size.length( segmentValueLength ) )
705+
ddlTypeRegistry.getTypeName( Types.VARCHAR, Size.length( segmentValueLength ) )
706706
);
707707
segmentColumn.setNullable( false );
708708
table.addColumn( segmentColumn );
@@ -711,11 +711,13 @@ public void registerExportables(Database database) {
711711
table.setPrimaryKey( new PrimaryKey( table ) );
712712
table.getPrimaryKey().addColumn( segmentColumn );
713713

714-
final Column valueColumn = new ExportableColumn(
714+
final BasicType<?> type = basicTypeRegistry.resolve( StandardBasicTypes.LONG );
715+
final Column valueColumn = ExportableColumnHelper.column(
715716
database,
716717
table,
717718
valueColumnName,
718-
basicTypeRegistry.resolve( StandardBasicTypes.LONG )
719+
type,
720+
ddlTypeRegistry.getTypeName( type.getJdbcType().getDdlTypeCode(), database.getDialect() )
719721
);
720722
table.addColumn( valueColumn );
721723
}

0 commit comments

Comments
 (0)