20
20
import org .hibernate .dialect .sequence .ANSISequenceSupport ;
21
21
import org .hibernate .dialect .sequence .SequenceSupport ;
22
22
import org .hibernate .engine .jdbc .spi .JdbcServices ;
23
+ import org .hibernate .generator .GeneratorCreationContext ;
23
24
import org .hibernate .id .OptimizableGenerator ;
24
25
import org .hibernate .id .PersistentIdentifierGenerator ;
25
26
import org .hibernate .id .enhanced .DatabaseStructure ;
33
34
import org .hibernate .id .enhanced .SequenceStyleGenerator ;
34
35
import org .hibernate .id .enhanced .StandardOptimizerDescriptor ;
35
36
import org .hibernate .id .enhanced .TableStructure ;
37
+ import org .hibernate .mapping .PersistentClass ;
38
+ import org .hibernate .mapping .Property ;
39
+ import org .hibernate .service .ServiceRegistry ;
36
40
import org .hibernate .type .StandardBasicTypes ;
37
41
import org .hibernate .type .spi .TypeConfiguration ;
38
42
@@ -70,16 +74,18 @@ public void testDefaultedSequenceBackedConfiguration() {
70
74
() -> buildingContext .getBootstrapContext ().getTypeConfiguration (),
71
75
serviceRegistry
72
76
);
77
+ Database database = new Database ( buildingContext .getBuildingOptions () );
78
+ GeneratorCreationContextImpl generatorCreationContext = new GeneratorCreationContextImpl ( database );
73
79
Properties props = buildGeneratorPropertiesBase ( buildingContext );
74
80
SequenceStyleGenerator generator = new SequenceStyleGenerator ();
81
+ generator .create ( generatorCreationContext );
75
82
generator .configure (
76
83
new TypeConfiguration ().getBasicTypeRegistry ()
77
84
.resolve ( StandardBasicTypes .LONG ),
78
85
props ,
79
86
serviceRegistry
80
87
);
81
88
82
- Database database = new Database ( buildingContext .getBuildingOptions () );
83
89
generator .registerExportables ( database );
84
90
generator .initialize ( SqlStringGenerationContextImpl .forTests ( database .getJdbcEnvironment () ) );
85
91
@@ -160,18 +166,22 @@ public void testDefaultOptimizerBasedOnIncrementBackedBySequence() {
160
166
() -> buildingContext .getBootstrapContext ().getTypeConfiguration (),
161
167
serviceRegistry
162
168
);
169
+
170
+ Database database = new Database ( buildingContext .getBuildingOptions () );
171
+ GeneratorCreationContextImpl generatorCreationContext = new GeneratorCreationContextImpl ( database );
172
+
163
173
Properties props = buildGeneratorPropertiesBase ( buildingContext );
164
174
props .setProperty ( SequenceStyleGenerator .INCREMENT_PARAM , "10" );
165
175
166
176
SequenceStyleGenerator generator = new SequenceStyleGenerator ();
177
+ generator .create ( generatorCreationContext );
167
178
generator .configure (
168
179
new TypeConfiguration ().getBasicTypeRegistry ()
169
180
.resolve ( StandardBasicTypes .LONG ),
170
181
props ,
171
182
serviceRegistry
172
183
);
173
184
174
- Database database = new Database ( buildingContext .getBuildingOptions () );
175
185
generator .registerExportables ( database );
176
186
generator .initialize ( SqlStringGenerationContextImpl .forTests ( database .getJdbcEnvironment () ) );
177
187
@@ -190,17 +200,20 @@ public void testDefaultOptimizerBasedOnIncrementBackedBySequence() {
190
200
() -> buildingContext .getBootstrapContext ().getTypeConfiguration (),
191
201
serviceRegistry
192
202
);
203
+ Database database = new Database ( buildingContext .getBuildingOptions () );
204
+ GeneratorCreationContextImpl generatorCreationContext = new GeneratorCreationContextImpl ( database );
205
+
193
206
Properties props = buildGeneratorPropertiesBase ( buildingContext );
194
207
props .setProperty ( SequenceStyleGenerator .INCREMENT_PARAM , "10" );
195
208
196
209
SequenceStyleGenerator generator = new SequenceStyleGenerator ();
210
+ generator .create ( generatorCreationContext );
197
211
generator .configure (
198
212
new TypeConfiguration ().getBasicTypeRegistry ()
199
213
.resolve ( StandardBasicTypes .LONG ),
200
214
props ,
201
215
serviceRegistry
202
216
);
203
- Database database = new Database ( buildingContext .getBuildingOptions () );
204
217
generator .registerExportables ( database );
205
218
generator .initialize ( SqlStringGenerationContextImpl .forTests ( database .getJdbcEnvironment () ) );
206
219
@@ -226,17 +239,20 @@ public void testDefaultOptimizerBasedOnIncrementBackedByTable() {
226
239
() -> buildingContext .getBootstrapContext ().getTypeConfiguration (),
227
240
serviceRegistry
228
241
);
242
+ Database database = new Database ( buildingContext .getBuildingOptions () );
243
+ GeneratorCreationContextImpl generatorCreationContext = new GeneratorCreationContextImpl ( database );
244
+
229
245
Properties props = buildGeneratorPropertiesBase ( buildingContext );
230
246
props .setProperty ( SequenceStyleGenerator .INCREMENT_PARAM , "10" );
231
247
232
248
SequenceStyleGenerator generator = new SequenceStyleGenerator ();
249
+ generator .create ( generatorCreationContext );
233
250
generator .configure (
234
251
new TypeConfiguration ().getBasicTypeRegistry ()
235
252
.resolve ( StandardBasicTypes .LONG ),
236
253
props ,
237
254
serviceRegistry
238
255
);
239
- Database database = new Database ( buildingContext .getBuildingOptions () );
240
256
generator .registerExportables ( database );
241
257
generator .initialize ( SqlStringGenerationContextImpl .forTests ( database .getJdbcEnvironment () ) );
242
258
@@ -285,6 +301,44 @@ public void testForceTableUse() {
285
301
}
286
302
}
287
303
304
+ private static class GeneratorCreationContextImpl implements GeneratorCreationContext {
305
+ private final Database database ;
306
+
307
+ public GeneratorCreationContextImpl (Database database ) {
308
+ this .database = database ;
309
+ }
310
+
311
+ @ Override
312
+ public Database getDatabase () {
313
+ return database ;
314
+ }
315
+
316
+ @ Override
317
+ public ServiceRegistry getServiceRegistry () {
318
+ return database .getServiceRegistry ();
319
+ }
320
+
321
+ @ Override
322
+ public String getDefaultCatalog () {
323
+ throw new UnsupportedOperationException ();
324
+ }
325
+
326
+ @ Override
327
+ public String getDefaultSchema () {
328
+ throw new UnsupportedOperationException ();
329
+ }
330
+
331
+ @ Override
332
+ public PersistentClass getPersistentClass () {
333
+ throw new UnsupportedOperationException ();
334
+ }
335
+
336
+ @ Override
337
+ public Property getProperty () {
338
+ throw new UnsupportedOperationException ();
339
+ }
340
+ }
341
+
288
342
/**
289
343
* Test explicitly specifying both optimizer and increment
290
344
*/
@@ -302,14 +356,18 @@ public void testExplicitOptimizerWithExplicitIncrementSize() {
302
356
Properties props = buildGeneratorPropertiesBase ( buildingContext );
303
357
props .setProperty ( SequenceStyleGenerator .OPT_PARAM , StandardOptimizerDescriptor .NONE .getExternalName () );
304
358
props .setProperty ( SequenceStyleGenerator .INCREMENT_PARAM , "20" );
359
+
360
+ Database database = new Database ( buildingContext .getBuildingOptions () );
361
+ GeneratorCreationContextImpl generatorCreationContext = new GeneratorCreationContextImpl ( database );
362
+
305
363
SequenceStyleGenerator generator = new SequenceStyleGenerator ();
364
+ generator .create ( generatorCreationContext );
306
365
generator .configure (
307
366
new TypeConfiguration ().getBasicTypeRegistry ()
308
367
.resolve ( StandardBasicTypes .LONG ),
309
368
props ,
310
369
serviceRegistry
311
370
);
312
- Database database = new Database ( buildingContext .getBuildingOptions () );
313
371
generator .registerExportables ( database );
314
372
generator .initialize ( SqlStringGenerationContextImpl .forTests ( database .getJdbcEnvironment () ) );
315
373
@@ -323,6 +381,7 @@ public void testExplicitOptimizerWithExplicitIncrementSize() {
323
381
props .setProperty ( SequenceStyleGenerator .OPT_PARAM , StandardOptimizerDescriptor .HILO .getExternalName () );
324
382
props .setProperty ( SequenceStyleGenerator .INCREMENT_PARAM , "20" );
325
383
generator = new SequenceStyleGenerator ();
384
+ generator .create ( generatorCreationContext );
326
385
generator .configure (
327
386
new TypeConfiguration ().getBasicTypeRegistry ()
328
387
.resolve ( StandardBasicTypes .LONG ),
@@ -341,6 +400,7 @@ public void testExplicitOptimizerWithExplicitIncrementSize() {
341
400
props .setProperty ( SequenceStyleGenerator .OPT_PARAM , StandardOptimizerDescriptor .POOLED .getExternalName () );
342
401
props .setProperty ( SequenceStyleGenerator .INCREMENT_PARAM , "20" );
343
402
generator = new SequenceStyleGenerator ();
403
+ generator .create ( generatorCreationContext );
344
404
generator .configure (
345
405
new TypeConfiguration ().getBasicTypeRegistry ()
346
406
.resolve ( StandardBasicTypes .LONG ),
@@ -368,23 +428,27 @@ public void testPreferredPooledOptimizerSetting() {
368
428
() -> buildingContext .getBootstrapContext ().getTypeConfiguration (),
369
429
serviceRegistry
370
430
);
431
+ Database database = new Database ( buildingContext .getBuildingOptions () );
432
+ GeneratorCreationContextImpl generatorCreationContext = new GeneratorCreationContextImpl ( database );
433
+
371
434
Properties props = buildGeneratorPropertiesBase ( buildingContext );
372
435
props .setProperty ( SequenceStyleGenerator .INCREMENT_PARAM , "20" );
373
436
SequenceStyleGenerator generator = new SequenceStyleGenerator ();
437
+ generator .create ( generatorCreationContext );
374
438
generator .configure (
375
439
new TypeConfiguration ().getBasicTypeRegistry ()
376
440
.resolve ( StandardBasicTypes .LONG ),
377
441
props ,
378
442
serviceRegistry
379
443
);
380
- Database database = new Database ( buildingContext .getBuildingOptions () );
381
444
generator .registerExportables ( database );
382
445
generator .initialize ( SqlStringGenerationContextImpl .forTests ( database .getJdbcEnvironment () ) );
383
446
assertClassAssignability ( SequenceStructure .class , generator .getDatabaseStructure ().getClass () );
384
447
assertClassAssignability ( PooledOptimizer .class , generator .getOptimizer ().getClass () );
385
448
386
449
props .setProperty ( Environment .PREFERRED_POOLED_OPTIMIZER , StandardOptimizerDescriptor .POOLED_LO .getExternalName () );
387
450
generator = new SequenceStyleGenerator ();
451
+ generator .create ( generatorCreationContext );
388
452
generator .configure (
389
453
new TypeConfiguration ().getBasicTypeRegistry ()
390
454
.resolve ( StandardBasicTypes .LONG ),
@@ -398,6 +462,7 @@ public void testPreferredPooledOptimizerSetting() {
398
462
399
463
props .setProperty ( Environment .PREFERRED_POOLED_OPTIMIZER , StandardOptimizerDescriptor .POOLED_LOTL .getExternalName () );
400
464
generator = new SequenceStyleGenerator ();
465
+ generator .create ( generatorCreationContext );
401
466
generator .configure (
402
467
new TypeConfiguration ().getBasicTypeRegistry ()
403
468
.resolve ( StandardBasicTypes .LONG ),
0 commit comments